Arduino+ESP8266,AT指令配置连接Onenet物联网平台

前言

该项目为业余时间做的作品,利用Arduino串口发送AT指令配置ESP8266,使ESP8266连接到Onenet物联网平台从而获取云端数据,项目优点是配置简单,程序做好处理了,只需更改WIFI名称、WIFI密码、、Onenet设备号、APIKEY、数据流名称。

Onenet平台具有应用编辑功能,很方便的可以创建出一个上位机的界面,Onenet提供的APP还可以显示网页端编辑好的界面,所以可以很快速的开发出一个物联网系统的上位机程序。在本作品中我创建了一个按钮用于控制LED灯

效果如下图

Arduino+ESP8266,AT指令配置连接Onenet物联网平台_第1张图片

Arduino+ESP8266,AT指令配置连接Onenet物联网平台_第2张图片

Arduino+ESP8266,AT指令配置连接Onenet物联网平台_第3张图片

Arduino+ESP8266,AT指令配置连接Onenet物联网平台_第4张图片

 

 

演示视频:https://v.youku.com/v_show/id_XNDI2ODAzMzQ3Mg==.html?spm=a2h3j.8428770.3416059.1

Onenet配置

在另一篇博客做详细的介绍编写中

硬件部分

 

器材 数量 截图
Arduino UNO 1

Arduino+ESP8266,AT指令配置连接Onenet物联网平台_第5张图片

 

ESP8266(ESP-01S) 1

Arduino+ESP8266,AT指令配置连接Onenet物联网平台_第6张图片

 

LED(5V) 1

Arduino+ESP8266,AT指令配置连接Onenet物联网平台_第7张图片

 

 

接线部分

Arduino+ESP8266,AT指令配置连接Onenet物联网平台_第8张图片Arduino+ESP8266,AT指令配置连接Onenet物联网平台_第9张图片

ESP8266 Arduino
3V3 3.3V
GND GND
RX Tx--1
TX Rx--2

 

程序

1、配置串口及初始化ESP8266

初始化ESP8266

void ConnectSetup()   //初始化ESP8266,连接WiFi
{
  Serial.begin(115200);
  Serial.println("AT+CWMODE=1");    //配置为Station模式,连接热点
  delay(500);
  Serial.println("AT+RST");         //复位ESP8266模块
  delay(1000);
  Serial.println("AT+CWJAP=\""+WiFiName+"\",\""+WiFIPasswd+"\"");//配置为Station模式,连接热点
  delay(2500);  
}

初始化串口及IO口,在这里控制LED灯的引脚为7号引脚,也可以更改为其他的

void setup()
{

    Serial.begin(115200);
    pinMode(7, OUTPUT);
    ConnectSetup();
}

2、获取Onenet平台取数据

采用Http协议,GET Onenet的数据

void GetOnenet()
{
  String str = "GET  http://api.heclouds.com/devices/"+DeviceID+"/datastreams/"+DataStreamName+"  HTTP/1.1"+"\napi-key:  "+APIKey+"\nHost:api.heclouds.com\nConnection:close\n\n";
  Serial.println("AT+CIPSTART=\"TCP\",\""+ServerIP+"\","+ServerPost);         //连接服务器
  delay(100);
  Serial.println("AT+CIPSEND="+(String)str.length());         //设置发送数据长度
  delay(200);
  Serial.println(str);//Get Onenet的数据
}

3、主程序

定时向串口发送数据包,连接Onenet平台获取数据

void loop()
{
    GetOnenet();
    if (Serial.available() > 0)
    {
      while (Serial.available() > 0)  
      {
          data="";
          while(Serial.read() >= 0){}
          data =Serial.readString();
      }
      if (data.length() > 0)
      {
        char str=data.charAt( data.indexOf("current_value")+15);
        if(str == '0')digitalWrite(7, LOW);
        if(str == '1')digitalWrite(7, HIGH);        
      }
    }
  delay(3000);
}

源码下载:https://download.csdn.net/download/qq_39901989/11958696

你可能感兴趣的:(Arduino,ESP8266)