聚丰项目 > 基于i.mx6ul的大型粮仓温湿度监控系统

基于i.mx6ul的大型粮仓温湿度监控系统

本项目旨在基于i.mx6ul设计一套粮仓温湿度监控系统,能够具备测量粮堆温度、空气温湿度、控制外设、诊断系统状态等功能。 特点及优势: i.mx6ul与stm32的组合。 多个stm32负责粮仓内部多点的数据采集,成本更低,更加灵活; i.mx6作为人机交互节点,功能非常强大,可以作为嵌入式服务器,为上位机服务,存储容量更大,便于储存更多数据; i.mx6ul开发板带有一块7寸触摸屏,显示美观大方,人机交互体验更好; 节点之间使用CAN总线通信,距离长、传输稳定;

JMU2012 JMU2012

分享
2 喜欢这个项目
团队介绍

JMU2012 JMU2012

团队成员

何希平 嵌入式软件工程师

分享
项目简介
本项目旨在基于i.mx6ul设计一套粮仓温湿度监控系统,能够具备测量粮堆温度、空气温湿度、控制外设、诊断系统状态等功能。 特点及优势: i.mx6ul与stm32的组合。 多个stm32负责粮仓内部多点的数据采集,成本更低,更加灵活; i.mx6作为人机交互节点,功能非常强大,可以作为嵌入式服务器,为上位机服务,存储容量更大,便于储存更多数据; i.mx6ul开发板带有一块7寸触摸屏,显示美观大方,人机交互体验更好; 节点之间使用CAN总线通信,距离长、传输稳定;
硬件说明

    本项目对系统的总体方案进行了设计,大型粮仓温湿度监控系统的组成部分,按照功能分类,有五类节点,分别是用于采集粮堆温度的温度采集节点、用于采集仓内外空气温湿度的温湿度采集节点、用于数据转发的数据中转节点、用于降温排湿的控制设备节点和用于显示仓内各指标状态和控制的人机交互节点。

    仓内各个节点之间的数据传输,采用了传输稳定可靠和距离远的CAN总线通信方式。该系统的工作过程为:仓内节点上的传感器采集温湿度数据,然后传输到人机交互节点,在人机交互节点上设置报警阈值,当温湿度数据超过阈值时,及时提醒管理员,且可以设置自动或手动方式控制仓内的设备,如降温排湿或者开关灯。系统的总体框图如下图所示,

总体框图.png



软件说明

各个节点的编程。

1、温度采集节点

开发平台:Keil MDK

开发语言:C语言

软件思路:芯片初始化、执行DS18B20的搜索算法,将DS18B20的ID值读出并存入AT24C02中,用匹配ROM指令分别取读传感器的温度值,然后将传感器的值通过CAN总线传输到数据节点。

2、温湿度采集节点

开发平台:Keil MDK

开发语言:C语言

软件思路:芯片初始化,AM2302的温湿度采集,然后将传感器的值通过CAN总线传输到数据节点。

3、控制设备节点

开发平台:Keil MDK

开发语言:C语言

软件思路:芯片初始化,通过CAN总线接收指令,然后驱动继电器去控制风扇和照明灯等设备。

4、数据中转节点

开发平台:Keil MDK

开发语言:C语言

软件思路:芯片初始化,通过CAN总线接收温湿度采集节点的数据,并把这些数据通过转发到i.mx6平台上。

5、i.mx6平台编程

开发平台:Ubuntu + Qt Creator

开发语言:C++

软件上,基于串口助手,写了个Qt程序,完成预期功能,最后的程序还可以当做一个串口助手使用。

开发流程大概是这样的:

首先,对软件工程有个整体印象,了解各个文件的作用;

软件流程1.png

再次,对串口接收到的数据进行处理,填入表格控件中。

ui_design.png

主要需要解决以下几个问题:

找到读取串口的函数,void MainWindow::readMyCom();

(1)接收到的字节数组放在这里,QByteArray temp = myCom->read();,

(2)可以转为字符串,然后用字符串比较函数,进行比较;

(3)有用的字符串写入表格控件;

(4)发送指令部分,用槽函数将控件的动作与实际执行函数进行连接。


演示效果

将数据中转节点的STM32的串口连接到i.mx6的串口上,然后STM32将向i.mx6发送数据。通讯协议为:波特率9600,8N1。
然后可以在屏幕上看到数据。Demo.jpg

评论区(2 )
  • 海里的鱼123: 谢谢楼主

    回复

  • 动心忍性1234: 您好我是无线电杂志的编辑,我们对您的项目十分感兴趣,请问您有兴趣投稿吗?成为我们的作者除稿费外还有其他优厚条件。敬请参与。投稿请联系QQ260534978.

    回复