概要
本文給大家介紹一個基于N32G4FR和小度音響的智能家庭中樞控制系統項目,該項目是博主架構師李肯參加由國民技術與電子發燒友聯合舉辦的N32 MCU移植挑戰賽的參賽項目,旨在解決智能家庭中的中樞控制問題,希望能給大家帶來幫助和啟發。
1 前言
如今,智能化的設備慢慢走進了千家萬戶,大大提升了人民生活的智能化,但是隨之而來的是各種智能設備無法互聯互通,形成了一片片信息孤島,這就迫切需要一個中樞控制系統來接管這些零散的智能設備。
眾觀市場上的各種智能音響,小度音響憑借其優異的市場表現,占據了很大一塊市場份額,使得“小度小度,現在幾度”成為了家庭中很常見的交互問候語。
有這么一個設想,如果能把零散的智能設備,通過某種智能的方式接入一個中樞控制系統,而這個系統與小度音響直接打通,這樣跟小度直接對話就能操作這些智能設備,這應該是一件很有市場前景的事,而本項目就是著力于實現這樣的一個解決方案。
2 項目簡介
2.1 項目名稱
基于N32G4FR和小度音響的智能家庭中樞控制系統
2.2 設計思路
本項目主要使用N32G4FR作為端側的核心控制器,外加一個傳感器器件、控制器件,實現與云端互通;同時集成對接小度智能音響,實現通過語音調度和控制家庭環境是智能設備。這里的智能設備包含有智能燈、智能空調、溫濕度傳感器等等。
2.3 主要解決的問題
家庭中的智能設備越來越多,一個集中式的智能家庭中樞控制系統迫在眉睫,旨在解決所有智能設備的調度和控制問題,為智能生活提供便利。
2.4 項目創新點
主要是設備端各項傳感器器件和控制器件的集成,以及與小度音響的直連互通。
2.5 N32移植的初衷
本項目初期是想在ESP32上實現的,后來看到本開源大賽,想著把此方案移植過來,也借此機會再次學習學習國民技術的N32系列芯片。
3 系統架構介紹
3.1 系統核心架構圖
整個系統的核心架構圖如下所示:
從上面這個核心架構圖中,我們可以看到整個IoT系統組成,包括智能設備終端側、巴法云物聯網平臺、小度云平臺、小度音箱等等。下面就整個系統的幾大重要組件,我會一一進行簡要講解。
3.2 終端側
終端側主要承載的是對巴法云平臺的對接,接收云平臺下發的控制指令,同時做一些邊緣側的應用邏輯處理,還需要具備對外網絡的通訊能力,保持與巴法云平臺的MQTT長鏈接。
終端側包括的核心組件有:國民技術的N32G4FR,搭載的是國產實時操作系統 RT-Thread,同時外設板載有 ESP8266 Wi-Fi通訊模組、紅外發射器、繼電器(GPIO模擬)等等。
終端側不僅包含設備硬件,還需要對應的固件軟件,兩者相輔相成,共同完成終端側的功能邏輯。
3.3 后端側
后端側,其實沒有真正的開發工作,僅僅是登錄巴法云平臺后臺,配置MQTT板塊,然后生成【智能空調】和【智能燈】兩個設備,以便于終端側和小度音響識別。
3.4 移動端
這里說的移動端,特指小度APP;其實這里面也沒有開發工作,當你的小度APP賬號登錄之后,它有一個操作步驟可以加入基于巴法云平臺的【智能設備】,按照說明添加成功后,就可以在小度APP上看到巴法云平臺對應的設備列表了。
詳細的綁定操作步驟,見 此文的第二部分 。
4 系統設計說明
4.1 硬件部分
MCU主控:國民技術的N32G4FR主控
這塊芯片整體的資源還是比較豐富的,它是N32G4FR系列(指紋專用型),采用32 bit Arm Cortex-M4F內核,內置10余種密碼算法硬件加速引擎,集成大容 量加密Flash存儲器,支持指紋信息安全存儲,支持市場主流半導體指紋及光學傳指紋感器,集成多達18個數字 通訊接口及4個模擬接口。
它的具體接口資源展示如下:
在我的項目中,我主要使用它的以下幾個外設資源:
-
UART1:RT-Thread的終端調試串口;
-
UART2:用于連接串口WI-Fi模塊ESP8266,實現網絡通訊能力;
-
UART4:用于連接紅外收發器,本次項目中主要使用其紅外發射功能;紅外發射主要用于控制外部的空調;
-
GPIO:PB4用作系統工作狀態顯示燈,PA8用于控制智能燈開關。
以下是我的實物連接示意圖:
Wi-Fi模組:ESP8266
本次參賽,我采用了我慣用的Wi-Fi通訊模組ESP8266,非常的便捷,借助RT-Thread的軟件包,基本無需編寫任何代碼,就可以實現網絡能力;當然串口通訊還是需要配置一下,只不過不用謝代碼而已。
我這里使用的搭建ESP8266 Wi-Fi芯片的模組ESP-12F,它是由安信可科技開發的,該模塊核心處理器 ESP8266 在較小尺寸封裝中集成了 業界領先的 Tensilica L106 超低功耗 32 位微型 MCU,帶有 16 位精簡模式,主頻支持 80 MHz 和 160 MHz,支持 RTOS,集成 Wi-Fi MAC/ BB/RF/PA/LNA,板載天線。
紅外編解碼模塊(YS-IRTM)
本模塊集成了以下幾部分:
-
紅外發射頭:用于發射紅外信號, 波長為940nm 38k NEC編碼信號的發射;
-
紅外接收頭:用于接收 NEC 紅外信號, 進而單片機進行分析解碼操作;
-
紅外頭擴展: 該接口為紅外發射頭的擴展, 可以連接多個紅外發射頭( 常稱紅外發射模塊) , 用于安放到不同的位置實現多方位控制;
-
UART 單片機串口通信接口:該端口為單片機串口( TTL) , 作為與外界單片機的通信橋梁, 其默認設置的波特率為9600bps;
使用單片機的串口就可以與之對接,非常的方便。
GPIO控制 :
目前這一塊的接入,采用的是GPIO做模擬,并沒有實際接入繼電器,但已經完全可以實現其操作原理。
其中,PB4用作系統工作狀態顯示燈,PA8用于控制智能燈開關。
4.2 軟件部分
整個軟件部分的開發主要就是終端固件開發,主要包括四大部分:N32G4FR的原廠BSP、RT-Thread實時操作系統、ESP8266相關的配置代碼使能、個性化的應用邏輯代碼。
其中N32G4FR的原廠BSP基本不動,原廠和相關開發者已經適配好了;通用的RT-Thread操作系統的代碼也不在此處的修改中,直接復用已有的代碼,這里使用的版本是 4.1.1 。
ESP8266相關的AT、網絡組件代碼也是現成的,使能配置之后就可以直接用了,還是非常的方便。
除了AT相關的軟件包代碼外,我還使用了 paho-mqtt 這個軟件包,這個軟件包主要封裝了MQTT協議的實現技術細節,開放了一些靈活好用的API給到應用層,以便于提供MQTT的通訊能力。
還有一個cJSON的軟件包,這里也使用到了,它用于做一些上下行數據包的解析和封裝,主要原因是需要解析一些與云平臺對接的數據協議,這就要求終端必須具備解析JSON數據的能力。
所以這里重點講一下,應用邏輯的代碼:主要包括紅外收發器的控制、GPIO的控制等,而這些控制信號的輸入,都是來源于巴法云平臺的下發,而巴法云平臺的聯動下發則來源于用戶對小度音響的語音控制輸入。
以下是終端軟件應用邏輯部分的層次圖:
其中:
Wi-Fi線程 :由于在RT-Thread中AT組件是開啟后,默認就跑起來了,而在應用層暫時沒有一個比較好的方式感知網絡能力的建立,所以這里新建了一個線程,用于實時檢查網絡通訊能力;當網絡通訊能力已建立時,通過信號量的方式,通知其他模塊。
Smart Home MQTT線程 :主要負責跟巴法云物聯網平臺進行對接,采用的MQTT通訊協議,它的運行,依賴于基礎網絡能力的建立;當它與巴法云物聯網平臺建立聯系時,它就可以接收平臺的控制指令下發,比如開關空調或開關照明燈等;
紅外接收處理線程 :該線程主要用于接收外部的標準NEC紅外信號,此功能本項目暫時未實際使用,僅用于學習若干紅外遙控器的鍵值;
系統運行展示線程 :此線程并沒有參與過多的應用邏輯,僅僅是每一秒鐘閃爍一下運行指示燈,表示系統正在運行中。
以上各個線程各司其職,相輔相成,共同完成智能家庭中樞控制系統的邏輯功能。
下面展示的是工程項目中的代碼結構,里面的代碼結構一本與上面的代碼邏輯示意圖保持一致。
5 項目實施過程
1)熟悉國民技術N32系列MCU的基本開發資料
這一步主要是熟悉開發板的基本資源,對外設等信息有一定的概念,以便于方便后續的開發調試;同時,還需要把相關的一些官方軟件給安裝好,熟練使用配置工具和下載工具。
文末有好幾份我當時參考的教程,基本根據上面的步驟來,很快就可以完成初始的上手操作。
這里其實就是踩坑的開始,詳細的可以參見下文對踩坑的各種總結,只有第一步踩坑踩好了,才能逐步進行下面的研發活動。
2)移植RT-Thread操作系統
本次參賽,其實并不要求去移植RT-Thread,其實也要多感謝RT-Thread官方和社區的小伙伴,其實他們都已經做好了基本的移植了,只需要對照著自己的開發板資源跳調整一下即可。
有了上面的踩坑經驗,直接上手RT-Thread的DEMO教程,很快就可以把操作系統跑起來了,一切都回歸到熟悉的地方,研發進度再次提速。
下面就是基于RT-Thread操作系統進行編程了。
3)配置RT-Thread的軟件包
由于我是采用RT-Thread Studio開發環境,而它本身就集成了配置界面,所以我直接在上面就可以做各種配置,需要再次吐槽的就是,配置完了之后生成對應的文件,實在是太慢了。
這個項目中,我使用了paho-matt軟件包、AT-device軟件包、CJSON軟件包;的確讓我的項目開發提速了不少。
4)配置巴法云物聯網平臺
我是參考這個 esp8266接入小度語音,小度音箱控制 來創建自己的自定義產品的,并實現與小度音箱的綁定的。
基本上以上4步完成后,終端就可以很順利地連上巴法云物聯網平臺了,而這期間基本就是零代碼,全部都歸功于RT-Thread靈活的代碼配置工具,非常地贊。
5)調試外設驅動
這里主要是調試各種驅動接口,包括紅外發射器的UART接口、照明燈開關的GPIO控制。
在調試過程中,一般一個個模塊來,避免模塊直接的干擾,這樣可以有效地加快開發速度。
需要注意的是,N32系列的BSP在適配RT-Thread的時候,采用的都是V1版本的串口驅動,所以大家在使用串口接口的時候,一定要記得使用V1接口。
等到各個功能模塊完成后,統一串起來跑一跑,確保沒有問題。
6)全功能自測
到了這一步,基本功能開發就已經完成了,需要將終端設備的功能與云端能力聯系起來調試,比如對小度音箱進行控制語音輸入,看一下巴法云平臺能否推送對應的控制消息下來,同時看下終端能否對控制消息進行合理的處理,比如控制空調開關或者控制照明開關等。
7)準備結項資料
項目收尾的最后,需要準備各種結項資料,包括項目穩定、演示視頻、各種實物圖片等等。
6 項目效果顯示
6.1 功能描述
本期項目中,已實現以下功能:
在巴法云后臺配置智能設備:智能空調和智能燈,在小度APP是可以看到設備情況;
基于N32G4FR的終端,實現智能家庭中樞控制系統的功能;
跟小度音響語音對話,比如【打開空調】或【關閉空調】,即可實現控制指令下發,終端通過紅外發射頭控制空調開關;
跟小度音響語音對話,比如【打開燈】或【關閉燈】,即可實現控制指令下發,終端通過GPIO控制LED(模擬真實場景的智能燈)
打通本地空調狀態和智能燈狀態與巴法云、小度平臺的聯系,實現實時控制聯動。
6.2 圖片展示
以下是項目的部分圖片展示:
固件正常被識別且燒錄成功
調試固件DEMO時,RT-Thread系統上電hello wolrd
查看并確認UART4的真實引腳分布
小度APP使用界面
通過巴法云添加的智能設備在小度APP的展示
一個帶紅外控制的燈具(模擬家庭使用的空調)
6.3 視頻展示
視頻中基本演示了,通過小度音箱輸入控制指令,進而達到控制終端器件(空調或智能燈)的目的。
6.4 代碼開源
本參賽項目的源代碼已全面開源在 這里
其中應用部分的代碼在:n32-iot-xiaodu-smart-home/tree/master/applications
有關項目源代碼的事情,也可與我討論。
7 項目復盤
項目雖然即便完成了,但是有些東西還是需要好好復盤總結的。
7.1 項目踩的那些坑
這一塊還是比較多,我特意開了一個帖子來總結,參加這里:https://bbs.elecfans.com/jishu_2337568_1_1.html
7.2 項目帶來的啟發
多留意一下同一廠商同一系列不同型號的型號差異,對比出異同點,方便靈活選型,甚至有些時候固件程序都是可以通用的;
巴法云對接小度音響只是它其中的一個功能,它還可以對接天貓精靈、小愛同學、Amazon Alexa、Google音響等等,可以說,把它玩熟練了,智能化的產品思路可能可以有更大的邊界;
項目中遇到難題光吐槽是沒有用的,還是自己去想辦法解決;比如下載方法不清晰,就自己多摸索幾遍,熟練掌握它;比如各種開發環境搞不通,嘗試想想原來是怎么開發的,或許能找到方法;比如吐槽好些工具不好使,但這個是外部因素,你得去適應它,不然你可能就沒法完成任務;
多接觸幾種物聯網云平臺有助于開拓技術視野,說不定還能對你的本質工作開展有所幫助和提升。
8 致謝
本次大賽,基本還算是完全獨立完成的,技術上沒有請教太多小伙伴,就是在FTP資料下載的時候,請教了一個群友,感謝他提供的FTP工具,幫忙我得到了第一手官方權威資料,也使得我的參賽項目得以加速進行,再次表示感謝。
9 參考鏈接
-
國民技術N32G4FR簡介
-
國民技術官方FTP資料下載地址 ftp://58.250.18.138
-
【答疑帖】國民技術開源移植挑戰賽答疑匯總
-
[經驗] 【 國民技術N32G4FR開發板試用體驗】基于RT-Thread制作N32G4FR BSP
-
N32G4FR系列通用MCU RT_Thread使用指南
-
esp8266接入小度語音,小度音箱控制,附開源app控制
-
巴法云接入文檔
-
巴法云開發者論壇
(參考鏈接點擊閱讀原文查看)
10 更多分享
本次項目介紹后,我還繼續探索RT-Thread在各種嵌入式平臺開發的可能性,并以此來要求自己輸出各種關于RT-Thread、嵌入式、物聯網等等熱門技術話題的原創內容,歡迎大家持續關注我。
我是 架構師李肯 ( 全網同名 ), 2022年電子發燒友論壇優秀開發者、2022年RT-Thread技術社區優秀布道者 ,歡迎大家來交流。
更多熱點文章閱讀
- OS內核及視窗分論壇詳解之OpenHarmony 3D顯示支持
- 應用模型開發指南上新介紹
- 技術構筑萬物智聯,第一屆OpenHarmony技術峰會圓滿舉行
- OpenHarmony L1(3.0)串口功能開發
-
小白指南:手把手教你用低代碼開發一個應用頁面
提示:本文由電子發燒友論壇發布,轉載請注明來源。如需社區合作及入群交流,請添加微信EEFans0806,或者發郵箱liuyong@huaqiu.com。
原文標題:基于N32G4FR和小度音響的智能家庭中樞控制系統
文章出處:【微信公眾號:電子發燒友開源社區】歡迎添加關注!文章轉載請注明出處。
-
電子發燒友
+關注
關注
33文章
556瀏覽量
33106 -
開源社區
+關注
關注
0文章
94瀏覽量
483
原文標題:基于N32G4FR和小度音響的智能家庭中樞控制系統
文章出處:【微信號:HarmonyOS_Community,微信公眾號:電子發燒友開源社區】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論