0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何实现用Arduino通过ESP8266连接机智云物联网平台?

9GxC_IoTMaker 来源:机智云开发者 作者:机智云开发者 2021-01-06 11:55 次阅读

本文实现Arduino UNO R3通过ESP8266-01模块连接机智云平台,从而实现用手机APP远程点亮LED灯。

ESP8266模块本地调试

1

当我们参考机智云官网给的教程时,关于Arduino平台主要都是关于机智云官方自己的开发板Gokit资料。但当我们只使用Arduino UNO R3接入机智云平台,有很多教程通过添加了两个按键来选择airlink和softap模式,其实我们只要在本地给ESP8266配好了网络连接,就不需要每次通过按键切换配网模式。

第一步:首先在官网下载机智云固件GAgent,

6469d834-4f98-11eb-8b86-12bb97331649.jpg

第二步:使用ESP8266下载工具ESPFlashDownloadTool,将固件下载至ESP8266中。

64c1b8c4-4f98-11eb-8b86-12bb97331649.png

第三步:在机智云官网下载机智云串口调试助手,

650806ee-4f98-11eb-8b86-12bb97331649.jpg

将ESP8266通过串口转USB工具插在电脑上,安装好驱动,选择中确的驱动后,打开串口,填入在官网申请的product_key和Product Secret后,就能在右边看见数据点了,此时再打开指令界面,点击AirLink命令,ESP8266就进入了自动配网模式;

第四步:下载机智云移动端APP

65586d8c-4f98-11eb-8b86-12bb97331649.jpg

打开APP,点击一键配置,输入家里的WiFi账号及密码,选择乐鑫,因为刚才我们已经将ESP8266设置成AirLink透传模式,现在通过APP就可以将家里的WiFi信息发送给ESP8266,此时APP发现新设备下会出现你的WiFi模组,点击后就会看到你定义的数据点了。

硬件搭建

2

2.1硬件连接图

659dd7aa-4f98-11eb-8b86-12bb97331649.jpg

LED接上220欧姆电阻,连在Arduino的D4上,ESP8266CH-PD和vcc都接高电平。

注意:

在给Arduino烧录程序的时候要断开ESP8266与Arduino的串口连接,否则会有干扰导致代码烧录不成功;

ESP8266-01只能供给3.3v电压,5v电压可能会烧坏WiFi模组

2.2项目源码

#include

#include

#include

int ledPin = 13; // LED connected to digital pin 13,it's used for status

int myledPin = 4; // my LED connected to digital pin 4

int sensorValue = 0; // value read from the pot

bool varR_LED_OnOff = 0;

Gizwits myGizwits;

#define KEY1 6

#define KEY2 7

#define KEY1_SHORT_PRESS 1

#define KEY1_LONG_PRESS 2

#define KEY2_SHORT_PRESS 4

#define KEY2_LONG_PRESS 8

#define NO_KEY 0

#define KEY_LONG_TIMER 3

unsignedlongLast_KeyTime= 0;

unsignedlong gokit_time_s(void)

{

return millis() / 1000;

}

char gokit_key1down(void)

{

unsignedlong keep_time = 0;

if(digitalRead(KEY1) == LOW)

{

delay(100);

if(digitalRead(KEY1) == LOW)

{

keep_time = gokit_time_s();

while(digitalRead(KEY1) == LOW)

{

if((gokit_time_s() - keep_time) > KEY_LONG_TIMER)

{

Last_KeyTime= gokit_time_s();

return KEY1_LONG_PRESS;

}

} //until open the key

if((gokit_time_s() - Last_KeyTime) > KEY_LONG_TIMER)

{

return KEY1_SHORT_PRESS;

}

return0;

}

return0;

}

return0;

}

char gokit_key2down(void)

{

intunsignedlong keep_time = 0;

if(digitalRead(KEY2) == LOW)

{

delay(100);

if(digitalRead(KEY2) == LOW)

{

keep_time = gokit_time_s();

while(digitalRead(KEY2) == LOW) //until open the key

{

if((gokit_time_s() - keep_time) > KEY_LONG_TIMER)

{

Last_KeyTime= gokit_time_s();

return KEY2_LONG_PRESS;

}

}

if((gokit_time_s() - Last_KeyTime) > KEY_LONG_TIMER)

{

return KEY2_SHORT_PRESS;

}

return0;

}

return0;

}

return0;

}

/*******************************************************

* function : gokit_keydown

* Description : check the gokit key1 or key2 event

* return : KEY1_LONG_PRESS KEY1_SHORT_PRESS

* KEY2_LONG_PRESS KEY2_SHORT_PRESS

* 0-no keydown event.

* Add by Alex.lin --2014-12-25

******************************************************/

char gokit_keydown(void)

{

char ret = 0;

ret |= gokit_key2down();

ret |= gokit_key1down();

return ret;

}

void KEY_Handle(void)

{

/* Press for over than 3 second is Long Press */

switch(gokit_keydown())

{

case KEY1_SHORT_PRESS:

// Serial.println(F("KEY1_SHORT_PRESS , Production Test Mode "));

myGizwits.setBindMode(WIFI_PRODUCTION_TEST);

break;

case KEY1_LONG_PRESS:

// Serial.println(F("KEY1_LONG_PRESS ,Wifi Reset"));

myGizwits.setBindMode(WIFI_RESET_MODE);

break;

case KEY2_SHORT_PRESS:

// Serial.println(F("KEY2_SHORT_PRESS Soft AP mode"));

myGizwits.setBindMode(WIFI_SOFTAP_MODE);

//Soft AP mode

break;

case KEY2_LONG_PRESS:

// Serial.println(F("KEY2_LONG_PRESS ,AirLink mode"));

digitalWrite(ledPin, HIGH); // sets the LED on

myGizwits.setBindMode(WIFI_AIRLINK_MODE);

//AirLink mode

break;

default:

break;

}

}

void setup() {

// put your setup code here, to run once:

Serial.begin(9600);

pinMode(ledPin, OUTPUT); // sets the digital pin as output

pinMode(myledPin, OUTPUT); // sets the digital pin as output

pinMode(KEY1, INPUT_PULLUP);

pinMode(KEY2, INPUT_PULLUP);

myGizwits.begin();

}

void wifiStatusHandle()

{

// if(myGizwits.wifiHasBeenSet(WIFI_SOFTAP))

// Serial.println(F("WIFI_SOFTAP!"));

//

// if(myGizwits.wifiHasBeenSet(WIFI_AIRLINK))

// Serial.println(F("WIFI_AIRLINK!"));

//

// if(myGizwits.wifiHasBeenSet(WIFI_STATION))

// Serial.println(F("WIFI_STATION!"));

//

if(myGizwits.wifiHasBeenSet(WIFI_CON_ROUTER))

digitalWrite(ledPin, LOW); // sets the LED off

// Serial.println(F("WIFI_CON_ROUTER!"));

//

// if(myGizwits.wifiHasBeenSet(WIFI_DISCON_ROUTER))

// Serial.println(F("WIFI_DISCON_ROUTER!"));

//

// if(myGizwits.wifiHasBeenSet(WIFI_CON_M2M))

// Serial.println(F("WIFI_CON_M2M!"));

//

// if(myGizwits.wifiHasBeenSet(WIFI_DISCON_M2M))

// Serial.println(F("WIFI_DISCON_M2M!"));

}

void loop() {

//Configure network

//if(XXX) //Trigger Condition

//myGizwits.setBindMode(0x02); //0x01:Enter AP Mode;0x02:Enter Airlink Mode

/*

unsigned long varW_ADCValue = 0;//Add Sensor Data Collection

myGizwits.write(VALUE_ADCVALUE, varW_ADCValue);

bool varR_LED_OnOff = 0;

if(myGizwits.hasBeenSet(EVENT_LED_ONOFF))

{

myGizwits.read(EVENT_LED_ONOFF,&varR_LED_OnOff);//Address for storing data

}

//binary datapoint handle

*/

sensorValue = analogRead(A0);

unsignedlong varW_ADCValue = sensorValue;//Add Sensor Data Collection

myGizwits.write(VALUE_ADCVALUE, varW_ADCValue);

if(myGizwits.hasBeenSet(EVENT_led_onoff))

{

myGizwits.read(EVENT_led_onoff,&varR_LED_OnOff);//Address for storing data

}

if(varR_LED_OnOff==1)

{

digitalWrite(myledPin, HIGH); // sets the user LED on

}

else

{

digitalWrite(myledPin, LOW); // sets the user LED off

}

KEY_Handle();//key handle , network configure

wifiStatusHandle();//WIFI Status Handle

myGizwits.process();

}

至此,你的ESP8266模组就成功连接上机智云服务平台了,无论你在任何地方,无论用WiFi和4G都能通过APP来控制LED等的亮灭了,机智云还提供了APP的开源框架,我们可以在此基础上高度自由地定制我们自己的APP接入机智云物联网平台。

原文标题:机友分享 | Arduino使用ESP8266连接机智云物联网平台

文章出处:【微信公众号:机智云开发者】欢迎添加关注!文章转载请注明出处。

责任编辑:haq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 物联网
    +关注

    关注

    2909

    文章

    44557

    浏览量

    372769
  • 机智云
    +关注

    关注

    2

    文章

    587

    浏览量

    26392

原文标题:机友分享 | Arduino使用ESP8266连接机智云物联网平台

文章出处:【微信号:IoTMaker,微信公众号:机智云开发者】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    STM32连接机智,代码移植,NTP实时时间获取(一)

    目录一、机智介绍二、固件下载三、项目例程下载四、代码移植五、代码编写准备(已配置完毕,正式开始编写代码)六、设备配对与连接七、NTP(网络时间协议)实现八、网盘资料链
    的头像 发表于 11-19 01:01 282次阅读
    STM32<b class='flag-5'>连接机智</b><b class='flag-5'>云</b>,代码移植,NTP实时时间获取(一)

    esp8266连接阿里平台时mqtt连接超时

    esp8266nodemcu在使用arduino.ide连接阿里平台的时候,wifi配置正常但连接
    发表于 10-26 21:39

    机智入门必备》手把手教你烧录GAgent固件

    云中主要用于实现联网设备的联网功能。它通过Wi-Fi连接到互
    的头像 发表于 09-12 08:04 364次阅读
    《<b class='flag-5'>机智</b><b class='flag-5'>云</b>入门必备》手把手教你烧录GAgent固件

    arduino(1)--ESP8266配置

    硬件准备 首先需要准备一个开发板,这里我准备的是淘宝购买的兼容arduinoESP8266模块。 arduino配置 我使用的是arduino来编程
    发表于 09-06 11:00

    STM32 ESP8266阿里链接源码

    stm32F103C8T6 ESP8266 联网电表 登录阿里
    发表于 08-29 14:21 6次下载

    esp8266wifi模块怎么连接手机

    ESP8266 WiFi模块连接手机主要可以通过两种方式实现通过路由器连接(STA模式)和直
    的头像 发表于 08-19 17:27 2634次阅读

    机智ESP8266开发板RGB彩灯控件

    随着智能家居技术的迅猛发展,RGB彩灯控件正逐渐成为现代家庭不可或缺的一部分。在这一潮流中,机智(Gizwits)的ESP8266开发板RGB彩灯控件以其先进的
    的头像 发表于 08-09 08:10 402次阅读
    <b class='flag-5'>机智</b><b class='flag-5'>云</b><b class='flag-5'>ESP8266</b>开发板RGB彩灯控件

    STM32F103 + ESP8266机智开发常见问题集锦:入门者必读!

    关于ESP8266模块的选择针对初学者,强烈建议选择带有串口的ESP8266开发板!这可以避免像我曾经遇到的烧录固件失败等问题。推荐直接购买已预装机智固件的模块,或者带有串口下载功能
    的头像 发表于 07-18 08:11 482次阅读
    STM32F103 + <b class='flag-5'>ESP8266</b>与<b class='flag-5'>机智</b><b class='flag-5'>云</b>开发常见问题集锦:入门者必读!

    使用ESP8266arduino连接到thinkspeak,无法将其连接到任何网页,为什么?

    我正在尝试使用 ESP8266arduino 连接到 thinkspeak 。所以我能够将 esp 模块
    发表于 07-16 07:43

    ESP8266为什么不响应Arduino

    我是这个 wifi 芯片的新手。我的问题是,当我将其与 arduino mega 连接时,我无法从 esp8266 获得响应。 像许多在线教程一样,我按照说明进行操作,但仍然无法得到任何回应
    发表于 07-16 06:39

    能将ESP8266连接arduino UNO上,使用mesh组网吗?

    现在已将ESP8266连接到了arduino,并且成功驱动,但是有个问题就是组网的问题,想使用mesh,但是还有有些疑问。1、将带有mesh的固件烧录到ESP8266中,就能自动寻找节
    发表于 07-11 06:46

    是否可以通过WPS连接ESP8266 AP?

    是否可以通过 WPS 连接ESP8266 AP(而不是通过 ESP8266 连接到具有 WPS
    发表于 07-10 06:09

    确定ESP8266固件下载成功的方法

    联网设备的开发过程中,确定esp8266固件是否成功下载至设备十分关键。以下是一种简单有效的确认方法:机智
    的头像 发表于 05-16 08:10 586次阅读
    确定<b class='flag-5'>ESP8266</b>固件下载成功的方法

    STM32、ESP8266与MQTT连接阿里联网的串口通信异常解析

    STM32、ESP8266与MQTT协议连接阿里联网平台时常见的串口通信异常介绍 在构建物
    的头像 发表于 04-19 17:19 1438次阅读

    单片机怎么连接wifi模块esp

    。它具有强大的处理能力和低功耗。ESP8266可以通过串口与其他设备进行通信,并通过WiFi连接到互联网。使用
    的头像 发表于 12-25 13:42 2494次阅读