項目作者:黃桃味的酸奶
本文來自全志XR806開發板評測活動文章,作者使用XR806開發板制作一個簡單的家用環境監測傳感器,可以獲取當前的溫度、濕度、氣壓、海拔這四個參數,同時能夠通過外部的屏幕實時顯示刷新。
功能介紹
XR806是一款支持WiFi和BLE的高集成度無線MCU芯片,以其集成度高、硬件設計簡單、BOM成本低、安全可靠等優點,成為極客們進行小開發創作的首選。
恰好最近獲得了XR806開發板的試用資格,因此決定基于此開發板制作一個簡單的家用環境監測傳感器。
作為一個環境監測傳感器,它能夠獲取當前的溫度、濕度、氣壓、海拔這四個參數,同時能夠通過外部的屏幕實時顯示刷新。在2023年的當下,能夠聯網上報信息的功能不可或缺。
硬件選型
本次小項目的核心是XR806開發板,顯示部分使用2.8寸 ST7789顯示屏,環境狀態獲取使用的是BMP280和ATH20傳感器,顯示屏使用SPI接口,傳感器共用IIC總線。
為了方便我把它們全插在了面包板上,如圖:
LCD: MOSI ==> PB4 MISO ==> PB5 CS ==> PB6 DC ==> PB3 CLK ==> PB7 RST ==> PA19 傳感器: SCL ==> PA12 SDA ==> PA13
程序實現
本項目開始使用的是Freertos的SDK,以默認的hello_demo為模板,復制一份在同級目錄下,添加各個模塊文件,如圖所示:
在SDK頂層目錄進行make menuconfig,配置項目名為demo/Sensor,使得項目能夠編譯(具體開發環境搭建不細說了)
在主程序中有兩大部分,一個是環境數據的獲取,另一個是數據的上報.
float pressure = 0; float temperature = 0; float asl = 0; u32 CT = 0; TFT_full(0XFFFF); flush_words(); while (1) { BMP280GetData(&pressure, &temperature, &asl); printf("pressure = %f temperature = %f asl = %f ", pressure, temperature, asl); ATH20_Read_CTdata(&CT); printf("ct = %f%% ", (float)(CT / 1000)); flush_num(temperature, pressure, asl, CT / 1000); getMsg(pressure,temperature, asl, (float)(CT / 1000)); OS_MSleep(300); } OS_ThreadDelete(&sensors_thread); }
wlan部分寫死,使用自己的熱點,
mqtt實現部分參考example/mqtt,
配置使用公用mqtt服務器
Sensor任務實時更新數據到屏幕與Mqtt的發送fifo,mqtt任務一秒為周期上報數據。
mqtt服務器接收到的上報數據
實現效果
總體來說,xr806的freertos sdk功能覆蓋全面,開發十分簡潔,SDK中的例程覆蓋全面,極大的方便產品的開發,大大好評。
本次的項目只是一個小玩具,難免代碼中會有些小bug,歡迎各位朋友指正。
審核編輯:湯梓紅
-
傳感器
+關注
關注
2550文章
51035瀏覽量
753071 -
mcu
+關注
關注
146文章
17123瀏覽量
350983 -
開發板
+關注
關注
25文章
5032瀏覽量
97371 -
環境監測
+關注
關注
3文章
346瀏覽量
18648 -
全志
+關注
關注
24文章
247瀏覽量
53119
原文標題:簡單的家用環境監測傳感器
文章出處:【微信號:gh_79acfa3aa3e3,微信公眾號:全志在線】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論