智能交通燈上報功能
硬件環境搭建
硬件要求:Hi3861V100核心板、擴展板,OLED板,交通燈板;硬件搭建及組網圖如下圖所示。
Hi3861V100核心板參考:??HiSpark_WiFi_IoT智能開發套件_原理圖硬件資料\原理圖\HiSpark_WiFi-IoT_Hi3861_CH340G_VER.B.pdf??。
擴展板參考:??HiSpark_WiFi_IoT智能開發套件_原理圖硬件資料\原理圖\HiSpark_WiFi-IoT_Hi3861_CH340G_VER.B.pdf??。
OLED板參考:??HiSpark_WiFi_IoT智能開發套件_原理圖硬件資料\原理圖\HiSpark_WiFi_IoT_OLED_VER.A.pdf??。
交通燈板硬件原理圖參考:??HiSpark_WiFi_IoT智能開發套件_原理圖硬件資料\原理圖\HiSpark_WiFi_IoT_SSL_VER.A.pdf??。
軟件介紹
1、代碼目錄結構及相應接口功能介紹
vendor_hisilicon/hispark_pegasus/demo/oc_demo
├── app_demo_config.c #
├── app_demo_config.h #
├── app_demo_gl5537_1.c #
├── app_demo_i2c_oled.c #
├── app_demo_i2c_oled.h #
├── BUILD.gn # BUILD.gn文件由三部分內容(目標、源文件、頭文件路徑)構成,開發者根據需要填寫,static_library中指定業務模塊的編譯結果,為靜態庫文件led_example,開發者根據實際情況完成填寫。
| sources中指定靜態庫.a所依賴的.c文件及其路徑,若路徑中包含"http://"則表示絕對路徑(此處為代碼根路徑),若不包含"http://"則表示相對路徑。include_dirs中指定source所需要依賴的.h文件路徑。
├── cjson_init.c #
├── app_demo_multi_sample.c #
├── app_demo_multi_sample.h #
├── app_demo_traffic_sample.c #
├── app_demo_traffic_sample.h #
├── hal_iot_adc.c #
├── hal_iot_gpio_ex.c #
├── iot_config.h #
├── iot_adc.h #
├── iot_gpio_ex.h #
├── ssd1306_oled.h #
├── iot_hmac.c #
├── iot_hmac.h #
├── iot_log.c #
├── iot_log.h #
├── iot_main.c #
├── iot_main.h #
├── iot_profile.c #
├── iot_profile.h #
├── task_start.c #
├── iot_sta.c #
├── wifi_connecter.c #
└── wifi_connecter.h #
2、華為云配置
(1) 注冊華為云賬號,打開華為云網址,點擊注冊后登陸。網址如下:https://www.huaweicloud.com/product/iothub.html。
(2) 登陸后,在搜索框中輸入“IOTDA”,在彈出選項中選擇“設備接入IOTDA”點擊進去,再點擊“立即使用或者免費試用”。
(3)創建產品及相關屬性,點擊左邊任務欄的“產品”同時選擇控制臺地址為“北京四”,然后點擊最右上角的“創建產品”(產品名稱可自定義)。注意:創建產品時如果所屬空間為NULL,請先實名注冊。
(4) 創建成功后,點擊查看詳情,點擊“自定義模型”創建用戶自己的模型:
(5) 用戶根據自己需要自己定義,如為模型添加服務:“TrafficLight”,服務類型:“TrafficLight”,服務描述:“交通燈”,點擊確定;新增屬性為屬性名稱:“ControlModule”,數據類型:“String”,訪問權限:“可讀,可寫”,長度:“255”,點擊確定;新增命令為命令名稱:“ControlModule”,新增參數:“TrafficLight”,數據類型:“String”,長度:“255”。
(6) 點擊左邊任務欄的“設備”,然后注冊設備圖,注冊創建的產品,用戶根據自己需要隨意填寫,填寫完成后,可以看到設備狀態顯示為未注冊。
(7) 華為云端的配置基本已經完成了,進入到設備查看信息。
3、板端配置及編譯
將源碼./vendor_hisilicon/hispark_pegasus/demo目錄下的oc_demo整個文件夾及內容復制到源碼./applications/sample/wifi-iot/app/下。
.
└── applications
└── sample
└── wifi-iot
└── app
└──oc_demo
└── 代碼
修改./applications/sample/wifi-iot/app/oc_demo/iot_config.h中CONFIG_AP_SSID,CONFIG_AP_PWD為WiFi名稱和WiFi以及CONFIG_DEVICE_ID和CONFIG_DEVICE_PWD。
#define CONFIG_AP_SSID "xxx" // WIFI SSID
#define CONFIG_AP_PWD "xxxxxx" // WIFI PWD
#define CONFIG_DEVICE_ID "xxxxx" //華為云上注冊的設備ID
#define CONFIG_DEVICE_PWD "xxxxx" //華為云上注冊設備時密鑰
需要將2.6節創建模型屬性及服務與./applications/sample/wifi-iot/app/oc_demo/app_demo_iot.c中下列字段參數保持一致。
#define TRAFFIC_LIGHT_CMD_CONTROL_MODE "ControlModule" //屬性
#define TRAFFIC_LIGHT_YELLOW_ON_PAYLOAD "YELLOW_LED_ON" //添加命令參數
修改源碼./applications/sample/wifi-iot/app下的BUILD.gn文件,在features字段中增加索引,使目標模塊參與編譯。features字段指定業務模塊的路徑和目標,features字段配置如下。
import("http://build/lite/config/component/lite_component.gni")
lite_component("app") {
features = [
"oc_demo:appDemoIot",
]
}
修改.device/soc/hisilicon/hi3861v100/sdk_liteos/build/config/usr_config.mk文件。在這個配置文件中打開I2C,PWM驅動宏。搜索字段CONFIG_I2C_SUPPORT ,并打開I2C,PWM。配置如下:
# CONFIG_I2C_SUPPORT is not set
CONFIG_I2C_SUPPORT=y
# CONFIG_PWM_SUPPORT is not set
CONFIG_PWM_SUPPORT=y
工程相關配置完成后,然后編譯。
4、燒錄
- 編譯成功后,點擊DevEco Home->配置工程->hi3861->upload_port->選擇對應串口端口號->選擇upload_protocol->選擇burn-serial->點擊save保存,在保存成功后點擊upload進行燒錄,出現connecting, please reset device…字樣復位開發板等待燒錄完成。
- 燒錄成功后,再次點擊Hi3861核心板上的“RST”復位鍵,等待開發板的連接上wifi,連接成功后,華為云設備狀態變成在線,設備開始向華為云上上報最新數據欄,同時串口會有如下打印。如下圖所示。
設備->命令欄->同步命令下發->選擇創建的命令屬性->填入參數,這里下發“YELLOW_LED_ON”為例,下發成功后,板端會從紅燈變為綠燈,設備同時串口會有如下打印。如下圖所示。