四博智联产品售后
标题: 基于ESP8266串口WiFi扩展板上传数据到服务器和反向控制 [打印本页]
作者: yangping 时间: 2015-12-30 18:52
标题: 基于ESP8266串口WiFi扩展板上传数据到服务器和反向控制
基于ESP8266串口WiFi扩展板上传数据到服务器和反向控制
一 准备工作
1.1 硬件准备
1.2 上传账号以及API Key
1.3 阅读上传协议
二 上传数据到服务器
2.1 arduino程序
2.2 ESP8266透传模拟配置
2.3 运行查看
三 反向控制
3.1 arduino程序
3.2 ESP8266透传模块配置
3.3 网页控制
关键词:arduino、esp8266、透传、反向控制
本案例详细介绍利用arduino uno和esp8266透传模块上传数据到服务器,同时从服务器反向发送指令实现对arduino的控制。
一准备工作1.1 硬件准备Arduino UNO一块
ESP12E Shield一块
[attach]94[/attach]
购买连接:
https://item.taobao.com/item.htm ... Vvb&id=520583000610
1.2 上传账号以及API Key在doit的云平台上申请一个账号。
申请地址:
http://iot.doit.am。
记住自己的账号(Uid)和密码(Passoword)
[attach]95[/attach]
登陆可以看到默认界面
[attach]96[/attach]
按照下图获取API的Key,用于上传数据。
[attach]97[/attach]
新添一个设备,名为arduino。
[attach]98[/attach]
1.3 阅读上传协议地址:
http://bbs.doit.am/forum.php?mod=forumdisplay&fid=46
平台基于TCP通讯,服务器IP: iot.doit.am 端口:8810
平台采用key,进行用户验证,key通过
http://iot.doit.am 获得。
1.数据上传:
cmd=upload&device_name=arduino&data=126&uid=demo&key=c514c91e4ed341f263e458d44b3bb0a7\\r\\n
应答:
cmd=upload&res=1
通过
http://iot.doit.am可以实时查看。
2.控制设备:
a)先订阅自己的用户id
cmd=subscribe&topic=demo \\r\\n
应答:cmd=subscribe&res=1
b)通过
http://iot.doit.am发送控制命令。
c)设备得到命令:
cmd=publish&device_name=humidity&device_cmd=poweron
二上传数据到服务器2.1 arduino程序
Arduino uno烧写下列程序。
- void setup()
- {
- Serial.begin(9600);
- randomSeed(analogRead(0));
- }
- void loop()
- {
- delay(1000);
- Serial.print(\"cmd=upload&device_name=arduino&data=\");
- Serial.print(random(1000));//send a random number
- Serial.println(\"&uid=doit_demo&key=a4b4c7cbc8685cc5309d60647cae546b\");
- }
复制代码
上述程序的功能是向服务器发送随机数。randomSeed(analogRead(0))产生一个随机数种子。
在loog()函数中的三条Serial.print()是向device_name为arduino的设备发送数据。这里用到了用户的uid和key。
2.2 ESP8266透传模拟配置
配置esp8266透传模块。
透传模块教程:
http://bbs.doit.am/forum.php?mod=viewthread&tid=176&page=1&extra=#pid208
[attach]99[/attach]
配置ESP8266连接到无线路由器。配置其在STA工作模式,TCP Client连接,远程IP填写为:
iot.doit.am。端口为8810。
2.3 运行查看将ESP12E Shield的SW1拨码开关均拨到ON位置。启动arduino。
稍等片刻,可以在服务器上看到上传的数据。
通过DataList查看:
[attach]100[/attach]
通过DataDisplay查看:
[attach]101[/attach]
[attach]102[/attach]
三反向控制3.1 arduino程序
Arduino uno反向控制程序。
- unsigned long MS_TIMER=0;
- unsigned long lastMSTimer=0;
- String comdata = \"\";
- char flag=false;
- void setup()
- {
- Serial.begin(9600);
- pinMode(2,OUTPUT);
- MS_TIMER=millis();
- }
- void loop()
- {
- if(flag == false)
- {
- if(millis() - MS_TIMER> 5000)
- {
- Serial.println(\"cmd=subscribe&topic=doit_demo\");
- MS_TIMER = millis();
- }
- }
- if (Serial.available() > 0)
- {
- //comdata = char(Serial.read());
- comdata += char(Serial.read());
- lastMSTimer = millis();
- delay(5);
- }
- if(comdata.length()>0&& millis() - lastMSTimer > 100)
- {
- if(comdata.compareTo(\"cmd=subscribe&res=1\\r\\n\")==0)
- flag = true;
- else if(comdata.compareTo(\"cmd=publish&device_name=arduino&device_cmd=d2 on\\r\\n\")==0)
- digitalWrite(2, HIGH);
- else if(comdata.compareTo(\"cmd=publish&device_name=arduino&device_cmd=d2 off\\r\\n\")==0)
- digitalWrite(2, LOW);
- comdata = \"\";
- }
- }
复制代码
3.2 ESP8266透传模块配置
本节同2.2节。
3.3 网页控制
利用一个发光二极管接到Arduino UNO D2管脚(阳极接D2、阴极接GND)。
将ESP12E Shield的SW1拨码开关均拨到ON位置。启动ARDUINO。
登陆账号进行控制。如下图所示。输入“d2 on”打开LED,或者输入“d2 off”关闭LED。实现远程控制。
[attach]103[/attach]
[attach]104[/attach]
[attach]105[/attach]
[attach]106[/attach]
实际效果照片:
关闭LED状态:
[attach]107[/attach]
打开LED状态:
[attach]108[/attach]
其他链接:
来源: 基于ESP8266串口WiFi扩展板上传数据到服务器和反向控制
欢迎光临 四博智联产品售后 (http://115.29.109.104/) |
Powered by Discuz! X3.2 |