0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

毕业设计竞赛选题推荐 | 嵌入式Linux应用之环境监测项目实战(含文档及源码)

华清远见工控 2024-12-23 10:50 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

01 引言

在当今快速发展的科技时代,环境监测已经成为众多领域中不可或缺的一部分。从城市规划到工业生产,从农业管理到健康生活,环境监测技术的应用无处不在,为人类提供了对自然环境变化的实时洞察,帮助我们做出更加科学合理的决策。

环境监测的核心在于通过各类传感器收集温度、湿度、光照、空气质量、气体成分、水质和噪声等数据,并传输至嵌入式终端设备进行处理和分析。嵌入式终端设备作为系统的“大脑”,不仅负责读取传感器数据,还能够根据预设算法执行智能判断,触发相应的控制命令或预警机制,从而实现自动化管理和优化资源配置。

举例来说,在智慧农业领域,土壤湿度传感器和光照传感器被广泛应用于灌溉系统和光合作用辅助系统,在智能家居环境中,温湿度传感器与空气净化器相结合,可以根据室内空气状况自动调节工作模式,保持舒适的居住环境;而在工业场景中,有害气体检测传感器能够及时发现并报告异常排放,防止环境污染事件的发生。

02 项目介绍

《环境监测项目》是一个智能传感器控制系统,项目实战平台是基于华清远见自主研发的嵌入式Linux教学级开发板——FS-MP1A开发板。该开发板主控为STM32MP157,集成2个Cortex-A7核和1个Cortex-M4核。A7核上可以跑Linux操作系统,在本项目中主要是Linux+Qt应用开发,M4核要通过A7核启动,在本项目里,M4主要是用于实现对传感器的控制和数据读取。

项目可以通过软件指令轻松管理传感器,让它们按照我们的需求工作。M4芯片收集传感器的数据,并将这些信息显示在屏幕上,让我们一目了然。而且,系统还能根据我们设定的条件自动做出反应,比如温度高了就自动开风扇,让传感器变得更加智能和方便。

wKgZO2do0AaAH_MdAABatCNmd4g62.jpeg

03 项目涉及技术点

①通过STM32CubeIDE,配置A7启动M4的程序

②通过虚拟串口进行下发消息,实现功能

③接收消息,呈现到UI界面上

04 项目实现

项目总体设计

wKgZO2do0AaABsC-AAC1lxDCgeY376.png

以下内容主要讲解,如何使用我们提供的项目源码,将项目在开发板上运行起来。

  • M4部分功能概述

M4 核部分主要实现两个功能,首先可以接收 A7 核发送的指令,根据指令控制风扇、蜂鸣器以及 LED灯工作,同时 M4 部分可以采集环境光、温湿度传感器数据,将采集数值打包成 JSON 字符串然后发送给 A7。另外,通过按键可以控制数码管显示采集的温湿度、环境光数据。

  • cubeIDE功能配置

首先打开cubeIDE,创建一个新工程,进入cubeMX 配置界面,因为需要实现A7与M4 通信,需要配置IPCC与OPENAMP部分,如下图所示:

wKgZO2do0AeAKiS4AAHd11Q2GM0084.png

(配置 IPCC)

wKgZPGdo0AeAUWrqAAIrMqsmExA854.png

(配置OPENAMP)

配置I2C1用于采集温湿度、环境光传感器数据,这里分别选择PF14、PF15 引脚用作I2C1_SDA 和I2C1_SCL功能。

wKgZPGdo0AeAbibBAAImkEpNsqY096.png

(配置 I2C1)

因为需要用到数码管显示采集的传感器数值,这里通过 SPI 进行控制,使用 SPI 默认引脚,分别对PE11、PE12、PE13 和 PE14 配置为 SPI4_NSS、SPI4_SCK、SPI4_MISO 和 SPI4_MOSI。切换到 SPI4 标签,勾选给“M4”,“Mode”选择“Full-Duplex-Master”,使用硬件片选,选择“Hardware NSS Output Signal”,其配置如下图所示。

wKgZO2do0AeAX11LAAJYuT86KpI790.png

(配置SPI4)

扩展板 LED 灯对应的GPIO 引脚分别为PE8、PE10、PF10,这里左键点击设置为GPIO_Output

wKgZPGdo0AeADuTCAAQtassoXIQ158.png

(配置引脚为输出)

可以通过按键中断控制数码管显示的数值,这里配置扩展板的按键为 PF9,如下所示

wKgZO2do0AeALzqNAAQTQp_F4sw761.png

(配置外部中断)

另外,这里还需要对刚才配置的 I/O 引脚设置“ Pin Reservation”给“ Cortex-M4”,否则 STM32CubeMX不会生生成 GPIO 初始化相关代码。具体操作:在刚才选择的引脚上,鼠标右键选择“ Pin Reservation”->“ Cortex-M4”。

wKgZO2do0AmAalLyAADBszrSSTU366.png

(选择Cortex-M4)

打开GPIO 标签,对 PF9 引脚进行配置

wKgZPGdo0AeAWEeyAAIFBgTDMt8784.png

实验中还用到了蜂鸣器与风扇,查看原理图得,对应管脚分别为 PB6 与 PE9,分别配置为 TIM4 与TIM1 功能,在本次实验中,系统默认时钟频率为 64MHz,TIM 配置如下所示

wKgZO2do0AeALLguAAKBUpIN5Fw256.png

(配置 TIM4)

wKgZPGdo0AeAfAVhAAJYJuBxPB0633.png

(配置 TIM1)

如果实现开发板与电脑串口通信,这里可以通过 485 总线实现,即配置UART5,如下所示

wKgZPGdo0AeAB04tAAGqDxS3_oE099.png

(配置 UART5)

wKgZO2do0AiANgTbAABHhVNiCd0150.png

(配置 UART5)

另外,在本次实验中,A7 与 M4 数据通信和数码管显示相当于同时运行,可以通过配置 FreeRTOS 实现多任务运行。切换到中间件“Middleware”的“FREERTOS”,默认自动勾选给 M4 了,然后接口“Interface”选择“CMSIS_V2”。为了运行其他任务,这里需要切换到“Tasks and Queues”标签,可以看到看到默认有个“defaultTask”任务,我们点击“Add”再新增一个任务,如图所示

wKgZO2do0AiAQNwDAAIO8y5xBPs384.png

(配置 FreeRTOS)

上述配置完成以后,还要注意一点,因为用到 FreeRTOS,这里我们不能为每一种外设生成头文件,如下所示

wKgZO2do0AiAZIkiAABafls0Iuo891.png

配置完成以后保存,然后生成初始化代码,其间会出现如下提示框,选择“Yes”

wKgZPGdo0AiAflU6AAA56RXirdc954.png

编译 qt 界面应用程序

①导入 sdk

sdk 位置在【08-Qt 综合项目开发教程\工具软件\sdk\arm-fsmp1x-linux-gnueabihf_sdk-buildroot.tar.gz】,将源码拷贝到虚拟机中进行解压并进入到工程目录下

wKgZO2do0AiAAZnJAAASazacCbo406.pngwKgZPGdo0AiADJGfAAAsHlHveO0691.png

(示例图)

重定向 sdk 位置

wKgZPGdo0AiAYE5rAAAHHtf_qm0306.png

获取应用程序源码

源码位置【08-Qt 综合项目开发教程\08-环境监测项目\01-环境监测项目配套示例代码\7 寸屏幕程序源码】中的 8_EnvironmentalTest 文件,将源码拷贝到虚拟机中进行解压并进入到工程目录下(这里以 7 寸屏幕为例)

wKgZO2do0AiAIp3iAAAQ8EBY5N8880.png

打开 qt 工程编译

在 qt 中导入 8_EnvironmentalTest 文件中的.pro 文件,导入完成,如下图所示:

wKgZPGdo0AmAaObRAAMvItipmo0341.png

选择好自己配置的编译器,点击如图所示左下角图标进行编译。

wKgZPGdo0AiAOAjlAABhB2wvRvI791.png

编译完成会生成编译好的文件,和工程文件在相同目录下。

wKgZO2do0AiAHtPXAABL26jX-74473.png

(查看 build 文件)

wKgZPGdo0AiADE1MAADAv1eO1-E430.png

(查看 build 文件)

拷贝可执行文件

通过有线直连的方式将路由器和开发板用网线连接,电脑连接路由器的 wifi,让开发板和电脑是同一网段。

首先我们在开发板上使用 ifconfig 命令获得 ip

wKgZO2do0AmAMl8LAADd8w3pYEw257.png

可以看到我的开发板 ip 为 192.168.3.18,再通过 scp 命令将可执行文件拷贝到开发板当中,将命令中的 ip 换为你的开发板 ip

传输成功后会在开发板的【~】目录下看到可执行文件

wKgZPGdo0AmABfo8AAAZyWMAPdE377.png

(示例图)

应用程序运行

使用下面的命令执行可执行程序

wKgZO2do0AmAIfsxAAAZSmzkA5Q855.pngwKgZPGdo0AmAHP3fAABoV8KiFsU261.png

(运行可执行程序)

可以看到下面的界面。然后我们可以参照 2.4.1 章节开始操作,去实现我们相应的模块。

wKgZPGdo0AmAZSMSAAMm7TNMLSA000.png

(示例图)

除了上面如何将项目在板子上跑起来外,项目说明文档内容还包括项目功能演示、项目源码分析以及SQLite安装及系统命令等,详细项目文档目录如下图。

wKgZO2do0AmAJvxPAAJOExNajYA14.jpeg

后台私信小雯老师(备注:环境监测),免费领取《环境监测》项目完整文档、项目源码

05 硬件平台

《环境监测》是一个Linux+Qt的综合项目,硬件平台是华清远见FS-MP1A开发板(主控STM32MP157)

开发板简介

FS-MP1A开发板是华清远见自主研发的一款高品质、高性价比的Linux+单片机二合一的嵌入式Linux教学级开发板,也是ST官方推荐的一款STM32 Linux开发板。

搭配仿真器、显示屏、摄像头、资源扩展板等丰富的扩展模块,可拓展物联网人工智能等相关技术学习,还可以拓展丰富的项目实战,非常贴合企业当下开发需求,是一款嵌入式Linux入门进阶必备开发板!

wKgZPGdo0AmAHnvPAAJzoqvEfCo910.png

FS-MP1A开发板配套丰富的学习资源,包括开发教程、视频课程及Linux+Qt综合项目案例。可实战“音乐播放器、智慧家庭、智能工业电表、智能出行助手、智能猫眼、环境监测、智能安防、智能语音识别等10余个项目案例,涉及家居、医疗、农业多种应用方向,在案例中使用了多种物联网和嵌入式技术,包括Qt开发、linux应用开发、linux驱动开发、物联网云端接入、MQTT协议、json字符串等知识点。“硬件+项目”的优势,也使其广泛应用于高校教学、学生毕设以及个人开发学习。

配套学习路线推荐

wKgZO2do0AqAaWpsAAJmmDgBodw73.jpeg

嵌入式linux开发建议从应用层开始学起,因为容易快速上手并获得成就感。这个方向主要是依靠经验,不断地积累不同行业的项目开发经验,会让你在职场上更有优势。

wKgaoWc8PGiAea6SAACAtA6-hks792.png

对于初学者,在找工作前,也可以多做一些项目案例练手,在实战中去理解并应用技术。有精力的话,最好可以基于我们的开发板去拓展一些功能更丰富的项目,做更多技术上的创新拓展,去参加一些竞赛,DIY一些更接近实际产品的项目,这样的经历,也会为你的简历及面试加分不少。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    5212

    文章

    20746

    浏览量

    338443
  • Linux
    +关注

    关注

    88

    文章

    11850

    浏览量

    219774
  • 监测
    +关注

    关注

    2

    文章

    4487

    浏览量

    47624
  • 毕业设计
    +关注

    关注

    7

    文章

    245

    浏览量

    16028
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    【2026嵌入式大赛总攻略】从小白到国一的进阶之路!15大赛道选题全解析+备赛指南+国一作品拆解

    2026全国大学生嵌入式芯片与系统设计竞赛(嵌赛)正在作品制作阶段。不管你是第一次参赛的嵌入式小白,还是想冲刺国一的参赛老手,这篇《嵌入式大赛总攻略:从小白到国一》,都能帮你少走90%
    的头像 发表于 04-23 10:30 411次阅读
    【2026<b class='flag-5'>嵌入式</b>大赛总攻略】从小白到国一的进阶之路!15大赛道<b class='flag-5'>选题</b>全解析+备赛指南+国一作品拆解

    华清远见嵌入式全栈工程师实战课重磅升级!一站掌握STM32+Linux核心技术,仿真教学加持,学习效率翻倍!

    嵌入式学习想打通STM32+Linux全栈,却苦于入门难、课程体系不完整、Linux调试难、实战项目少?华清远见
    的头像 发表于 03-18 14:36 604次阅读
    华清远见<b class='flag-5'>嵌入式</b>全栈工程师<b class='flag-5'>实战</b>课重磅升级!一站<b class='flag-5'>式</b>掌握STM32+<b class='flag-5'>Linux</b>核心技术,仿真教学加持,学习效率翻倍!

    2026嵌入式芯片与系统设计竞赛备赛指南:如何参赛、参赛价值、选题策略与备赛全攻略

    2026年全国大学生嵌入式芯片与系统设计竞赛已经正式启动,2月10日大赛通知正式下发,各赛道的选题也陆续公布,4月20日大赛报名截止,感兴趣的同学可以及时关注!作为国内高校科技赛事中极具影响力的一项
    的头像 发表于 03-11 15:42 1346次阅读
    2026<b class='flag-5'>嵌入式</b>芯片与系统设计<b class='flag-5'>竞赛</b>备赛指南:如何参赛、参赛价值、<b class='flag-5'>选题</b>策略与备赛全攻略

    DR1平台Linux应用开发指南:GDB调试、Python及MQTT实战

    Linux-6.1.111 系统,提供完整操作步骤与关键代码,创龙科技通过标准化流程与实操案例,帮助开发者高效完成嵌入式 Linux 应用开发与调试。
    的头像 发表于 01-05 16:48 4931次阅读
    DR1平台<b class='flag-5'>Linux</b>应用开发指南:<b class='flag-5'>含</b>GDB调试、Python及MQTT<b class='flag-5'>实战</b>

    从小白到大牛:Linux嵌入式系统开发的完整指南

    Linux 混合编程)。例如,在嵌入式设备上部署图像识别模型,需掌握交叉编译 AI 框架、优化模型体积与运行速度。​ 工程化能力提升:实际项目中需关注代码规范、版本控制(Git)、自动化构建(CMake
    发表于 12-16 10:42

    开源 | 60余套STM32单片机、嵌入式Linux、物联网、人工智能项目(开发板+教程+源码)

    私信免费领取!60余套综合项目案例STM32单片机、嵌入式、物联网、人工智能智能车/机器狗/小智AI/家居/农业/安防等多领域项目文档+项目
    的头像 发表于 12-04 11:42 1063次阅读
    开源 | 60余套STM32单片机、<b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b>、物联网、人工智能<b class='flag-5'>项目</b>(开发板+教程+<b class='flag-5'>源码</b>)

    嵌入式达到什么水平才能就业?

    (三)实战经验拥有2-3 个完整嵌入式项目经验:项目需包含需求分析、方案设计、代码开发、测试优化全流程,能清晰阐述项目难点与解决方案能独
    发表于 09-15 10:20

    【「Yocto项目实战教程:高效定制嵌入式Linux系统」阅读体验】+基础概念学习理解

    。为了对珠峰更了解些,开始接触 Linux 系统开发,并逐渐认识到 Yocto 项目在定制嵌入式 Linux 系统方面的重要性。所以很想拜读下此书。 二、书籍内容概述 基础知识 书中首
    发表于 08-04 22:29

    【「Yocto项目实战教程:高效定制嵌入式Linux系统」阅读体验】01总结与实践记录

    还是比较合理的,分为了基础普及和项目实战环节,基础普及里也有跟linux嵌入式构建相关的基础,也有Yocto的基础内容,对这块感兴趣的也可以了解了解。 个人比较感兴趣的是从树莓派那里
    发表于 06-30 11:38

    STM32MP157开发板推荐 | 600余讲认证课程,嵌入式Linux应用+底层+项目实战全覆盖!

    和稳定的成长空间。对于技术学习者而言,嵌入式是一条值得长期深耕、持续发展的职业路径。嵌入式Linux学习,选择一款硬件性能强大、课程体系完善、实战
    的头像 发表于 06-27 15:05 1120次阅读
    STM32MP157开发板推荐 | 600余讲认证课程,<b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b>应用+底层+<b class='flag-5'>项目</b><b class='flag-5'>实战</b>全覆盖!

    Linux系统环境监测终极指南

    Linux系统环境主要监测CPU、内存、磁盘I/O和网络流量。
    的头像 发表于 06-25 14:41 1067次阅读
    <b class='flag-5'>Linux</b>系统<b class='flag-5'>环境监测</b>终极指南

    Linux嵌入式和单片机嵌入式的区别?

    区别 单片机嵌入式系统和Linux嵌入式系统是两种不同的嵌入式系统开发方式,它们在应用领域、开发环境、资源需求等方面都有显著的区别。以下是
    发表于 06-20 09:46

    单片机项目实例:环境监测项目

    单片机项目实例:环境监测项目,推荐下载!
    发表于 06-09 22:28

    【新书速递】Yocto项目实战教程:高效定制嵌入式Linux系统

    论坛>>社区活动专版标题名称必须包含【「Yocto项目实战教程:高效定制嵌入式Linux系统」阅读体验】+自拟标题立即扫码参与活动注意事项
    的头像 发表于 05-27 08:05 2062次阅读
    【新书速递】Yocto<b class='flag-5'>项目</b><b class='flag-5'>实战</b>教程:高效定制<b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b>系统

    【书籍评测活动NO.61】Yocto项目实战教程:高效定制嵌入式Linux系统

    《 Yocto项目实战教程:高效定制嵌入式Linux系统 》应运而生。这本书在官方文档的基础上,结合笔者多年的
    发表于 05-21 10:00