【FS-MP1A开发板】Linux+Qt项目实战:智能猫眼

本文详细描述了使用STM32MP157开发板构建基于Buildroot的嵌入式Linux系统,配合Qt设计猫眼软件,并通过微信小程序实现手机端控制的智能猫眼项目过程,涉及人脸识别、智能报警、红外侦测和物联网连接。
摘要由CSDN通过智能技术生成

前言

简单记录华清远见STM32MP157这片开发板的学习经历,项目内容为智能猫眼,实现:
路线基本上是构建嵌入式Linux系统Buildroot、利用Qt设计嵌入式平台猫眼软件、利用微信小程序开发者工具设计手机端软件

开发环境

Vmware Ubuntu Xshell Stm32CubeProgrammer

华清远见STM32MP157开发板+智能猫眼源码

内容介绍

实现基本功能:
1.人脸识别: 区分主人和其他人
2.智能报警: 实时检测非法闯入,能够远程通知
3.红外侦测: 利用红外感应器辅助监测
4.物联网云端接入

1.Biludroot框架介绍

buildroot是一个开源项目,提供简化和自动化嵌入式Linux系统构建的框架。他允许用户根据特定需求定制并构建自己的嵌入式Linux系统,包括根文件、内核、引导加载程序和交叉编译工具链等。

-灵活和定制化
-自动化构建
-跨平台和交叉编译支持
-轻量和高效
-大量软件包支持
-活跃的社区支持

2.Buildboot目录结构介绍

-arch:存放和cpu架构相关的配置脚本,在制作交叉编译工具链 uboot 内核时起到重要作用;配置一般已经配置好
-board:存放与硬件相关的文件,如启动脚本、硬件相关配置文件
-boot:各种boot软件自动构建的脚本,比如uboot
-configs:已经定义好的配置文件,可以选择需要的配置文件构建Linux系统,通过makemenuconfig可以自己选配想要的内容,生成定制的配置文件
-dl:所有下载的软件包存储位置,如python gst
-docs:可以参考的配置文档
-fs:文件系统自动构建的脚本
-linux:内核自动构建的脚本
-output:make完生成文件都在output,比如生成的交叉编译工具链、uboot、根文件系统、内核镜像
-package:每个软件包构建规则和makefile文件,每个软件都是根据软件包命名
-support:固定的流程脚本
-system:文件系统目录和设备节点模板,会在编译时拷贝到output目录下制作成根文件系统root fs
-toolchain:构建交叉编译工具链,编译时会从这个文件夹调用交叉编译工具构建buildroot

3.编译buildroot源码

导入默认配置
make stm32mp157a_fsmp1a_V3.8_defconfig
安装交叉编译工具成功
编译buildroot,进入根目录操作
make
编译buildroot完成
编译交叉编译工具
make sdk
sdk编译完成
大致完成整体构架,查看一下output文件夹

-build:如果需要添加新内容需要在build中删除需要改动的文件夹,已经存在的不会二次编译
-host:构造系统时生成的工具,构建目标系统的辅助工具
-images:各种压缩包,有交叉编译工具的,根文件系统的,设备树、镜像、uImage
-staging:暂存目录,头文件、库文件
-target:最后在开发板上生成的根文件系统,烧录后在开发板能看到相同内容

经过编译以后在output/images下可以找到可烧录镜像文件
编写好的镜像文件目录

4.安装交叉编译工具链

安装arm板交叉编译工具

复制arm-fsmp1x-linux-gnueabihf_sdk-buildroot.tar.gz到虚拟机,解压并到解压好的根目录下重定向编译工具:./reloctate-sdk.sh
这样,在解压文件根目录的bin文件夹下可以看到各种编译工具,其中常用的是gcc和g++编译工具

安装qt编译工具

把meta-toolchain-qt5-openstlinux-eglfs-fsmp1a-x86_64-toolchain-3.1-snapshot.sh文件复制ubuntu中,先给权限后安装:

 sudo chmod a+x meta-toolchain-qt5-openstlinux-eglfs-fsmp1a-x86_64-toolchain-3.1-snapshot.sh
 sudo ./meta-toolchain-qt5-openstlinux-eglfs-fsmp1a-x86_64-toolchain-3.1-snapshot.sh

安装开始

安装完后要source一下

source /opt/st/fsmp1a/3.1-snapshot/environment-setup-cortexa7t2hf-neon-vfpv4-ostl-linux-gnueabi

最后输入指令就可以查看交叉编译工具链的信息

$CC --version

Qt交叉编译工具链信息

5.配置Qt

ubuntu安装qt
导入sdk(解压缩后记得重定向 ./relocate-sdk.sh),通过sdk可以让x86架构写出来的代码给arm使用
这里将arm-fsmp1x-linux-gnueabihf_sdk-buildroot.tar.gz文件拷贝至Ubuntu,解压;解压出来bin/文件夹中gcc和g++便是接下来要用的编译器文件;进入qt,option-compiler-Add添加编译工具的路径
qt软件设置交叉编译工具路径

6.镜像烧写

将开发板拨码开关置000,插上mini线,镜像一般在buildroot下output文件夹中,烧写过程和信息可以在串口调试助手看到

-在windows下烧录:上电连接电脑后打开stm32cubeprogrammer;连接connect后选择烧写镜像,注意检查路径;利用串口调试工具可以在xshell中检查数据传输的过程;在stm32cubeprogrammer点击download开始烧录;
-在ubuntu下烧录:(待补充

这个镜像里已经带有本次项目—智能猫眼的一些代码和必备的前置
烧录完后断开电源和mini线,拨码开关置010(sdcard就101)

7.创建第一个qt程序 hello

在ubuntu中打开qtcreator,新建Application,在代码界面可以点击Debug查看是否选择了正确的交叉编译工具;点击锤子完成编译,然后就可以在编译文件目录中看到hello文件夹和build-hello文件夹,在build-hello文件夹中有一个名称为hello的可执行文件,将这个文件拷贝到开发板中

-利用网线将电脑和开发板进行连接(具体来连接参考:https://www.rstk.cn/news/746754.html?action=onClick

在ubuntu中输入 scp hello root@192.168.0.100:~ 就将hello文件输入到文件夹下,在Xshell路径下输入./hello发现屏幕变成白色,第一个Qt程序开发成功。

8.微信小程序设计

##############################

智能猫眼项目内容

1.取消默认桌面

vi /usr/share/applications/desktopsystem/desktopstart.sh

将desktopstart.sh文件中默认桌面代码注释

2.同步系统时间

(1)要实现猫眼首先时间应该同步时区,要利用利用ntp协议。首先复制Ubuntu中ntp.conf到开发板上,然后发送时区文件Shanghai到开发板的/usr/share/zoneinfo/下

scp Shanghai root@192.168.0.100:/usr/share/zoneinfo/Asia/

此时文件已准备,接下来实现开发板联网
(2)后发现联网后可以直接修改时区达到更新时间的目的,应该是因为烧录镜像内ntp已经做好修改ntp.conf的操作:

timedatectl set-timezone Asia/Shanghai

3.开发板联网

常见开发板联网有两种方法,一个是利用网线直连路由器,实现IP自动分配从而达到联网的效果;第二个是利用开发板上的wifi模块,因为没有路由器直接选择wifi模块。
首先写一份脚本用于调用wifi模块:

 #!/bin/bash
wpa_supplicant -D nl80211 -i wlan0 -c /etc/wpa_supplicant.conf -B
wpa_cli -i wlan0 scan
wpa_cli -i wlan0 add_network
wpa_cli -i wlan0 set_network 1 ssid '"Magic5"'
wpa_cli -i wlan0 set_network 1 psk '"123456788"'                           
wpa_cli -i wlan0 select_network 1
udhcpc -i wlan0
echo "nameserver 114.114.114.114" > /etc/resolv.conf
echo "nameserver 8.8.8.8" >> /etc/resolv.conf
~                                                                                                                                        
start_wifi.sh [+]                                            6,47           All
-- INSERT --

在ssid和psk输入wifi名称以及密码即可
把文件传到开发板家目录下:scp start_wifi.sh root@192.168.101.200:~
启动脚本:./start_wifi.sh
(不行就重试几次
联网成功

4.用例程代码试跑一下先

来到提前写好的代码路径:

cd /usr/share/applications/smartfirealarm/
  • 20
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值