一、項(xiàng)目目標(biāo)
通過(guò)機(jī)智云平臺(tái),快速實(shí)現(xiàn)以下功能:
MCU + ESP8266 實(shí)現(xiàn)單點(diǎn)控制
實(shí)現(xiàn)多點(diǎn)控制(如多個(gè)按鍵控制一個(gè)設(shè)備)
實(shí)現(xiàn)MCU 數(shù)據(jù)上報(bào)至云端
實(shí)現(xiàn)獲取網(wǎng)絡(luò)時(shí)間(NTP)

二、機(jī)智云平臺(tái)簡(jiǎn)介
機(jī)智云(Gizwits)是一款面向物聯(lián)網(wǎng)開(kāi)發(fā)者的云平臺(tái),提供:
免費(fèi)的云端服務(wù)與接入架構(gòu)
自動(dòng)生成設(shè)備端代碼
支持多種硬件平臺(tái)(如 STM32、ESP8266、ESP32 等)
提供開(kāi)發(fā)調(diào)試 App
組成結(jié)構(gòu):
機(jī)智云 = 云端服務(wù)器 + APP框架 + 自動(dòng)生成底層代碼
核心優(yōu)勢(shì):
省去協(xié)議編寫(xiě)
提高開(kāi)發(fā)效率
簡(jiǎn)化配置流程
三、兩種典型開(kāi)發(fā)方案
| 開(kāi)發(fā)方案 | 描述 | 特點(diǎn) |
|---|---|---|
| MCU + ESP8266 串口通信 | 模組負(fù)責(zé)聯(lián)網(wǎng),MCU負(fù)責(zé)功能邏輯 | 本文采用 |
| SoC 模組直接開(kāi)發(fā)(如 ESP32) | 直接在模組上跑應(yīng)用 | 簡(jiǎn)化硬件 |
四、開(kāi)發(fā)流程總覽
注冊(cè)機(jī)智云賬號(hào),創(chuàng)建產(chǎn)品
創(chuàng)建自定義數(shù)據(jù)點(diǎn)(即控制/狀態(tài)變量)
下載機(jī)智云代碼(自動(dòng)生成)
配置 MCU 串口與定時(shí)器
移植 Gizwits 庫(kù)到工程中
配置固件、燒寫(xiě) ESP8266
調(diào)用初始化函數(shù),測(cè)試控制與上報(bào)功能
五、代碼移植與配置詳解
1. 配置 USART2 接收中斷
voidUSART2_IRQHandler(void)
{
staticu8 data;
if(USART_GetITStatus(USART2,USART_IT_RXNE))
{
USART_ClearITPendingBit(USART2,USART_IT_RXNE);
data = USART_ReceiveData(USART2);
gizPutData(&data,1); // 寫(xiě)入環(huán)形緩沖區(qū)
}
}
2. 實(shí)現(xiàn)uartWrite()串口發(fā)送函數(shù)
int32_tuartWrite(uint8_t*buf,uint32_tlen)
{
for(uint32_ti =0; i < len; i++)
{
USART_SendData(USART2, buf[i]);
while(USART_GetFlagStatus(USART2, USART_FLAG_TXE) == RESET);
if(i >=2&& buf[i] ==0xFF)
{
USART_SendData(USART2,0x55);
while(USART_GetFlagStatus(USART2, USART_FLAG_TXE) == RESET);
}
}
returnlen;
}
3. 1ms 定時(shí)器實(shí)現(xiàn)
定時(shí)器中斷服務(wù)函數(shù)中添加:
voidTIM1_UP_IRQHandler(void)
{
if(TIM_GetITStatus(TIM1, TIM_IT_Update))
{
TIM_ClearITPendingBit(TIM1, TIM_IT_Update);
gizTimerMs(); // 為 Gizwits 協(xié)議提供時(shí)基
}
}
4. 初始化代碼封裝
voidGizwits_Init(void)
{
TIM1_Update(); // 初始化1ms定時(shí)器
Usart2_Init(); // 初始化串口
memset(¤tDataPoint,0,sizeof(dataPoint_t));
gizwitsInit(); // 初始化協(xié)議棧
}
5. 主循環(huán)中調(diào)用:
while(1)
{
gizwitsHandle(¤tDataPoint);// 數(shù)據(jù)處理與上報(bào)
userHandle(); // 采集邏輯
}
六、ESP8266 燒錄機(jī)智云固件
兩種燒錄方式:
| 固件類(lèi)型 | 描述 | 推薦場(chǎng)景 |
|---|---|---|
| 合并固件 combine.bin | 適合快速下載,只設(shè)置一個(gè)地址 | 推薦新手 |
| 分離固件 | 需配置 4 個(gè)地址:boot、init、blank、app | 更靈活 |
燒錄步驟:
板子撥到LOAD 模式
使用樂(lè)鑫串口燒錄工具,配置固件路徑
設(shè)置波特率(115200 或 9600)
點(diǎn)擊START開(kāi)始燒寫(xiě)
燒寫(xiě)完成后,切回RUN 模式
七、機(jī)智云 APP 調(diào)試與配網(wǎng)
下載 Gizwits 調(diào)試 APP(推薦 v2.4.5)
使用 SoftAP 或 AirLink 配網(wǎng)
綁定設(shè)備(掃碼或輸入 DID)
實(shí)時(shí)觀(guān)察數(shù)據(jù)點(diǎn)上傳、下發(fā)控制
八、數(shù)據(jù)點(diǎn)邏輯開(kāi)發(fā)
1. 數(shù)據(jù)上報(bào)邏輯
voiduserHandle(void)
{
// 模擬采集溫度數(shù)據(jù)
currentDataPoint.valueTemperature = get_temperature();
}
2. 云端控制執(zhí)行邏輯
int8_tgizwitsEventProcess(...)
{
switch(event[i])
{
caseEVENT_LED:
currentDataPoint.valueLED ? LED_ON() : LED_OFF();
break;
...
}
}
九、獲取網(wǎng)絡(luò)時(shí)間(NTP)
機(jī)智云默認(rèn)支持網(wǎng)絡(luò)時(shí)間同步,用戶(hù)可在gizwitsEventProcess中監(jiān)聽(tīng):
caseEVENT_NTP:
// 時(shí)間戳處理 ntp_time
break;
十、總結(jié)
本教程從實(shí)際出發(fā),完整展示了使用機(jī)智云平臺(tái) + ESP8266 + MCU實(shí)現(xiàn)智能家居聯(lián)網(wǎng)通信的全過(guò)程。通過(guò)代碼自動(dòng)生成 + 固件燒錄 + STM32 工程移植,開(kāi)發(fā)者無(wú)需關(guān)心底層協(xié)議即可快速構(gòu)建聯(lián)網(wǎng)設(shè)備。
-
mcu
+關(guān)注
關(guān)注
147文章
18934瀏覽量
398525 -
智能家居
+關(guān)注
關(guān)注
1943文章
9997瀏覽量
197450 -
機(jī)智云
+關(guān)注
關(guān)注
3文章
647瀏覽量
27771
發(fā)布評(píng)論請(qǐng)先 登錄
智能家居燈
【FireBLE申請(qǐng)】藍(lán)牙控制智能家居
【Aworks申請(qǐng)】智能家居
【OK210試用體驗(yàn)】基于飛凌OK210的智能家居的應(yīng)用【項(xiàng)目完結(jié)】
【藍(lán)牙4.1申請(qǐng)】智能家居項(xiàng)目開(kāi)發(fā)
【CANNON申請(qǐng)】智能家居
智能家居入口科普 讓你更好了解智能家居
智能家居未來(lái)已到!
【HarmonyOS HiSpark Wi-Fi IoT HarmonyOS 智能家居套件試用 】智能家居項(xiàng)目
【HarmonyOS HiSpark Wi-Fi IoT HarmonyOS 智能家居套件試用 】智能家居
【HarmonyOS HiSpark Wi-Fi IoT HarmonyOS 智能家居套件試用 】智能家居
【HarmonyOS HiSpark Wi-Fi IoT HarmonyOS 智能家居套件試用 】智能家居項(xiàng)目
項(xiàng)目實(shí)戰(zhàn)教程來(lái)了-4412開(kāi)發(fā)板-zigbee智能家居
智能家居開(kāi)源項(xiàng)目
基于智能家居項(xiàng)目 完結(jié)散花
評(píng)論