【RA4M2設計挑戰賽】基于RA4M2和阿里云物聯網平臺的智能臥室小管家
摘要
本項目已RA4M2為主控,搭載了RT-Thread實時操作系統,配合Wi-Fi模塊來提供網絡通訊能力,外設接入了繼電器、紅外發射、OLED顯示等器件,成功連上了阿里云物聯網平臺,實現了一個智能臥室小管家的產品雛形。
@
-
2.1 項目名稱
-
2.2 設計思路
-
2.3 主要解決的問題
-
2.4 項目創新點
-
3.1 系統核心架構圖
-
3.2 終端側
-
3.3 后端側
-
4.1 硬件部分
-
4.2 軟件部分
-
6.1 功能描述
-
6.2 圖片展示
-
6.3
視頻展示
-
6.4 代碼開源
-
7.1 項目踩的那些坑
-
7.2 項目帶來的啟發
-
7.3 項目的TODOLIST
1 前言
在2022年末,由電子發燒友和瑞賽MCU聯合發起了一個課外設計大賽:**
【社區大賽】
瑞薩RA4M2(Cortex-M33內核MCU)物聯網網關設計挑戰賽
**
本活動是一個為期2個月的RA4M2開發板實戰項目挑戰賽,以“課程學習+實踐挑戰”方式,帶領開發者了解瑞薩ARM內核MCU,設計完整項目,提升實踐動手能力。
而我作為一個混跡在嵌入式物聯網多年的開發工程師,自然不會放過這樣一次跟業內頂尖高手過招的機會,于是我很激動得填下了我的報名信息,洋洋灑灑寫了上千字的項目介紹,順理成章地拿下了參賽資格。
以下是我在本次項目活動中的結項報告,歡迎各位老師、同行點評指導。
2 項目簡介
關于項目前期的規劃,我還是做了一些功課的,但是由于投入時間的關系,下文提及的部分功能并未完全實現。
2.1 項目名稱
基于RA4M2和阿里云物聯網平臺的智能臥室小管家
2.2 設計思路
本項目主要使用瑞薩的R7FA4M2AD3CFP作為端側的核心控制器,實現一個物聯網網關,網關外圍接入多種傳感器器件和控制器件,通過Wi-Fi模組實現與云端的阿里云生活物聯網平臺互通。這個項目中,定位的應用場景是在智能臥室內,所以接入的傳感器有包括聲控傳感器、溫濕度傳感器、睡眠燈帶等,接入的控制設備包括加濕器、智能空調、智能燈等。在其他功能上,還可以通過OLED等顯示屏器件,顯示一些核心信息,同時與手機APP的互聯互通也增加了“智能”的可玩性和實用性??偟膩碚f,這個智能臥室小管家可以在一定程度上承擔臥室的管家功能,釋放人類,享受智能生活。
2.3 主要解決的問題
在智能家居中,大部分人都集中在關注客廳的智能化,而忽略了臥室的智能化。作為人一天中可能待時間最長的臥室,它的智能化需求更多是與人的健康、睡眠、安全等核心問題掛鉤,一個優秀的智能臥室小管家恰好可以很好地彌補這方面的空缺,比如提供睡眠期間的溫濕度檢測,打通與智能空調、加濕器的智能化聯動,這就可以很好地解決睡眠環境問題。另一方面,像接入智能睡眠帶,也可以很好地為個體的睡眠質量提供一定的數據參考,方便人們改善睡眠質量。
2.4 項目創新點
1)阿里云生活物聯網平臺自定義創建智能臥室小管家;
2)各種傳感器器件和控制器件的接入,這里可能接入的是非智能設備,還需要考慮他們的互聯互通問題,涉及一個協議的定義和轉換;
3)端側聯動操作的智能化邏輯,直接決定了智能小管家的實用性。
3 系統架構介紹
3.1 系統核心架構圖
整個系統的核心架構圖如下所示:

從上面這個核心架構圖中,我們可以看到整個IoT系統組成,包括智能設備終端側、阿里云物聯網平臺。下面就整個系統的幾大重要組件,我會一一進行簡要講解。
3.2 終端側
終端側主要承載的是智能臥室環境的檢測,同時做一些邊緣側的應用邏輯處理,還需要具備對外網絡的通訊能力,能在第一時間把緊要消息通過網絡通道傳輸出去。
終端側包括的核心組件有:瑞薩的R7FA4M2AD3CFP(RA4M2),搭載的是國產實時操作系統
RT-Thread
,同時外設板載有
ESP8266
Wi-Fi通訊模組、紅外發射器、繼電器(GPIO模擬)、OLED顯示屏、等等。
終端側不僅包含設備硬件,還需要對應的固件軟件,兩者相輔相成,共同完成終端側的功能邏輯。

3.3 后端側
這里提及的后端,一般指的是阿里云物聯網平臺。
阿里云的物聯網平臺,在國內來說,還是走得比較靠前的,它可以接入非常多樣化的智能設備,同時在物聯網設備數據物模型這一塊,也有比較完備的設計,各大方案廠商和設備終端廠商都比較愿意接入阿里云物聯網平臺。
而本次大賽的要求本身就是建議接入阿里云物聯網平臺,于是我在阿里云物聯網平臺創建了我的智能臥室小管家,并添加了若干屬性(數據模型),以下便是一個參考,后文會詳細介紹一下如何創建此類自定義產品。

4 系統設計說明
下面就系統的各個組件的設計,做簡要的說明。
4.1 硬件部分
硬件部分主要分為四大部分:MCU主控、Wi-Fi模組、各類傳感器、輸出設備。
-
MCU主控:瑞薩的R7FA4M2AD3CFP(RA4M2)
瑞薩電子 RA4M2 32 位微控制器 (MCU) 產品群使用支持 TrustZone 的高性能 Arm? Cortex?-M33 內核。 與片內的 Secure Crypto Engine (SCE) 配合使用,可實現安全芯片的功能。 RA4M2 采用高效的 40nm 工藝,由靈活配置軟件包 (FSP) 這個開放且靈活的生態系統概念提供支持,FSP 基于 FREERTOS 構建,并能夠進行擴展,以使用其他實時操作系統 (RTOS) 和中間件。 RA4M2 適用于物聯網應用的需求, 如多樣化的通信功能、面向未來應用的安全功能、大容量嵌入式 RAM 和較低的運行功耗(從閃存運行 CoreMark? 算法時功耗低至 81μA/MHz)。
以下是它的資源圖介紹:

在我的項目中,我主要使用它的以下幾個外設資源:
1)UART1:RT-Thread的終端調試串口;
2)UART4:用于連接串口WI-Fi模塊ESP8266,實現網絡通訊能力;
3)UART9:用于連接紅外收發器,本次項目中主要使用其紅外發射功能;紅外發射主要用于控制外部的空調;
4)I2C2:用于連接OLED顯示屏,實現部分信息的展示;
5)I2C3:用于連接溫濕度傳感器,型號為AHT25,一款高精度的溫濕度傳感器,見下文介紹;
6)GPIO:GPIO404用作系統工作狀態顯示燈,GPIO407用于控制臥室燈開關。
以下是我的實物連接示意圖:

-
Wi-Fi模組:ESP8266
本次參賽,我并沒有采用官方推薦的Wi-Fi模塊,而是采用了我慣用的Wi-Fi通訊模組ESP8266,原因無它,就是擔心踩坑,影響了比賽進度,而使用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;
使用單片機的串口就可以與之對接,非常的方便。

-
OLED顯示屏(SSD1306)
本次參賽使用的是基于SSD1306控制芯片的OLED顯示屏,尺寸是0.96‘,分辨率是128*64,它的控制協議采用的是4線I2C協議。在實現對接的過程中,既可以使用硬件I2C,也可以采用GPIO模擬成軟件I2C去對接。
以下是該顯示屏的實物圖:

-
溫濕度傳感器(AHT25)
本次參賽聚焦與臥室環境,需要用的一個溫濕度傳感器,這里我依然沒有采用官方推薦的溫濕度傳感器,還是使用了一塊,我已經比較熟練使用的溫濕度傳感器AHT25,它與常見的AHT20溫濕度傳感器屬于同一個系列,在編程代碼上基本是可以公用的。最棒的是,官方已提供成熟的示例代碼,開發者僅需要花小量的時間,即可很快完成調試對接。
以下是它的實物圖:

-
GPIO控制:
目前這一塊的接入,采用的是GPIO做模擬,并沒有實際接入繼電器,但已經完全可以實現其操作原理。
其中,GPIO404用作系統工作狀態顯示燈,GPIO407用于控制臥室燈開關。
4.2 軟件部分
整個軟件部分的開發主要就是終端固件開發,主要包括四大部分:RA4M2的原廠BSP、RT-Thread實時操作系統、ESP8266相關的配置代碼使能、個性化的應用邏輯代碼。
其中RA4M2的原廠BSP基本不動,原廠和相關開發者已經適配好了;通用的RT-Thread操作系統的代碼也不在此處的修改中,直接復用已有的代碼,這里使用的版本是 4.1.1 。
ESP8266相關的AT、網絡組件代碼也是現成的,使能配置之后就可以直接用了,還是非常的方便。
除了AT相關的軟件包代碼外,我還使用了 ali-iotkit-v3.0.1 這個軟件包,這個軟件包主要集成了對接阿里云物聯網的技術細節。
還有一個cJSON的軟件包,這里也使用到了,它用于做一些上下行數據包的解析和封裝,主要原因是對接阿里云物聯網平臺使用的Alink JSON的數據協議,這就要求終端必須具備解析JSON數據的能力。
所以這里重點講一下,應用邏輯的代碼:主要包括溫濕度傳感器的操作、紅外收發器的控制、OLED屏的顯示、GPIO的控制等。
以下是終端軟件應用邏輯部分的層次圖:

其中:
Wi-Fi線程:由于在RT-Thread中AT組件是開啟后,默認就跑起來了,而在應用層暫時沒有一個比較好的方式感知網絡能力的建立,所以這里新建了一個線程,用于實時檢查網絡通訊能力;當網絡通訊能力已建立時,通過信號量的方式,通知其他模塊。
Aliyun MQTT線程:主要負責跟阿里云物聯網平臺進行對接,采用的MQTT通訊協議,它的運行,依賴于基礎網絡能力的建立;當它與阿里云物聯網平臺建立聯系時,它就可以接收平臺的控制指令下發,比如開關空調或開關照明燈等;
OLED顯示線程:此線程用于更新顯示智能臥室的相關數據信息,包括:空調的開關狀態、照明燈的開關狀態、臥室的溫濕度等;這些信息的更新頻次大概1秒鐘更新一次;
Smart智能臥室線程:該線程主要維護整個智能臥室的邏輯,包括定時更新溫濕度值、定時上報最新數據到阿里云物聯網平臺;
紅外接收處理線程:該線程主要用于接收外部的標準NEC紅外信號,此功能本項目暫時未實際使用,僅用于學習若干紅外遙控器的鍵值;
系統運行展示線程:此線程并沒有參與過多的應用邏輯,僅僅是每一秒鐘閃爍一下運行指示燈,表示系統正在運行中。
以上各個線程各司其職,相輔相成,共同完成智能臥室小管家的邏輯功能。
下面展示的是工程項目中的代碼結構,我在RT-Thread適配RA4M2的基礎上,新增了一個App目錄用于存放我自己的應用工程代碼,里面的代碼結構一本與上面的代碼邏輯示意圖保持一致。

5 項目實施過程
1)熟悉RA4M2的基本開發資料
這一步主要是熟悉開發板的基本資源,對外設等信息有一定的概念,以便于方便后續的開發調試;同時,還需要把相關的一些官方軟件給安裝好,熟練使用配置工具和下載工具。
文末有好幾份我當時參考的教程,基本根據上面的步驟來,很快就可以完成初始的上手操作。
2)移植RT-Thread操作系統
本次參賽,我并不打算使用官方推薦的freeRTOS,而是想采用我熟悉的RT-Thread操作系統,一來是我比較熟悉使用RT-Thread,二來RT-Thread有非常豐富和成熟的軟件包,包括網絡通訊、IoT云對接這塊都比較多參考,所以能夠很快就構建起demo應用。
移植RT-Thread這塊,其實也要多感謝RT-Thread官方和社區的小伙伴,其實他們都已經做好了基本的移植了,只需要對照著自己的開發板資源跳轉一下即可。
我主要是參考小伙伴的動手教程(見文末的參考鏈接),最后被串口輸出卡殼了一晚上,然后發現了一個問題,冤死了。后面的項目復盤會提到,順利的話,完成這一步,基本的操作系統能力就已經建立了,下面就是基于RT-Thread操作系統進行編程了。
3)配置RT-Thread的軟件包
這里主要利用RT-Thread的配置工具env,然后使用menuconfig來配置各種軟件包,在線拉取,這個項目中,我使用了aliyun-iotkit軟件包、AT-device軟件包、CJSON軟件包;的確讓我的項目開發提速了不少。
4)配置阿里云物聯網平臺
我是參考這個
教程
來創建自己的自定義產品的,很快就上手,最重要的是,創建完產品和設備之后,把相關的三元組信息拿到,然后填充到aliyun-iotkit軟件包中,就可以很快連接上阿里云。
基本上以上4步完成后,終端就可以很順利地連上阿里云物聯網平臺了,而這期間基本就是零代碼,全部都歸功于RT-Thread靈活的代碼配置工具,非常地贊。

為了契合本次參賽項目,我在創建的產品中,增加了相關的數據熟悉,分別是:空調開關狀態、照明燈開關狀態、溫濕度等。

5)調試外設驅動
這里主要是調試各種驅動接口,包括紅外發射器的UART接口、OLED顯示的I2C接口、溫濕度傳感器的I2C接口、照明燈開關的GPIO控制。
在調試過程中,一般一個個模塊來,避免模塊直接的干擾,這樣可以有效地加快開發速度。
等到各個功能模塊完成后,統一串起來跑一跑,確保沒有問題。
6)全功能自測
到了這一步,基本功能開發就已經完成了,需要將終端設備的功能與云端能力聯系起來調試,比如終端上報的數據能夠在云端展示、云端發起的控制指令,能否在終端得到響應等等。
7)準備結項資料
項目收尾的最后,需要準備各種結項資料,包括項目穩定、演示視頻、各種實物圖片等等。
6 項目效果顯示
6.1 功能描述
本期項目中,已實現以下功能:
6.2 圖片展示
以下是項目的部分圖片展示:
-
開發板時鐘配置的問題,導致的亂碼

-
RT-Thread跑起來的瞬間
-
零代碼上阿里云

-
終端OLED顯示

6.3 視頻展示
視頻展示部分,已更新,見硬聲平臺,
戳這里
6.4 代碼開源
本參賽項目的源代碼已全面開源在
這里
其中應用部分的代碼在
ra4m2-rt-thread/tree/master/bsp/rene
sas/ra4m2-eco
有關項目源代碼的事情,也可與我討論。
7 項目復盤
項目雖然即便完成了,但是有些東西還是需要好好復盤總結的。
7.1 項目踩的那些坑
-
第一坑,必須留個這個開發板的外部晶振時鐘:我一開始參考的是之前的一些測評帖子,按照他們的教程來,一步步走下來,RT-Thread是跑起來了,但是console輸出確實亂碼的,然后看了一下主線程的log打印,本來是一秒鐘打印一次的,結果我這跑出來是2秒鐘打印一次。于是多次請教大佬,才了解清楚,本次大賽的板子,外部晶振時 12MHZ的,而之前測評活動的外部晶振時 24MHZ,這個真的是第一個大坑,誰知道外部長得一樣的板子,居然換了個晶振!于是改成12MHZ的晶振后,一切正常。
-
瑞賽的FSP智能配置工具使用不熟,對立面的配置流程有些茫然,比如在配置硬件I2C的時候,一開始壓根不知道那里還可以配置從設備地址,老是以為接口代碼里面傳入,結果死活出不來數據,差點都懷疑人生了;
-
管腳復用的問題一定要小心,好多外設都是復用的,比如I2C和UART,一定要注意區分;同時,選引腳的時候也要留意,跟自己的開發板要一一對應,不然即便軟件代碼沒問題,功能依然跑不出來;
-
開發板的USB口,一開始電腦死活出不來COM口,更新驅動,重啟電腦都試了,沒用;最后發現我可能用了一個只能充電的數據線導致的,換了一個手機傳輸數據的TYPE-C數據線后,COM口終于出來了。
7.2 項目帶來的啟發
7.3 項目的TODOLIST
鑒于項目時間的關系,本項目中海油一些比較好的功能想法并沒有去實現,后續有時間,可以考慮把它完善了。
-
OTA升級的問題:本身阿里云物聯網平臺是支持OTA升級的,這塊可以調試一下,問題不大;
-
USB本地升級的問題:需要研究一下這塊升級的邏輯,還好論壇中已有小伙伴實踐出來了;
-
智能臥室本地化智能邏輯:這里其實是一些智能化場景的豐富問題,比如溫濕度值與空調的聯動就是比較簡單的一個邏輯,在后續的迭代中,可以多多加入一些這樣的本地化智能邏輯;
-
智能臥室傳感器中引入睡眠檢測:其實這個也是我本身這次參賽很想做的一個功能,但是由于沒有預留充足的預研時間,傳感器沒有選好型,一直被拖住了;后續有機會我一定要把這個功能加上;等到它加入的那一天,智能臥室小管家的商用價值可能就提升不少了。
歸根結底,還是時間花得太少了,后面的項目都要吸取此類教訓。
8 致謝
這個項目前前后后地折騰了一段時間,踉踉蹌蹌地也算是交差了,這期間還是要感謝幾位大佬的支持與幫助,可以說沒有你們的輸入,可能我都不能完成這個項目了。以下是詳細的致謝名單,排名不分前后:
再次感謝大家,今后多向各位大佬學習。
9 參考鏈接
在整個項目開發過程中,參考了一些有用的文章或教程,特在此羅列,以表感謝:
10 更多分享
本次項目介紹后,我還繼續探索RT-Thread在各種嵌入式平臺開發的可能性,并以此來要求自己輸出各種關于RT-Thread、嵌入式、物聯網等等熱門技術話題的原創內容,歡迎大家持續關注我。
我是 架構師李肯 (全網同名),2022年電子發燒友論壇優秀開發者、2022年RT-Thread技術社區優秀布道者、CSDN博客專家,歡迎大家來交流。
[經驗] 【瑞薩RA4系列開發板體驗】+rt-thread移植
[經驗] 【RA4M2設計挑戰賽】適配 RT-Thread(env方式)開發 RA4M2
紙上得來終覺淺,絕知此事要躬行;多上手,多總結;看10篇別人的教程,不如自己整一遍來得快,這次我就吃了這個虧,希望后續多多吸取教訓。
寫應用代碼的時候,多多考慮代碼的可移植性;本次項目我復用了之前在C51上面寫的I2C驅動OLED的代碼,之前是軟件I2C,這次切換到硬件I2C,適配一下接口后,應用邏輯代碼基本不用動,非常地絲滑;
評估工作量時,盡快多留一手,看似簡單的功能,哪怕你已經在別的平臺實現過,也可能還要再踩坑一次;
遇到卡殼的問題,及時尋找幫助,要不找原廠的技術支持,要不找參賽的小伙伴,一般的技術問題大家都和樂意為你解答;你自個瞎折騰一晚上的問題,可能別人一兩句話就點通你了;
項目還是要趕早規劃和實施,越往后推壓力越大,除非你想要項目擺爛;
在阿里云物聯網平臺,可以展示空調開關狀態、照明燈開關狀態、臥室溫濕度等信息;
在阿里云物聯網平臺,可以在線調試,下發控制空調開關或照明燈開關等控制指令;
開機自識別接入Wi-Fi網絡,并在判斷網絡狀態OK后,通過MQTT的形式自動接入阿里云物聯網平臺;
系統運行指示燈,每秒鐘閃爍一次;
定時更新OLED顯示內容,包括空調開關狀態、照明燈開關狀態、臥室溫濕度值等;
定時采集更新臥室溫濕度數據,并通過OLED更新顯示,同時上報到阿里云物聯網平臺;
審核編輯黃宇
-
物聯網
+關注
關注
2927文章
45794瀏覽量
387223 -
開發板
+關注
關注
25文章
5472瀏覽量
101823 -
阿里云
+關注
關注
3文章
1001瀏覽量
43823 -
RA4M2
+關注
關注
2文章
20瀏覽量
1063
發布評論請先 登錄
【獲獎名單】瑞薩RA4M2物聯網網關設計挑戰賽獲獎名單公布!








評論