1.先使用ESP8266-01手动连接WIFI
2.拷贝代码
#include <SoftwareSerial.h>
SoftwareSerial mySerial(8, 9); // RX, TX //模拟一个软串口
void setup()
{
Serial.begin(9600);//设置硬串口波特率
Serial.println("ESP8266 WIFI Test");
while (!Serial) {//串口是否准备好。
;
}
Serial.println("hardware serial!");
mySerial.begin(9600);//设置8266的波特率为115200,初始默认是115200
mySerial.println("software serial!");
}
void loop()
{
if (mySerial.available())//获取从软串口读取有效的字节数
{
Serial.write(mySerial.read());//硬串口写软串口中读取的数据
}
if (Serial.available()) {//获取从硬串口读取有效的字节数
mySerial.write(Serial.read());//软串口写硬串口中读取的数据
}
}
打开Arduino IDE串口监视器 选择波特率9600,下方设为NL和CR 只有出现了ERROR才是运行成功 接下来开始依次运行AT命令
AT
AT+CWMODE=1 设置模组为STA模式 连接WiFi的模式
AT+RST //复位ESP8266模块(可以不用)
AT+CWLAP //查询附近 WIFI(可以不用)
AT+CWJAP="ntxz","12345678" //连接 WIFI
AT+CIPMUX=0 //设置单连接
AT+CIPMODE=1 //设置 tcp透传
AT+CIPSTART="TCP","dtu.heclouds.com",1811 //连接onenet透传服务器
AT+CIPSEND //开启tcp透传 开始发送数据
因为我用的是TCP透传,所以开发中最后我们还需要发送登录报文,只需要在输入框输入再发送就行,最后的脚本需要自己编写,后面会介绍 命令执行结果如下图所示:
3.自动联网及发送数据(需要先手动连网一次)
#include <SoftwareSerial.h>
void setup()
{
Serial.begin(9600);//设置硬串口波特率
while (!Serial) {//串口是否准备好。
;
}
do{
Serial.print("AT+CWJAP=\"ntxz\",\"12345678\"\r\n"); //连接WIFI
delay(5000);
}while(!Serial.find("OK"));
do{
Serial.print("AT+CIPSTART=\"TCP\",\"dtu.heclouds.com\",1811\r\n");
delay(1000);
}while(!Serial.find("OK"));
do{
Serial.print("AT+CIPMODE=1\r\n");
delay(1000);
}while(!Serial.find("OK"));
do{
Serial.print("AT+CIPSEND\r\n");
delay(1000);
}while(!Serial.find("OK"));
Serial.print("你的登录报文");
delay(500);
}
void loop()
{
int a=23; //模拟上传数据
int b=45; //模拟上传数据
delay(2000);
Serial.print(String(int(a))+String(int(b))); //发送数据至onenet
if(Serial.find("1")){ //接收onenet下发的命令
Serial.print("开始浇水!!!");
}else if(Serial.find("0")){
Serial.print("停止浇水!!!");
}
delay(2000);
}
运行结果:
其他问题
因为TCP透传需要编写lua脚本,在最后修改
function device_data_analyze(dev)
local t={}
local a=0
-- 添加用户自定义代码 --
-- 例如: --
local s = dev:size()
add_val(t,"humidity",a,dev:bytes(1,2)) --添加到datastream数据流名称
add_val(t,"level",a,dev:bytes(3,2))
dev:response()
dev:send("received")
-- return $1,$2 --
-- 例如:2345 23就是humidity的 45就是level的 --
return s,to_json(t)
end
https://blog.csdn.net/Alvarez/article/details/103741643
|