本帖內容為82C52單片機通過wifi模塊(ESP8266)將溫度傳感器(DS18B20)的溫度數據通過HTTP協議上傳到OneNET云平臺。
所需的硬件設備:
單片機一塊;
ESP8266模塊一個;
DS18B20一個。
軟件:
需要在OneNET平臺注冊一個賬號,并建立相關產品設備。
如圖所示:
部分代碼如下:
#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit DQ=P2^4;
sbit k1=P1^0;
uchar aa[1]="";
uint i,temp;
void delay(uint i) //延時5us
{
do
{
_nop_();
_nop_();
_nop_();
i--;
}
while(i);
}
void delay1(uint z) //延時1ms
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void sendChar(uchar a) //單片機發送一個字節
{
SBUF = a;
while(TI==0);
TI=0;
}
void sendString(uchar *s) //發送一個字符串
{
while(*s!='\0')
{
sendChar(*s);
s++;
}
}
void init()
{
/*串口中斷定時器初始化*/
TMOD=0x20; //定時器1工作在方式2
TH1=0xfd; //波特率為9600,精振為11.0592MHz
TL1=0xfd;
REN=1; //啟動串行口接收數據
SM0=0; //串口工作在方式1
SM1=1; //串行口工作方式選擇
EA=1; //打開總中斷
TR1=1; //打開定時器中斷
/*esp8266初始化*/
delay1(1000);
sendString("AT+CWMODE=3\r\n"); //設置WIFI應用模式
delay1(1000); //設置WIFI應用模式
sendString("AT+RST\r\n"); //重置WIFI模塊
delay1(1000);
sendString("AT+CIFSR\r\n"); //查詢本地IP
delay1(1000);
sendString("AT+CWJAP=\"123456\",\"wds123456\"\r\n");//連接無線路由器 //需要修改成你的熱點名稱和密碼
delay1(5000);
}
void chuansu() //單片機通過8266給OneNET傳送數據
{
sendString("AT+CIPSTART=\"TCP\",\"183.230.40.33\",80\r\n");//和服務器建立TCP連接
delay1(1000);
sendString("AT+CIPMODE=1\r\n"); //進入透明傳輸模式
delay1(1000);
sendString("AT+CIPSEND\r\n"); //開始傳輸
delay1(1000);
sendString("POST /devices/527602572/datapoints?type=3 HTTP/1.1\r\n"); //需要修改成你自己的id
delay1(1000);
sendString("api-key:sggrqbMr4YanhJ2YyjP6E=EwWd4=\r\n"); //需要修改成你的api-key
delay1(1000);
sendString("Host:api.heclouds.com\r\n");
delay1(1000);
sendString("Content-Length:11\r\n");
delay1(1000);
sendString("\r\n");
delay1(5000);
sendString("{\"temp\":");
delay1(1000);
sendString(aa); //aa為溫度數據
delay1(1000);
sendString("}");
delay1(1000);
sendString("\r\n");
delay1(1000);
ES=1; //開串口中斷
}
將溫度上傳到OneNET.zip
(29.01 KB, 下載次數: 743)
2019-8-8 17:04 上傳
點擊文件名下載附件
(有不懂或者不完善的地方歡迎大家評論)
|