本项目通过STM32的C8t6获取DHT11的温湿度数据,以及空气质量传感器MQ135,通过一块ESP8266模块连接wifi,把数据上传到机智云平台,可通过手机APP查看。
1、模块准备
一块STM32F103C8T6一块IIC的OLED模块一个DHT11一个MQ135空气质量模块一块ATK-8266wifi模块一个ST-link下载模块杜邦线若干
2、程序准备
首先,先让C8T6能够在OLED上正常显示温度、湿度、以及空气污染气体传感器。在这里我主要说一下MQ135的计算,至于DHT11如何显示温度湿度。关于MQ135:MQ-135气体传感器所使用的气敏材料是在清洁空气中电导率较低的二氧化锡(Sn02)。当传感器所处环境中存在污染气体时,传感器的电导率随空气中污染气体浓度的增加而增大。使用简单的电路即可将电导率的变化转换为与该气体浓度相对应的输出信号。MQ-135气体传感器对氨气,硫化物,苯系蒸气的灵敏度高,对烟雾和其他有害气体的检测也很理想。这种传感器可检测多种有害气体,是一款适合多种应用的低成本传感器。特点:1.在较宽的浓度范围内对有害气体有良好的灵敏度2.对氨气,硫化物,苯系等气氛灵敏度较高3.长寿命,低成本4.简单的驱动电路
因为我这里要让MQ135显示实时的空气质量所以我选择了模拟量输出,并使用了STM32的AD转换。C文件的函数较多,请阅读原文获取)主函数部分以及计算部分
3、机智云移植
如果可以正常显示温度和湿度以及MQ135的数值了,那下面就开始准备机智云的移植了。首先先到机智云官网注册一个账号,然后登陆首先点击创建个人项目
选择方案,我这里是STM32+WIFi的方案,就选择第一个然后添加数据点温度:Temp,类型为数值,控制方式只读,湿度:Humi,类型为数值,控制方式只读空气质量:MQ135 ,类型数值,只读,范围这些就很好理解了开关类可选择布尔值,比如控制LED
然后保存方案点开基本信息,获取你的密钥然后点击MUC方案,点击修改,把你的密钥粘贴,然后生成代码包点击下载
我用的是标准库,机智云生成的是Hal库,要修改一下,这里我直接给出Usart3和定时器的代码
把机智云生成的Pack解压,复制里面的Gizwits和Ultis到C8t6的目录下然后添加刚刚的Timer usart3.usart3 和Timer的代码过多,请阅读原文获取。然后把这些文件添加到C8t6工程里面,include路径等
然后开始打开gizwits_product.c“
接下来处理Main函数部分由于我这边以及处理好了,我就给你们看就好了
然后是通过按键连接wifi部分
接下里是获取网络时间的部分
主函数部分代码(注:某些你们没有的头文件记得注释掉)
把代码编译通过后就下载到开发板里面然后按下按键,因为我的是c8t6的系统版,有一个按键,你们没有的可以用一个杜邦线接3.3来代替一下。
按下按键进入AIRLINK,然后机智云点击我的设备界面的右上角的+,点击一键配置然后手机连接一个2.4g的wifi,然后等待配置成功
4、效果
开发板运行效果
还可以在官网查看数据变化曲线
关键字:STM32 C8t6 DHT11
引用地址:
通过STM32的C8t6获取DHT11的温湿度数据
推荐阅读最新更新时间:2024-11-09 02:28
毕业设计| STM32版RFID医嘱专用手环
作为医嘱手环,除了有手环的常规功能之外,还有和医院的互动功能: ◇心率、血氧监测 使用MAX30102模块,算法是FFT快速傅里叶变换,同时心率、血氧信息会通过8266WiFi发送给上位机,在动态网页上实时显示。 ◇RFID识别药品 通过按键选择OLED屏幕上的“核验”功能进行核验,核验的过程分为核验RFID标签扇区密码,读取相应扇区存放的数据,再进行字符串对比。如果读出的字符串和手环内部设置的患者编号不同,LED红灯亮起,OLED显示“核验错误”,同时蜂鸣器进行报错,直到用户按下确定键。核验正确则亮绿灯,延时2s消失。同时核验记录会通过8266WiFi发送给上位机。注意:要先在RFID标签相应扇区里写入信息◇ 接收通
[单片机]
STM32 Bootloader 跳转
1. Bootload #define ApplicationAddress 0x08003000 2. App 修改
[单片机]
用Keil编译STM32工程出现下面错误
Keil提示:*.axf: Error: L6967E: Entry point (0x08000000) points to a Thumb instruction but is not a valid Thumb code pointer. 解决办法: 1、菜单 options for target- linker- misc controls加入 --entry Reset_Handler --first __Vectors 2、options for target- asm- Include Paths 然后倒入startup_stm32f10x_hd.s或者startup_stm32f10x_md.s(说明:不同的
[单片机]
使用STM32生成多路的PWM信号
我们可以使用STM32来生成多路的PWM信号。首先我们来了解一下什么是PWM信号,PWM的全称为Pulse width modulation,即脉冲宽度调制,我们通常也称PWM信号为占空比信号。PWM信号包含3个主要属性:占空比、频率、振幅。 信号频率与周期:PWM信号频率F与周期T的关系为 F = 1 / F,也就是说频率和周期互为倒数。例如,我们有一个频率为400Hz的PWM信号,那么每一个PWM周期的时间为2500us。 占空比:就是PWM方波信号高电平占整个信号周期的比例。例如:PWM周期为2500us,而每一个高电平的时长为1000us,那么占空比为1000 / 2500 = 40%; 振幅:振幅就是高低电平差,也就
[单片机]
适合STM32的有哪些嵌入式操作系统
基于STM平台且满足实时控制要求操作系统,有以下5种可供移植选择。分别为μClinux、μC/OS-II、eCos、FreeRTOS和都江堰操作系统(djyos)。下面分别介绍这五种嵌入式操作系统的特点及不足。 1、μClinux μClinux是一种优秀的嵌入式Linux版本,其全称为micro-control Linux,从字面意思看是指微控制Linux。同标准的Linux相比,μClinux的内核非常小,但是它仍然继承了Linux操作系统的主要特性,包括良好的稳定性和移植性、强大的网络功能、出色的文件系统支持、标准丰富的API,以及TCP/IP网络协议等。因为没有MMU内存管理单元,所以其多任务的实现需要一定技巧。 μC
[单片机]
实战经验 | 如何在用户应用中开启 LoRa CAD
01 LoRa CAD 应用场景举例 在 STM32WL LoRa 某些应用中,尤其是电池供电的设备上,需要按需发送数据,如下发指令,让 STM32WL LoRa 发送数据,或做相应的操作。为了降低功耗,STM32WL不能一直处于接收状态,这样功耗会很高。我们可以开启 LoRa CAD(信道活动检测)功能,STM32WL 通过开启 CAD 功能,检测前导码的前 1/2/4/8/16 个码元,当检测到 LoRa(唤醒)信号后再开启接收,否则系统进入低功耗,这样会极大的降低系统的整体功耗。 02 STM32WL LoRa CAD 原理和驱动 LoRa 信号可以在低于噪声强度的情况下被正确解调。所以,仅
[单片机]
STM32 ADC基础内容
ADC,Analog-to-Digital Converter(模数转换器),其应用非常广泛,比如温度、湿度、压力、声音等传感器领域。 ADC的类型很多,STM32内部集成的ADC为逐次逼近型。STM32虽然是通用MCU芯片,但它内部集成的ADC也非常出色,不比一些专用ADC芯片差。 1 STM32 ADC 基础内容 STM32内部集成的ADC与型号有关,有16位、12位ADC,内部集成ADC多达4个,通道数多达40个,甚至更多。 1. ADC分辨率 分辨率决定了ADC的转换精度,按理说分辨率越高越好,但价格更贵。 STM32内部集成的ADC最高16位,2的16次方,即65536的分辨率。只有少数STM32才集成16位分辨
[单片机]
【STM32】解决引脚复用成PWM开漏输出峰值达不到外部上拉的电压
项目场景: 因为项目的一个功能需求,需要输出一个高电平为5V的PWM。 问题描述: 发现输出的PWM高电平最高只有4V不到的样子,很接近于4V。实测过普通开漏输出,高电平完全可以达到外部上拉的5V。HAL库也试过了,也是完全可以达到5V的,但是标准库的配置一直上不去。 原因分析: 仔细对比发现没啥异常,配的都是对的,但是可以肯定的是,肯定还是配置,因为HAL库可以实现,那就说明一定还是某个地方配的有问题。最后才知道开漏输出脚必须配置为浮空,不配置的话实测默认的是内部上拉。 1.内部下拉: 2.内部上拉: 3.浮空: 解决方案: 一句话:GPIO_InitStructure.GPIO_PuPd = GPIO_
[单片机]