ESP8266 WiFi 模块连接乐为物联云实现PM2.5测试系统

来源:互联网 发布:网络推销授权员合同 编辑:程序博客网 时间:2024/05/16 14:37

ESP8266 WiFi 模块连接乐为物联云实现PM2.5测试系统

1.关于ESP8266
安信可科技推出的ESP8266 WiFi 模块可以以极低的成本把传统单片机系统接入物联网。内置WiFi前端和高性能的32位ESP32MCU,内置无线网络协议IEEE802.11b/g/n 协议栈以及 TCP/IP 协议栈,能够实现用户串口或 TTL 电平数据到无线网络之间的转换,从而实现数据借助WiFi模块在局域网的无线传输和网络传输 。
这里写图片描述
2.现有单片机颗粒物传感器应用方案
原本基于cypress PSOC4单片机和攀藤科技的PMS6003 PM2.5传感器的已经OK。仅能通过LCD显示,无法接入internet。
具体实现过程不在详述,请自行参考PMS6003颗粒物传感器中文说明书V2.5及PSOC4 CY8CKIT-042 开发板。
这里写图片描述
2.PC端串口调试ESP8266 WiFi 模块
串口WiFi 模块嘛!所有的设置及操作命令都要通过串口命令来执行,以PC串口设置来说明。
首先通过PC串口设置ESP8266 WiFi 模块
接线方式:
这里写图片描述
打开串口工具,设置好波特率(115200), 通过AT command来设置。
/****AT command list*****/
AT+RST //reset
AT+CIPMODE=1 //STA mode
AT+CIPMUX=0 //单连接模式
AT+CWMODE=1 //透传模式
AT+CWJAP=”lemon p9”,”xxxxxxxx” //connect to a WIFI AP with SSID & password
AT+CIPSTART=”TCP”,”api.lewei50.com”,80 //setup TPC link with leiwei service
AT+CIPSEND //进入透传开始发送数据
/*
收到此命令后先换行返回”>”
然后就进入了透传模式,每包数据以20ms间隔区分,每包最大2048字节。
当输入单独一包”+++”返回指令模式。
该指令必须在开启透传模式以及单连接模式下使用
*/
+++ //透传模式下发送三个+++退出透传,不要勾选新行(\r\n),
AT+SAVETRANSLINK=1,”api.lewei50.com”,80,”TCP” //开机自动进入透传 并且连接到乐联网
AT+CIPCLOSE //Close TCP or UDP
这里写图片描述

通过PC设置好模式及AP SSID/Password之后,再把WIFI 模块与单片机UART 端口相连。需要提供一个稳定的3.3V给ESP8266. 此时模块上电后会自动连接WIFI 并与乐联网建立TCP连接, ESP8266是TCP Client, www.lewei50.com是TCP Server。
**

/*********AT command list**********/AT+RST                                                              //resetAT+CIPMODE=1                                                        //STA modeAT+CIPMUX=0                                                             //单连接模式AT+CWMODE=1                                                             //透传模式AT+CWJAP="lemon p9","xxxxxxxx"                  //connect to a WIFI AP with SSID & passwordAT+CIPSTART="TCP","api.lewei50.com",80      //setup TPC link with leiwei serviceAT+CIPSEND                                                              //进入透传开始发送数据/*收到此命令后先换行返回”>”然后就进入了透传模式,每包数据以20ms间隔区分,每包最大2048字节。当输入单独一包”+++”返回指令模式。该指令必须在开启透传模式以及单连接模式下使用*/+++                                                                             //透传模式下发送三个+++退出透传,不要勾选新行(\r\n),AT+SAVETRANSLINK=1,"api.lewei50.com",80,"TCP" //开机自动进入透传 并且连接到乐联网AT+CIPCLOSE                                                                     //Close TCP or UDP

[Remark]

** 为了方便说明,AP SSID/Password直接由电脑串口写死在WIFI 模组中,当然也可以通过单片机串口来写入。

3.乐为网API在线调试

乐为物联提供的是接受post请求,具体请至乐为网申请账号,并在线测试API接口。
具体请至 https://www.lewei50.com 了解

这里写图片描述

其实这一步还比较简单,按照要求写入自己的UserKey,稍微需要注意的两点就是
网关标识 这个根据自己的情况,根据你创建的设备的时候的标识,正常系统默认生成 01、02、03……,这里你想测试哪个设备,就写哪个标识。
数据格式 这里的数据格式是一个括号,里面也是一个或者几个JSON的数据形式。这里写入我们要上传这个设备哪一个传感器的当前值。
所以从这里我们也可以看到,要把数据上传到乐联网
使用的是POST请求
请求中应包含 UserKey、Host地址、JSON数据
JSON数据可以单独发一个传感器,也可以一次发好几个传感器数据。
模拟调试成功的返回的响应应该是 successful true 如果是false就要找原因了。

4 然后就是单片机通过串口命令与TCP server通讯了。

/***post command to lewei cloud***/POST /api/V1/gateway/Updatesensors/01 HTTP/1.1userkey: f93d25ae3a1d45c58416ccd4f26048eaHost: open.lewei50.comContent-Length: 32Connection: close[{"Name":"particle","Value":11}]//Remark:[1] Content-Length: 32 = total length of jason command([{"Name":"particle","Value":11}])[2] Please add a new empty line before json command

单片机代码

/***********WiFi Tx Buffer define***************/char8 PM2_5[]="0";char8 *WifitxBuffer1={"POST /api/V1/gateway/Updatesensors/01 HTTP/1.1\r\n\userkey: f93d25ae3a1d45c58416ccd4f26048ea\r\n\Host: open.lewei50.com\r\n\Content-Length: 32\r\n\Connection: close\r\n\\r\n\[{\"Name\":\"particle\",\"Value\":"};char8 *WifitxBufferend={"}]\r\n"};/************Send POST command to TCP Server*********************/void SendExhaustParticleSensorData(void){    WIFI_UART_UartPutString(WifitxBuffer1);    WIFI_UART_UartPutString(PM2_5)    WIFI_UART_UartPutString(WifitxBfferend);}

//Remark: 发送频率不能过高,服务器最高允许10S接受一次数据。
5 测试结果。
这里写图片描述

原创粉丝点击