【嵌入式Linux应用开发】设计温湿度采集MCU子系统

1. 概述

? 本篇主要是使用百问 的100ASK_STM32F103_PRO开发板加上ESP8266和DHT11设计一个采集环境温湿度的子系统,将温湿度数据上云,让阿里云服务器转发给订阅了该温湿度数据主体的MQTT客户端,也就是之前做的基于STM32MP157开发板的温湿度监控系统。

温湿度监控系统应用开发所有文章

  1. 【嵌入式Linux应用开发】移植LVGL到Linux开发板
  2. 【嵌入式Linux应用开发】初步移植MQTT到Ubuntu和Linux开发板
  3. 【嵌入式Linux应用开发】SquareLine Studio与LVGL模拟器
  4. 【嵌入式Linux应用开发】温湿度监控系统——绘制温湿度折线图
  5. 【嵌入式Linux应用开发】温湿度监控系统——学习paho mqtt的基本操作
  6. 【嵌入式Linux应用开发】温湿度监控系统——多线程与温湿度的获取显示
  7. 【嵌入式Linux应用开发】设计温湿度采集MCU子系统

适用开发板

? 适用于百问 的100ASK_STM32F103_PRO开发板。

2. 软件平台

? 这个温湿度采集子系统是基于RT-Thread操作系统,使用的ide是RTT的studio,因为可以用它的生态软件包快速实现我们的需求。

3. 配置软件包

? 新建rt-thread studio的STM32F103的工程就不介绍了,依照官方文档做很简单的,下面开始添加和配置软件包。

3.1 配置DHT11

? 如果再RT-Thread Settings的软件包里面搜索不到DHT11的软件包的话,可以去官 的软件包中查看一下分类,然后再去软件包中设置:

在这里面找到DHT11的软件包:

这里选择的是其中一种,也是前面几篇文章用的mqtt库paho mqtt,使能了示例。

3.3 配置AT设备

? 因为我们的方案是使用的ESP8266连接WiFi入 然后再去和阿里云服务器建立连接的,因而就需要使用到ESP8266的库,在RT-Thread Settings里面ESP8266的应用是在AT设备里面设置的,而AT设备也是在IoT-物联 里面的:

可以看到这里添加了一个驱动层的头文件,这是因为是在里面宏定义的,通过此函数可以方便的指定我们用的是哪一组GPIO的哪一个引脚。

? DHT的源码是将读取数据的app注册放到了终端去输入指令调用的,我们期望的是每隔固定周期自动读取,因而可以自己创建一个线程:

这样F103就会每隔大约5s的时间读取一次温湿度数据:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dAKCcSwu-1657613242193)(LinuxApp-7-TempHumiSubSystem/image-20220706103704730.png)]

可以看到数据是放大了10倍的,如果没有精度需求的哈,可以只保留整数位也就是将数据除以10:

4.2 添加MQTT线程

? MQTT使用的AT设备是使用UART3连接的ESP8266,但是我们的源码里面是没有使能和定义UART3及其引脚的,因而我们需要去里面将UART3的设置定义出来:

接着定义一个静态全局变量来表明客户端和服务器是断开还是连接状态,这个标志在paho mqtt的连接成功回调函数和连接断开回调函数中改变:

  • 1-连接状态
  • -1断开状态

随后去中将客户端ID的赋值改成我们宏定义的值,且保活时间周期设置为60s:

【嵌入式Linux应用开发】设计温湿度采集MCU子系统

文章知识点与官方知识档案匹配,可进一步学习相关知识CS入门技能树Linux入门初识Linux25344 人正在系统学习中

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年6月8日
下一篇 2022年6月8日

相关推荐