基于MP157开发板的智能家居系统
STM32CubeProgrammer 安装
获得STM32CubeProgrammer压缩包,创建STM32CubeProgrammer文件夹,解压完成后获得如下文件
双击“SetupSTM32CubeProgrammer-2.4.0.exe”允许安装向导。
点击“Next”
点击“Next”
点击“I accept the terms of this license agreement”
勾选 “I have read and understood the ST Privacy Policy and ST terms of Use”
这里选择安装路径,用户可以自行指定。点击 Next 之后会提示,将要创建一个安装目录。
勾选 STM32TrustePackageCreator 选项
Next 之后会进程序安装。
在安装的过程中会弹出如下界面,安装相关的驱动程序。点击“下一步”
程序将会自动安装所需的驱动程序,安装完成后会弹出如下界面。
点击“完成”
切换到“STM32CubeProgrammer”界面后点击“Next”,创建桌面快捷键。
安装完成界面
出现上述界面后点击“Done”。至此 STM32CubeProgrammer 就安装完成了。
镜像烧写
获取镜像系统
镜像烧写
将拨码开关拨至【000】进行程序烧写
打开【STM32CubeProgrammer】软件,点击【+】,点击【open file】
注:烧写脚本 Flashlayout 需要和 tf-a、u-boot、sdcard.img 在同一个文件夹下
找到存放镜像的文件夹
检查路径是否为烧录配置文件所在的路径。需要再同一路径
如果在打开软件之前开发板已经处于上电状则可以看到右上角的 USB 设备
出现 USB1 端口后点击左上角的【Connect】按钮进行连接。 连接成功后上方原来为【Not connected】字样变为【Connect】
点击界面右上角的【Download】按钮进行烧录。
烧写成功后会出现如下提示
启动系统
拨码选择
通过 STM32CubeProgrammer 方式烧录 emmc 镜像就完成后,就可以通过改变拨码开关为【010】来进 行系统的启动。
打开串口启动
win+r 输入devmgmt.msc打开设备管理器
打开串口工具选择自己电脑显示 COM 口连接启动开发板
打开shell7,连接协议选择SERIAL
在串口中选择自己电脑上查到的串口号,波特率为115200,数据位为8,停止位为1保持默认。点击连接。
如果shell页面卡住,可以按主板电源附近的复位键即可继续
注意,由于显示屏为5寸,所以在Select the boot mode中选择5
启动登录密码为root,启动成功后会进入buildroot系统
取消默认桌面
因为我们生成的默认桌面会影响软键盘的使用,所以我们在做实验前先将默认桌面退出。
在/usr/share/applications/desktopsystem 路径下有一个 desktopstart.sh 的脚本文件,我们打开这个脚本文 件。
1 | vi desktopstart.sh |
将下图中的/usr/share/applications/desktopsystem/qt5desktop -platform linuxfb:rotation=0 这句代码用#注 释掉,然后保存退出。再次启动就不会有默认桌面了。
1 | #!/bin/sh |
项目功能展示
系统启动成功后进入到应用程序目录
1 | root@buildroot:# cd /usr/share/applications/qt5example |
其中 qt5homeautomation 是 7 寸屏的可执行文件,qt5homeautomation-mipi050 是 5 寸屏的可执行文件
在五寸屏下命令rotation反转1并添加下面两个环境变量:
1 | root@buildroot:# export QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERS=/dev/input/event2:rotate=270 |
最后执行
1 | root@buildroot:#./qt5homeautomation-mipi050 -platform linuxfb:rotation=1 |
效果展示
部分代码
1 | /* 读取湿度数据 */ |
1 | (fscanf(sysfsfp, "%d\n", val) != 1) |
1 | connect(&thread_collentdata,SIGNAL(send(QString,QString,QString)),this,SLOT( set_humAdtemAdill(QString,QString,QString))); |
1 | [root@buildroot]:~ |
1 | fd = open("/dev/input/by-path/platform-beeper-event", O_RDWR); // 打开设备 |