首页 > 其他分享 >STM32封装ESP8266一键配置函数:实现AP模式和STA模式切换、服务器与客户端创建

STM32封装ESP8266一键配置函数:实现AP模式和STA模式切换、服务器与客户端创建

时间:2024-07-06 18:27:00浏览次数:3  
标签:配置 ESP8266 cmd 模式 AP STA

鱼弦:公众号【红尘灯塔】,CSDN博客专家、内容合伙人、新星导师、全栈领域优质创作者 、51CTO(Top红人+专家博主) 、github开源爱好者(go-zero源码二次开发、游戏后端架构 https://github.com/Peakchen)

STM32封装ESP8266一键配置函数:实现AP模式和STA模式切换、服务器与客户端创建

1. 介绍

STM32是一种功能强大的微控制器,而ESP8266则是一款经济实惠的Wi-Fi模组。两者结合可以实现物联网设备的快速开发和应用。本文介绍了一种STM32封装ESP8266的一键配置函数,可以轻松实现AP模式和STA模式切换,以及服务器和客户端创建,简化物联网设备的配置过程。

2. 原理详解

该一键配置函数主要包含以下功能:

  • AT指令解析: 通过串口与ESP8266通信,解析其返回的AT指令,获取设备状态和配置信息。
  • 模式切换: 根据用户需求,切换ESP8266的AP模式或STA模式。
  • Wi-Fi配置: 设置ESP8266的Wi-Fi SSID、密码、连接模式等参数。
  • 服务器配置: 设置ESP8266的MQTT服务器地址、端口号、用户名、密码等参数。
  • 客户端配置: 设置ESP8266的MQTT客户端ID、主题等参数。

3. 应用场景解释

该一键配置函数可以应用于各种物联网设备的配置,例如:

  • 智能家居设备: 可以将ESP8266模组嵌入到智能家居设备中,如灯具、插座、空调等,通过一键配置函数快速连接到Wi-Fi网络和MQTT服务器,实现远程控制和数据采集。
  • 工业传感设备: 可以将ESP8266模组嵌入到工业传感设备中,如温湿度传感器、压力传感器等,通过一键配置函数连接到云平台,实现实时数据监测和分析。
  • 农业物联网设备: 可以将ESP8266模组嵌入到农业物联网设备中,如土壤墒情监测仪、气象站等,通过一键配置函数连接到农业物联网平台,实现农田环境监测和数据管理。

在 STM32 中封装一个一键配置 ESP8266 的函数,实现 AP 模式和 STA 模式切换,以及服务器和客户端的创建,可以使用以下步骤:

  1. 硬件连接

首先需要将 STM32 和 ESP8266 通过串口连接,STM32 将通过串口与 ESP8266 进行通信,发送 AT 指令控制 ESP8266。

  1. 编写 ESP8266 配置函数

在 STM32 程序中编写一个配置 ESP8266 的函数,该函数将完成以下工作:

  • 切换 AP 模式和 STA 模式
  • 创建服务器或连接到服务器
  • 创建客户端或连接到客户端

下面是一个示例函数:

#include "string.h"

/* 发送 AT 指令 */
void sendATCommand(UART_HandleTypeDef *huart, char *cmd, uint32_t timeout)
{
    HAL_UART_Transmit(huart, (uint8_t *)cmd, strlen(cmd), timeout);
}

/* 配置 ESP8266 */
void configESP8266(UART_HandleTypeDef *huart, uint8_t mode, char *ssid, char *password, char *serverIP, uint16_t serverPort)
{
    char cmd[128];

    /* 重置 ESP8266 */
    sendATCommand(huart, "AT+RST\r\n", 1000);

    /* 切换模式 */
    if (mode == 1) { // AP 模式
        sprintf(cmd, "AT+CWMODE=2\r\n"); // 设置为 AP 模式
        sendATCommand(huart, cmd, 1000);

        sprintf(cmd, "AT+CWSAP=\"%s\",\"%s\",5,3\r\n", ssid, password); // 配置 AP 参数
        sendATCommand(huart, cmd, 1000);

        sprintf(cmd, "AT+CIPMUX=1\r\n"); // 允许多连接
        sendATCommand(huart, cmd, 1000);

        sprintf(cmd, "AT+CIPSERVER=1,%d\r\n", serverPort); // 创建服务器
        sendATCommand(huart, cmd, 1000);
    } else { // STA 模式
        sprintf(cmd, "AT+CWMODE=1\r\n"); // 设置为 STA 模式
        sendATCommand(huart, cmd, 1000);

        sprintf(cmd, "AT+CWJAP=\"%s\",\"%s\"\r\n", ssid, password); // 连接到路由器
        sendATCommand(huart, cmd, 1000);

        sprintf(cmd, "AT+CIPMUX=1\r\n"); // 允许多连接
        sendATCommand(huart, cmd, 1000);

        sprintf(cmd, "AT+CIPSTART=4,\"%s\",%d\r\n", serverIP, serverPort); // 连接到服务器
        sendATCommand(huart, cmd, 1000);
    }
}

该函数有以下参数:

  • huart: UART 句柄,用于与 ESP8266 通信。
  • mode: 模式选择,1 表示 AP 模式,0 表示 STA 模式。
  • ssid: WiFi 网络 SSID。
  • password: WiFi 密码。
  • serverIP: 服务器 IP 地址,仅在 STA 模式下使用。
  • serverPort: 服务器端口号。

在该函数中,我们首先重置 ESP8266,然后根据 mode 参数设置 AP 模式或 STA 模式。在 AP 模式下,我们配置 AP 参数、允许多连接,并创建服务器。在 STA 模式下,我们连接到路由器、允许多连接,并连接到服务器。

  1. 调用配置函数

在 STM32 主程序中,可以根据需要调用上述配置函数,例如:

int main(void)
{
    /* 初始化 */
    HAL_Init();
    SystemClock_Config();
    MX_GPIO_Init();
    MX_USART2_UART_Init();

    /* 配置 ESP8266 为 AP 模式 */
    configESP8266(&huart2, 1, "ESP8266_AP", "123456789", NULL, 80);

    /* 或者配置 ESP8266 为 STA 模式 */
    // configESP8266(&huart2, 0, "your_ssid", "your_password", "192.168.1.100", 80);

    while (1)
    {
        /* 其他代码 */
    }
}

在上面的示例中,我们调用 configESP8266 函数将 ESP8266 配置为 AP 模式,AP 名称为 "ESP8266_AP",密码为 "123456789",端口号为 80。您也可以将其配置为 STA 模式,连接到指定的路由器和服务器。

  1. 测试

将编译好的程序烧录到 STM32 开发板上,插上 ESP8266 模块,上电运行。如果一切正常,ESP8266 将根据配置进入 AP 模式或 STA 模式,并创建服务器或连接到服务器。

需要注意的是,上述代码只是一个示例,在实际使用时可能需要根据具体情况进行调整和优化。例如,您可能需要添加更多的错误处理、超时重试等机制,以确保程序的稳定性。此外,您还需要编写相应的服务器或客户端程序,与 ESP8266 进行数据交互。

4. 文献材料链接

5. 应用示例产品

  • 智能家居控制器
  • 工业物联网网关
  • 农业物联网监测系统

6. 总结

STM32封装ESP8266的一键配置函数可以简化物联网设备的配置过程,降低开发难度,加速物联网应用的落地。

7. 影响

该一键配置函数的推广应用可以推动物联网产业的发展,使物联网设备更容易配置和使用,促进万物互联的实现。

8. 未来扩展

未来,可以考虑将该一键配置函数扩展到更多类型的物联网设备,并支持更多功能,如固件升级、故障诊断等,进一步提升物联网设备的易用性和管理性。

标签:配置,ESP8266,cmd,模式,AP,STA
From: https://blog.csdn.net/feng1790291543/article/details/139907002

相关文章

  • ArcPy|使用ArcPy实现区域统(ZonalStatisticsAsTable)计并将统计结果添加到原有要素的属
    ArcPy|使用ArcPy实现按区域统计并将统计结果添加到原有要素的属性表​ 使用ArcPy快速实现按区域统计,并将统计结果添加到原有属性表,因为ArcPy的接口中并没有直接添加这一选项,这里是选择输出了一个中间dbf文件,再将中间dbf文件与原有要素连接来实现。#-*-coding:utf-8-*-"""P......
  • 每周一个技能点:责任链模式实现数据多重校验
    定义:责任链模式(ChainofResponsibility):使多个对象都有机会处理同一请求,从而避免请求的发送者和接受者之间的耦合关系,每个对象都是一个处理节点,将这些对象连成一条链,并沿着这条链传递该请求。原始概念中,是直到链上的某个接收对象能够处理它为止。实际使用中,链上的所有对象......
  • 【设计模式之美】改善代码质量之:代码可读性
    文章目录1.把代码分割成更小的单元块2.避免函数参数过多3.勿用函数参数来控制逻辑(ing)4.函数设计要职责单一5.移除过深的嵌套层次6.学会使用解释性变量1.把代码分割成更小的单元块大部分人阅读代码的习惯都是,先看整体再看细节。所以,我们要有模块化和抽象思......
  • C++中的设计模式
    要搞清楚设计模式,首先得要了解UML中的类的一些关系模型。一.UML图中与类的层次关系UML关系:继承关系(泛化关系);组合关系;聚合关系;关联关系;依赖关系;以上关系强度依次减弱。1.继承关系继承关系是最直接的父子关系,如麻雀和老鹰都继承自鸟类,属于子类继承自父类,所以UML中子类实......
  • 关注推送---Feed流,推模式实现的个人分析及其思考。
    本篇文章记录我们实际开发过程中,关注推送场景的个人思考,以及解析。文章目录前言一、关注推送是什么?是什么是Feed流?二、解决关注推送问题的技术方案1.理论模型的选取2.数据类型的选取三、理论模型的选取三、数据类型的选取总结前言⁣⁣⁣⁣⁣⁣⁣⁣本篇文章......
  • 盲返模式:消费即可参与盲返的商业模式
    在当今电商行业的浩瀚蓝海中,盲返模式以其独树一帜的魅力,正悄然引领一股新的消费风尚。这一模式颠覆了传统购物的单一体验,将购物行为转化为一种蕴含惊喜与期待的互动游戏,为电商平台注入了前所未有的活力。盲返模式的精髓,在于其巧妙地将用户购物行为与后续订单的盈利相结合,创造......
  • [图解]企业应用架构模式2024新译本讲解19-数据映射器1
    100:00:01,720-->00:00:03,950下一个我们要讲的就是200:00:04,660-->00:00:07,420数据映射器这个模式300:00:09,760-->00:00:13,420这个也是在数据源模式里面400:00:13,430-->00:00:14,820用得最广泛的500:00:16,250-->00:00:19,170大多数都是用600:......
  • AI绘画Stable Diffusion画全身图总是人脸扭曲?ADetailer插件实现一键解决!
    大家好,我是向阳你是否遇到过SD生成的人物脸部扭曲、甚至令人恶心的情况?也曾感到束手无策?别担心,这份教程专为你而来。在使用SD生成人物全身照时,你可能经常发现人物的脸部会出现扭曲问题。这是因为人物面部像素占比过少,导致无法充分还原面部信息。解决这个问题的常见方法是使......
  • Rockstar游戏服务不可用?按这个步骤操作试一下
    作为荒野大镖客的发行商,Rockstar一直致力于开发高品质的游戏,近十年来发行了多款火爆全球的精品游戏。不管是侠盗猎车手系列还是荒野大镖客系列,都有着大批忠实玩家。但最近一些玩家却遇到了Rockstar游戏服务不可用的问题,具体表现为打开游戏后出现报错提示,提示内容为Rockstar游......
  • 单例模式的实现
    1.引言1.1背景当在应用程序中需要控制资源共享、进行配置管理和日志记录等操作时,一种常见的需求是希望通过一个全局访问点,让程序无论在哪个地方,只要能够访问到,就可以通过这个全局访问点,来获取相关实例信息。为满足这种需求,我们可以采用单例模式(SingletonPattern)。单例......