前言
该项目为业余时间做的作品,利用Arduino串口发送AT指令配置ESP8266,使ESP8266连接到Onenet物联网平台从而获取云端数据,项目优点是配置简单,程序做好处理了,只需更改WIFI名称、WIFI密码、、Onenet设备号、APIKEY、数据流名称。
Onenet平台具有应用编辑功能,很方便的可以创建出一个上位机的界面,Onenet提供的APP还可以显示网页端编辑好的界面,所以可以很快速的开发出一个物联网系统的上位机程序。在本作品中我创建了一个按钮用于控制LED灯
效果如下图
演示视频:https://v.youku.com/v_show/id_XNDI2ODAzMzQ3Mg==.html?spm=a2h3j.8428770.3416059.1
Onenet配置
在另一篇博客做详细的介绍编写中
硬件部分
器材 | 数量 | 截图 |
---|---|---|
Arduino UNO | 1 |
|
ESP8266(ESP-01S) | 1 |
|
LED(5V) | 1 |
|
接线部分
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.youkuaiyun.com/download/qq_39901989/11958696