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

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

    关注

    2909

    文章

    44578

    浏览量

    372859
  • 机智云
    +关注

    关注

    2

    文章

    589

    浏览量

    26393

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

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

收藏 人收藏

    评论

    相关推荐

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

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

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

    本文《机智入门必备》将详细讲解GAgent固件的烧录过程,从基础设置到实际操作,将一步步带你完成每一个环节,确保你的设备顺利连接机智平台
    的头像 发表于 09-12 08:04 366次阅读
    《<b class='flag-5'>机智</b><b class='flag-5'>云</b>入门必备》手把手教你烧录GAgent固件

    esp8266wifi模块怎么连接手机

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

    ESP8266-01如何更新固件?

    您好,我有 ESP8266-01,我需要通过 Arduino 更新固件......我有这个版本......esp_iot_sdk_v1.4.0_15_09_18.zip 可以给任何链
    发表于 07-22 07:33

    如何将ESP8266-01模块用作物理层设备?

    嗨,大家好。我想将 ESP8266-01 模块用作物理层设备,就像射频发射器和接收器一样。 一个模块将用作发射器,它在没有 WI-Fi 连接的情况下工作,并将发送原始数据,第二个
    发表于 07-19 12:18

    如何使用ESP8266-01构建一个电池供电的数据记录器?

    我正在尝试使用 ESP8266-01 构建一个电池供电的数据记录器。它将每小时进行一次测量,通过 WiFi 报告,然后再 60 分钟不做任何事情(睡眠)。时序将由TPL5111芯片处理,该芯片似乎是
    发表于 07-19 06:53

    使用ESP8266-01Arduino SDK安装AT固件失败了怎么解决?

    在使用我的 ESP8266-01Arduino SDK 玩了一会儿后,我想再次在其上安装 AT 固件,但我失败了。 我尝试从ESP8266_NONOS_SDK-3.0.5开始,按如下方式安装它
    发表于 07-19 06:08

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

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

    ESP8266-01适合长时间使用吗?

    我正在使用ESP8266-01,运行NONOS_SDK_V2.0.0_16_07_19。程序正在使芯片进入深度睡眠 2 分钟,然后收集数据。它运行良好大约 ~20 小时,ESP UART 输出符合
    发表于 07-18 06:45

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

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

    ESP8266-01在几个小时后停止响应了如何解决?

    我已经使用 Arduino IDE 为我的家庭自动化项目编写了 ESP8266-01ESP-01 会在一段时间后停止响应接收到的 UDP 广播数据。 有人可以告诉我如何解决这个问题吗?
    发表于 07-15 07:31

    ESP8266-01将ch_pd引脚与直接vcc连接,电池功耗持续非常高,怎么解决?

    我使用 ESP8266-01 开发产品并与其他主机 MCU 接口,主机 MCU 使用 UART 和 AT 命令进行 ESP 通信。我们的产品是在低功耗的电池源上,如果我想与主机 MCU 建立
    发表于 07-15 06:37

    使用Wi-Fi ESP8266方案模组接入平台

    ESP8266模块芯片是基于无线通信协议的UARTWi-Fi透传模块芯片,支持802.11b/g/n的无线标准,并带有三种可选择的工作模式。ESP8266
    的头像 发表于 05-10 08:20 1826次阅读
    使用Wi-Fi <b class='flag-5'>ESP8266</b>方案模组接入<b class='flag-5'>云</b><b class='flag-5'>平台</b>

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

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

    单片机怎么连接wifi模块esp

    连接WiFi模块ESP8266到单片机有多种方法和步骤。在这篇文章中,我将为您详细介绍如何连接ESP8266
    的头像 发表于 12-25 13:42 2506次阅读