• 方案介紹
  • 附件下載
  • 相關(guān)推薦
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

【RT-Thread作品秀】智能管家精靈

2020/12/22
456
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

hardware2.jpg

共3個(gè)文件

【RT-Thread作品秀】智能管家精靈

作者:七星巖

概述(說(shuō)明應(yīng)用產(chǎn)生的背景、實(shí)現(xiàn)功能)

主控平臺(tái)以 ART-PI 開(kāi)發(fā)板為核心主要任務(wù)是抓取網(wǎng)絡(luò)數(shù)據(jù)、如天氣、疫情等,并由OLED實(shí)時(shí)顯示最新數(shù)據(jù),同時(shí)將抓取的數(shù)據(jù)當(dāng)做log文件存儲(chǔ)在SD卡上,供后續(xù)分析使用。

并推送室內(nèi)環(huán)境信息如溫度,濕度到ONENET云端,,后續(xù)將擴(kuò)展更多室內(nèi)傳感器,并同步的云端。由于時(shí)間原因,計(jì)劃要做的攝像頭室外監(jiān)控,圖片、視頻傳送沒(méi)有在本次提交中實(shí)現(xiàn)。

開(kāi)發(fā)環(huán)境(所采用的軟、硬件方案)

硬件

  1. 主控:ART-PI(STM32H750XB
  2. MicoKit-Ext 板

軟件

  1. RT-Thread 版本:RT-Thread V 4.0.3
  2. 開(kāi)發(fā)工具及版本:RT-studio 2.0.0

RT-Thread使用情況概述(簡(jiǎn)要總結(jié)下應(yīng)用中RT-Thread使用情況:內(nèi)核部分、組件部分、軟件包部分、內(nèi)核、其他)

(1)內(nèi)核部分:調(diào)度器,信號(hào)量,libcpu/BSP。

 調(diào)度器:創(chuàng)建多個(gè)線程來(lái)實(shí)現(xiàn)不同的工作。

信號(hào)量:用來(lái)同步線程。

libcpu/BSP:UART 驅(qū)動(dòng)。

(2)組件部分:UART 框架,

UART框:使用UART框架來(lái)與ART-PI-DOCK擴(kuò)展板進(jìn)行數(shù)據(jù)交互。

Fal Flash 抽象: Flash 抽象層,是對(duì) Flash 及基于 Flash 的分區(qū)進(jìn)行管理、操作的抽象層,對(duì)上層統(tǒng)一了 Flash 及 分區(qū)操作的 API。

LittleFs: 適合嵌入式系統(tǒng)的小而安全的文件系統(tǒng)

(3)軟件包部分:

EasyFlash: 一款開(kāi)源的輕量級(jí)嵌入式Flash存儲(chǔ)器庫(kù)

cJSON:C 語(yǔ)言實(shí)現(xiàn)的極簡(jiǎn)的解析 JSON 格式的軟件包。

Dht11: 讀取DHT11數(shù)字溫濕度傳感器的溫度和濕度值。

WebNetClient 軟件包:由 RT-Thread 自主研發(fā)的,基于 HTTP 協(xié)議的 Web 服務(wù)器實(shí)現(xiàn),它不僅提供設(shè)備與 HTTP Client 通訊的基本功能, 而且支持多種模塊功能擴(kuò)展,且資源占用少、可裁剪性強(qiáng),充分滿足 開(kāi)發(fā)者對(duì)嵌入式設(shè)備服務(wù)器的功能需求。

Onenet: RT-Thread 針對(duì) OneNET 平臺(tái)連接做的的適配,通過(guò) 這個(gè)軟件包,可以讓設(shè)備在 RT-Thread 上非常方便的連接 OneNet 平臺(tái),完成數(shù)據(jù)的發(fā)送、接收、設(shè)備的注冊(cè)和控制等功能

MbedTLS: C 編程語(yǔ)言以最小的編碼占用空間實(shí)現(xiàn)了 SSL/TLS 功能及各種加密算法,易于理解、使用、集成和擴(kuò)展,方便開(kāi)發(fā)人員輕松地在嵌入式產(chǎn)品中使用 SSL/TLS 功能.

Netutils: RT-Thread 可用的全部網(wǎng)絡(luò)小工具集合。

Pahomqtt: 是 Eclipse 實(shí)現(xiàn)的基于 MQTT 協(xié)議的客戶端,本軟件包是在 Eclipse paho-mqtt 源碼包的基礎(chǔ)上設(shè)計(jì)的一套 MQTT 客戶端程序。

u8g2:?jiǎn)紊硫?qū)動(dòng),現(xiàn)在移植到了 rt-thread,可以滿足各種各種各樣的需求。

硬件框架(概述應(yīng)用所采用的硬件方案框圖,并對(duì)核心部分做介紹)

硬件部分主要是ART-PI + 一塊IOT外擴(kuò)板

軟件框架說(shuō)明(介紹應(yīng)用所采用的軟件方案框圖、流程圖等,并加以解說(shuō))

軟件部分也相對(duì)簡(jiǎn)單,基于ART-PI 的WiFi樣例程序,加上幾個(gè)獨(dú)立的模塊(流程圖見(jiàn)文檔)

  1. 按鍵掃描模塊
  2. OLED數(shù)據(jù)顯示模塊
  3. DHT11設(shè)備溫濕度讀取模塊
  4. 心知天氣預(yù)報(bào)API解析模塊
  5. 疫情數(shù)據(jù)解析模塊(不完善)
  6. 本地?cái)?shù)據(jù)上傳OneNet云

軟件模塊說(shuō)明(介紹應(yīng)用軟件關(guān)鍵部分的邏輯、采用的實(shí)現(xiàn)方式等)

主要函數(shù)說(shuō)明:

(1)get_Weather_Data():讀取并解析心知API天氣數(shù)據(jù),寫(xiě)入封裝數(shù)據(jù)結(jié)構(gòu),保存到SD卡log文件。

(2)get_NCOV_Data:讀取并解析騰訊疫情API數(shù)據(jù)寫(xiě)入封裝數(shù)據(jù)結(jié)構(gòu),;

(3)oled_display:實(shí)時(shí)掃描三個(gè)按鍵,并得到顯示狀態(tài),并根據(jù)當(dāng)前狀態(tài)顯示指定頁(yè)面;

(4)main_interface:,根據(jù)網(wǎng)絡(luò)通斷顯示圖標(biāo),根據(jù)按鍵左移右移顯示當(dāng)前狀態(tài),根據(jù)選中主題,顯示指定頁(yè)面;

(5)oled_draw_menu:畫(huà)出主頁(yè)面布局

(6)oled_time_show:獲取實(shí)時(shí)時(shí)間,并在OLED屏幕,畫(huà)出小時(shí):分鐘,和年月日。

(7)oled_weather_report:在OLED屏幕畫(huà)出室內(nèi)溫濕度和天氣預(yù)報(bào)的溫度天氣情況。

(8)oled_covid_report:在OLED屏幕畫(huà)出疫情解析所得數(shù)據(jù)。

(9)onenet_upload_entry onenet同步任務(wù)

(10)onenet_mqtt_upload_digit:onenet網(wǎng)絡(luò)平臺(tái)上溫度傳數(shù)據(jù)。

(11)key_thread_entry:按鍵掃描任務(wù)。

演示效果(演示效果請(qǐng)采用3張高清圖片,并錄制一段不少于1min視頻解說(shuō)應(yīng)用所實(shí)現(xiàn)的效果,視頻上傳至B站或者騰訊視頻或其他視頻平臺(tái),給出鏈接即可)

演示視頻:

 

代碼地址(代碼可上傳至gitee,給出鏈接地址)

https://gitee.com/xianting77/art-pi-smart-assist.git

比賽感悟(可以圍繞這次比賽學(xué)到了什么,克服了哪些困難,有哪些收獲,不低于200字)

認(rèn)識(shí)RT-thread應(yīng)該有10年了,10年來(lái),我一直關(guān)注著RT-thread,連續(xù)參加來(lái)17,18,19年的開(kāi)發(fā)者大會(huì),并試用過(guò)基于RT-thread的IOT camera, 柿餅。可以說(shuō)是看著RT成長(zhǎng)起來(lái)的,本次ART-PI比賽我第一時(shí)間報(bào)名參與了,首先這塊板子做的很精致,板子的配置,硬件資源相當(dāng)牛逼,看過(guò)就像試用。第二,RT提供了那么多強(qiáng)悍的工具,ENV,RT-STUDIO…那么多有價(jià)值的軟件包,只有使用才能體會(huì)這些很棒的輪子給開(kāi)發(fā)帶來(lái)的便利。第三,RT的開(kāi)發(fā)生態(tài)和社區(qū)建設(shè)已成氣候,對(duì)于開(kāi)發(fā)者來(lái)說(shuō),無(wú)論新手還是大咖,都能一起互相學(xué)習(xí),彼此進(jìn)步,一個(gè)人做事很孤單,一群人做事能走得更遠(yuǎn)。

起初我想用ART-PI驅(qū)動(dòng)自家的智能、小車,但是AP6212藍(lán)牙模塊的驅(qū)動(dòng)沒(méi)有調(diào)試出來(lái),所以選擇了相對(duì)參考多一些的智能家居類課題,我就乘著最后一兩周的時(shí)間調(diào)試了智能管家精靈。談不上作品,只想用RT的軟件平臺(tái)做有一些值得去做的事,目前疫情播報(bào)模塊還沒(méi)有最終完善,由于騰訊API的的疫情數(shù)據(jù)有120多K,task的棧大小沒(méi)有設(shè)置的足夠大,實(shí)際上我只要JSON文件開(kāi)頭的那部分?jǐn)?shù)據(jù),很多在內(nèi)存中的數(shù)據(jù)都是無(wú)用的,后續(xù)要想個(gè)辦法,截取下有用的JSON數(shù)據(jù)。另外選擇騰訊的API,是因?yàn)樵瓉?lái)小橋的丁香數(shù)據(jù)API掛掉了,無(wú)奈用了這個(gè)API。

由于網(wǎng)上購(gòu)買的RGB屏幕還沒(méi)有到手,攝像頭視頻和TOUCH-GFX部分來(lái)不及做了。所以想到用手上的OLED和按鍵及U8G2來(lái)做一個(gè)簡(jiǎn)單人機(jī)交互。

整體來(lái)說(shuō),管家精靈比較簡(jiǎn)單,不過(guò)這已然是下班后自己擠時(shí)間搗鼓出來(lái)的。但是做下來(lái)確實(shí)體驗(yàn)到RT,軟件包和框架的強(qiáng)大,初步的完成一個(gè)業(yè)務(wù)需求真的很快,而且有很好的LOG提醒,各種輔助工具,用下來(lái)可以說(shuō)是愛(ài)不釋手。為國(guó)產(chǎn)OS,Rtthread默默的付出點(diǎn)贊,也堅(jiān)定了我將一直跟隨RT精進(jìn)技術(shù),做有益的嘗試,做有價(jià)值的練習(xí)。

本次小嘗試的總結(jié)就至此接近尾聲。對(duì)于我來(lái)說(shuō),無(wú)論這份作業(yè)合不合格,我將繼續(xù)RT之路。向優(yōu)秀的小伙伴學(xué)習(xí),后續(xù)我將更深入結(jié)合軟件包使用開(kāi)發(fā)板的其他硬件模塊。謝謝ART-PI開(kāi)源硬件團(tuán)隊(duì)的付出,沒(méi)有你們的硬件,我將無(wú)法體驗(yàn)這么接地氣的開(kāi)發(fā)方式。

 

 

 

 

 

  • hardware2.jpg
    下載
    描述:基本
  • 代碼地址.txt
    下載
    描述:代碼
  • 大賽作品提交_智能管家精靈 V1.1.docx
    下載
    描述:貴在參與

相關(guān)推薦