基于RT-Thread和中蓝讯科的AB32VG1开发板实现的家庭安全检测功能,主要包含如下功能:
1、基于RT-Thread操作系统的按键组件,音频播放组件等;
2、基于AB32VG1开发板的语音播放功能;
3、基于Node-Red的串口功能与AB32VG1通讯;
4、连接腾讯云的Explorer平台;
5、腾讯连连公众号接收云平报警信息;
6、门窗检测开关。
因为官方提供了中蓝讯科开发板,所以基于该开发板的语音播放功能和SD卡功能实现的声音,实现家庭安全监测。由于板载的音频接口只有耳机,发出的音量较小,不足以提供大声音的语音,所以额外添加了一个音频驱动模块PAM8403来驱动一个大喇叭。另外额外焊接了块扩展板,引出了I2C接口连接OLED显示屏和门窗检测IO引脚。
没想到8年前买的功放模块居然现在还能用上,如果不用它,声音会很小。
音频功放PAM8403
两个按钮是门和窗的触发按键
软件使用到RT-Thread Studio来开发我的作品,使用AB32VG1提供的案例基础上实现的语音播放和监控。因为要数据上云,RT-Thread的上云组件功能连不上网络,结果通过Node-Red来实现AB32VG1与PC Node-Red串口通信,然后通过Node-Red连接腾讯云,讲串口接收的json格式数据发送到腾讯云平台,然后通过云平台的数据流设置后可以实现手机收到公众号及时发布的信息,同时音频播放音乐。以下代码是发送串口数据到Node-Red串口组件,并播放音效。
//检测门开关并发送信息到云端和播放音乐
static void DoorOpen_detect_callback(void* btn)
{
uint32_t DoorOpen_status;
int state1;
char volum[]={0};
DoorOpen_status = get_button_event((struct button*)btn);
switch (DoorOpen_status)
{
case SINGLE_CLICK:
rt_kprintf("{ \"method\": \"report\",\"clientToken\": \"clientToken-a8b80020-084a-4082-818f-5bd1b238ce5f\",");
rt_kprintf("\"params\": {\"DoorOpen\": 1,\"WindowOpen\": 0\}}\n\r");
// rt_kprintf("Set volume=%d\n", saia_volume_get());
saia_volume_set(Default_volume);
// Read_WAV_List();
wavplayer_play("/WAVmusic/DoorOpen/DoorOpenAlarm.wav");
break;
}
}
//检测窗开关并发送信息到云端和播放音乐
static void WindowOpen_detect_callback(void* btn)
{
uint32_t WindowOpen_status;
int state1;
char volum[]={0};
WindowOpen_status = get_button_event((struct button*)btn);
switch (WindowOpen_status)
{
case SINGLE_CLICK:
rt_kprintf("{ \"method\": \"report\",\"clientToken\": \"clientToken-a8b80020-084a-4082-818f-5bd1b238ce5f\",");
rt_kprintf("\"params\": {\"DoorOpen\": 0,\"WindowOpen\": 1\}}\n\r");
// rt_kprintf("Set volume=%d\n", saia_volume_get());
saia_volume_set(Default_volume);
// Read_WAV_List();
wavplayer_play("/WAVmusic/WindowOpen/WindowOpenAlarm.wav");
break;
}
}
如上图所示,腾讯云平台接收node-red发来的开发板检测信号。
如上图是Node-Red的配置,将数据上传到云平台,即可通过数据开发信息下发到APP。
如上图数据开发为设备数据选择需要连接的云设备,然后通过数据过滤选择需要读取的属性,最后通过APP推送和公众号推送功能实现想推送的内容。
如上图红框处为推送内容的设置
如上图就是小程序和公众号的操作页面和接收到数据信息,这样就可以及时收到信息了。
总结,本项目可以优化的地方还有很多,例如通过RT-Thread提供的腾讯云SDK和device组件中的ESP8266模组驱动实现开发板直接上云,而不需要通过串口发送数据到node-red再转接数据发送到云平台,可作为本地控制页面。
代码链接如下:
https://gitee.com/flytianya2010/AB32VG1-RT-Thread-NodeRed-Tencent-IoT-Explorer
审核编辑:汤梓红
全部0条评论
快来发表一下你的评论吧 !