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

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

3天内不再提示

Arduino UNO R3通过ESP8266-01模块连接机智云平台的实现

9GxC_IoTMaker 来源:小雨编程 作者:小雨 2021-05-25 16:38 次阅读

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

ESP8266模块本地调试

1

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

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

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

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

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

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

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

硬件搭建

2

2.1硬件连接图

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

注意:

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

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

2.2项目源码

#include

《Gizwits.h》

#include

《Wire.h》

#include

《SoftwareSerial.h》

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

unsignedlong

Last_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;

}

return

0

;

}

return

0

;

}

return

0

;

}

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;

}

return

0

;

}

return

0

;

}

return

0

;

}

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

* 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

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

    关注

    2867

    文章

    41600

    浏览量

    358310
  • 机智云
    +关注

    关注

    2

    文章

    542

    浏览量

    26216

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

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

收藏 人收藏

    评论

    相关推荐

    ESP8266-01烧写机智GAgent使用哪种SPI模式?

    ESP8266-01烧写机智GAgent使用哪种SPI模式 官网有DIO和QIO两种
    发表于 11-10 08:06

    ESP8266-01烧录机智GAgent时SPI Mode选择哪种?

    ESP8266-01烧录机智GAgent时SPI Mode选择哪种?是选择合并的固件还是单独烧写
    发表于 11-10 07:54

    关于ESP8266-01模块GPIO应用问题

    ESP8266-01模块预留了两个GPIO,GPIO0用于启动控制,GPIO2未定义。如何利用GPIO2 是否有AT命令可以控制,还是需要重刷自定义的固件?
    发表于 10-24 07:21

    ESP8266-01如何单模块连接机智或ONENET等平台?

    ESP8266-01模块可以直接连接机智吧,不通过MCU。 另外,如何利用APP控制ESP8266
    发表于 10-19 07:07

    2个ESP8266-01作为透明串口桥的固件,如何让他们在编程前立即重置Arduino并促进智能手机应用程序渠道?

    ) ESP8266-01 (串口) --> Arduino。 我还有一个 ESP6266 nodeMCU(ESP-12 或 ESP-1
    发表于 06-06 13:26

    如何将Xee S2C与ESP8266-01模块一起使用?

    您好,我正在尝试将 Xee S2C 与 ESP8266-01 模块一起使用。我将分别通过 Xbee 和 ESP 的 TX RX 引脚将数据从我的 Xbee 直接发送到
    发表于 06-06 07:48

    可以使用ESP8266-01实现websockets吗?

    我可以使用 ESP8266-01 实现 websockets
    发表于 06-06 06:45

    esp-01s与arduino uno连接但它编译但不上传是怎么回事?

    我买了 esp-01s 用于我的研究。我将它与 arduino uno 连接,但它编译但不上传。我将向您展示输出结果和连接环境。我卡住了。请
    发表于 06-01 14:07

    无法从串行监视器控制ESP8266怎么解决?

    所以我给自己买了一个 Esp8266-01。我第一次将它连接到我的 Arduino Uno,将 RX 连接到 RX,TX
    发表于 05-31 06:10

    如何使用ESP8266-01Arduino IDE控制2个电机?

    你好社区!我想用我的 ESP8266-01 制作一个电机控制器。我有 2 个电机,需要通过手机发送命令来控制第一个电机的速度和第二个电机的方向。但我真的是 ESP 的新手,我需要你的建议。ES
    发表于 05-23 06:31

    是否可以将ESP8266-01与lpc1768接口?

    我正在尝试从连接到 lpc1768 uC 的温度传感器读取数据,并通过 wifi 将传感器值发送到我的手机。我在我的项目中使用 CMSIS。我是 ESP8266-01 的新手。我的问题是 1. 是否
    发表于 05-22 10:38

    ESP8266-01通信问题如何解决?

    ESP8266-01 通信问题
    发表于 05-11 08:22

    如何将ESP8266连接到Google表格?

    我正在尝试通过 ESP8266 模块将数据从 arduino 连接到 google 表格。我没有使用节点 mcu,这是大多数教程的基础。我有
    发表于 05-08 08:13

    如何使用ESP8266修复Arduino中的超时?

    我正在使用 Arduino UnoESP8266。 我将 ESP8266Arduino Un
    发表于 05-08 08:13

    基于arduinoesp8266和继电器实现小爱同学开关灯

    1.esp8266-01模块; 2. 配合使用的继电器3. esp8266的读写器5. 5v供电(在淘宝可以买220v转5v的电源模块)这里用un
    发表于 05-04 11:15 1次下载
    基于<b class='flag-5'>arduino</b>用<b class='flag-5'>esp8266</b>和继电器<b class='flag-5'>实现</b>小爱同学开关灯