嵌入式技术论坛
直播中

从前有座_山

3年用户 516经验值
擅长:电源/新能源 嵌入式技术
私信 关注

【优秀奖】RT-Thread创新应用设计大赛作品4

本帖最后由 从前有座_山 于 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引脚。
1.jpg
2.png
增加功放和喇叭提高播放声音                                                                                        音频功放PAM8403
3.png

软件说明:
软件使用到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}}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;    }}

4.png
如上图所示,腾讯云平台接收node-red发来的开发板检测信号。 5.png
如上图是Node-Red的配置,将数据上传到云平台,即可通过数据开发信息下发到APP。
6.png
如上图数据开发为设备数据选择需要连接的云设备,然后通过数据过滤选择需要读取的属性,最后通过APP推送和公众号推送功能实现想推送的内容。 7.png
如上图红框处为推送内容的设置。
8.jpg 9.jpg
如上图就是小程序和公众号的操作页面和接收到数据信息,这样就可以及时收到信息了。
总结,本项目可以优化的地方还有很多,例如通过RT-Thread提供的腾讯云SDK和device组件中的ESP8266模组驱动实现开发板直接上云,而不需要通过串口发送数据到node-red再转接数据发送到云平台,可作为本地控制页面。
代码链接如下:
https://gitee.com/flytianya2010/ ... encent-IoT-Explorer

演示效果:
见视频演示

演示视频

更多回帖

发帖
×
20
完善资料,
赚取积分