基于STM32MP157D-DK1的智慧家居控制器
作者:码农爱学习(DDZZ669)
一、作品简介
本项目为基于STM32MP157D-DK1的智慧家居控制器,用到的板卡为ST的STM32MP157D-DK1开发板,其芯片为STM32MP157,具有2个A7内核和1个M4内核。作品的实物照片如下:
图 1 作品照片
智慧家居控制器的界面拟采用Qt设置,外接HDMI显示器作为交互屏幕,再外接温湿度传感器(或通过无线节点接收温湿度数据)、摄像头等外设,实现如网络天气展示、室内温湿度展示、家中电器控制、安防监控、音乐视频播放娱乐等功能。
二、系统框图
本项目的系统结构如下:
图 2 系统结构图
主控为STM32MP157,内含两个A7核和一个M1核。A7核运行Linux系统,实现Qt界面程序的运行,摄像头数据的采集等,与无线节点进行TCP通信灯;M4核运行裸机系统或RTOS系统,可用于外接传感器以及外接家中电器的控制开关;A7核与M4核采用OpenAMP通信框架实现异核通信。
此外,STM32MP15D-DK1板块通过插入网线可连接互联网,实现互联网信息(网络天气、网络时间等)的获取;通过家中的路由器,又可与其它无线节点进行通信,例如与温湿度节点通信,可获取温湿度数据,与灯、风扇灯无线节点通信,可控制其开关。
三、各部分功能说明
本项目的功能,主要通过屏幕上的操作界面来呈现,目前可展示的功能包括:
图 3 主操作界面
3.1城市天气显示
STM32MP157D-DK1插入网线,可以连接互联网来实现对网络天气信息的获取。
通过http协议获取指定城市的天气数据,包括今天的天气类型,最高最低温度,以及最近7天的天气等。原始数据是json格式的,需要从json数据中解析出天气、温度等信息,然后将这些信息显示到屏幕中。
最终的Qt天气界面如下,点击主界面的天气图标即可进入到如下的天气界面。
上半部分为今天的天气,下半部分为近7天的天气(通过左右滑动可查看后面的天气),通过左上角的返回按钮可回到主界面。
图 4 天气信息界面
3.2室内温湿度显示
除了显示不同城市的天气数据,家庭环境中的温湿度也值得我们关注,考虑有两种方案实现温湿度数据的采集:
方案一:M4核通过IIC接口外接DHT11温湿度传感器采集数据,再通过OpenAMP通信机制将数据发给A7核,最终在Qt界面展示温湿度数据。
方案二:通过无线节点(如ESP8266)外接DHT11温湿度传感器,将数据通过无线TCP直接发送给A7核,最终在Qt界面展示温湿度数据。
由于开发时间紧张,OpenAMP通信机制还在学习中,而方案二的无线方式也更新灵活,本项目目前采用方案二的无线通信方式。
温湿度数据展示的Qt界面如下,STM32MP157D在连接到ESP8266无线节点获取到实时的温湿度数据后,可以显示实时的温度和湿度,如下:
图 5 温湿度信息界面
另外,温湿度的历史数据,可以通过曲线图展示变化趋势,这是温度曲线:
图 6 实时温度曲线图
这是湿度曲线(人为触摸温湿度传感器制造变化数据):
图 7 实时湿度曲线图
3.3家居电器控制
家居电器的控制界面设计如下,目前设计了灯的控制和风扇的控制:
图 8 家中电器控制界面
家中电器的控制,与刚才介绍的温度度传感器类似,也可以考虑两种方案:
方案一:家中电器的控制开关与STM32MP157的M核所控制的引脚相连,A核上运行的Qt操作指令通过异核通信将执行发给M核来控制电器开关。
方案二:家中电器与无线节点(如ESP8266)相连接,Qt操作指令通过无线通信将指令发给无线节点来控制电器开关。
除了简单的开关控制,家中可能还会有RGB氛围灯需要控制,这里也设置了颜色调节操作界面,如下:
图 9 RGB氛围灯颜色调节界面
3.4视频监控
智能家居系统中,视频监控的功能也是必不可少的,本项目通过外接USB摄像头,实现视频监控功能,可以实时查看摄像头的画面。
设计的Qt显示界面和实际的演示效果如下:
图 10 视频监控界面
3.5音乐&视频娱乐
设计了音乐播放器和视频播放器,用于智慧家居中的娱乐功能。音乐播放器的界面如下,具有基础的音乐播放、上一首下一首切换、歌词展示等。
图 11 音乐播放器界面
右下角可展开音乐列表子界面:
图 12 音乐列表
下面是设计的视频播放器的界面:
图 13 视频播放器界面
3.6时钟
设计了一个钟表形状的时钟,通过获取Linux系统实际,可展示当前的时间:
图 14 时钟界面
四、作品源码
源码已上传EEWord下载中心,资源名称:
链接:https://download.eeworld.com.cn/detail/DDZZ669/630690
源码结构
主体代码采用Qt编程,运行在STM32MP157的A7核的Linux系统中,源码位于01-stm32mp157_qt目录中。
该Qt程序内含多个功能,通过子文件夹分类存放:
ESP8266作为无线节点,外接DHT11温湿度传感器采集数据,通过TCP发送给STM32MP157。
ESP8266采用Arduino编程,源码位于02-dth11tcp目录中。
五、作品功能演示视频
演示视频:基于STM32MP157D-DK1的智慧家居控制器
视频链接1:https://training.eeworld.com.cn/video/38948
视频链接2:https://www.bilibili.com/video/BV1V94y1u7EK
六、项目总结
本项目为基于STM32MP157D-DK1的智慧家居控制器,通过外接HDMI显示器作为操作屏幕,通过编写Qt程序实现智能家居的整体界面,外接摄像头、传感器、与无线节点通信等,实现具体的数据获取与各种控制功能、信息服务功能等。
在整个项目开发中,学习了STM32MP157这款芯片的使用。STM32MP157D-DK1具有ARM A7和Cortex M4双核架构,A7的开发过程中,首先学习了固件烧录,为了进行Qt开发,重新编译了具有Qt功能的系统源码和SDK,从而继续实现Qt程序的开发。M4核的开发过程中,学习了STM32CubeIDE的使用与基础的点灯程序编写,关于A7核与M4核的通信还在学习中。
在开发学习中,将一些开发经验通过文章的形式分享,链接如下:
【DigiKey创意大赛】STM32MP157D-DK1开箱
【DigiKey创意大赛】STM32MP157D构建Qt镜像
【DigiKey创意大赛】STM32MP157D Qt程序编译运行
【DigiKey创意大赛】STM32MP157D M核程序开发
七、其他
本帖最后由 DDZZ669 于 2024-1-7 23:09 编辑
引用: 秦天qintian0303 发表于 2024-1-8 17:29 杭州没有暖气,这屋内只有16度,这的多么冷啊
还好,还好
又见大佬神一般的作品,期待大佬能拿到好的排名!
引用: qiao--- 发表于 2024-1-9 21:35 大佬 资源链接无效,麻烦大佬更新一下
显示还在审核中,审核完链接应该会自动生效
大佬这是把STM32MP157用得出神入化了。
QT开发的界面,相当的惊艳啊!
这个作品,实用性非常非常高,EE要不要帮大佬,给直接落地产品了。
另外,还看到了一块Uno R4:)
作品源码显示已审核,但还是点不开,管理员帮忙看下什么情况哈 @lightxixi
资源名称:基于STM32MP157D-DK1的智慧家居控制器-项目源码
链接:https://download.eeworld.com.cn/detail/DDZZ669/630690
这里没有显示在审核: