嵌入式linux项目之智能仓储(基于正点原子IMX6ULL开发板)
基于正点原子的IMX6ULL开发板的智能仓储项目
提示:该项目根据华清远见智能仓储项目改版,将他的A9开发板换成了自己的IMX6ULL开发板。同时等我将该项目整个流程完成之后,会为大家附上适配正点原子linux开发板的全部代码
(代码资料和视频教程私聊)
视频教程
相应课程配套源码
本人其他项目链接基于linux的智能仓储项目
基于Qt的人脸识别
基于STM32的智能家居
移植人脸识别到Linux开发板上
基于正点原子的IMX6ULL开发板的智能车载系统(Qt)
PS:华清远见这个项目真的很不错,适合自学转行的同学好好学习一波,我就是机械转行自学的
前言
提示:这里可以添加本文要记录的大概内容:
目前,制造企业市场竞争日益激烈,提高生产效率、降低运营成本,对于企业来说至关重要。为此基于、ZigBee技术、嵌入式linux技术、并结合web服务器及单片机stm32,可以实现仓库货物的入库、盘点、出库、仓库环境管理、实现远程实时监控、远程环境控制,并集报警提醒等多种功能于一身,实现了真正的智能,技术积累雄厚,入门门槛高,但是操作简单,方便快捷。
提示:以下是本篇文章正文内容,下面案例可供参考
一、项目系统概述
智能仓储是基于Linux C编程和HTML界面编程,通过stm32作为终端仓储环境的采集,结合RFID和数据库将仓库实时的货物数据存储到数据库当中,并将仓库数据和环境数据提交给主机做处理,主机将环 境信息实时的更新到网页上,而将仓库的货物出入库的信息保存到数据库当中。当检测到的环境信息低于设定值时,比如仓库的光照较暗,那么系统主机端自动控制远程的LED灯开启,增加光照的强度,改善环境信息。
如果仓库内环境温度高于某一值,则自动开启蜂鸣器报警,并开启风扇进行换气操作,降低仓库内的环境温度,如果温度持续升高。其硬件整体环境如下:将stm32采集的数据封装为一个环境信息结构体,然后通过zigbee将结构体数据发出,zigbee的接收端使用usb转串口模块,通过驱动的编写,将zigbee接收端在linux开发板上识别为一个串口节点。然后开发板通过读取节点的信息即可处理来自32开发板的数据,然后通过linux开发板将数据发送到网页端。
二、整体流程图如下
接下来就是对流程图的介绍。
上面介绍了linux开发板读取到了zigbee传来的数据,然后通过pthread_transfer线程将环境信息结构体填充,然后将数据通过pthread_refresh线程刷新到网页。这里就存在一个问题了主线程中是C语言编写的,而网页是用html语言显示的。这就涉及到了C语言与html语言的通信。所以本项目在正点原子linux开发板移植了boa服务器。通过boa服务器和CGI应用程序将C与html形成交互(中间还有一层cgi应用程序)
三、项目效果
下图为网页显示部分,通过账号密码登录后来到主界面,主界面又可分为4个部分,分别为历史照片、实时监控(此部分是将摄像头采集到的数据通过FFmpeg推流mgpeg-streamer和nginx服务器作为流媒体服务器,然后将视频流信息拉流到网页端口,后面我会写博客详细介绍)、M0控制部分(此部分是通过消息队列,将网页下发的数据来控制linux硬件,比如led,beep等)、环境信息(该部分是将stm32部分采集到的数据上传到linux板子之后,通过pthread_transfer线程将数据填充到环境信息结构体部分,该环境信息和网页通信采用了共享内存的方法)
下图为M0控制部分
通过网页下发命令到cgi程序,然后cgi与主进程进行交互来控制板子上面的硬件
下图为stm32传过来的环境信息
可以将32采集到的环境信息通过linux板子上传到网页端
以上网页就是我暂时移植好的项目,目前实现了通过网页端控制linux板子上的硬件,然后将stm32传上来的数据显示到网页上,将摄像头采集到的数据推流到网页上还没实现,后续接着实现
总结
提示:这里对文章进行总结:
其实该项目的应用场景不要局限于智能仓储,当你把这一套项目跑通之后,你会发现无论是什么板子的硬件采集到的数据都可以通过无线通信的方式将数据上传到linux开发板,然后让Linux开发板单单作为一个服务器来协调数据的上传和下发,只需要更改网页显示不同的数据,和最下层的硬件采集不同的数据来达到不同应用场景的目的
与此同时,该项目相对比较复杂,使用了线程、线程间通信、信号量、消息队列、共享内存、互斥锁、网页、无线通信等模块的知识,是一个综合项目,能够帮助我们掌握UC的知识,很适合非科班更改应用场景后作为面试的项目,且该文章只是单纯的介绍了本人做出来的项目效果和大体框架,里面的细节很多都没有表述,因此欢迎大家关注收藏和指正,我接下来的博客会详细的介绍没一部分的详细内容。到时候会附上代码
更多推荐
所有评论(0)