物聯網開發|手把手教你 DIY 基於 IoT Pi 的智慧甲醛檢測器

物聯網開發|手把手教你 DIY 基於 IoT Pi 的智慧甲醛檢測器

本文來源於CSDN博主「靈感桌面」的原創文章。

之前體驗 MS-RTOS 的時候入手了一個 IoT Pi ,放著也是浪費,這次我們就

利用 IoT PI 開發一個智慧甲醛檢測器。

IoT Pi 是翼輝推出的物聯網開發板 ,MS-RTOS 是新一代小型物聯網作業系統。之前只是跟著官方文件大概體驗了一下,一直有想法去研究真正實踐一下,最近家裡新買了一些傢俱,正好做一個智慧甲醛檢測器來檢測下甲醛是否超標。

軟體準備

使用 MS-RTOS 需要下載對應的 IDE 開發環境,下載資源以及安裝使用可以參考官網教程。其中需要安裝的有 IoT Studio 、MS-RTOS AutoTester 這兩個軟體,分別是整合開發 IDE 和 燒寫及日誌檢視工具,官方文件寫得非常具體。

硬體準備

一塊 IoT Pi 開發板、配合燒寫的 Jlink ARM 模擬器(某寶一搜全都是)、一個甲醛檢測感測器。管腳連線如下:3V3 - 3V3 、GND - GND 、RXD - PA2、 TXD - PA3

物聯網開發|手把手教你 DIY 基於 IoT Pi 的智慧甲醛檢測器

工程配置

根據官方文件完成以下步驟:

在 MS-RTOS 雲開發平臺上完成

msrtos_base_sdk

配置和下載

在 IoT Stduio 上完成

msrtos_base_sdk

工程匯入和編譯

在 IoT Stduio 上完成

bspstm32f4xx

工程的下載和匯入,如下圖所示:

物聯網開發|手把手教你 DIY 基於 IoT Pi 的智慧甲醛檢測器

Wi-Fi AP 列表配置

bspstm32f4xx/src/board/IOT_PI/iot_pi_init。c

為 IoT Pi 開發板的初始化原始檔,在此原始檔中的

ap_list[]

變數用於指定

手動連線模式

下嘗試連線到的 Wi-Fi AP 列表:

物聯網開發|手把手教你 DIY 基於 IoT Pi 的智慧甲醛檢測器

選中

bspstm32f4xx

工程,點選 “編譯” 按鈕,將編譯

bspstm32f4xx

工程,編譯完成後,會在

Debug

目錄生成

bspiotpi。bin

檔案:

物聯網開發|手把手教你 DIY 基於 IoT Pi 的智慧甲醛檢測器

libsddc 配置及編譯

下載 libsddc ,將整個目錄替換 msrtos_base_sdk 工程中的 libsddc 目錄。

選中

msrtos_base_sdk

工程,點選 “編譯” 按鈕,將編譯

msrtos_base_sdk

工程的元件,編譯完成後,會在

libsddc/Debug/sddc_examples/src/example/demo

目錄生成

sddc_demo。bin

檔案:

物聯網開發|手把手教你 DIY 基於 IoT Pi 的智慧甲醛檢測器

燒錄驗證

使用 MS-RTOS AutoTester 燒寫映象,請參考 《IoT Pi 快速入門》 完成

bspiotpi。bin

demo_sddc_sdk。bin

映象燒寫,注意不同的映象需要燒寫到不同的地址,如下表所示:

物聯網開發|手把手教你 DIY 基於 IoT Pi 的智慧甲醛檢測器

按下 IoT Pi 開發板的 RESET 按鍵,MS-RTOS 作業系統啟動後,將自動執行

0x08040000

地址處的 SDDC demo 程式:

物聯網開發|手把手教你 DIY 基於 IoT Pi 的智慧甲醛檢測器

可以參考 《IoT Pi 快速入門》 在 Spirit 1 中進行裝置新增,這裡就不贅述了,開啟之前寫的 DDC 協議嗅探器進行下測試,看到甲醛濃度只有 0。01 這下可以放心了。

物聯網開發|手把手教你 DIY 基於 IoT Pi 的智慧甲醛檢測器

還可以設定警告濃度,達到警告濃度後設備會主動上報當前甲醛濃度:

物聯網開發|手把手教你 DIY 基於 IoT Pi 的智慧甲醛檢測器

程式碼解析

由於現在購買到的甲醛感測器模組的協議和我文章中用到的不一致,需要修改

libsddc/src/sddc_sdk_lib/SDDC_SDK_UART_DEV。h

檔案中的一個宏值,將

AIR_INFO_TYPE_1

改為

AIR_INFO_TYPE_2

即可:

物聯網開發|手把手教你 DIY 基於 IoT Pi 的智慧甲醛檢測器

libsddc/src/sddc_sdk_lib/SDDC_SDK_UART_DEV。h

檔案中定義了三種類型的資料格式,只有上面的宏定義和函式宣告有用到。在

libsddc/src/sddc_sdk_lib/SDDC_SDK_UART_DEV。c

檔案中,有著

uart_dev_init

的實現。包括開啟串列埠並配置,並啟用一個執行緒來定期獲取甲醛濃度:

物聯網開發|手把手教你 DIY 基於 IoT Pi 的智慧甲醛檢測器

物聯網開發|手把手教你 DIY 基於 IoT Pi 的智慧甲醛檢測器

iot_pi_uart_dev_get_thread

執行緒中定期 3s 獲取一次甲醛濃度,校驗資料無誤後如果超過設定的警告濃度就上報到 Spirit 1上面:

物聯網開發|手把手教你 DIY 基於 IoT Pi 的智慧甲醛檢測器

MS-RTOS 和 IoT Pi 使用起來更偏向於普通的嵌入式作業系統開發,配置上封裝沒有 arduino 這麼完善,還是要自己去配置串列埠和 GPIO 口什麼的,但是 IDE 比 arduino 聰明多了,MS-RTOS 開發手感也比 arduino 移植上去的那個半殘的 FreeRTOS 好很多,完善很多。大部分 POSIX 介面都支援,但是用 MS-RTOS 介面程式碼執行效率更高。

參考連結:

官網教程:

https://www。edgeros。com/ms-rtos/guide/iotpi_quick_start。html

MS-RTOS 雲開發平臺:

https://id。edgeros。com/login?prev=www。edgeros。com%2Frtos-build

《IoT Pi 快速入門》:

https://www。edgeros。com/ms-rtos/guide/iotpi_quick_start。html

libsddc :

https://gitee。com/inspiration-desktop/libsddc。git