esp8266学习记录_32如何驱动esp8266at测试时空代码

二:esp8266烧录固件和测试

esp8266模块我是从普中那买的,他们提供了烧录工具和一些文档资料,具体的资料连接在下方。

普中科技–各型号产品资料下载链接 - STM8单片机 - 普中开源电子分享网 - Powered by Discuz! (prechin.net)")

先将esp8266模块和一块有串口的开发板进行连线

esp8266开发板
3V33V3
RXUTXD
IO0GND
EN3V3
TXURXD
GDNGND

实物图如下:

然后根据资料,找到固件烧写软件。一些出厂就已经烧好了,可以发送AT指令来查看是否有应答,我的没有就重新烧写了一遍。

到配置选项卡下更改要烧写的固件

回到操作选项卡,选择好串口之后就可以点击烧写,进度条会变化

烧写成功后的界面

烧写成功之后可以使用串口调试发AT指令进行测试,这时要将IO0置为高电平,串口的波特率是9600。

发送AT之后可以正常返回OK,这时固件就已近成功烧录进去了。

三:单连接TCP client

首先我没有先直接写代码通过32串口来控制esp8266,我先直接使用串口调试助手给esp8266发送AT指令。

我笔记本连接路由器得到的ip,此时笔记本做服务器

在网络调试助手也选择这个ip

使用AT+CIPSTART=“TCP”, “192.168.10.46”, 8080指令,成功将esp8266和电脑成功连接

AT+CIPSTATUS查看连接状态

使用AT+CIPSEND=5设置要传送数据的长度,esp8266(client)发送数据,网络调试助手(server)成功接收

TCP Server发送数据,esp8266成功接收

AT+CIPMODE=1,切换到透明传输模式

透传,即透明传输功能。Host 通过 uart 将数据发给 ESP8266,ESP8266 再通过无线网络将数据传出去;ESP8266 通过无线网络接收到的数据,同理通过uart 传到 Host。ESP8266 只负责将数据传到目标地址,不对数据进行处理,发送方和接收方的数据内容、长度完全一致,传输过程就好像透明一样

在透传发送数据过程中,若识别到单独的⼀一包数据 “ +++ ”,则退出透传发送

使用AT+CIPCLOSE断开TCP连接

四:esp8266作为TCP Server

此时esp8266工作在AP模式下,即类似于一个路由器,其他设备可以通过wifi进行连接

此时通过网络调试助手连接到esp8266之前要先连上esp8266产生的wifi,要不然会无法连接

手机端连接方式

手机电脑连接是要先断开已近连上的无线局域网,要先连上esp8266产生的wifi

手机连接esp8266之后,查看连接状态

AT+ CIPSTATUS命令解释

五:手机通过esp8266远程控制开发板板载资源

整体思路:esp8266工作在AP模式下(相当于一个路由器),然后手机连接到相应wifi,使得esp8266和手机在同一个网段内,可以网络通信。手机通过TCP软件给esp8266发送信息,esp8266接收到不同的信息然后通过串口和32进行通信,使得32根据串口接收到不同的信息来控制LED的亮灭。

开发板主控是stm32f103zet6,我使用的是USART2,PA2是TX,PA3是RX

这里我就是通过手机发送字符’a’控制LED0电平翻转,发送字符’b’来控制LED1电平翻转。

效果如下

手机通过esp8266来控制开发板板载资源

esp8266.h代码如下


#ifndef _ESP8266_H
#define _ESP8266_H
#include "./SYSTEM/sys/sys.h"
                                                                    /* 初始化 */
#define USART_TX_PORT                            GPIOA
#define USART_TX_PIN                             GPIO_PIN_2
#define USART_TX_CLK_ENABLE()                    do{ __HAL_RCC_GPIOA_CLK_ENABLE(); }while(0)   /* PA口时钟使能 */

#define USART_RX_PORT                            GPIOA
#define USART_RX_PIN                             GPIO_PIN_3
#define USART_RX_CLK_ENABLE()                    do{ __HAL_RCC_GPIOA_CLK_ENABLE(); }while(0)   /* PA口时钟使能 */

#define USART_ESP8266                            USART2
#define USART_ESP8266_IRQn                       USART2_IRQn
#define USART_ESP8266_IRQHandler                 USART2_IRQHandler
#define USART_ESP8266_CLK_ENABLE()               do{ __HAL_RCC_USART2_CLK_ENABLE(); }while(0)  /* USART2 时钟使能 */

void usart_esp8266_init(uint32_t baudrate);
#endif

esp8266.c代码如下

#include "./BSP/ESP8266/esp8266.h"
#include "./BSP/LED/led.h"
#include <string.h>
#include "./SYSTEM/delay/delay.h"

UART_HandleTypeDef g_uart2_handle;

uint8_t esp8266_rx_buffer[1] = {0};

void usart_esp8266_init(uint32_t baudrate)
{
    /*UART 初始化设置*/
    g_uart2_handle.Instance = USART_ESP8266;                                       /* USART_UX */
    g_uart2_handle.Init.BaudRate = baudrate;                                  /* 波特率 */
    g_uart2_handle.Init.WordLength = UART_WORDLENGTH_8B;                      /* 字长为8位数据格式 */
    g_uart2_handle.Init.StopBits = UART_STOPBITS_1;                           /* 一个停止位 */
    g_uart2_handle.Init.Parity = UART_PARITY_NONE;                            /* 无奇偶校验位 */
    g_uart2_handle.Init.HwFlowCtl = UART_HWCONTROL_NONE;                      /* 无硬件流控 */
    g_uart2_handle.Init.Mode = UART_MODE_TX_RX;                               /* 收发模式 */
    HAL_UART_Init(&g_uart2_handle);                                          
   
    /* 该函数会开启接收中断:标志位UART_IT_RXNE,并且设置接收缓冲以及接收缓冲接收最大数据量 */
    HAL_UART_Receive_IT(&g_uart2_handle, (uint8_t *)esp8266_rx_buffer, 1); 
   

}

void HAL_UART_MspInit(UART_HandleTypeDef *huart)
{
    GPIO_InitTypeDef gpio_init_struct;

    if (huart->Instance == USART_ESP8266)                       
    {
        USART_TX_CLK_ENABLE();                            
        USART_RX_CLK_ENABLE();                             
        USART_ESP8266_CLK_ENABLE();                                  

        gpio_init_struct.Pin = USART_TX_PIN;              
        gpio_init_struct.Mode = GPIO_MODE_AF_PP;               
        gpio_init_struct.Pull = GPIO_PULLUP;                    
        gpio_init_struct.Speed = GPIO_SPEED_FREQ_HIGH;         
        HAL_GPIO_Init(USART_TX_PORT, &gpio_init_struct);
                
        gpio_init_struct.Pin = USART_RX_PIN;               
        gpio_init_struct.Mode = GPIO_MODE_AF_INPUT;    
        HAL_GPIO_Init(USART_RX_PORT, &gpio_init_struct);   
        
        HAL_NVIC_EnableIRQ(USART_ESP8266_IRQn);                      
        //HAL_NVIC_SetPriority(USART_ESP8266_IRQn, 3, 3);              
    }
}

void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
   if(huart->Instance == USART_ESP8266){
      if(esp8266_rx_buffer[0] == 'a'){
         LED0_TOGGLE();
      }
      else if(esp8266_rx_buffer[0] == 'b'){
         LED1_TOGGLE();
      }
   }
}

void USART_ESP8266_IRQHandler(void)
{

    HAL_UART_IRQHandler(&g_uart2_handle);                               /* 调用HAL库中断处理公用函数 */

    while (HAL_UART_Receive_IT(&g_uart2_handle, (uint8_t *)esp8266_rx_buffer, 1) != HAL_OK)     /* 重新开启中断并接收数据 */
    {
        /* 如果出错会卡死在这里 */
    }

}

串口相关弄完之后,在通信之前要先对esp8266的工作模式进行设置,发送一些AT指令

将esp8266设置成TCP Server需要三步

1:AT+CWMODE=3

2:AT+CIPMUX=1

3:AT+CIPSERVER=1

在初始化esp8266之后可以发送这些指令,发送完一个的时候要记得加回车换行

笔记本连接esp8266的wifi使用网络调试助手也可以实现相同的效果

工程的完整代码在下方链接

门牙会稍息 / 手机通过esp8266控制开发板板载LED · GitCode

六:ESP8266连接OneNet云平台

首先要在OneNet云平台新建一个产品和设备,这个的操作可以查看其他的博客,这里就不细说了。

下面列举了esp8266和云平台之间进行数据交换前的AT指令和POST、GET报文,大家可以按照自己产品和设备的情况进行修改。

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年嵌入式&物联网开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上嵌入式&物联网开发知识点,真正体系化!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新!!

g-ePpLIzKM-1715574631646)]

[外链图片转存中…(img-FiaenLIP-1715574631647)]

[外链图片转存中…(img-viU0CTUK-1715574631647)]

[外链图片转存中…(img-h9KCGktb-1715574631648)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上嵌入式&物联网开发知识点,真正体系化!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新!!

  • 19
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值