最近在做毕设,其中想把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固件连接云相关推荐

  1. esp8266通过MQTT-AT指令连接阿里云互联网平台并收发数据(保姆级教程)(本文用的型号为esp8266-01s)

    1.刷固件 原厂的esp8266一般都是自带AT固件的,因为我们要连接阿里云云平台,所以我们需要去安信可官网下载并刷MQTT+AT固件. https://docs.ai-thinker.com/%E5 ...

  2. stm32——esp8266物联网开发,连接onenet云平台(http)做智能家居(1)

    此处感谢b站up主--彼岸有光我们有船(我认为讲的和江科大老师一样好,如果习惯江科大老师的讲法的朋友们都可以看看捏) 提供的教程和最初的正点原子的源码,因为我学习的是江科大的stm32,所以进行了部分 ...

  3. STM32+ESP8266+MQTT协议连接阿里云物联网平台

    一.环境介绍 单片机采用:STM32F103C8T6 上网方式:采用ESP8266,也可以使用其他设备代替,只要支持TCP协议即可.比如:GSM模块.有线网卡等. 开发软件:keil5 硬件连接功能: ...

  4. STM32+ESP8266+MQTT协议连接腾讯物联网开发平台

    一.环境介绍 单片机采用:STM32F103C8T6 上网方式:采用ESP8266,也可以使用其他设备代替,只要支持TCP协议即可.比如:GSM模块.有线网卡等. 开发软件:keil5 物联网平台: ...

  5. 52单片机连接ESP8266烧入固件使用MQTT协议将温湿度上传至OneNET云平台

    52单片机连接ESP8266烧入固件使用MQTT协议连接OneNET云平台 参考: ---------------------------------------------------------- ...

  6. 【STM32+ESP8266连接腾讯云物联网开发平台 2】STM32+ESP8266-01S连接腾讯云

    文章目录 前言 一.硬件准备 1.ESP8266-01S 2. STM32F103C8T6核心板或者小开发板及其程序下载器 二.软件准备 1.STM32CubeMX 2. MDK (Keil v5) ...

  7. STM32+ESP8266(ESP-12F)物联网温度计-移植paho MQTT协议连接阿里云

    STM32+ESP8266(ESP-12F)物联网温度计-移植paho MQTT协议连接阿里云 目录 STM32+ESP8266(ESP-12F)物联网温度计-移植paho MQTT协议连接阿里云 一 ...

  8. 学习素材之USART篇——通过使用STM32与ESP8266(esp-01s)连接阿里云系列操作来了解USART协议和寄存器操作

    内容 通过使用STM32与ESP8266(esp-01s)连接阿里云系列操作来了解USART协议和寄存器操作 目录 USART详解 一.串口通讯协议简介 串口通讯的物理层 串口通讯的协议层 二.STM ...

  9. 设备接入ONENET(2)STM32 + ESP8266(MQTT协议)接入云 :使用 OneNET 官方麒麟座开发板例程

    重要提示:由于OneNET版本迭代,导致鉴权方式可能变更,若程序无法连接,请参考官方手册或再OneNET论坛搜索相关内容 一.麒麟镇官方资料 麒麟座官方资料整理帖子:开发板资料下载,(长期更新,首次使 ...

最新文章

  1. google gperf tool【cpu】
  2. 技术她力量,鹅厂女博士的寻“豹”之旅
  3. XML的四种解析器(dom,sax,jdom,dom4j)原理及性能比较
  4. [react] 怎样在react中创建一个事件?
  5. 计算机操作系统稳定性的因素有哪些,计算机操作系统期末重点复习汇编.docx
  6. 以数据库思维理解区块链
  7. Myeclipse----Hibernate环境搭建
  8. element表格点击行即选中该行复选框
  9. r 中文乱码_配置R语言环境,这一篇就够了!
  10. dom影像图形成数字地形图_基于MapMatrix的数字正射影像图制作
  11. Go Hijack黑科技
  12. 绝对定位的元素设置百分比时候的参照物都是谁
  13. mysql sqlyog 乱码_SQLyog中文乱码的解决方法
  14. 期货市场倒挂什么意思(期货市场倒挂什么意思啊)
  15. 08、SpringCloud 系列:Nacos - 安装、启动
  16. Outlook html 图片白色空白,outlook签名设置_解决Outlook中的签名和邮件图片都显示空白的办法_outlook邮件空白...
  17. 如何制作一个完美的全屏视频H5
  18. stratum协议原理
  19. Raptor-数字分解
  20. 一文带你深入理解【Java基础】· 枚举类

热门文章

  1. 物流快递商家寄件运力查询接口API代码实例
  2. phpspreadsheet 中文文档(七)技巧和诀窍
  3. 计算机没网络怎么更新网卡驱动,电脑网卡驱动更新 怎么更新网卡驱动(图文)...
  4. 2022年高考全国甲卷英语作文保护海洋
  5. 3Dmax场景小房子—打造完整还原游戏场景
  6. js高级面试题总结(es6)
  7. VUE组件日时分秒倒计时
  8. 今天是2022年5月21日
  9. 为什eclipse中调试的时候总是不弹出调试界面而是安装运行
  10. 流水线-流水线相关计算