草庐IT

嵌入式linux项目之智能仓储(基于正点原子IMX6ULL开发板)

Jason~F 2023-10-21 原文

基于正点原子的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的知识,很适合非科班更改应用场景后作为面试的项目,且该文章只是单纯的介绍了本人做出来的项目效果和大体框架,里面的细节很多都没有表述,因此欢迎大家关注收藏和指正,我接下来的博客会详细的介绍没一部分的详细内容。到时候会附上代码

有关嵌入式linux项目之智能仓储(基于正点原子IMX6ULL开发板)的更多相关文章

  1. 【Linux操作系统】——网络配置与SSH远程 - 2

    Linux操作系统——网络配置与SSH远程安装完VMware与系统后,需要进行网络配置。第一个目标为进行SSH连接,可以从本机到VMware进行文件传送,首先需要进行网络配置。1.下载远程软件首先需要先下载安装一款远程软件:FinalShell或者xhell7FinalShellxhell7FinalShell下载:Windows下载http://www.hostbuf.com/downloads/finalshell_install.exemacOS下载http://www.hostbuf.com/downloads/finalshell_install.pkg2.配置CentOS网络安装好

  2. Linux磁盘分区中物理卷(PV)、卷组(VG)、逻辑卷(LV)创建和(LVM)管理 - 2

    文章目录一基础定义二创建逻辑卷2-1准备物理设备2-2创建物理卷2-3创建卷组2-4创建逻辑卷2-5创建文件系统并挂载文件三扩展卷组和缩减卷组3-1准备物理设备3-2创建物理卷3-3扩展卷组3-4查看卷组的详细信息以验证3-5缩减卷组四扩展逻辑卷4-1检查卷组是否有可用的空间4-2扩展逻辑卷4-3扩展文件系统五删除逻辑卷5-1备份数据5-2卸载文件系统5-3删除逻辑卷5-4删除卷组5-5删除物理卷六LVM逻辑卷缩容6-1缩容注意事项6-2标准缩容步骤一基础定义LVM,LogicalVolumeManger,逻辑卷管理,Linux磁盘分区管理的一种机制,建立在硬盘和分区上的一个逻辑层,提高磁盘分

  3. ruby - 如何在 Ruby 中获取 linux 系统信息 - 2

    如何在Ruby中获取linux系统(这必须适用于Fedora、Ubuntu等)的软件/硬件信息? 最佳答案 Chef背后的优秀人才,拥有一颗名为Ohai的优秀gemhttps://github.com/opscode/ohai以散列形式返回系统信息,例如操作系统、内核、规范、fqdn、磁盘、空间、内存、用户、接口(interface)、sshkey等。它非常完整,非常好。它还会安装命令行二进制文件(也称为ohai)。 关于ruby-如何在Ruby中获取linux系统信息,我们在Stack

  4. ruby - rbenv:在 Linux Mint 上找不到 gem 命令 - 2

    我在LinuxMint17.2上。我最近使用apt-getpurgeruby​​删除了ruby​​。然后我安装了rbenv然后rbenvinstall2.3.0所以现在,~/.rbenv/versions/2.3.0/bin/ruby存在。但是现在,我无法执行geminstallrubocop。我明白了:$geminstallrubocoprbenv:gem:commandnotfoundThe`gem'commandexistsintheseRubyversions:2.3.0但是我可以~/.rbenv/versions/2.3.0/bin/geminstallrubocop。但是,

  5. ruby - 在 Linux 上编译 Ruby 1.9.2 所需的先决条件? - 2

    我是Ruby和RoR的新手。我有一个带有Ubuntu镜像的干净Linode实例,我想从源代码编译Ruby而不是使用apt-get。我已经在谷歌上搜索了执行此操作的说明,但经过一些尝试后,当我尝试运行一些教程示例时,我不断收到有关缺少zlib和其他一些包的错误。任何人都可以给我详细的说明(或链接),教我如何在从源代码编译Ruby之前安装必要的必备包吗?我的目的是编译Ruby的最新稳定版本,然后安装Rubygems和Rails。提前感谢您的帮助!!! 最佳答案 Thisblogpost涵盖从源代码编译ruby​​所需的包和安装过程;它引

  6. Linux网络编程必备的POSIX API的细节 - 2

    目录POSIXAPI大集合五元组三次握手的过程,内核协议栈分析listen函数DDOS攻击,洪水攻击DDOS攻击的应对措施数据发送 怎么保证顺序?如何保证包地顺序到达(序号+确认应答机制+重传)TCP断开连接的过程问题1.大量的CLOSE_WAIT+FIN_WAIT2是为啥?time_wait状态存在的原因?POSIXAPI大集合五元组(sip,sport,dip,dport,protocol)三次握手的过程,内核协议栈分析内核协议栈中是有内核数据结构的.  我们send/write数据,都是先发送到内核协议栈中,然后由内核协议栈封装发送到物理介质中传输到对端的对端的接收过程也是经有内核协议栈

  7. Linux export 命令及如何删除export设置的环境变量 - 2

    背景:Linuxexport命令用于设置或显示环境变量。在shell中执行程序时,shell会提供一组环境变量。export可新增,修改或删除环境变量,供后续执行的程序使用。export的效力仅限于该次登陆操作。语法:export[-fnp][变量名称]=[变量设置值]参数说明:-f 代表[变量名称]中为函数名称。-n 删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中。-p 列出所有的shell赋予程序的环境变量。实例:列出当前所有的环境变量#export-p//列出当前的环境变量值定义环境变量赋值#exportMYENV=7//定义环境变量并赋值添加环境变量:默认保存在

  8. Linux操作系统CentOS7安装Nginx[详细版] - 2

    Nginx安装1.官网下载Nginx2.使用XShell和Xftp将压缩包上传到Linux虚拟机中3.解压文件nginx-1.20.2.tar.gz4.配置nginx5.启动nginx6.拓展(修改端口和常用命令)(一)修改nginx端口(二)常用命令1.官网下载Nginxhttp://nginx.org/en/download.html这里我下载的是1.20.2版本,大家按需下载对应稳定版即可2.使用XShell和Xftp将压缩包上传到Linux虚拟机中没有XShell可以参考《Linux操作系统CentOS7连接XShell》3.解压文件nginx-1.20.2.tar.gz1)检查是否存

  9. 【Linux】初识Linux --指令Ⅰ - 2

    Halo,这里是Ppeua。平时主要更新C语言,C++,数据结构算法,Linux…感兴趣就关注我吧!你定不会失望。目录1.ls显示当前目录下的文件内内容2.pwd-显示用户当前所在的目录3.cd-改变工作目录。将当前工作目录改变到指定的目录下1.cd-回到上一次待的工作空间2.cd..返回上一层目录1.相对路径:cd../aurora2.绝对路径:cd/home/aurora/lesson1/aurora3.cd~进入用户家目录4.cd/进入root目录4.mkdir-新建目录5.rmdir/rm-删除1.rmdir删除空文件夹2.rm删除1.rm-f2.rm-i3.rm-r1.ls显示当前目

  10. 从零开始学习Linux运维,成为IT领域翘楚(二) - 2

    文章目录🔥Linux系统目录结构🔥Linux用户和用户组🔥Linux用户管理🔥Linux系统目录结构文件系统组织结构⭐ /lib系统开机所需要最基本的动态链接共享库,其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。⭐ /lost+found一般情况下是空的,当系统非法关机后,这里就存放了一些文件。⭐ /etc所有系统管理所需要的配置文件和子目录my.conf⭐ /usr用户的很多应用程序和文件都放在这个目录下。⭐ /bin是Binary的缩写,这个目录存放着经常使用的命令⭐ /sbin(usr/sbin、/usr/local/sbin)sbin就是peruse

随机推荐