項(xiàng)目簡(jiǎn)介
基于RT-Thread和中藍(lán)訊科的AB32VG1開(kāi)發(fā)板實(shí)現(xiàn)的家庭安全檢測(cè)功能,主要包含如下功能:
1、基于RT-Thread操作系統(tǒng)的按鍵組件,音頻播放組件等;
2、基于AB32VG1開(kāi)發(fā)板的語(yǔ)音播放功能;
3、基于Node-Red的串口功能與AB32VG1通訊;
4、連接騰訊云的Explorer平臺(tái);
5、騰訊連連公眾號(hào)接收云平報(bào)警信息;
6、門(mén)窗檢測(cè)開(kāi)關(guān)。
硬件說(shuō)明
因?yàn)楣俜教峁┝酥兴{(lán)訊科開(kāi)發(fā)板,所以基于該開(kāi)發(fā)板的語(yǔ)音播放功能和SD卡功能實(shí)現(xiàn)的聲音,實(shí)現(xiàn)家庭安全監(jiān)測(cè)。由于板載的音頻接口只有耳機(jī),發(fā)出的音量較小,不足以提供大聲音的語(yǔ)音,所以額外添加了一個(gè)音頻驅(qū)動(dòng)模塊PAM8403來(lái)驅(qū)動(dòng)一個(gè)大喇叭。另外額外焊接了塊擴(kuò)展板,引出了I2C接口連接OLED顯示屏和門(mén)窗檢測(cè)IO引腳。


沒(méi)想到8年前買(mǎi)的功放模塊居然現(xiàn)在還能用上,如果不用它,聲音會(huì)很小。

音頻功放PAM8403

兩個(gè)按鈕是門(mén)和窗的觸發(fā)按鍵
軟件說(shuō)明
軟件使用到RT-Thread Studio來(lái)開(kāi)發(fā)我的作品,使用AB32VG1提供的案例基礎(chǔ)上實(shí)現(xiàn)的語(yǔ)音播放和監(jiān)控。因?yàn)橐獢?shù)據(jù)上云,RT-Thread的上云組件功能連不上網(wǎng)絡(luò),結(jié)果通過(guò)Node-Red來(lái)實(shí)現(xiàn)AB32VG1與PC Node-Red串口通信,然后通過(guò)Node-Red連接騰訊云,講串口接收的json格式數(shù)據(jù)發(fā)送到騰訊云平臺(tái),然后通過(guò)云平臺(tái)的數(shù)據(jù)流設(shè)置后可以實(shí)現(xiàn)手機(jī)收到公眾號(hào)及時(shí)發(fā)布的信息,同時(shí)音頻播放音樂(lè)。以下代碼是發(fā)送串口數(shù)據(jù)到Node-Red串口組件,并播放音效。
//檢測(cè)門(mén)開(kāi)關(guān)并發(fā)送信息到云端和播放音樂(lè)
staticvoidDoorOpen_detect_callback(void*btn)
{
uint32_tDoorOpen_status;
intstate1;
charvolum[]={0};
DoorOpen_status=get_button_event((structbutton*)btn);
switch(DoorOpen_status)
{
caseSINGLE_CLICK:
rt_kprintf("{"method":"report","clientToken":"clientToken-a8b80020-084a-4082-818f-5bd1b238ce5f",");
rt_kprintf(""params":{"DoorOpen":1,"WindowOpen":0\}}\n\r");
//rt_kprintf("Setvolume=%d\n",saia_volume_get());
saia_volume_set(Default_volume);
//Read_WAV_List();
wavplayer_play("/WAVmusic/DoorOpen/DoorOpenAlarm.wav");
break;
}
}
//檢測(cè)窗開(kāi)關(guān)并發(fā)送信息到云端和播放音樂(lè)
staticvoidWindowOpen_detect_callback(void*btn)
{
uint32_tWindowOpen_status;
intstate1;
charvolum[]={0};
WindowOpen_status=get_button_event((structbutton*)btn);
switch(WindowOpen_status)
{
caseSINGLE_CLICK:
rt_kprintf("{"method":"report","clientToken":"clientToken-a8b80020-084a-4082-818f-5bd1b238ce5f",");
rt_kprintf(""params":{"DoorOpen":0,"WindowOpen":1\}}\n\r");
//rt_kprintf("Setvolume=%d\n",saia_volume_get());
saia_volume_set(Default_volume);
//Read_WAV_List();
wavplayer_play("/WAVmusic/WindowOpen/WindowOpenAlarm.wav");
break;
}
}

如上圖所示,騰訊云平臺(tái)接收node-red發(fā)來(lái)的開(kāi)發(fā)板檢測(cè)信號(hào)。

如上圖是Node-Red的配置,將數(shù)據(jù)上傳到云平臺(tái),即可通過(guò)數(shù)據(jù)開(kāi)發(fā)信息下發(fā)到APP。

如上圖數(shù)據(jù)開(kāi)發(fā)為設(shè)備數(shù)據(jù)選擇需要連接的云設(shè)備,然后通過(guò)數(shù)據(jù)過(guò)濾選擇需要讀取的屬性,最后通過(guò)APP推送和公眾號(hào)推送功能實(shí)現(xiàn)想推送的內(nèi)容。

如上圖紅框處為推送內(nèi)容的設(shè)置


如上圖就是小程序和公眾號(hào)的操作頁(yè)面和接收到數(shù)據(jù)信息,這樣就可以及時(shí)收到信息了。
總結(jié),本項(xiàng)目可以?xún)?yōu)化的地方還有很多,例如通過(guò)RT-Thread提供的騰訊云SDK和device組件中的ESP8266模組驅(qū)動(dòng)實(shí)現(xiàn)開(kāi)發(fā)板直接上云,而不需要通過(guò)串口發(fā)送數(shù)據(jù)到node-red再轉(zhuǎn)接數(shù)據(jù)發(fā)送到云平臺(tái),可作為本地控制頁(yè)面。
代碼鏈接如下:
https://gitee.com/flytianya2010/AB32VG1-RT-Thread-NodeRed-Tencent-IoT-Explorer
審核編輯:湯梓紅
-
開(kāi)發(fā)板
+關(guān)注
關(guān)注
25文章
5389瀏覽量
100890 -
安全檢測(cè)
+關(guān)注
關(guān)注
0文章
24瀏覽量
6839 -
RT-Thread
+關(guān)注
關(guān)注
31文章
1348瀏覽量
41368
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
通過(guò)RT-Thread Studio配置AB32VG1片上外設(shè)GPIO引腳控制RGB彩燈

【RT-Thread設(shè)計(jì)大賽】基于AB32VG1的嵌入式網(wǎng)盤(pán)

【RT-Thread創(chuàng)新應(yīng)用設(shè)計(jì)大賽】+中科藍(lán)訊 AB32VG1開(kāi)箱搭建開(kāi)發(fā)環(huán)境跑demo
【RT-Thread創(chuàng)新應(yīng)用設(shè)計(jì)大賽】AB32VG1開(kāi)發(fā)板菜鳥(niǎo)入手
【文章連載】RT-Thread創(chuàng)新應(yīng)用大賽文章匯總
【RT-Thread創(chuàng)新應(yīng)用設(shè)計(jì)大賽】AB32VG1開(kāi)發(fā)板入手
如何搭建AB32VG1 RT-Thread開(kāi)發(fā)環(huán)境?
【原創(chuàng)精選】RT-Thread征文精選技術(shù)文章合集
初識(shí)AB32VG1開(kāi)發(fā)板
中科藍(lán)訊AB32VG1開(kāi)發(fā)實(shí)踐指南
如何在AB32VG1開(kāi)發(fā)板OLED顯示使開(kāi)發(fā)板上電

AB32VG1 RT-Thread 開(kāi)發(fā)環(huán)境搭建

基于AB32VG1開(kāi)發(fā)板的設(shè)備溫度檢測(cè)

評(píng)論