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