了解AT指令以及STM32F103如何通过ESP8266连接到WiFi

简介: AT指令是一组用于控制调制解调器的命令,最早由Hayes公司为其智能调制解调器开发。如今,AT指令已被广泛应用于各种通信模块中,包括GSM、Bluetooth和WiFi模块。AT指令通常以“AT”开头,后跟特定的命令和参数。通过这些指令,我们可以执行一系列操作,如设置网络参数、发送数据和查询状态等。

在嵌入式开发中,实现设备联网是一个非常重要的功能。ESP8266是一款流行的WiFi模块,因其低成本和强大的功能而备受青睐。通过使用AT指令,我们可以轻松地与ESP8266进行通信,并使其连接到WiFi网络。在本文中,我们将介绍AT指令的基本概念,并详细说明如何使用STM32F103通过ESP8266连接到WiFi。

什么是AT指令?

AT指令是一组用于控制调制解调器的命令,最早由Hayes公司为其智能调制解调器开发。如今,AT指令已被广泛应用于各种通信模块中,包括GSM、Bluetooth和WiFi模块。AT指令通常以“AT”开头,后跟特定的命令和参数。通过这些指令,我们可以执行一系列操作,如设置网络参数、发送数据和查询状态等。

常用的ESP8266 AT指令

在使用ESP8266时,有几个常用的AT指令需要了解:

  • AT: 测试连接,返回“OK”表示模块正常工作。
  • AT+RST: 重启模块。
  • AT+CWMODE: 设置WiFi模式(1:Station模式,2:SoftAP模式,3:SoftAP+Station模式)。
  • AT+CWJAP: 连接到指定的WiFi网络(例如:AT+CWJAP="SSID","PASSWORD")。
  • AT+CIPSTART: 启动TCP或UDP连接。
  • AT+CIPSEND: 发送数据。
  • AT+CIPCLOSE: 关闭连接。

STM32F103通过ESP8266连接到WiFi

为了使STM32F103通过ESP8266连接到WiFi,我们需要遵循以下步骤:

硬件连接

  1. 连接ESP8266到STM32F103
    • 将ESP8266的VCC连接到3.3V电源。
    • 将GND连接到地。
    • 将TX连接到STM32F103的RX引脚。
    • 将RX连接到STM32F103的TX引脚(注意电平匹配,ESP8266工作在3.3V,而STM32F103的引脚可能是5V,需要电平转换)。

软件配置

  1. 初始化串口通信
    在STM32F103上初始化一个串口用于与ESP8266通信。可以使用HAL库或标准外设库(SPL)进行配置。以下是一个简单的HAL库初始化示例:

    UART_HandleTypeDef huart1;
    
    void MX_USART1_UART_Init(void) {
         
        huart1.Instance = USART1;
        huart1.Init.BaudRate = 115200;
        huart1.Init.WordLength = UART_WORDLENGTH_8B;
        huart1.Init.StopBits = UART_STOPBITS_1;
        huart1.Init.Parity = UART_PARITY_NONE;
        huart1.Init.Mode = UART_MODE_TX_RX;
        huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
        huart1.Init.OverSampling = UART_OVERSAMPLING_16;
        if (HAL_UART_Init(&huart1) != HAL_OK) {
         
            Error_Handler();
        }
    }
    
  2. 发送AT指令
    使用UART发送AT指令并接收响应。以下是一个简单的发送和接收函数:

    void sendATCommand(char* cmd) {
         
        HAL_UART_Transmit(&huart1, (uint8_t*)cmd, strlen(cmd), HAL_MAX_DELAY);
        HAL_UART_Transmit(&huart1, (uint8_t*)"\r\n", 2, HAL_MAX_DELAY);
    }
    
    void receiveResponse(char* buffer, uint16_t bufferSize) {
         
        HAL_UART_Receive(&huart1, (uint8_t*)buffer, bufferSize, HAL_MAX_DELAY);
    }
    
  3. 连接到WiFi
    通过一系列AT指令,使ESP8266连接到指定的WiFi网络:

    char response[100];
    
    // 测试AT指令
    sendATCommand("AT");
    receiveResponse(response, sizeof(response));
    
    // 重启模块
    sendATCommand("AT+RST");
    HAL_Delay(1000);  // 等待模块重启
    
    // 设置为Station模式
    sendATCommand("AT+CWMODE=1");
    receiveResponse(response, sizeof(response));
    
    // 连接到WiFi
    sendATCommand("AT+CWJAP=\"SSID\",\"PASSWORD\"");
    receiveResponse(response, sizeof(response));
    
    // 检查连接状态
    sendATCommand("AT+CIPSTATUS");
    receiveResponse(response, sizeof(response));
    

通过上述步骤,我们可以成功地使STM32F103通过ESP8266连接到WiFi网络。在实际应用中,可以根据需求进行进一步的扩展,例如通过网络传输数据、实现远程控制等。希望这篇博客能帮助你更好地理解AT指令以及如何在嵌入式系统中使用ESP8266进行联网。

相关文章
|
2月前
|
Android开发
Android获取当前连接的wifi名称
Android获取当前连接的wifi名称
62 6
|
1月前
|
数据安全/隐私保护 Windows
windows系统bat批处理 查看当前电脑连接过的wifi名字和wifi密码
windows系统bat批处理 查看当前电脑连接过的wifi名字和wifi密码
33 0
|
2月前
|
Android开发
android连接指定wifi
android连接指定wifi
37 0
|
2月前
|
Java Android开发
Android 9在连接以太网情况下 还能连接WiFi
Android 9在连接以太网情况下 还能连接WiFi
31 0
|
12天前
stm32f407探索者开发板(十七)——串口寄存器库函数配置方法
stm32f407探索者开发板(十七)——串口寄存器库函数配置方法
|
1月前
使用STM32F103标准库实现定时器控制LED点亮和关闭
通过这篇博客,我们学习了如何使用STM32F103标准库,通过定时器来控制LED的点亮和关闭。我们配置了定时器中断,并在中断处理函数中实现了LED状态的切换。这是一个基础且实用的例子,适合初学者了解STM32定时器和中断的使用。 希望这篇博客对你有所帮助。如果有任何问题或建议,欢迎在评论区留言。
102 2
|
2月前
|
传感器
|
1月前
|
IDE 开发工具
使用STM32F103标准库实现自定义键盘
通过本文,我们学习了如何使用STM32F103标准库实现一个简单的自定义键盘。我们首先初始化了GPIO引脚,然后实现了一个扫描函数来检测按键状态。这个项目不仅能够帮助我们理解STM32的GPIO配置和按键扫描原理,还可以作为进一步学习中断处理和低功耗设计的基础。希望本文对你有所帮助,祝你在嵌入式开发的道路上不断进步!
142 4
|
16天前
|
传感器 编解码 API
【STM32开发入门】温湿度监测系统实战:SPI LCD显示、HAL库应用、GPIO配置、UART中断接收、ADC采集与串口通信全解析
SPI(Serial Peripheral Interface)是一种同步串行通信接口,常用于微控制器与外围设备间的数据传输。SPI LCD是指使用SPI接口与微控制器通信的液晶显示屏。这类LCD通常具有较少的引脚(通常4个:MISO、MOSI、SCK和SS),因此在引脚资源有限的系统中非常有用。通过SPI协议,微控制器可以向LCD发送命令和数据,控制显示内容和模式。
|
1月前
|
存储 数据采集 数据安全/隐私保护
使用STM32F103读取TF卡并模拟U盘:使用标准库实现
通过以上步骤,你可以实现用STM32F103将TF卡内容变成U盘进行读取。这种功能在数据采集、便携式存储设备等应用中非常有用。如果你有更多的需求,可以进一步扩展此项目,例如添加文件管理功能、加密存储等。希望这篇博客能帮到你,如果有任何问题,欢迎在评论区留言讨论!
37 1