【RT-Thread 作品秀】基于RT-Thread的网络照相机作者:吴顶顶 概述随着科技的进步和互联网的发展,基于物联网的可拍照设备也越来越多的融入到人们的生活中来,例如在超市中,管理者利用拍照设备定时抓取货架照片,分析货物状态,并补充、优化货物摆放;在酒吧里,管理者会利用拍照设备定时抓拍酒架照片,传送到网络平台供大众浏览,以招揽更多顾客。本网络照相机基于STM32H7+RTThread平台,采集摄像头数据,并通过无线网络传送到服务器,提供SD卡配网、手动拍摄、定时拍摄、照片推送等功能,并提供windows上位机提供控制和照片显示功能。 主要功能有: 格式化sd卡:格式化sd卡,但是会保留网络配置文件,其他文件全部删除 设备重启:重启设备 实时拍照:发送指令给照相机,照相机拍照,并把照片回传 定时拍照:照相机依据下发的拍照时间,在时间到达时拍摄一张照片,并传给服务器 按键拍照:点击板上用户按钮,拍摄一张照片,并传给服务器 定时任务:可以新建/删除/查询定时拍照任务,任务存储在sd卡中,重启有效 开发环境硬件:ART-PI(STM32H750主控)+ OV2640模组 RT-Thread版本:4.0.3 SDK 版本:1.0.1 开发工具及版本:RT-Thread Studio 1.1.5, Qt5.14.0 RT-Thread使用情况概述内核部分:调度器,信号量,互斥锁,内存管理 调度器:多任务调度 信号量:用于唤醒对应任务 互斥锁:用于互斥资源独占访问 内存管理:动态内存申请与释放 组件部分:虚拟文件系统,IPC,I2C,RTC,NTP 虚拟文件系统:文件操作,sd卡、照片文件 IPC:mqtt发送数据需要 I2C:配置摄像头模块需要 RTC和NTP:同步时间 软件包部分:paho mqtt,cJSON,netutils pahomqtt:用于和服务器通信 cJSON:解析、封装mqtt消息 netutils:NTP网络对时 其他:base64 用于将图片文件转换成字符串,便于mqtt传输 硬件框架总体的硬件框架如下图所示: 本网络摄像机硬件结果较为简单,即art-pi连接一个摄像头模组,art-pi板上用到了AP6212无线模块,外部内存,led指示灯,和sd卡。其中,摄像头模块用于采集图像信号;AP6212用于和服务器进行通信;因一张图像数据量较大,片内内存不够,故而使用外部内存;led灯用于指示设备工作状态;sd卡用于保存网络、服务器、和定时任务配置。 软件框架说明整体的软件框架如下图所示,网络照相机内部有一个proxy线程,负责和云端进行通信,在接收到云端消息后会解析,并分发到其他的线程执行,然后将执行结果返回到云端;照相机发生了其他的事件,例如用户按键拍照,也会将数据传给proxy线程,proxy线程再将数据发送到云端。用户通过上位机终端软件连接上云服务器,实现与照相机的通信及控制。 整个系统支持接入多个照相机,如下图所示,不同的照相机通过sd卡配置文件中sn进行区分,上位机软件可以显示所有在线的照相机,但同一时间只支持操作一个。 软件模块说明1. 用户线程创建流程如下图所示为用户线程创建流程 用户线程作用描述如下: main:用于创建sd_card 线程,检测按键事件,闪灯; sd_card:用于管理与sd卡相关的工作,包括拍照,网络配置,定时任务; network:负责联网,根据sd卡的配置文件连接到指定的wifi网络; proxy:负责启动mqtt,并管理与云端的通信,其他线程都需要通过proxy线程与云端交互数据; event:定时任务和按键任务,在定时时间到达时,或者用户按键时拍摄照片并通过proxy上传云端。 2. 通信接口及流程2.1 MQTT订阅主题设备向服务器订阅主题: /ter/query/discovery,用于接收设备发现消息 /ter/sn/request,用于接收针对该设备的指令,其中sn为设备的SN号,下同 客户端向服务器订阅主题: /dev/response/discovery,用于接收设备发现回复 /dev/response/will,用于接收设备遗嘱消息 /dev/sn/response,用于接收设备操作指令回复 /dev/sn/event,用于接收设备的通知 2.2 设备发现所有的设备均订阅/ter/query/discovery主题,客户端向该主题发布发现消息,所有收到消息的设备向/dev/response/discovery回复一条消息,而客户端又订阅了/dev/response/discovery主题,故而便可以知道哪些设备在线了。 设备连上服务器的时候,会定义一个遗嘱消息,主题为/dev/sn/will,客户端订阅了该主题,当设备因为某些原因掉线,则超过一定时间之后,
2022-04-15 22:59:07 1.93MB 智能家居 单片机 物联网 rt-thread
1
LittlevGL2RTT LittlevGL2RTT 是在RTThread3.0版本以上做的LittlevGL中间框架层, 目的是无缝嵌入RTT的LCD框架, 无需开发者去移植. 如果您觉得该库看得顺眼舒服,请捐赠颗小星星. 小星星就是更新的动力!!! 感谢LittlevGL作者的开源GUI库. 原库请移步到 . 1. 效果图 2. 安装LittlevGL2RTT 目前littlevgl2rtt库已经添加到rtt官方pkgs包中, 可以直接在menuconfig在线包中直接使能. 在env中运行menuconfig. 进入RT-Thread online packages -> system packages目录. 开启LittlevGL2RTT, 选择version为lateset最新版本, 配置分辨率为你的显示屏分辨率, 然后开启demo并保存退出menuconfig. 执行pkgs
2022-04-14 12:06:11 1.37MB env rt-thread littlevgl C
1
RT-Thread X STM32 全连接大赛 智能甲醛检测仪 作者: 乔季军 开发环境:RT-Thread Studio 硬件框架:基于RT-Thread 提供的ART-PI 开发板实现,详细硬件请参考项目设计文档 【RT-Thread作品秀】智能甲醛检测仪作者:乔季军 概述家里房子装修完已经快一年了,装修完一直保持着通风,最近回家住的比较频繁,每次回去住总还是觉得比较别扭,总担心屋里的甲醛会不会还是超标,自己总想着搞一个甲醛检测仪的装置来放到屋里,这样就能够实时查看到屋里面的甲醛浓度了。调研了一番,发现市面上的比较便宜的甲醛检测装置基本都不准确,于是乎自己便开始搜寻相关传感器,寻思着能否自己DIY一个甲醛检测装置,在给自己寻找乐子的同时,也能够做一个使用的物件。 通过调研发现,目前市面上检测甲醛的传感器主要分为两类,一类是半导体式,另一类是电化学式。半导体式甲醛传感器主要是根据甲醛散发到周围空气中,导致周围空气的导电率发生变化来感知甲醛浓度的,这一类传感器主要是根据导电率的特性来检测甲醛的,很容易收到其他环境因素的影响,例如周围湿度的变化也会导致空气的导电率发生改变,因此使用这种传感器测得甲醛浓度就没有太大的参考意义了,另外一种是电化学式传感器, 这种传感器上面有一层滤膜,用来过滤空气中的其他干扰杂质,传感器中包含有一种能够和甲醛发生反应的催化剂,当催化剂和甲醛接触时,就会形成电信号的波动,电信号的波动和甲醛浓度值的变化有一定的关系,因此使用这种传感器检测的甲醛浓度相对来讲会更准确一些。 笔者在调研完之后,选择了英国达特公司设计生产的WZ-S-K 型电化学式甲醛检测传感器,用用来检测甲醛浓度值,此外,还使用到了DHT11 温湿度传感器,用于检测周围环境的温湿度信息。 该智能甲醛检测仪主要实现甲醛检测及温湿度检测功能,检测到的数据通过LCD显示屏实时的显示出来,同时还能够将传感器数据上传到ONENET物联网平台,用来记录历史传感器数据,同时也能够利用这些数据信息和其他设备联动。 开发环境硬件:ART-PI、DHT11温湿度传感器、达特WZ-S-K型甲醛传感器 RT-Thread版本:4.0.3 开发工具及版本:RT-Thread Studio 2.0.0 甲醛传感器介绍WZ-S-K 型甲醛检测传感器模组是英国达特公司设计的一款基于电化学的甲醛检测传感器,具有测量精度高、响应速度快、使用寿命长、功耗低等特点。该传感器能够直接将周围环境中的甲醛含量转换为浓度值,通过串口标准化输出,这款甲醛检测传感器能够非常方便的集成到产品中去,适用于智能家居、便携式测量仪表等产品。 RT-Thread使用情况概述使用 RT-Thread 开发物联网应用的优势已经非常明显了,借助于RT-Thread 软件包生态,开发者只需要关系自己的应用逻辑即可。 该项目使用到许多RT-Thread 的软件包,具体请参考以下截图。 演示视频: 比赛感悟这次比赛,我使用RT-Thread 从头到尾设计了一款基本满足正常使用的甲醛检测设备。整体下来,觉得使用RT-Thread 物联网操作系统进行应用开发还是非常便捷的,借助于软件生态,可以大大缩短开发周期。 设计过程中主要有两部分内容需要攻克,一部分是关于甲醛浓度检测及单位换算部分,这部分查阅了一些资料,总觉得不太合理,传感器输出的浓度单位为ppb或ppm(1ppm=1000ppb),而作为我们日常使用中,比较容易理解的单位是 mg/m3 ,从 ppb 到 mg/m3 之间的换算,网上有很多种说法,其中我找到的最不合理的说法就是 1ppm = 1mg/m3。经过深入研究,发现这其实是化学单位中常用的几个不同的单位,这两个单位之间的换算还要结合不同物质的物质的量来进行计算,经过自己实际对比验证和联系供应商验证问题,最终得出的结论为甲醛浓度单位ppm和 mg/m3 之间的换算关系为: 1ppm = 0.74666 mg/m3 这种看着不起眼的单位换算,背后还是有一些知识点需要理解的,如果单单的将 1ppm 理解为 1mg/m3 的话,最终会造成读取的数据不准确,那么这样的甲醛检测仪也就没有什么设计的意义了。 第二部分内容就是关于LCD显示部分的GUI部分,这部分开发工作相对可查的资料比较多,开源的GUI也很对,网上针对ART-PI进行的GUI适配工作也有很多分享,笔者也亲自适配了lvgl这套开源的GUI,但是对于笔者,还是希望能够在设计过程中深入理解LCD驱动和GUI部分的原理,于是乎在开发过程中,笔者自己动手编写了GUI部分的画点、画线、绘制圆、绘制矩形、显示字符等函数,在编写过程中也参考了正点原子的GUI部分的代码,但是这对于我理解GUI部分的原理已经足够了,借此机会,我还设计了几个GUI的控件,用来显示一些传感器数
2022-04-06 14:31:36 7.31MB 传感器 物联网 diy制作 开源
1
国产最优秀的嵌入式实时操作系统RT-Thread。RT-Thread是一个实时的内核(全抢占优先级调度,调度器时间复杂度O(1)),但在发展过程中,RT-Thread实时操作系统得到了来自全国嵌入式开发工程师的鼎力支持,为RT-Thread添砖加瓦,现在它不仅仅是一款高效、稳定的实时核心,也是一套面向嵌入式系统的软件平台,覆盖了全抢占的实时操作系统内核,小巧而与底层具体实现无关的文件系统,轻型的TCP/IP协议栈以及轻型的多窗口多线程图形用户界面。
2022-04-04 15:31:56 51.6MB RT-Thread 实时操作系统 嵌入式
1
图文并茂讲解如何在keil下建立Rt-Thread工程
2022-04-03 13:53:50 838KB Rt-Thread keil 工程建立
1
概述:声源自动跟随小车,方案主要是通过采集实时环境声音,计算声音的到达方向,同步小车的角度和声源方向角度并行进,达到声源跟随的目的。主要可以应用在电子宠物上,与人进行互动,也可以判断声源方向用来指示目标,是一个比较有趣的设计。 开发环境硬件:ART-Pi开发板,Raspberry Pi开发板 扩展板:四通道麦克风扩展板,GY-521 MPU-6050模块,直流电机驱动模块,锂电池电源组件 RT-Thread版本:RT-Thread Nano 开发工具及版本:STM32CubeMX 5.6.1 MDK 5.20 RT-Thread使用情况概述采用STM32CubeMX生成RT-Thread Nano的代码工程 内核部分:调度器。 调度器:创建2个线程分别实现MPU-6050的DMP角度数据读取和小车平台姿态与声源达到方向角的同步。 硬件框架ART-Pi定时读取MPU-6050的小车平台姿态数据,然后通过对比串口中断接收的Raspberry Pi声源到达方向角数据,PWM驱动直流电机芯片同步小车姿态并前进,实现声源跟随功能。 软件框架说明本项目软件分为两部分: 第一部分:Raspberry Pi 软件 通过ReSpeaker 4-Mics Pi HAT扩展板采集实时现场环境音频数据,估算声源的到达方向并通过USB TTL串口发送声源到达方向角数据到ART-Pi串口接收端。 第二部分:ART-Pi 软件 ART-Pi开发板上电之后首先完成板级外设的初始化,并初始化MPU-6050的数字运动处理器DMP实现小车姿态的获取。开启串口中断接收Raspberry Pi发送的声源到达方向角数据,输出PWM控制小车的直流电机来改变小车姿态符合声源到达方向角,再控制小车前进。 软件模块说明Raspberry Pi 软件: 安装ReSpeaker 4-Mics Pi HAT的驱动,安装声源到达方向应用mic_array,修改vad_doa.py使其能够通过USB TTL串口输出声源到达方向角数据。 ART-Pi 软件: 创建了2个线程 thread1_entry:周期性的读取MPU-6050的数字运动处理器DMP数值,并把读取到的值放入全局变量中; thread2_entry:循环检查串口数据接收变量,如有声源到达方向角数据就控制小车姿态符合声源到达方向角。 演示效果视频观看: 代码地址(附件为代码地址,下载后打开可见)比赛感悟RT-Thread Nano集成在STM32 Cubemx工具中,直接图形化配置生成初始代码真的非常方便。 由衷的感谢开源社区大佬们的贡献。 最后感谢主办方提供了这么好的一个平台,能学到很多知识。
2022-04-01 23:26:56 8.31MB 开源 rt-thread 电路设计方案 电路方案
1
rtthread keil仿真工程 rtthread_simulator_v0.1.0
2022-03-21 23:47:53 708KB rt-thread
1
做为新型的短距离无线通信技术, ZigBee以其低功耗、低速率以及自组网等优点进入了现代家居控制应用领域, 可实现一种灵活的, 独立的, 低成本的智能家居系统搭建。文中以ZigBee为基础, 利用CC2430与STM32处理器配合微型嵌入式系统搭建智能家居应用环境, 实现智能家居系统终端设计。实验证明终端设计在实际系统中可靠、可行。
2022-03-20 11:55:58 1.23MB STM32 ZigBee RT-Thread RTOS
1
第四章 内存管理 Linux的内存管理 进程的用户空间管理 请页机制 物理内存的分配与回收 交换机制 内存管理示例
2022-03-19 11:48:01 2.57MB Linux 操作系统 内核 陈莉君
1
【RT-Thread作品秀】写字机器人作者:乔城阳 概述(说明应用产生的背景、实现功能)写字机器人在实际生产线上由于效率赶不上打印机,应用不是很广,然而由于其结构简单,成本低,并且符合人手写风格,在学习阶段很有价值。写字机器人设计上包含了路径规划、直线插补、加减速控制等常用电机运动控制算法,在软件上也会用到DXF文件解析、openCV图像处理等G代码生成工具,对后期深入研究激光切割机、雕刻机、3D打印机等大型设备有很好的铺垫作用。因此我的作品以写字机器人为题目分享我的制作过程和学习体验,希望对各位小伙伴的学习有所帮助。 开发环境(所采用的软、硬件方案)硬件:ART-PI、arduino、TM4C123GXL RT-Thread版本:3.14 开发工具及版本:MDK-ARM5.31、VSCode RT-Thread使用情况概述(简要总结下应用中RT-Thread使用情况:内核部分、组件部分、软件包部分、内核、其他)内核部分:线程调度,资源分配、同步通信、设备驱动框架 组件:DFS文件系统、UART串行异步通信、CAN通信 其他:UDP通信、cJSON编解码 硬件框架(概述应用所采用的硬件方案框图,并对核心部分做介绍)软件框架说明(介绍应用所采用的软件方案框图、流程图等,并加以解说)在写字机器人设计上我将其分为三个部分: 图像处理模块 运动控制模块 G代码生成模块 图像处理模块负责把文本图像和照片等图像文件做预处理,去除杂点,然后以合适的算法将图像二值化,突现主要信息,然后提取轮廓骨架以适合机器书写。 G代码生成模块将图像轮廓序列化后进行路径规划,选取一个适合的加工精度,然后按数控加工常用的G代码规范生成NC加工文件。另外对于标准的DXF文件则通过文件解析的方法生成G代码。 运动控制模块是写字机器人中最杂的一个模块,负责各个运动机构的精准快速移动。收到G代码指令后需要结合前后指令信息生成当前指令的合适初速度、最大运行速度,根据运动轨迹进行直线插补点,最后按SPTA梯形加减速算法向电机发出脉冲。 软件模块说明(介绍应用软件关键部分的逻辑、采用的实现方式等)Grbl是一种高性能低成本的开源CNC控制器,基于ATmega328型芯片输出高速精准的电机控制脉冲,完美支持各种标准G代码,并包含了完整的前瞻性加速控制,可以实现平稳的加速和无冲击的转弯动作。 正是由于grbl的前瞻性速度控制功能,所以要保证grbl控制器内一直保持着16-20个G代码指令。这需要ART-PI通过读取grbl控制器缓冲区状态,及时发送G代码指令,避免出现缓冲溢出和缓冲区为空等现象出现。 因此需要运行RT-thread实时操作系统,通读读取SD卡上的NC文件,并与grbl控制器通信,控制设备正常运行。另外RT-thread也可提供丰富的人机交互功能,将设备工作路径、进度等状态实时显示在屏幕上,也可以增加暂停续写等功能。 演示效果(演示效果请采用3张高清图片,并录制一段不少于1min视频解说应用所实现的效果,视频上传至B站或者腾讯视频或其他视频平台,给出链接即可)演示视频 比赛感悟同样是C代码,为什么别人写得那么好,这次比赛用到两个开源软件,一个是RT-thread,负责人机交互和发送控制指令,另一个是grbl,用来完成运动控制。两款软件都设计的非常精巧,只需在2kB大小的RAM上运行,而功能却又非常强大,实现了很多复杂的功能,所有的代码封装的很好,模块启用只需打开对应的宏定义即可。这次专门去图书馆借阅了RTT相关的图书,了解线程是如何调度,设备驱动应该怎么实现,但是内部还是有很多内容不理解,后期需要继续不断充实自己。运动控制一直是我的兴趣所在,这次也终于有机会把它实现,看着电机在一行行指令的控制下乖乖地转动,听着不断变化着频率的电机声音,真正体会到了伺服servo的含义,非常开心~
2022-03-16 20:05:03 1.33MB diy制作 rt-thread 电路设计方案 电路方案
1