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