前要:
小小整理出了一篇STM32F103C8T6的博客,本文没有过多原理讲解,主要是带着大家走一遍传感器数据上传的步骤,重实践而不讲解原理
硬件:
本次使用到的硬件信息如下:
STM32F103C8T6
ST-Link下载器
DHT-11
ESP8266
杜邦线
连线方式:
STM32F103C8T6 | ESP8266 | DHT-11 |
A2 | RXD | ---------------------------- |
A3 | TXD | |
A4 | --------------- | data |
此部分是esp连接stm的引脚代码
此处为DHT-11的data引脚与STM32引脚连接代码
OneNET云平台部分
OneNET网站:
注册账号登录后点击账号信息
之后在进入账号信息页面后找到多协议接入:
刚刚进去,我这里使用的是MQTT协议,因为是刚刚创建的号是没有创建过产品的,这里需要我们新建产品
创建产品的信息可以随便填,反正我每次都是随便写的
点击确定后显示创建成功,然后点击添加设备
进入产品界面后因为是新建的,里面没啥东西,然后我们要新建设备,在右边框框里,新建设备过后会显示在下方的方框中
这里添加设备需要填写设备名称与鉴权信息,鉴权信息之后要用到,所以写的简单点,别太麻烦了。然后点击添加就可以了
添加之后的界面是这样的,目前设备出于离线状态,点击详情可以查看信息
此时,新建一个文本,我们把这里的几个信息记一下
这些信息在这里查看:
记录后我们的云平台接受数据的部分就差不多了
硬件代码
我个人每次都是买硬件的时候和商家要这个硬件连接STM32F103C8T6的代码,一些简单的传感器可以这些代码获取数据,然后根据一些模板把数据填进包里打包上传云平台,当然,这里只局限于一些简单的传感器,也可能鄙人技术限制,眼界不够开阔
我们所要修改的部分如下:
框框中引号里面填写wifi的名称与名字
onenet.c代码如下:
这里上面三个就是我们刚刚记在记事本里的信息
DHT-11使用
#ifndef __DHT11_H
#define __DHT11_H
#include "stm32f10x.h"
#include "delay.h"
#define HIGH 1
#define LOW 0
#define DHT11_CLK RCC_APB2Periph_GPIOA
#define DHT11_PIN GPIO_Pin_4
#define DHT11_PORT GPIOA
//带参宏,可以像内联函数一样使用,输出高电平或低电平
#define DHT11_DATA_OUT(a) if (a) \
GPIO_SetBits(DHT11_PORT,DHT11_PIN);\
else \
GPIO_ResetBits(DHT11_PORT,DHT11_PIN)
//读取引脚的电平
#define DHT11_DATA_IN() GPIO_ReadInputDataBit(DHT11_PORT,DHT11_PIN)
typedef struct
{
uint8_t humi_int; //湿度的整数部分
uint8_t humi_deci; //湿度的小数部分
uint8_t temp_int; //温度的整数部分
uint8_t temp_deci; //温度的小数部分
uint8_t check_sum; //校验和
}DHT11_Data_TypeDef;
void DHT11_GPIO_Config(void);
static void DHT11_Mode_IPU(void);
static void DHT11_Mode_Out_PP(void);
uint8_t Read_DHT11(DHT11_Data_TypeDef *DHT11_Data);
static uint8_t Read_Byte(void);
#endif /* __DHT11_H */
通过函数“Read_DHT11"实现数据的获取,其中,把温湿度等数据打包成结构体,可以在外部通过结构体各个部分的数据获得相关环境信息。
通过这两个地方可以很直观的看到如何获取DHT11的的
这里写改好后我们进行编译
没有error就行
然后ST-Link连接STM32F103C8T6和电脑,点击下载
下载完成后等一会,会先连接上WIFI与云平台。
可以看到,现在云平台设备显示在线状态。
点击数据流可以查看上传的数据信息
以上就是本篇博客全部信息,如对源码有需求,可扫描下方二维码关注公众号,发送”单片机-温湿度上传OneNET",获得网盘地址。