四博智联产品售后

 找回密码
 立即注册
搜索
查看: 33003|回复: 0

基于ESP8266串口WiFi扩展板上传数据到服务器和反向控制

[复制链接]

0

主题

0

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2015-7-31 14:58:13 | 显示全部楼层 |阅读模式

基于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一块
1.png

购买连接:
https://item.taobao.com/item.htm ... Vvb&id=520583000610

1.2 上传账号以及API Key在doit的云平台上申请一个账号。
申请地址:http://iot.doit.am
记住自己的账号(Uid)和密码(Passoword)
2.png

登陆可以看到默认界面
3.png
按照下图获取API的Key,用于上传数据。

4.png
新添一个设备,名为arduino。
5.png
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烧写下列程序。
  1. void setup()
  2. {
  3.   Serial.begin(9600);
  4.   randomSeed(analogRead(0));
  5. }
  6. void loop()
  7. {
  8.     delay(1000);
  9.      Serial.print("cmd=upload&device_name=arduino&data=");
  10.      Serial.print(random(1000));//send a random number
  11.      Serial.println("&uid=doit_demo&key=a4b4c7cbc8685cc5309d60647cae546b");
  12. }
复制代码

上述程序的功能是向服务器发送随机数。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
6.png
配置ESP8266连接到无线路由器。配置其在STA工作模式,TCP Client连接,远程IP填写为:
iot.doit.am。端口为8810。

2.3 运行查看将ESP12E Shield的SW1拨码开关均拨到ON位置。启动arduino。
稍等片刻,可以在服务器上看到上传的数据。
通过DataList查看:
7.png

通过DataDisplay查看:
8.png
9.png


三反向控制3.1 arduino程序

Arduino uno反向控制程序。
  1. unsigned long MS_TIMER=0;
  2. unsigned long lastMSTimer=0;
  3. String comdata = "";
  4. char flag=false;
  5. void setup()
  6. {
  7.   Serial.begin(9600);
  8.   pinMode(2,OUTPUT);
  9.   MS_TIMER=millis();
  10. }
  11. void loop()
  12. {

  13.   if(flag == false)
  14.   {
  15.     if(millis() - MS_TIMER> 5000)
  16.     {
  17.       Serial.println("cmd=subscribe&topic=doit_demo");
  18.       MS_TIMER = millis();
  19.     }
  20.   }
  21.   if (Serial.available() > 0)  
  22.   {
  23.     //comdata = char(Serial.read());
  24.     comdata += char(Serial.read());
  25.     lastMSTimer  = millis();
  26.     delay(5);
  27.   }
  28.   if(comdata.length()>0&& millis() - lastMSTimer > 100)
  29.   {
  30.     if(comdata.compareTo("cmd=subscribe&res=1\r\n")==0)
  31.        flag = true;
  32.     else if(comdata.compareTo("cmd=publish&device_name=arduino&device_cmd=d2 on\r\n")==0)
  33.         digitalWrite(2, HIGH);
  34.     else if(comdata.compareTo("cmd=publish&device_name=arduino&device_cmd=d2 off\r\n")==0)
  35.         digitalWrite(2, LOW);
  36.     comdata = "";
  37.   }
  38. }
复制代码


3.2 ESP8266透传模块配置

本节同2.2节。

3.3 网页控制

利用一个发光二极管接到Arduino UNO D2管脚(阳极接D2、阴极接GND)。
将ESP12E Shield的SW1拨码开关均拨到ON位置。启动ARDUINO。
登陆账号进行控制。如下图所示。输入“d2 on”打开LED,或者输入“d2 off”关闭LED。实现远程控制。
10.png
11.png
12.png
13.png


实际效果照片:
关闭LED状态:
14.png

打开LED状态:
15.png


其他链接:

基于ESP8266串口WiFi扩展板上传数据到服务器和反向控制.pdf

1.57 MB, 下载次数: 9894

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|四博智联 Inc. ( 粤ICP备15034758号-1

GMT+8, 2024-3-19 15:35 , Processed in 0.063704 second(s), 29 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表