stm32与esp8266连接,将数据上传到OneNet(MQTT)


前言

本次实验使用的例程来自github,仅做了少量改动
附上github源码
点这里


一、所用器件

(1)STM32F103C8T6

在这里插入图片描述

(2)转串口模块(CH340)

在这里插入图片描述

(3)esp8266-01s

在这里插入图片描述

(4)气体检测模块_MQ

在这里插入图片描述

二、代码分析

(1)接线

STM32 ESP8266
PA2 RX
PA3 TX
PA4 复位
3V3 VCC
GND GND
STM32 DHT11
PA6 DATA
STM32 MQ气体传感器
PA7 AO
STM32 转串口模块
PA9 RX
PA10 TX

(2)代码

<stm32f10x_it.c>:中断处理函数
<usart1.c>:与上位机通信
<usart2.c>:与ESP8266通信,串口2接收中断处理上位机发送来的数据
<timer2.c>:定时器2中断用来发送温湿度数据,10S
<timer3.c>:定时器3中断用来发送心跳包(ping,用于保持和服务器连接,长时间没给服务器发送数据会被踢下线),2s和30s两种模式
<timer4.c>:将串口2接收到的服务器数据依次存放在MQTT接收缓存数组中,50m

(这里仅写出重要的或换一台设备连接时需要改动的地方)
<mqtt.h>
(产品ID、设备ID、鉴权信息)这三个信息需要改动。后面会讲从哪里看这些信息
在创建onenet步骤中的第(6)步、第(10)步。

#define  PRODUCTID            "461722"                                      //产品ID
#define  PRODUCTID_LEN        strlen(PRODUCTID)                             //产品ID长度
#define  DEVICEID             "795884401"                                   //设备ID  
#define  DEVICEID_LEN         strlen(DEVICEID)                              //设备ID长度
#define  AUTHENTICATION       "1234"                                      //鉴权信息  
#define  AUTHENTICATION_LEN    strlen(AUTHENTICATION)                       //鉴权信息长度
#define  S_TOPIC_NAME         "topic_one"                                   //需要订阅的主题  
#define  P_TOPIC_NAME         "topic_two" 
#define  Data_TOPIC_NAME      "$dp"

<wifi.h>
(路由器SSID :你的电脑当前连接的wifi ID名 )
(路由密码:你的电脑当前连接的wifi 密码)

#define SSID   "xxxx"                          //路由器SSID名称
#define PASS   "xxxxx"                    //路由器密码

<main.h>

char *cmdLED_On = "LEDON";      //LED打开
char *cmdLED_Off = "LEDOFF";    //LED关闭

char *cmdDHT11_On = "DHTON";    //温湿度数据传输打开
char *cmdDHT11_Off = "DHTOFF";  //温湿度数据传输关闭

char *ledFlag = "LEDOFF";       //LED状态
int   dhtFlag = 0;		        //温湿度数据传输状态

int main(void) 
{
   
   	

   Delay_Init();          //延时功能初始化              
   Usart1_Init(9600);     //串口1功能初始化,波特率9600
   Usart2_Init(115200);   //串口2功能初始化,波特率115200	
   TIM4_Init(500,7200);   //TIM4初始化,定时时间 500*7200*1000/72000000 = 50ms
   LED_Init();			   //LED初始化
   DHT11_Init();          //初始化DHT11	
   Adc_Init();
   
   WiFi_ResetIO_Init();   //初始化WiFi的复位IO
   IoT_Parameter_Init
评论 41
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值