本帖最后由 从前有座_山 于 2022-1-27 14:11 编辑
作品名:基于RT-Thread家庭安全环境检测
项目简介:
基于RT-Thread和中蓝讯科的AB32VG1开发板实现的家庭安全检测功能,主要包含如下功能: 1、基于RT-Thread操作系统的按键组件,音频播放组件等;
2、基于AB32VG1开发板的语音播放功能;
3、基于Node-Red的串口功能与AB32VG1通讯;
4、连接腾讯云的Explorer平台;
5、腾讯连连公众号接收云平报警信息;
6、门窗检测开关。
硬件说明:
因为官方提供了中蓝讯科开发板,所以基于该开发板的语音播放功能和SD卡功能实现的声音,实现家庭安全监测。因为板载的音频接口只有耳机,发出的音量较小,不足以提供大声音的语音,所以额外添加了一个音频驱动模块PAM8403来驱动一个大喇叭。另外额外焊接了块扩展板,引出了I2C接口连接OLED显示屏和门窗检测IO引脚。
增加功放和喇叭提高播放声音 音频功放PAM8403
软件说明:
软件使用到RT-Thread Studio来开发我的作品,使用AB32VG1提供的案例基础上实现的语音播放和监控。因为要数据上云,RT-Thread的上云组件功能连不上网络,结果通过Node-Red来实现AB32VG1与PC Node-Red串口通信,然后通过Node-Red连接腾讯云,讲串口接收的json格式数据发送到腾讯云平台,然后通过云平台的数据流设置后可以实现手机收到公众号及时发布的信息,同时音频播放音乐。以下代码是发送串口数据到Node-Red串口组件,并播放音效。 //检测门开关并发送信息到云端和播放音乐sta
tic 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}}nr"); // rt_kprintf("Set volume=%dn", 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}}nr"); // rt_kprintf("Set volume=%dn", saia_volume_get()); saia_volume_set(Default_volume); // Read_WAV_List(); wavplayer_play("/WAVmusic/WindowOpen/WindowOpenAlarm.wav"); break; }}
如上图所示,腾讯云平台接收node-red发来的开发板检测信号。
如上图是Node-Red的配置,将数据上传到云平台,即可通过数据开发信息下发到APP。
如上图数据开发为设备数据选择需要连接的云设备,然后通过数据过滤选择需要读取的属性,最后通过APP推送和公众号推送功能实现想推送的内容。
如上图红框处为推送内容的设置。
见视频演示