Arduino+ESP8266使用EDP协议控制LED灯

分享到:

Arduino是许多智能硬件爱好者的首选,使用简单快捷,而ESP8266模块也是当前最为热门的WIFI模块。本项目完成了Arduino使用EDP协议通过ESP8266 WIFI模块接入OneNET服务器,并通过在接入设备中创建的应用来实现远程控制LED灯。
【1】硬件连接:
准备元件:

  • Arduino UNO
  • ESP8266 WIFI模块
  • USB转TTL连接线

  •  

硬件连线:
Arduino UNO     USB转TTL
D2-----------------RX
D3-----------------TX
GND---------------GND

Arduino UNO     ESP8266
RX-----------------TX
TX-----------------RX
GND---------------GND
其中USB转TTL连接电脑用于调试打印输出,然后Arduino的串口连接ESP8266的串口。
实物连接如下如图所示:
      

【2】ESP8266配置和EDP上传数据介绍:
选用ESP8266串口WIFI模块,通过AT指令控制WIFI模块接入互联网,依次完成与接入互联网、与OneNet服务器建立TCP连接、传输数据等操作。

1)配置WIFI模块;
模块配置接入OneNet,依次发送如下几个命令到WIFI模块:
AT+CWMODE=3
AT+RST
AT+CIFSR
AT+CWJAP="your ssid","password"
 
2)和OneNet服务器建立TCP连接,依次发送命令:
AT+CIPSTART="TCP","183.230.40.39",876  //和服务器建立TCP连接
AT+CIPMODE=1    //进入透明传输模式
AT+CIPSEND  //开始传输
命令执行结果如下图所示:



关于如何使用WIFI方式接入可以详细查看:http://open.iot.10086.cn/doc/art76.html#29

【3】创建设备和应用:
添加产品并创建接入设备,详细创建步骤请查看:http://open.iot.10086.cn/doc/art243.html#66。其中数据传输协议选择EDP。


在设备中添加应用,创建一个开关控件,在右侧的属性中选择对应设备的switch0数据流 ·注意到属性中有开关开值和开关关值两个属性,分别默认为1,0,这里不做修改(因为代码中1为开,非1则为关) ·修改EDP命令内容为switch0:{v}(与代码对应,代码中会将冒号前的部分作为上传的数据流ID,而将冒号之后的部分作为上传是数据值) 这里的{v}是通配符当下发命令的时候,他将会被开关的开/关值取代,稍后我们将看到命令的内容。




编辑完成后点击保存应用。

【4】软件代码:
其中Arduino开发板的D13作为被控制的LED灯,在程序中添加设备ID和APIKey。

点击查看代码:http://atmel.eefocus.com/module/forum/thread-7756-1-1.html

【5】功能测试:
设备上电后,可以看到电脑串口打印输出的内容,首先连接OneNET服务器:


连接成功后,可以看到设备在线状态:


点击设备应用中的开关按钮,发送开关命令给设备:


设备接收命令后进行解析,并在串口打印输出:


当解析到数据流switch0的值为1时设备开灯,Arduino 开发板的D13被点亮,相反为0时灯灭。

【6】效果演示:

演示地址:http://atmel.eefocus.com/module/forum/thread-7756-1-1.html

 

更多Atmel及科技资讯请关注:  
Atmel中文官网:http://www.atmel.com/zh/cn/
Atmel技术论坛:http://atmel.eefocus.com/
Atmel中文博客:http://blog.sina.com.cn/u/2253031744
Atmel新浪微博:http://www.weibo.com/atmelcn


©2017 Microchip Corporation
facebook google plus twitter linkedin youku weibo rss