【HAL库】STM32+ESP8266+Onenet+MQTT,极简工程,hal库移植。
ESP8266+Onenet+MQTT
ESP8266通过MQTT协议连接Onenet。从标准库移到了HAL库,过程有点麻烦,整了一天。做完后整理了一下,这个极简的工程,方便以后开发,也希望能帮助到大家,节约时间。
代码工程:
https://github.com/wyfroom/ESP8266-Onenet-MQTT
该份代码硬件配置:
板子:STM32F103C8T6最小系统板。
外设:串口1用作调试,串口3用作esp8266。
esp8266:淘宝,esp-01s
1 导入.c.h文件(不再赘述,详细见LED部分)
在keil工程中导入之前写好的.c.h文件。这个是我从标准库移倒hal库的,直接从我工程里复制就行,很纯净,没有加多余的东西。下面介绍如何根据个人实际使用情况更改一些参数。
cubemx详细使用教程及所有模块整合见这篇:
【HAL库】HAL库STM32cubemx快速使用

; 2 Cubemx配置
串口1用于调试,串口3用于ESP8266通信,打开中断。
基础的我就不配置了,可以看前面的详细讲解。
3 修改 .c.h 文件
移植时要修改的地方:
1 改所用串口
发送部分:在esp8266.c里,将huart3全部替换为要修改的串口号,比如串口2。

接收部分:用串口中断接收esp8266发来的消息。随便在哪个文件夹填加串口回调函数,我个人是之前专门建了个uart.c文件放串口相关的所有代码。
加入下面的代码(串口号根据个人情况修改)
1 | void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) |
2 改wifi名字和密码

3 改产品ID、设备ID、鉴权信息。

4 测试
添加头文件
1 |
添加初始化
别忘了开串口中断。
1 | HAL_UART_Receive_IT(&huart3,(uint8_t *)&Uart3_RxData, 1); |
连接成功的话,onenet会显示设备在线。串口也会打印成功。


发送数据
1 | OneNet_SendData(); //发送数据 |

要发什么数据,在这里改:

接收数据
1 | dataPtr = ESP8266_GetIPD(0); |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 秋意寒!
评论