前言
本項(xiàng)目主要通過(guò)使用STM32F103C8T6作為主控MCU,ESP8266作為數(shù)據(jù)透?jìng)髂K,接入機(jī)智云AIoT云平臺(tái),通過(guò)在線智能產(chǎn)品,實(shí)現(xiàn)了遠(yuǎn)程聯(lián)網(wǎng)、溫濕度監(jiān)測(cè)、APP控制等功能。
上文介紹了“創(chuàng)建云端產(chǎn)品,燒錄Gagent”,“DHT11驅(qū)動(dòng)的編寫”。本文主要介紹,機(jī)智云代碼工程移植、采集數(shù)據(jù)上發(fā)、控制數(shù)據(jù)下拉、配置入網(wǎng)。
機(jī)智云代碼工程移植
前面我們有說(shuō)到,在機(jī)智云平臺(tái)創(chuàng)建產(chǎn)品完成后,生成了一個(gè) MCU 的工程,這個(gè)工程是 CubeMX 所創(chuàng)建的,為了保持一致性,我們選擇使用 HAL 庫(kù)進(jìn)行開(kāi)發(fā)。
1、創(chuàng)建一個(gè)新的 CubeMX 工程。
芯片選型為:STM32F103RCTx
2、配置相關(guān)外設(shè)
2.1 SYS 配置為 SWD 調(diào)試
2.2 使能外部高速時(shí)鐘,并配置為外部晶振
2.3 配置 TIM3 相關(guān)參數(shù),機(jī)智云的通信協(xié)議中會(huì)用到
2.4 配置 TIM2 相關(guān)參數(shù),用于實(shí)現(xiàn) us 級(jí)的延時(shí)
2.5 配置 USART1,用在 PC 端打印信息
2.6 配置 USART2,用于連接 ESP-8266
2.6 配置所用到的 IO 口
兩個(gè)按鍵
兩個(gè)按鍵的公共端配置為 推挽輸出模式、低電平且下拉
兩個(gè)按鍵的自由端配置為 輸入模式、上拉
DHT11 DATA 引腳
配置為 推挽輸出模式、高電平且上拉
LED 燈
配置為 推挽輸出模式、低電平
2.7 配置時(shí)鐘樹(shù)
輸入頻率根據(jù)板子上的晶振頻率填寫,我們現(xiàn)在是 8 MHz。接著鎖相環(huán)進(jìn)行 9 倍頻,使 AHB、APB1、APB2 橋的頻率達(dá)到最高。
2.8 自動(dòng)生成 CubeMX 工程
最好對(duì)下面的選項(xiàng)進(jìn)行勾選。
3、將機(jī)智云平臺(tái)生成的協(xié)議 demo 移植進(jìn)入自己的工程
打開(kāi)機(jī)智云工程文件夾,將其中的 Gizwits、Hal、Utils 文件夾復(fù)制到自己的工程文件夾中。
在 Keil 中將復(fù)制的所有文件導(dǎo)入工程
修改 hal_key.c 中的初始化
語(yǔ)句中對(duì)應(yīng)的IO 口和引腳號(hào)改為自己配置好的
完成上述步驟后,工程移植成功。
采集數(shù)據(jù)的上發(fā)
voidgizwitsHandle(dataPoint_t*dataPoint)
參數(shù) dataPoint [in]:用戶設(shè)備數(shù)據(jù)點(diǎn)。
該函數(shù)中完成了相應(yīng)協(xié)議數(shù)據(jù)的處理即數(shù)據(jù)上報(bào)的等相關(guān)操作。
自定義相關(guān)代碼如下:
void userHandle(void)
{
DHT11_Read_Data(&temperature, &humidity);
currentDataPoint.valuetemperature = temperature;//Add Sensor Data Collection
currentDataPoint.valuehumidity = humidity;//Add Sensor Data Collection
}
控制數(shù)據(jù)的下拉
int8_tgizwitsEventProcess(eventInfo_t*info,uint8_t*gizdata,uint32_tlen)
參數(shù) info [in]:事件隊(duì)列
參數(shù) data [in]:數(shù)據(jù)
參數(shù) len [in]:數(shù)據(jù)長(zhǎng)度
用戶數(shù)據(jù)處理函數(shù),包括wifi狀態(tài)更新事件和控制事件。
自定義相關(guān)代碼如下:
case EVENT_LED:
currentDataPoint.valueLED = dataPointPtr->valueLED;
GIZWITS_LOG("Evt: EVENT_LED %d \n", currentDataPoint.valueLED);
if(0x01 == currentDataPoint.valueLED)
{
//user handle
PCout(15) = 1; // led燈亮
}
else
{
//user handle
PCout(15) = 0; // led燈滅
}
break;
ESP8266配置入網(wǎng)
有兩種配網(wǎng)的方式:airlink、softap。
這里我們選用 softap 模式進(jìn)行配網(wǎng)。
步驟如下:
1、板子上電后,短按 按鍵2 進(jìn)入 softap 模式
如果想要查詢是否處于 softap 模式,可以將串口連接至 PC,查看打印出的相關(guān)信息。
2、進(jìn)入機(jī)智云 APP 中選擇 熱點(diǎn)配置
填寫要連接的路由器的賬號(hào)和密碼,以及ESP-8266發(fā)出的 WIFI 名前綴和密碼。
3、選擇樂(lè)鑫模組
4、按照提示,連接前綴為 XPG-GAgent- 的熱點(diǎn)信號(hào)
5、等待幾秒鐘時(shí)間
6、連接成功
至此,即完成了 ESP-8266 softap 模式的配網(wǎng)。
-
物聯(lián)網(wǎng)
+關(guān)注
關(guān)注
2903文章
44275瀏覽量
371287 -
監(jiān)測(cè)系統(tǒng)
+關(guān)注
關(guān)注
8文章
2676瀏覽量
81256
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論