0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

使用平頭哥RVB2601開發(fā)板設(shè)計智能家居助手

電子工程師 ? 來源:芯片開放社區(qū) ? 作者:碼農(nóng)愛學(xué)習(xí) ? 2022-07-19 10:08 ? 次閱讀

智慧家居助手是“平頭哥RVB2601開源應(yīng)用創(chuàng)意征集”活動中的一等獎獲獎作品,由開發(fā)者碼農(nóng)愛學(xué)習(xí)開發(fā),主要是為了實現(xiàn)家庭智能設(shè)備的控制。在完成全部的功能開發(fā)后,碼農(nóng)愛學(xué)習(xí)也分享了他在本次活動中的體驗與感想。

“從3個月前拿到板子,逐步熟悉CDK環(huán)境的開發(fā)與RISC-V的開發(fā)體驗,在使用過程中,不斷分享使用筆記,并學(xué)習(xí)其它網(wǎng)友積極分享的筆記,最后將所有使用過的功能,整合為一個綜合的小項目,就實現(xiàn)了這個智慧家居助手?!?/p>

接下來,讓我們一起來拆解智慧家居助手的內(nèi)部功能與結(jié)構(gòu)吧。

01項目背景

當今時代,已進入萬物互聯(lián)的時代,各種嵌入式硬件產(chǎn)品,通過網(wǎng)絡(luò)連接互聯(lián)網(wǎng),實現(xiàn)萬物互聯(lián)。對于我們的家庭生活來說,能夠有一款服務(wù)于家庭的智能控制設(shè)備,實現(xiàn)諸如這些功能:家中的各種生活電器,通過連接網(wǎng)絡(luò),可以進行更方便的遠程控制;家中的溫度、濕度、空氣質(zhì)量等環(huán)境指標,通過連網(wǎng),也可以方便地為我們展示;最近的天氣情況,在出門前方便的為我們提醒;家中休息時,營造娛樂的氛圍……

02作品簡介

基于上述的設(shè)想,本項目嘗試使用平頭哥的RVB2601開發(fā)板,設(shè)計一款智能家居助手,從而使我們更好的享用家中生活。

本項目利用RVB2601的WiFi功能,通過連接互聯(lián)網(wǎng)可以獲取近期天氣信息,在板載屏幕上顯示,提示我們天氣變化;利用RTC功能,顯示當前的網(wǎng)絡(luò)時間;外接溫、濕度傳感器,可以為我們展示室內(nèi)真實的溫濕度;通過WiFi與其它電器的控制器通信,這里使用ESP8266作為被控節(jié)點,實現(xiàn)對其它電器的無線開關(guān)控制;利用板子自帶的喇叭和連網(wǎng)功能,可以播放網(wǎng)絡(luò)音樂和視頻用來進行娛樂;使用OTA功能,還可以不斷對功能進行迭代更新,實現(xiàn)軟件功能的空中升級。

本項目最終實現(xiàn)的實物照片如下,通過ESP8266板載的一個LED和外接的LED模擬家中的兩個不同的燈,外接的小風(fēng)扇模擬家中的風(fēng)扇:

f00fc658-0691-11ed-ba43-dac502259ad0.png

03系統(tǒng)框圖

本項目的整體硬件結(jié)構(gòu)如下:主體為RVB2601主控制器,通過路由器與家中其它電器進行無線連接,實現(xiàn)家中電器的開關(guān)控制,并可通過連接互聯(lián)網(wǎng),實現(xiàn)互聯(lián)網(wǎng)信息(網(wǎng)絡(luò)天氣、網(wǎng)絡(luò)時間、網(wǎng)絡(luò)音樂的獲?。?。

f039c246-0691-11ed-ba43-dac502259ad0.png

為了實現(xiàn)各個功能的選擇調(diào)用,本項目利用多級菜單的結(jié)構(gòu),實現(xiàn)各個功能間的跳轉(zhuǎn),具體的結(jié)構(gòu)如下:

f05e79d8-0691-11ed-ba43-dac502259ad0.png

關(guān)于多級菜單的具體實現(xiàn)細節(jié),在下面的“各部分功能說明和解析”中將詳細介紹。

軟件部分,本項目使用平頭哥的CDK集成開發(fā)環(huán)境進行代碼編寫與調(diào)試,使用YoC軟件平臺框架以及AOS API實現(xiàn)程序設(shè)計:

使用任務(wù)創(chuàng)建功能,實現(xiàn)各個模塊功能的獨立設(shè)計與維護;

使用信號量機制,實現(xiàn)不同任務(wù)間的信息同步;

使用消息隊列,實現(xiàn)不同任務(wù)間的消息傳遞;

使用訂閱發(fā)布機制,實現(xiàn)任務(wù)間的解耦;

使用RTC功能,實現(xiàn)時間的獲取;

使用SPI功能,實現(xiàn)屏幕的驅(qū)動與顯示;

使用日志組件,實現(xiàn)代碼的調(diào)試與信息輸出;

04各部分功能說明和解析

4.1 城市天氣顯示

RVB2601具有連網(wǎng)功能,可以連接互聯(lián)網(wǎng)來實現(xiàn)對網(wǎng)絡(luò)天氣信息的獲取。

這里使用高德平臺的天氣獲取接口,通過http協(xié)議獲取指定城市的天氣數(shù)據(jù)。原始數(shù)據(jù)是json格式的,需要從json數(shù)據(jù)中解析出天氣、溫度等信息,然后將這些信息顯示到屏幕中。

這里使用U8g2庫來進行天氣信息的顯示,U8g2庫自帶了一些天氣圖標,可以將對應(yīng)的天氣信息轉(zhuǎn)換為對應(yīng)的天氣圖標顯示出來。

另外,天氣的顯示包括主頁常駐地的天氣顯示,可以在菜單頁中顯示不同城市的天氣,通過在菜單頁中查看對應(yīng)城市的天氣后,主頁的常駐地也會跟著變?yōu)椴藛沃胁榭吹哪莻€城市,從而實現(xiàn)主頁常駐地的切換。

f082ea20-0691-11ed-ba43-dac502259ad0.png

關(guān)于U8g2庫在RVB2601上的具體移植過程,可參考前期的試用報告:【平頭哥RVB2601創(chuàng)意應(yīng)用開發(fā)】實踐2-移植U8g2圖形庫

4.2 當前時間顯示

RVB2601具備RTC(Real_Time Clock)功能,可以實現(xiàn)時間的顯示,雖然RVB2601的RTC沒有配置電池,掉電后時間就沒了,但RVB2601的連網(wǎng)功能,可以在每次開機時,通過獲取網(wǎng)絡(luò)時間,來為RTC重新校準時間。參考YOC文檔,可以學(xué)習(xí)RTC功能的基本用法。

f0bda994-0691-11ed-ba43-dac502259ad0.png

網(wǎng)絡(luò)天氣與時間的具體實現(xiàn)細節(jié),可參考之前的試用報告:【平頭哥RVB2601創(chuàng)意應(yīng)用開發(fā)】實踐7-U8g2庫顯示網(wǎng)絡(luò)天氣和時間

4.3 室內(nèi)溫濕度顯示

除了顯示不同城市的天氣數(shù)據(jù),家庭環(huán)境中的溫濕度也值得我們關(guān)注,這里就通過RVB2601外接一個溫濕度傳感器(DHT11)來實現(xiàn)室內(nèi)溫濕度數(shù)據(jù)的采集與顯示。

DHT11數(shù)字溫濕度傳感器是一款含有已校準數(shù)字信號輸出的溫濕度復(fù)合傳感器,微控制器與 DHT11之間的通訊和同步,采用單總線數(shù)據(jù)格式,這里將DHT11的數(shù)據(jù)線接至DHT11的PA10引腳上。再過按鍵切換功能,實現(xiàn)屏幕上主頁界面與室內(nèi)溫濕度頁面的切換顯示。

f0e8fa5e-0691-11ed-ba43-dac502259ad0.png

DHT11數(shù)據(jù)讀取與顯示程序如下:

f10ee0fc-0691-11ed-ba43-dac502259ad0.png

DHT11的更多實現(xiàn)細節(jié),可參考前期的使用報告:【平頭哥RVB2601創(chuàng)意應(yīng)用開發(fā)】實踐3-外接DHT11顯示溫濕度

4.4 多級菜單

為了實現(xiàn)更多的功能操作,引入了多級菜單的功能,通過板子上兩個按鍵的配合,實現(xiàn)不同功能的選擇與觸發(fā)。

這里使用數(shù)組查表法的方式,實現(xiàn)了一個三級菜單的功能:

第一級和第二級是功能選項

第三級是要實現(xiàn)的具體功能

通過左邊按鍵實現(xiàn)上下項目的切換

通過右邊按鍵實現(xiàn)各級菜單間的跳轉(zhuǎn)

數(shù)組查表法的基本原理是通過一個結(jié)構(gòu)體數(shù)組,實現(xiàn)各個菜單頁面的跳轉(zhuǎn):

f13e8578-0691-11ed-ba43-dac502259ad0.png

結(jié)構(gòu)體中4個成員的含義為:

current:當前頁面的索引

down:按下“向下翻“按鈕后要跳轉(zhuǎn)到的頁面索引號

enter:按下“確認“按鈕后要跳轉(zhuǎn)到的頁面索引號

current_operation:當前頁面的索引號要執(zhí)行的顯示函數(shù)

這里的顯示函數(shù),加了兩個參數(shù)

第一個參數(shù)用來表示該界面是否是第一次進入,如果是,則按需做一些初始化處理,比如查詢不同程序的天氣時,第一次進入某個城市的天氣界面,需要先獲取一次網(wǎng)絡(luò)天氣;

第二個參數(shù)用來表示該界面是否需要在本界面內(nèi)實現(xiàn)某些功能切換,比如家中電器控制的界面中,控制電器開和關(guān)時,就要用到這個參數(shù),以用來顯示不同開關(guān)狀態(tài)的界面。

本項目中,多級菜單的前兩級的展示示例如下:

f16371ee-0691-11ed-ba43-dac502259ad0.png

多級菜單的更多實現(xiàn)細節(jié),可參考前期的使用報告:【平頭哥RVB2601創(chuàng)意應(yīng)用開發(fā)】實踐6-多級菜單顯示測試

4.5音樂&視頻娛樂

RVB2601具有連網(wǎng)功能,并且板載了一個喇叭,可以通過網(wǎng)絡(luò)獲取一些音樂或視頻資源,實現(xiàn)家居娛樂功能。首先介紹網(wǎng)絡(luò)音樂播放功能。

4.5.1音樂播放功能

音樂播放參考了官方的webplayer例程,在此基礎(chǔ)上,實現(xiàn)按鍵控制不同音樂的播放開始與停止,以及播放時的屏幕顯示功能。

為了配合其它功能對按鍵與屏幕的使用,這里創(chuàng)建了一個音樂播放任務(wù),來控制音樂的播放:

f1802118-0691-11ed-ba43-dac502259ad0.png

音樂播放的菜單進入界面與音樂播放界面如下圖所示,在音樂播放時,設(shè)計了兩個位置交錯的音樂圖標循環(huán)顯示,實現(xiàn)一種正在播放的畫面效果。

f1a19d48-0691-11ed-ba43-dac502259ad0.png

網(wǎng)絡(luò)音樂播放的更多實現(xiàn)細節(jié),可參考前期的使用報告:【平頭哥RVB2601創(chuàng)意應(yīng)用開發(fā)】實踐4-按鍵控制網(wǎng)絡(luò)音樂播放

下面再來介紹視頻播放功能。

4.5.2視頻播放功能

本項目中視頻播放的基本原理是:利用TCP連網(wǎng)功能,使RVB2601作為客戶端,筆記本電腦作為服務(wù)器端,使RVB2601與ESP8266板子在同一局域網(wǎng)下無線通信,RVB2601獲取服務(wù)器端的視頻幀數(shù)據(jù),再借助U8g2圖形庫,將每一幀的圖形顯示出來。

電腦端通過Python程序,作為TCP服務(wù)器,其主要功能為:

利用OpenCV讀取視頻文件

對視頻幀的圖像,進行尺寸修改

對圖像進行二值化處理

將二值圖像轉(zhuǎn)換為數(shù)組

將數(shù)組通過socket發(fā)送出去

電腦端的主體代碼如下:

f1d77864-0691-11ed-ba43-dac502259ad0.png

RVB2601端,通過連接對應(yīng)的服務(wù)器,在接收到圖像數(shù)據(jù)后,顯示出來即可:

視頻播放的截圖效果如下,實際播放效果請看演示視頻。

f203de4a-0691-11ed-ba43-dac502259ad0.png

視頻播放的更多實現(xiàn)細節(jié),可參考前期的試用報告:【平頭哥RVB2601創(chuàng)意應(yīng)用開發(fā)】實踐9-板載屏幕播放BadApple視頻,需注意的是,前期這篇試用報告,是在TCP數(shù)據(jù)接收回調(diào)函數(shù)中,直接進行圖像的顯示的,而在此次結(jié)項綜合例程中,為了配合各個功能對屏幕的使用,在回調(diào)函數(shù)中收到視頻數(shù)據(jù)后,采用消息隊列的方式,將數(shù)據(jù)再轉(zhuǎn)發(fā)出去,由屏幕顯示程序來處理何時要在屏幕上顯示視頻。

4.6 家居電器控制

家居電器的控制功能,通過RVB2601與ESP8266無線TCP通信實現(xiàn),ESP8266作為被控制電器的無線控制器,與主控RVB2601通信。ESP8266作為TCP服務(wù)器端,RVB2601作為TCP客戶端,通過指定的IP與端口號進行連接。

4.6.1燈的開關(guān)控制

ESP8266使用Arduino IDE進行開發(fā)與程序編寫,主程序邏輯為:等待客戶端連接,并接收客戶端的指令,接收到后,對指令進行解析,執(zhí)行對應(yīng)的LED亮滅操作。

這里是以字符串的形式進行數(shù)據(jù)傳送,比如“l(fā)ed on”就是開燈,“l(fā)ed off”就是關(guān)燈。

f23b639c-0691-11ed-ba43-dac502259ad0.png

4.6.2風(fēng)扇的開關(guān)控制

風(fēng)扇的控制與燈的控制邏輯一樣,只需再定義“fan on"和“fan off”這樣的指令用來進行風(fēng)扇的控制。硬件方面,由于這個小風(fēng)扇的相比較LED來說,需要的電流較大,這里使用一個繼電器來間接控制風(fēng)扇電源的通斷。

f26f65b6-0691-11ed-ba43-dac502259ad0.png

4.7 RGB呼吸燈

RGB呼吸燈是本項目的一個附件功能,通過一個獨立的RGB_LED任務(wù),實現(xiàn)3種顏色的LED呼吸亮滅。它也可以在調(diào)試程序中,作為程序是否正常運行的判斷標志。

f29d5e12-0691-11ed-ba43-dac502259ad0.png

05作品源碼

https://gitee.com/xxpcb/rbv2601-test/tree/master/RVB2601_2022

f2bd77f6-0691-11ed-ba43-dac502259ad0.png

06視頻演示

簡介

平頭哥RVB2601創(chuàng)意應(yīng)用開發(fā)——智慧家居助手,主要展示的功能包括:

城市天氣顯示(主頁常駐地天氣與菜單頁不同城市天氣,連網(wǎng)獲取網(wǎng)絡(luò)天氣)

當前時間顯示(日期、時、分、秒、星期,連網(wǎng)獲取網(wǎng)絡(luò)時間)

室內(nèi)溫濕度顯示(DHT11溫濕度傳感器)

多級菜單(三級菜單實現(xiàn)各功能界面的跳轉(zhuǎn))

音樂播放功能(網(wǎng)絡(luò)音樂播放)

視頻播放功能(連接電腦端TCP服務(wù)器獲取視頻幀數(shù)據(jù))

家居電器控制(燈的控制、風(fēng)扇的控制)

RGB呼吸燈

07項目總結(jié)

本項目基于平頭哥的RVB2601,設(shè)計了一款智慧家居助手,實現(xiàn)了網(wǎng)絡(luò)天氣、時間的獲取與顯示、室內(nèi)溫濕度的獲取與顯示、家中電器的無線控制,音樂與視頻娛樂功能等,幫助我們更好的體驗家中環(huán)境。

從3個月前拿到板子,逐步熟悉CDK環(huán)境的開發(fā)與RISC-V的開發(fā)體驗,在使用過程中,不斷分享使用筆記,并學(xué)習(xí)其它網(wǎng)友積極分享的筆記,最后將所有使用過的功能,整合為一個綜合的小項目,就實現(xiàn)了這個智慧家居助手。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 開發(fā)板
    +關(guān)注

    關(guān)注

    25

    文章

    4895

    瀏覽量

    97057
  • 智慧家居
    +關(guān)注

    關(guān)注

    1

    文章

    83

    瀏覽量

    16271
  • RISC-V
    +關(guān)注

    關(guān)注

    44

    文章

    2204

    瀏覽量

    45958
  • 平頭哥
    +關(guān)注

    關(guān)注

    0

    文章

    64

    瀏覽量

    9025

原文標題:通用型MCU的創(chuàng)意應(yīng)用——3個月實現(xiàn)智慧家居助手快捷開發(fā)

文章出處:【微信號:芯片開放社區(qū),微信公眾號:芯片開放社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    RVB2601開發(fā)板快速上手教程

    軟件環(huán)境搭建3.1.CDK介紹基于RVB2601開發(fā)板的應(yīng)用是利用CDK集成開發(fā)環(huán)境進行開發(fā)的。關(guān)于的CDK的介紹,可以直接前往平頭
    發(fā)表于 09-01 14:12

    RVB2601開發(fā)板用戶指南

    及豐富的片上外設(shè),最低主頻220MHz,支持AliOS Things物聯(lián)網(wǎng)操作系統(tǒng)、平頭YoC軟件平臺及平頭劍池開發(fā)工具(CDK)。1.
    發(fā)表于 09-01 14:19

    平頭RVB2601開發(fā)板試用體驗】平頭RVB2601開發(fā)板_CDK試用體驗

    ,管理所有工程文件 五、總結(jié)經(jīng)過幾番摸索,在Project目錄下,新建IOT工程文件菜單里面,可以直接選擇平頭RVB2601開發(fā)板,和相關(guān)示例,更加直接,簡單方便。在動則數(shù)十千R
    發(fā)表于 12-30 10:15

    平頭RVB2601開發(fā)板試用體驗】CDK初體驗

    “ch2601_gui_demo”, 即可在此工作空間,管理所有工程文件 五、總結(jié)經(jīng)過幾番摸索,在Project目錄下,新建IOT工程文件菜單里面,可以直接選擇平頭RVB2601
    發(fā)表于 12-30 10:52

    平頭RVB2601開發(fā)板試用體驗】cdk開發(fā)最快上手(helloworld例程)

    cdk內(nèi)打開串口監(jiān)視,打開串口,串口每隔一秒打印helloworld五、參考資料用戶手冊:開發(fā)板原理圖:平頭芯片開放社區(qū):開發(fā)板-RVB2601
    發(fā)表于 01-15 21:47

    平頭RVB2601開發(fā)板試用體驗】開箱

    首先,非常感謝發(fā)燒友與平頭提供的RVB2601開發(fā)板試用機會。以下是RVB2601的開箱體驗報告:RV
    發(fā)表于 01-19 22:33

    平頭RVB2601開發(fā)板試用體驗】開發(fā)板初探與環(huán)境配置

    很高興批準了我的RVB2601開發(fā)板的試用申請,這一篇貼子將帶大家初探這塊RVB2601(以下簡稱RVB)的硬件資源以及簡單的開發(fā)環(huán)境配置流
    發(fā)表于 01-21 12:34

    平頭RVB2601開發(fā)板試用體驗】+w800的應(yīng)用

    接收的數(shù)據(jù),這給調(diào)試帶來很大困擾。二、實現(xiàn)w800接收數(shù)據(jù)的顯示《【平頭RVB2601開發(fā)板試用體驗】WiFi無線通信》,通過以下代碼顯示w800接收到的5個字節(jié)數(shù)據(jù),以16進制方式
    發(fā)表于 02-14 10:26

    平頭RVB2601開發(fā)板試用 】開箱過程以及開發(fā)板介紹上電

    參加21ic組織的平頭講座,很榮幸能夠成為平頭RVB2601開發(fā)板實驗用戶,今天第一天收到
    發(fā)表于 03-08 06:35

    平頭RVB2601開發(fā)板試用體驗】開發(fā)板初探與環(huán)境配置流程

    的原因。 可供參考的資料CH2601芯片介紹CH2601用戶手冊RVB2601開發(fā)板用戶手冊文章轉(zhuǎn)載自:平頭
    發(fā)表于 03-08 08:31

    平頭RVB2601開發(fā)板試用體驗】開箱(預(yù)熱研究)

    收到了平頭RVB2601開發(fā)板,心情很激動,久聞這塊開發(fā)板目前已經(jīng)很成熟,那邊學(xué)習(xí)和使用起來必然能事半功倍,更加深入熟悉
    發(fā)表于 03-08 09:02

    RVB2601 Gravity擴展板上線啦!??!全IO引腳擴展支持,專為RVB2601定制

    2021年的云棲大會上,平頭開發(fā)者展區(qū)曾展示過一款由DFRobot開發(fā)團隊基于RVB2601開發(fā)板
    發(fā)表于 05-27 15:58

    基于平頭生態(tài)芯片CH2601開發(fā)板介紹

    RVB2601是基于平頭生態(tài)芯片CH2601開發(fā)板,板載JTAG調(diào)試器,WiFi&BLE芯片W800,音頻ADCES7210,音頻DAC
    的頭像 發(fā)表于 12-02 16:14 ?3577次閱讀

    平頭芯片生態(tài)產(chǎn)品專家?guī)阃孓D(zhuǎn)RISC-V開發(fā)板

    RVB2601平頭一款基于玄鐵開源E906處理器的RISC-V生態(tài)開發(fā)板。作為一款通用型MCU開發(fā)板,
    的頭像 發(fā)表于 12-03 14:14 ?3736次閱讀

    DFRobot推出一款為平頭RVB2601開發(fā)板定制的IO傳感器擴展板

    近日,上海智位機器人股份有限公司(DFRobot) 推出了一款專為平頭RVB2601開發(fā)板定制的IO傳感器擴展板——RVB2601 Gra
    的頭像 發(fā)表于 06-02 13:15 ?1673次閱讀
    DFRobot推出一款為<b class='flag-5'>平頭</b><b class='flag-5'>哥</b><b class='flag-5'>RVB2601</b><b class='flag-5'>開發(fā)板</b>定制的IO傳感器擴展板