一、項目目標
通過機智云平臺,快速實現以下功能:
實現多點控制(如多個按鍵控制一個設備)
實現MCU 數據上報至云端
實現獲取網絡時間(NTP)

二、機智云平臺簡介
機智云(Gizwits)是一款面向物聯網開發者的云平臺,提供:
免費的云端服務與接入架構
自動生成設備端代碼
支持多種硬件平臺(如 STM32、ESP8266、ESP32 等)
提供開發調試 App
組成結構:
機智云 = 云端服務器 + APP框架 + 自動生成底層代碼
核心優勢:
省去協議編寫
提高開發效率
簡化配置流程
三、兩種典型開發方案
| 開發方案 | 描述 | 特點 |
|---|---|---|
| MCU + ESP8266 串口通信 | 模組負責聯網,MCU負責功能邏輯 | 本文采用 |
| SoC 模組直接開發(如 ESP32) | 直接在模組上跑應用 | 簡化硬件 |
四、開發流程總覽
注冊機智云賬號,創建產品
創建自定義數據點(即控制/狀態變量)
下載機智云代碼(自動生成)
配置 MCU 串口與定時器
移植 Gizwits 庫到工程中
配置固件、燒寫 ESP8266
調用初始化函數,測試控制與上報功能
五、代碼移植與配置詳解
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); // 寫入環形緩沖區
}
}
2. 實現uartWrite()串口發送函數
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 定時器實現
定時器中斷服務函數中添加:
voidTIM1_UP_IRQHandler(void)
{
if(TIM_GetITStatus(TIM1, TIM_IT_Update))
{
TIM_ClearITPendingBit(TIM1, TIM_IT_Update);
gizTimerMs(); // 為 Gizwits 協議提供時基
}
}
4. 初始化代碼封裝
voidGizwits_Init(void)
{
TIM1_Update(); // 初始化1ms定時器
Usart2_Init(); // 初始化串口
memset(¤tDataPoint,0,sizeof(dataPoint_t));
gizwitsInit(); // 初始化協議棧
}
5. 主循環中調用:
while(1)
{
gizwitsHandle(¤tDataPoint);// 數據處理與上報
userHandle(); // 采集邏輯
}
六、ESP8266 燒錄機智云固件
兩種燒錄方式:
| 固件類型 | 描述 | 推薦場景 |
|---|---|---|
| 合并固件 combine.bin | 適合快速下載,只設置一個地址 | 推薦新手 |
| 分離固件 | 需配置 4 個地址:boot、init、blank、app | 更靈活 |
燒錄步驟:
板子撥到LOAD 模式
使用樂鑫串口燒錄工具,配置固件路徑
設置波特率(115200 或 9600)
點擊START開始燒寫
燒寫完成后,切回RUN 模式
七、機智云 APP 調試與配網
下載 Gizwits 調試 APP(推薦 v2.4.5)
使用 SoftAP 或 AirLink 配網
綁定設備(掃碼或輸入 DID)
實時觀察數據點上傳、下發控制
八、數據點邏輯開發
1. 數據上報邏輯
voiduserHandle(void)
{
// 模擬采集溫度數據
currentDataPoint.valueTemperature = get_temperature();
}
2. 云端控制執行邏輯
int8_tgizwitsEventProcess(...)
{
switch(event[i])
{
caseEVENT_LED:
currentDataPoint.valueLED ? LED_ON() : LED_OFF();
break;
...
}
}
九、獲取網絡時間(NTP)
機智云默認支持網絡時間同步,用戶可在gizwitsEventProcess中監聽:
caseEVENT_NTP:
// 時間戳處理 ntp_time
break;
十、總結
本教程從實際出發,完整展示了使用機智云平臺 + ESP8266 + MCU實現智能家居聯網通信的全過程。通過代碼自動生成 + 固件燒錄 + STM32 工程移植,開發者無需關心底層協議即可快速構建聯網設備。
-
mcu
+關注
關注
147文章
18924瀏覽量
397991 -
智能家居
+關注
關注
1943文章
9995瀏覽量
197410 -
機智云
+關注
關注
3文章
647瀏覽量
27766
發布評論請先 登錄
基于智能家居項目 完結散花
評論