ESP8266 物聯網平台的所有網絡功能均在庫中實現,對用戶不透明。
用戶應用的初始化功能可以在 user_main.c 中實現。
void user_init(void)是上層程序的入口函數,給用戶提供一個初始化接口,
用戶可在該函數內增加硬件初始化、網絡參數設置、定時器初始化等功能。
一、代碼結構
以固件中的examples文件夾下的IoT Demo為例
1. "usr"目錄
user_main.c — 程序主入口;
user_webserver.c — 創建 TCP 服務器的示例,提供 REST 的輕量 webserver 功能;
user_devicefind.c — UDP 傳輸功能的示例,提供 ESP8266 設備查找功能;
user_esp_platform.c — 與 Espressif 雲端服務器通信的示例;
user_json.c — json 包的處理示例;
user_plug.c — 智能插座的功能示例代碼;
user_light.c — PWM 實現智能燈的功能示例代碼;
user_humiture.c — 溫濕度傳感器的功能示例代碼;
2. "driver"文件夾
目前外圍驅動⽀支持 I2C Master,SPI,外部按鍵, PWM,雙 UART。
3. "include"目錄
include目錄下為應用程序相關頭文件,需要注意的是"user_config.h" 文件,
在該頭文件中可選擇具體的應用示例,僅支持每次打開一個宏定義,使能一個設備。
具體支持如下例子:PLUG_DEVICE(智能插座),LIGHT_DEVICE(燈),SENSOR_DEVICE(傳感器);
其中 SENSOR_DEVICE (傳感器)又分為 HUMITURE_SUB_DEVICE(溫濕度傳感器)和FLAMMABLE_GAS_SUB_DEVICE(可燃氣體檢測)。
另需注意,以下頭文件中的宏定義指示用戶參數區,用戶需根據編譯時選擇的 flash map 自行調整,flash map 詳見文檔 “2A-ESP8266__IOT_SDK_User_Manual”
user_esp_platform.h 中的 #define ESP_PARAM_START_SEC 0x3D // or 0x7D, or 0xFD
user_light.h 中的 #define PRIV_PARAM_START_SEC 0x3C // or 0x7C, or 0xFC
user_plug.h 中的 #define PRIV_PARAM_START_SEC 0x3C // or 0x7C, or 0xFC
二、簡單實例
使用 與 Espressif 雲端服務器通信的示例(user_esp_platform.c )分析
IoT Demo 在 user_esp_platform_init 中設置初始工作模式為 sotfAP+station 共存的模式,用
戶連入 ESP8266 softAP 接口的局域網,發指令讓 ESP8266 station 接口連接可入外網的路由(AP),
用戶可通過向 ESP8266 softAP 接口發指令查詢 ESP8266 station 連接 WiFi 的狀況。ESP8266 station 接
口連入路由后,自動連接 Espressif 雲端服務器,對應代碼 user_esp_platform_check_ip 。連接服務
器完成后,切換進入station模式。
ESP8266 softAP 的 SSID 默認為 ESP_XXXXXX,其中 XXXXXX 為設備 MAC 地址的后三個字節,
默認加密模式為 WPA/WPA2。
在 station 模式下,長按復位按鍵5秒,設備即復位並重啟恢復初始 softAP+station 共存模式,可
重新進行配置。
三、Espressif Cloud服務
Espressif Cloud雲服務需要使用master-device-key.bin認證。
