STM32之串口通信WIFI上云

一、W模块的原理与应用

  • 基本概念

如果打算让硬件设备可以通过云服务器进行通信(数据上报/指令下发),像主流的云服务器有阿里云、腾讯云、华为云,以及其他物联网云平台:巴法云.......,硬件设备需要通过TCP/IP协议栈和云服务器建立连接。

通信的前提是需要建立链接,建立连接的前提是开发板有能力连接云服务器,需要借助WIFI模组实现,比较主流的是ESP系列的WIFI模块(ESP8266-01S)。

  • 模式说明

  • 硬件接线

  • 指令说明

巴法云平台提供了ESP8266的接入文档,大家可以根据巴法云平台的接入文档对WIFI模块进行参数设置。

  1. 测试指令

  1. 设置模式

  1. 连接热点

  1. 使能透传

  1. 建立连接

  1. 进入透传

二、物联网云平台的基本概述

随着物联网技术的快速发展,越来越多的设备需要接入网络以实现智能化功能,物联网平台应运而生。

物联网云平台(IoT Cloud Platform)是物联网生态系统中的核心组件,它通过提供一系列功能和服务,连接物联网设备、处理数据、支持应用开发,并确保整个系统的安全性和可扩展性。

  1. 创建主题

  1. 订阅主题

当硬件设备订阅主题成功后,则属于主题的订阅者,此时如果云服务器向该主题推送消息,则所有订阅了该主题的设备都会收到该消息。

注意:向巴法云发送消息时,必须按照以上的字段进行消息的构造,并且每一条消息都必须以”\r\n”作为结束标志。

  1. 发布消息
  1. 远程控制

可以使用巴法云平台提供的微信小程序(巴法云)推送消息,当然也可以选择把巴法云接入到米家APP,这样可以通过小爱同学进行语音控制。

作业:要求通过巴法云的微信小程序点击灯泡设备(小程序会推送消息给云服务器),要求本地设备订阅灯泡主题,所以本地设备作为订阅者,可以收到来自云服务器的消息,要求根据云服务器下发的指令来对开发板的LED灯进行控制。

提示:巴法云和本地设备的TCP长连接是60s左右,所以应该确保60s内维持心跳,所以可以使用定时器实现心跳的定时发送。

三、设备利用ESP8266获取心知天气

  • 登录账号

  • 添加产品

  • 得到秘钥

  • 使用流程

  • 程序设计

大家可以看到,可以利用HTTP服务向心知天气的服务器来请求天气信息,HTTP协议是支持GET请求。

接口地址:api.seniverse.com/v3/weather/now.json?key=your_api_key&location=beijing&language=zh-Hans&unit=c

作业:自己注册心知天气的账号,利用HTTP协议的GET请求获取广州的天气信息并输出到PC端的上位机软件。

四、JSON格式的构造与解析

  • 基本概念

一般使用HTTP协议或者MQTT协议,服务器或者客户端在网络中传输数据时都采用JSON格式(JavaScript Object Notation,JavaScript对象表示法),JSON不是编程语言,JSON是一种轻量的数据交换方式,常用于网络通信中。

  • 数据格式

JSON的格式中一般是由对象和数组构成,对象中包含键值对的无序序列,并且在JSON格式中对象是用 { } 表示的,键值对是由键和值组成,键的名称必须是字符串 “ ” ,值的类型则是任意的( 整数、浮点数、字符串、NULL、布尔型、对象、数组 ), 并且如果值的类型是对象或者数组,是可以进行嵌套的。在JSON格式中数组是用 [ ] 表示的。 一般JSON格式最外层都是一个对象。 另外,对象中如果有多个键值对,则中间使用英文逗号进行分隔,并且键值对中 键和值 中间使用冒号 : 。一般服务器的响应数据的格式都采用JSON格式,并且是以字符串的形式进行返回。

  • 移植流程

所以可以在MCU中移植cJSON库,cJSON库采用了C语言进行设计,可以对JSON格式的数据进行解析以及可以构造JSON格式,需要从代码托管网站Github、Sourceforge、Gitee下载开源的库源码包。

作业:移植cJSON库到STM32工程中,并对心知天气的JSON数据进行JSON解析,获取广州的温度,并输出到串口调试助手。

拓展作业:要求利用WIFI模块实现接入AI大模型,本地设备把提问内容发给大模型,大模型把响应结果通过串口进行接收。 提示:定义的缓冲区要大一些,可能需要修改启动文件的堆栈大小。

### STM32CubeProgrammer 配置 WIFI 模组 实现 智慧路灯 数据 上 #### 工具与环境准备 为了实现智慧路灯数据上的功能,可以采用STM32CubeProgrammer工具来配置WIFI模组。STM32CubeProgrammer是一款功能强大的软件工具,用于管理和更新STM32微控制器及其外设的固件[^1]。 以下是具体的流程: #### 使用STM32CubeMX初始化项目 首先,在STM32CubeMX中创建一个新的工程并选择目标开发板(如NUCLEO-L432KC)。设置GPIO引脚为输入/输出模式以便于后续操作,并生成初始代码框架。对于不同的主板型号(例如引用中的STM32F407ZET6),需调整相应的参数配置以适配具体硬件[^2]。 #### 安装驱动程序及固件升级 启动STM32CubeProgrammer应用程序后,连接好您的开发板至PC机并通过USB线缆供电。接着按照提示安装必要的驱动文件确保通信正常建立起来之后再执行下一步骤即下载最新的ESP8266或者同类WiFi模块专用固件版本到指定位置完成刷写过程。 #### 编码实现网络传输逻辑 在Keil MDK环境下打开由前面步骤产生的源代码目录结构下的main.c文件添加如下所示伪代码片段用于演示如何发送采集自传感器节点处获取来的光照强度数值给端服务器保存记录下来供进一步分析处理之用: ```c #include "stm32l4xx_hal.h" UART_HandleTypeDef huart2; void SystemClock_Config(void); static void MX_GPIO_Init(void); static void MX_USART2_UART_Init(void); int main(void){ HAL_Init(); SystemClock_Config(); MX_GPIO_Init(); MX_USART2_UART_Init(); char buffer[50]; while (1) { // 假设这里是从ADC读取到了光强值lightValue uint16_t lightValue = ReadLightSensor(); sprintf(buffer, "{\"light\":%d}", lightValue); SendDataToServer((uint8_t *)buffer,strlen(buffer)); HAL_Delay(10000); //每十秒上传一次数据 } } // 发送函数模拟 void SendDataToServer(uint8_t *data,uint16_t length){ HAL_UART_Transmit(&huart2,data,length,HAL_MAX_DELAY); } ``` 上述代码展示了基本的数据打包方式并将结果通过串口传递出去的过程。 #### ThingsCloud 平台对接说明 最后一步就是将这些来自本地MCU计算后的消息转发至远端ThingsCloud服务平台上去存储展示出来形成完整的闭环控制系统架构图样例[^3]: - 注册ThingCloud账户获得API密钥等相关认证凭证信息; - 修改原有程序增加HTTP POST请求部分负责实际提交动作的发生频率设定等细节问题解决办法探讨交流分享经验教训总结提升效率质量降低成本风险控制措施建议方案制定实施计划安排进度跟踪反馈机制建设完善服务体系优化改进创新思路开拓视野增长见识提高水平增强竞争力赢得市场先机占据有利地位取得成功业绩创造价值回报社会贡献力量履行责任使命担当时代重任不负韶华砥砺前行共创辉煌未来! ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值