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

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

3天内不再提示

基于ART-PI & RT-Studio开发的小型蚯蚓养殖监控系统系统

Linux阅码场 来源:RTThread物联网操作系统 作者:RTThread物联网操作 2021-08-02 17:40 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

开源地址:https://gitee.com/bltas/earthworm_home

概述:

小型蚯蚓养殖监控系统主要探索在家庭等局限场地下,蚯蚓的正常养殖,从而得到蚯蚓粪和蚯蚓液。系统基于ART-PI & RT-Studio 开发,使用了dht11,ds18b20,土壤湿度,mpu6050监测养殖环境中的空气温湿度,土壤温湿度和蚯蚓的抖动密度。外置的风扇和水泵对上述环境变量进行控制。连接onenet后可以及时在后台远程观测环境变量并加以控制。

开发环境

硬件:ART-Pi STM32H750

扩展板:DS18B20防水数字温度传感器,DHT11温湿度传感器,2pcs MPU6050 传感器,土壤湿度传感器

RT-Thread版本:RT-Thread V 4.0.3

开发工具及版本:RT-studio2.0.0

RT-Thread使用情况概述

调度器:创建多个线程来实现不同的工作。

信号量:用来同步线程。

互斥量:多个相关采集线程能同时获得系统资源,不被其他线程抢占

消息队列:用来实现采集线程,控制线程和OneNet upload线程的同步。

消息邮箱:onenet_mqtt 接受控制命令后和控制线程的同步

组件部分:I2c框架, Sensor框架

I2C框架:使用 I2C框架来驱动MPU6050

ADC device: 用来采集土壤湿度

PWM device: 用来控制风扇,水泵。

Sensor框架:MPU6050,DHT11,DS18b20均为基于sensor框架的包,为上层提供统一的操作接口,提高上层代码的可重用性;简化底层驱动开发的难度。

软件包部分:

Webclient:提供设备与 HTTP Server 的通讯的基本功能。

pahomqtt:本软件包是在 Eclipse paho-mqtt 源码包的基础上设计的一套 MQTT 客户端程序。

Onenet:是 RT-Thread 针对 OneNET 平台连接做的的适配,通过这个软件包,可以让设备在 RT-Thread 上非常方便的连接 OneNet 平台,完成数据的发送、接收、设备的注册和控制等功能。

cJSON: C语言实现的极简的解析 JSON 格式的软件包。

DHT11: GPIO模拟单总线协议,读取传感器温湿度,注册在sensor框架

Ds18b20: GPIO模拟单总线协议,读取传感器温度,注册在sensor框架

MPU6050: 本软件包是为 InvenSense 公司的六轴系列传感器提供的通用传感器驱动包,可选I2C或SPI通信协议。通过 Sensor 框架,开发者可以快速的将此传感器驱动起来。

硬件框架

60f56936-e032-11eb-9e57-12bb97331649.jpg

ART-Pi 外挂多个传感器作为采集输入设备, 水泵和风扇作为控制设备。ART-Pi本身作为Onenet的一个终端设备来上传数据接收和接收命令。

软件框架说明

多个采集线程实时读取环境中的温湿度,发送到stream消息队列;Onenet上传线程接收消息并上传到相应stream。当云端下发命令,触发Onenet_cmd_rsp_cb, 在里面发送接收的控制命令到命令缓存邮箱,控制线程查询邮箱,发现邮件后使用rt_mq_urgent发送紧急控制stream,及时同步云端控制设备的状态。

软件模块说明

共创建了2个信号量,1个消息队列,1个互斥量,7个线程

信号量:

mqttinit_sem 主要用于wifi的连接及onenet_mqtt_init的同步问题。

sensor_msg_sem_empty 主要限制采集线程占用的消息资源个数

5个采集线程:

adc1_5_entry:周期性读取土壤湿度传感器的值,并把读取到的值发送到消息队列sensor_msg_mq

read_dhtll_entry:周期性读取DHT11温湿度传感器的值,并把读取到的值发送到消息队列sensor_msg_mq

read_ds18b20_entry:周期性读取ds1b20 土壤温度传感器的值,并把读取到的值发送到消息队列sensor_msg_mq

read_gyro0_entry: 周期性读取MPU6050_0六轴传感器的Y轴角速度,作为蚯蚓活动强度(间接反映蚯蚓密度和活性情况),并把读取到的值发送到消息队列

read_gyro1_entry: 同上,两点测量。

消息队列:

sensor_msg_mq: 为了同步采集线程,控制线程和云端的同步。由于Onenet数据刷新有要求,更新数据快了也没用,这里设置为1s. 生产者过多,消费速率过慢,最终都会过剩。只分配5个消息给到采集线程。

另外,虽然我们开辟了8个消息,但是我们使用了sensor_msg_sem_empty 信号量来限制采集线程只能使用5个,留下的3个用来快速同步控制流,及时刷新云端控制设备的状态。

互斥量:

sensor_msg_mutex: 由于DHT11同时读取了温度和湿度两个环境变量,对应云端两个stream,需要发送两次消息,为确保两个stream的同步,先获取互斥量,在未全部发送完成之前不释放互斥量。

消息邮箱:

sensor_msg_mailbox:云端发送命令间隔没有明确的限制,存在连续操作,需要缓存一下,这里设置了16个邮件。在Onenet_cmd_rsp_cb里把接收的命令直接发送到邮箱,控制线程接收邮件并处理。

控制线程:

center_control_entry:从sensor_msg_mailbox邮箱里接收邮件,解析命令,控制设备,并同步设备状态到云端。

上传线程:

onenet_upload_entry: 长等待方式从队列里接收消息,然后根据消息里的stream_id发数据到 onenet云端不同的数据流

状态线程:

Main:led 2s闪烁,指示当前系统的运行状态。

编辑:jq

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

    关注

    32

    文章

    1543

    浏览量

    44295

原文标题:【RT-Thread 开源作品秀】小型蚯蚓养殖监控系统

文章出处:【微信号:LinuxDev,微信公众号:Linux阅码场】欢迎添加关注!文章转载请注明出处。

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    【深度实战】MYD-LR3576 AMP非对称多核开发指南:从配置到实战

    多处理),AMP具有独特优势。核心特性:异构运算:不同核心运行最适合的操作系统,如Linux处理复杂应用,RT-Thread保障实时任务;资源隔离:各核心拥有独立内存空间,避免
    的头像 发表于 12-05 08:07 6283次阅读
    【深度实战】MYD-LR3576 <b class='flag-5'>AMP</b>非对称多核<b class='flag-5'>开发</b>指南:从配置到实战

    ART-Pi中启用外部flash是在哪里配置了qspi的引脚呢?

    。由于我是按照以芯片建立工程,并没有使用ART-PI的工程。 2、我目前了解到在ART-PI工程中会有这个下载算法。 在这个链接文件要配置地址 3、于是我有个好奇的点是在工程中没看到有QSPI的配置
    发表于 10-10 06:09

    ART-PI使用新的env工具已经无法编译SDK仓库里的示例工程了,怎么解决?

    ART-PI 使用新的env工具已经无法编译SDK仓库里的示例工程了 希望还是能维护一下,新的env已经无法构建出工程进行编译了 使用scons —target=mdk5 直接报错了 希望有方
    发表于 10-09 06:47

    rt-studio支持仿真的时候变量实时刷新吗?

    rt-studio支持仿真的时候变量实时刷新么?像keil那样。目前看到的好像不能实时刷新变量,只有下断点了变量才会刷新出来。
    发表于 09-28 09:44

    rt-thread studio debug生成了elf &amp;amp; map,为什么不生成反汇编呢?

    开发中crash后dump出了现场,需要通过反汇编文件确定crash的lr &amp;amp; pc,大部分使用rtthread studio的环境是windows,在windows下
    发表于 09-18 07:13

    按照官方文档在ART-PI上开启PWM,但是串口输出找不到设备,怎么解决?

    , tim_config.h里也仿照TIM13加入了有关TIM3的代码, stm32h7xx_hal_msp.c里也打开了TIM3的使能, 最后按照官方文档上的代码,拷贝到ART-PI的模板例程里。但是不能发现TIM3的设备
    发表于 09-17 06:27

    如何在 ART-Pi 平台使用 openocd 直接烧录到外部 spi flash?

    ART-Pi 内置的 128Kb flash太小了,我现在在 Linux openocd 烧录程序,请问有没有人成功使用 openocd 可以直接烧写到外部 Quad spi flash 的?
    发表于 09-15 07:32

    ART-PI H750-USB-MSC设备描述符异常的原因?怎么解决?

    主控:STM32H750XBH6- ART-Pi 开发环境:CubeMX+MDK V5.27问题背景:当前已经调试通SD卡+Fatfs文件系统,(通过主控来模拟读卡器)使用单根USB-C线缆连接至
    发表于 06-19 06:52

    rt-thread studio debug生成了elf &amp;amp;amp; map,为什么不生成反汇编?

    开发中crash后dump出了现场,需要通过反汇编文件确定crash的lr &amp;amp; pc,大部分使用rtthread studio的环境是windows,在windows下
    发表于 06-11 06:42

    Banana Pi 发布 BPI-AI2N &amp;amp; BPI-AI2N Carrier,助力 AI 计算与嵌入式开发

    2025年3月19日——Banana Pi 今日正式发布 BPI-AI2N &amp; BPI-AI2N Carrier,基于瑞萨电子(Renesas)同步发布的最新的高性能处理器RZ/V2N
    的头像 发表于 03-19 17:53 1452次阅读
    Banana <b class='flag-5'>Pi</b> 发布 BPI-AI2N &<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>; BPI-AI2N Carrier,助力 AI 计算与嵌入式<b class='flag-5'>开发</b>

    RT-Thread ART-Pi二代正式发布

    自2020年首次亮相以来,ART-Pi一代凭借其强悍的性能、丰富的资源以及极简的开发体验,迅速赢得了嵌入式工程师们的广泛赞誉,被誉为“开发利器”。随着市场对高性能嵌入式开发板需求的不断
    的头像 发表于 02-18 14:31 1143次阅读

    RT-Thread全新发布ART-Pi二代,携手ST H7R芯片!

    ART-Pi一代于2020年首次推出,凭借强悍性能、丰富资源与极简开发体验,迅速成为嵌入式工程师的“开发利器”。为满足不断增长的市场需求和技术挑战,基于STM32H7R的ART-Pi
    的头像 发表于 02-17 18:37 1489次阅读
    <b class='flag-5'>RT</b>-Thread全新发布<b class='flag-5'>ART-Pi</b>二代,携手ST H7R芯片!

    畜牧养殖环境监控系统

    畜牧养殖环境监控系统是现代畜牧业发展的重要组成部分,作为现代畜牧业发展的重要技术支撑,正逐步改变着传统养殖业的面貌。 系统概述 畜牧
    的头像 发表于 02-08 15:35 688次阅读

    “国产双系统”出炉!复旦微FMQL20SM非对称AMP:Linux + 裸机

    “非对称AMP”双系统是什么 AMP(Asymmetric Multi-Processing),即非对称多处理架构。“非对称AMP”双系统
    的头像 发表于 01-24 13:46 1186次阅读
    “国产双<b class='flag-5'>系统</b>”出炉!复旦微FMQL20SM非对称<b class='flag-5'>AMP</b>:Linux + 裸机

    HPLC+HRF双模载波芯片CN8513&amp;amp;amp;CN8514用于智能抄表系统

    HPLC+HRF双模载波芯片CN8513&amp;CN8514用于智能抄表系统
    的头像 发表于 01-03 10:04 2422次阅读
    HPLC+HRF双模载波芯片CN8513&<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;CN8514用于智能抄表<b class='flag-5'>系统</b>