物聯(lián)網(wǎng)(一)---快速上手[STM32+OneNET+ESP8266]
物聯(lián)網(wǎng)(二)---原理分析[STM32+OneNET+ESP8266]
物聯(lián)網(wǎng)(三)---WEB下發(fā)命令控制單片機[STM32+OneNET+ESP8266]
物聯(lián)網(wǎng)(四)---搭建自己的TCP服務(wù)器[ESP8266]
物聯(lián)網(wǎng)(五)---搭建自己的云平臺[ESP8266+Django]
本文:
1.將對物聯(lián)網(wǎng)(IOT:Internet Of Things)作出簡單的介紹。
2.如何快速建立起硬件與網(wǎng)絡(luò)的連接,即實現(xiàn)自己的物聯(lián)網(wǎng)設(shè)備。
一、物聯(lián)網(wǎng)簡介
物聯(lián)網(wǎng)設(shè)備種類繁多,最為常見的就是手機,手機如何聯(lián)網(wǎng)的?現(xiàn)在又多了共享單車,想必這是最為簡單的物聯(lián)網(wǎng)產(chǎn)品了。下面以圖片的形式來介紹共享單車如何聯(lián)網(wǎng)的。

我覺得這幅圖應(yīng)該能描繪出一個大概的輪廓了。
個人對物聯(lián)網(wǎng)的想法:
物聯(lián)網(wǎng)終將以各種形式走進千家萬戶,時間早晚罷了,如今5G網(wǎng)絡(luò)的出現(xiàn)可能會加速這一進程,但終究不是必需品,還缺乏一個好產(chǎn)品來徹底打開這一塊市場。
二、快速實現(xiàn)一個自己的物聯(lián)網(wǎng)設(shè)備
材料:
1.STM32單片機(Arduino、51等其他單片機也OK,甚至不要也沒關(guān)系)× 1;
2.ESP8266模塊(因為這里內(nèi)置了單片機)× 1;
3.其他開發(fā)單片機的必要設(shè)備;
4.OneNET物聯(lián)網(wǎng)云平臺(其他平臺也OK,像機智云、tp-link、樂為物聯(lián)、貝殼物聯(lián)等都行);
5.本文中使用到的程序源碼程序源碼;
[注]:需具備一點點硬件知識和一點點軟件知識。
2.1 配置服務(wù)端
Step 1:添加產(chǎn)品。

Step 2:填寫產(chǎn)品信息

Step 3:添加設(shè)備


【注】:一個產(chǎn)品可以添加很多設(shè)備。

下面兩個信息比較重要,需要記下來,程序中要用到(突然忘了程序中忘了刪了)


Step 4:添加Web APP



點擊進去做一個簡單的APP,拖框框就好了。

Step 5: 編輯Web APP,到時候就在此交互

這里自己多去摸索一下,比較簡單,需要注意的就是下面的數(shù)據(jù)流的選擇。

創(chuàng)建好之后也可以美化一下。
記得點保存按鈕。。。
記得點保存按鈕。。。
記得點保存按鈕。。。
到此服務(wù)端就創(chuàng)建完成了,其中不能出錯的信息是:
1.APIkey;
2.DeviceID;
3.連接方式(本文中是HTTP);
2.2 硬件電路連接
ESP8266是通過串口的方式與單片機通信的,ESP8266可以去樂鑫官網(wǎng)下載PDF文件詳細了解

這部分比較簡單,就是常規(guī)的串口通信,和接CH340沒什么不同。
硬件電路實物如下:

沒有開發(fā)板的話可以使用下面的組合:


由于我使用的SHT20溫濕度傳感器,使用的人可能不多,這個沒關(guān)系,到時候使用for循環(huán)產(chǎn)生一些數(shù)據(jù)上傳就好了。
我的程序中使用的是USART2與ESP8266相連接,USART1作為DEBUG用,輸出調(diào)試參數(shù),這個根據(jù)需要修改吧。
2.3 程序修改
下面這兩個參數(shù)須修改成自己的APIKEY和DeviceID,不能出錯,否則連接不上平臺,

然后再修改下你ESP8266所要連接的WIFI名稱和密碼,注意切換了文件。

修改好上面的參數(shù)后,再把程序里上傳的溫濕度修改成使用for循環(huán)產(chǎn)生數(shù)據(jù),像下面這樣:
while(1)
{
/* 獲取溫濕度 */
/*
SHT2x_MeasureHM(SHT20_Measurement_T_HM, &temp);
mDelay(500);
SHT2x_MeasureHM(SHT20_Measurement_RH_HM, &humi);
*/
if(for_count < 10){
temp = for_count;
humi = for_count-2;
for_count++;
}
else{
for_count = 2;
}
/* 轉(zhuǎn)化為字符串形式 */
sprintf(tempStr, "%d", temp);
sprintf(humiStr, "%d", humi);
//printf("%s %s\r\n", tempStr, humiStr);
USART2_Clear();
len = HTTP_PostPkt(HTTP_Buf, API_KEY, DEV_ID, "temp", tempStr); //HTTP組包
USART2_Write(USART2, (unsigned char *)(HTTP_Buf), len); //報文發(fā)送
printf("send HTTP msg:\r\n%s\r\n", HTTP_Buf);
mDelay(1000);
printf("rcv response:\r\n%s\r\n", usart2_rcv_buf);
USART2_Clear();
len = HTTP_PostPkt(HTTP_Buf, API_KEY, DEV_ID, "humi", humiStr); //HTTP組包
USART2_Write(USART2, (unsigned char *)(HTTP_Buf), len); //報文發(fā)送
printf("send HTTP msg:\r\n%s\r\n", HTTP_Buf);
mDelay(1000);
printf("rcv response:\r\n%s\r\n", usart2_rcv_buf);
mDelay(3000);
}
將編寫好的程序下載至單片機中,這里需要注意的是:
1.確定好你的單片機型號;
2.確定你的下載方式;
3.確定你單片機RAM的大?。?br> 4.下載程序后記得復位單片機;
以上步驟確認無誤的話ESP8266將會把for循環(huán)產(chǎn)生的數(shù)據(jù)上傳到OneNET官網(wǎng),然后去Web APP中選擇曲線對應(yīng)得數(shù)據(jù)流。
選擇好之后就可以在Web APP中看到對應(yīng)的數(shù)據(jù)了,如下圖:

【注】:如果你顯示的數(shù)據(jù)只有3個數(shù)據(jù)點,則需要去樣式->X軸中修改數(shù)據(jù)點的個數(shù)。
完成后就可以看到數(shù)據(jù)了,像下面這樣:

這樣就完成了單片機將數(shù)據(jù)上傳到網(wǎng)上的步驟,當然這個過程是單向的,只能上傳數(shù)據(jù),不能在云平臺上下發(fā)數(shù)據(jù),因為使用HTTP協(xié)議只能由客戶端向服務(wù)器端發(fā)起請求,服務(wù)器是不能主動向客戶端發(fā)送數(shù)據(jù)的。如果需要從云平臺上下發(fā)命令來控制單片機的話還需對程序進行一些修改,比如:換一種協(xié)議,能夠使服務(wù)器向客戶端發(fā)送數(shù)據(jù),具體如何實現(xiàn),可以查看本文集下的其他同類進階文章。
END.