STM32+ESP8266使用MQTTAT固件连接云
最近在做毕设,其中想把STM32连接ESP8266来连接云平台。一开始是想直接编写一个使用MQTT协议上云的代码来完成的,但因为没有物联网的知识,想直接移植别人写好的又很难放进我自己的代码里,导致进度一直被卡。最近发现有使用MQTT上云的AT固件,能直接向ESP8266发送AT命令来连接云服务器,马上就实现了STM32上云。
其实也有其他作者写了相关文章,不过我自认为自己比较菜,写的代码也比较简单,移植也相对简单,下面是相关介绍。
硬件:STM32F103C8T6+ESP8266-01
开发软件:Keil5
云服务器:腾讯云(其实腾讯云和阿里云连接方式差不多)
AT固件下载:AT固件汇总 | 安信可科技
如果和我一样是用ESP8266-01的记得要烧录1471号,因为flash大小是不一样的。烧录教程挺多的,我就不讲了。
STM32 | ESP8266 |
PA2 | RX |
PA3 | TX |
VCC | 3.3V |
EN | 3.3V |
GND | GND |
在云平台注册,新建产品、设备,得到"client_id","username","password"三个物联网参数,就可以进行代码操作啦!
我是用串口2连接ESP8266的RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE); //使能USART1,GPIOA时钟
USART_DeInit(USART2); //复位串口2
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; //USART2_TX PA.9
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出
GPIO_Init(GPIOA, &GPIO_InitStructure); //初始化PA9 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3; //USART2_RX PA.10
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //浮空输入
GPIO_Init(GPIOA, &GPIO_InitStructure); //初始化PA10NVIC_InitStructure.NVIC_IRQChannel = USART2_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=2 ;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;
NVIC_InitStructure.NVIC_IRQChannelCmd = ITsta; //IRQ通道使能
NVIC_Init(&NVIC_InitStructure); //根据指定的参数初始化VIC寄存器 USART_InitStructure.USART_BaudRate = 115200;
USART_InitStructure.USART_WordLength = USART_WordLength_8b;//字长为8位数据格式
USART_InitStructure.USART_StopBits = USART_StopBits_1; //一个停止位
USART_InitStructure.USART_Parity = USART_Parity_No; //无奇偶校验位
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//无硬件数据流控制
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; //收发模式USART_Init(USART2, &USART_InitStructure); //初始化串口
USART_ITConfig(USART2, USART_IT_RXNE, ITsta); //开启中断
USART_Cmd(USART2, ENABLE); //使能串口
配置好STM32后,使用下面7个AT指令,就可以连接云平台了。
AT+RST
AT+RESTORE
AT+CWMODE=1
AT+CIPSNTPCFG=1,8,"ntp.tencent.com"
AT+CWJAP="WiFi名字","WiFi密码"
AT+MQTTUSERCFG=0,1,"NULL","用户名","密码",0,0,""
AT+MQTTCLIENTID=0,"ClienId"
AT+MQTTCONN=0,"连接域名",1883,1
这里要注意的是,发送AT指令之间要延时一段时间。我看别人似乎不需要延时,但我在测试的时候确实是要加延时程序的,不知道是不是我的硬件问题。通过以下代码向ESP8266发送AT指令。
ESP8266_send("AT+RST");
DelayMs(5000);
ESP8266_send("AT+CWMODE=1"); //设置为softAP模式
DelayMs(1000);
ESP8266_send("AT+CIPSNTPCFG=1,8,ntp1.tencent.com");
DelayMs(1000);
ESP8266_send("AT+CWJAP=\"WIFI名\",\"WIFI密码\"" ); //输入WIFI名,WIFI密码
DelayMs(5000);
ESP8266_send("AT+MQTTUSERCFG=0,1,\"NULL\",\"username\",\"passward\",0,0,\"\"" ); //
DelayMs(5000);
ESP8266_send("AT+MQTTCLIENTID=0,\"clienid\"");
DelayMs(3000);
ESP8266_send("AT+MQTTCONN=0,\"产品ID.iotcloud.tencentdevices.com\",1883,1"); //服务器,端口
DelayMs(5000);
ESP8266_send("AT+MQTTSUB=0,\"$thing/down/property/产品ID/设备ID\",1"); //订阅腾讯云下发主题
DelayMs(3000);这是我的向ESP8266发送数据代码
void ESP8266_send( char *s){while (*s) { Usart2_Send(*s); while(USART_GetFlagStatus(USART2,USART_FLAG_TC)!=SET);s ++; }Usart2_Send(0x0d); while(USART_GetFlagStatus(USART2,USART_FLAG_TC)!=SET);Usart2_Send(0x0a); while(USART_GetFlagStatus(USART2,USART_FLAG_TC)!=SET);
}void Usart2_Send(uint16_t ch)
{USART2->DR = (ch & (uint16_t)0x01FF);
}
如果你连接的是腾讯云,那这里直接招模板写就行。但是,如果你要连接阿里云,在clienid填写要小心每一个,都要加转义字符即\,。
当你上述代码没有问题,在STM32烧录后,稍等片刻,云平台就会显示你的设备已经上线。
STM32+ESP8266使用MQTTAT固件连接云相关推荐
- esp8266通过MQTT-AT指令连接阿里云互联网平台并收发数据(保姆级教程)(本文用的型号为esp8266-01s)
1.刷固件 原厂的esp8266一般都是自带AT固件的,因为我们要连接阿里云云平台,所以我们需要去安信可官网下载并刷MQTT+AT固件. https://docs.ai-thinker.com/%E5 ...
- stm32——esp8266物联网开发,连接onenet云平台(http)做智能家居(1)
此处感谢b站up主--彼岸有光我们有船(我认为讲的和江科大老师一样好,如果习惯江科大老师的讲法的朋友们都可以看看捏) 提供的教程和最初的正点原子的源码,因为我学习的是江科大的stm32,所以进行了部分 ...
- STM32+ESP8266+MQTT协议连接阿里云物联网平台
一.环境介绍 单片机采用:STM32F103C8T6 上网方式:采用ESP8266,也可以使用其他设备代替,只要支持TCP协议即可.比如:GSM模块.有线网卡等. 开发软件:keil5 硬件连接功能: ...
- STM32+ESP8266+MQTT协议连接腾讯物联网开发平台
一.环境介绍 单片机采用:STM32F103C8T6 上网方式:采用ESP8266,也可以使用其他设备代替,只要支持TCP协议即可.比如:GSM模块.有线网卡等. 开发软件:keil5 物联网平台: ...
- 52单片机连接ESP8266烧入固件使用MQTT协议将温湿度上传至OneNET云平台
52单片机连接ESP8266烧入固件使用MQTT协议连接OneNET云平台 参考: ---------------------------------------------------------- ...
- 【STM32+ESP8266连接腾讯云物联网开发平台 2】STM32+ESP8266-01S连接腾讯云
文章目录 前言 一.硬件准备 1.ESP8266-01S 2. STM32F103C8T6核心板或者小开发板及其程序下载器 二.软件准备 1.STM32CubeMX 2. MDK (Keil v5) ...
- STM32+ESP8266(ESP-12F)物联网温度计-移植paho MQTT协议连接阿里云
STM32+ESP8266(ESP-12F)物联网温度计-移植paho MQTT协议连接阿里云 目录 STM32+ESP8266(ESP-12F)物联网温度计-移植paho MQTT协议连接阿里云 一 ...
- 学习素材之USART篇——通过使用STM32与ESP8266(esp-01s)连接阿里云系列操作来了解USART协议和寄存器操作
内容 通过使用STM32与ESP8266(esp-01s)连接阿里云系列操作来了解USART协议和寄存器操作 目录 USART详解 一.串口通讯协议简介 串口通讯的物理层 串口通讯的协议层 二.STM ...
- 设备接入ONENET(2)STM32 + ESP8266(MQTT协议)接入云 :使用 OneNET 官方麒麟座开发板例程
重要提示:由于OneNET版本迭代,导致鉴权方式可能变更,若程序无法连接,请参考官方手册或再OneNET论坛搜索相关内容 一.麒麟镇官方资料 麒麟座官方资料整理帖子:开发板资料下载,(长期更新,首次使 ...
最新文章
- google gperf tool【cpu】
- 技术她力量,鹅厂女博士的寻“豹”之旅
- XML的四种解析器(dom,sax,jdom,dom4j)原理及性能比较
- [react] 怎样在react中创建一个事件?
- 计算机操作系统稳定性的因素有哪些,计算机操作系统期末重点复习汇编.docx
- 以数据库思维理解区块链
- Myeclipse----Hibernate环境搭建
- element表格点击行即选中该行复选框
- r 中文乱码_配置R语言环境,这一篇就够了!
- dom影像图形成数字地形图_基于MapMatrix的数字正射影像图制作
- Go Hijack黑科技
- 绝对定位的元素设置百分比时候的参照物都是谁
- mysql sqlyog 乱码_SQLyog中文乱码的解决方法
- 期货市场倒挂什么意思(期货市场倒挂什么意思啊)
- 08、SpringCloud 系列:Nacos - 安装、启动
- Outlook html 图片白色空白,outlook签名设置_解决Outlook中的签名和邮件图片都显示空白的办法_outlook邮件空白...
- 如何制作一个完美的全屏视频H5
- stratum协议原理
- Raptor-数字分解
- 一文带你深入理解【Java基础】· 枚举类