STM32F103C8T6 wifi模块ESP826601S驱动篇

stm32f103c8t6驱动wifi模块前需要先对wifi模块进行配置,然后再去传输数据。

1 wifi模块ESP8266配置

1.1所需硬件

 串口工具 PWLINK2

 1.2 所需软件

都在这里(注意:烧录的固件一定要选对,否则烧录不成功https://download.csdn.net/download/weixin_51248645/87707922?spm=1001.2014.3001.5501

wifi烧录工具 :flash_download_tool_3.9.2_0

wifi固件库:BAT_AT_V1.7.1.0_1M.bin

wifi串口调试工具:AiThinker Serial Tool V1.2.3.exe

1.3电路连接

参考这个,不再重复

ESP8266 01s刷回原厂固件方法_esp8266原厂固件_长不大的大头的博客-CSDN博客

1.4调试问题

1.4.1 烧录不成功

原因分析,从官网下载的固件库有32位和8位的,该器件要选8位。

烧32位报错如下:

 改为烧8位后下载成功

 1.4.2 串口发的送AT+RST没反应。

原因1:是固件错误,实测BAT_AT_V1.7.1.0_1M.bin这个可以,其他不行。

原因2:烧录完成后要复位一下,把rest接地,然后等一会再试试就可以了。

 至此,wifi调试成功,然后就是配置wifi,然后连接MCU收发数据。

2.本地搭建TCP验证

2.1需要的工具

串口工具,用上面那个即可。

TCP工具:用来模拟云端。SocketTool V4.exe

 2.2 通过串口向wifi模块进行配置。

发送指令顺序:

1.

AT

这个指令要看到有AT OK说明你的供电和TTL和wifi模块通讯正常

2.

AT+CWMODE=3

设置模式3,STA+AP,其实我们只用了STA

3.

AT+RST

让模块复位,能在接收信息最下面看到 ready,说明模块复位成功。复位后就是STA+AP模式了

4.

AT+CWJAP="your ssid","password"

输入你无线路由器的用户名和密码,一定要写正确,注意大小写

5.

AT+CIFSR

查询IP,因为有STA和AP两个模式,所以有两组MAC和IP,常见的是192.168.x.x局域网IP

6.

AT+CIPMUX=0

设置单链接,透传只能在单连接模式下进行,所以在建立连接之前一定要用(AT+CIPMUX=0 设置单连接) 

7.

AT+CIPMODE=1

设置透传模式

8.

这里先连接上面搭建的TCP ip.

 AT+CIPSTART="TCP","XXX.XXX.40.33",XX

下面是云平台的,先不连,最后都调通了再换到云平台上。

AT+CIPSTART="TCP","183.230.40.33",80

连接OneNet服务器

连接成功后,此时客户端就可以给蓝牙模块发数据了,然后蓝牙模块通过串口显示出来。如下图,发送hello,蓝牙模块就会收到hello。

 下一步是让wifi给客户端发数据。执行下面命令。

9.

AT+CIPSEND

启动透传发送

启动透传后,数据就可以双向发送了,wifi可以收可以发。

测试结果如下,可以正确接收到数据。

 

3.接入物联网平台

3.1物联网平台注册账号

物联网平台

3.2 创建设备并添加

 

网关设备 MQTT协议

 3.3 在线调试

点击右上方在线调试,模拟设备向云平台发送数据。

 3.4 wifi配置IP接入云平台。

注1.wifi无法退出透传问题:把发送新行关了就可以了。

 注2 由于上面那个工具无法发送多行数据,所以换个工具使用。USR串口工具发送指令没反应,原因是要指令后加换行再发送。

### 使用STM32F103C8T6ESP8266 WiFi模块通过HAL库和串口2进行通信 为了实现STM32F103C8T6ESP8266 WiFi模块之间的通信,需先了解硬件连接方式以及软件配置方法。 #### 硬件连接 对于单片机ESP8266的连接部分,如果计划采用USART2作为通信接口,则应调整引脚分配。通常情况下,USART2对应的引脚为PA2(TX)和PA3(RX),因此需要将这些引脚分别连接到ESP8266的相应管脚上[^1]: - **STM32F103C8T6** - PA2 (USART2_TX) -> ESP8266 RX - PA3 (USART2_RX) <- ESP8266 TX - GND <-> GND - VCC (3.3V) <-> CH_PD/VCC 确保电源供应稳定,并且逻辑电平匹配(即两者都工作于3.3V CMOS/TTL电平),这有助于防止信号损坏或不稳定的情况发生。 #### 软件初始化设置 接下来,在Keil或其他IDE环境中创建项目并导入必要的头文件之后,按照以下步骤来初始化USART2外设及其参数: ```c // 定义全局变量用于存储句柄结构体实例 UART_HandleTypeDef huart2; void MX_USART2_UART_Init(void){ /* USART2 初始化 */ huart2.Instance = USART2; huart2.Init.BaudRate = 115200; // 设置波特率为115200bps huart2.Init.WordLength = UART_WORDLENGTH_8B; huart2.Init.StopBits = UART_STOPBITS_1; huart2.Init.Parity = UART_PARITY_NONE; huart2.Init.Mode = UART_MODE_TX_RX; huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE; huart2.Init.OverSampling = UART_OVERSAMPLING_16; if(HAL_UART_Init(&huart2)!= HAL_OK){ Error_Handler(); } } ``` 上述代码片段展示了如何利用STM32CubeMX生成的基础框架进一步定制化USART2的具体属性,比如波特率、字长等。这里选择了常见的115200 bps速率以便更好地兼容大多数WiFi模块默认设定。 #### 发送AT命令给ESP8266 一旦完成了基本的初始化操作,便可以通过调用`HAL_UART_Transmit()`函数向ESP8266发送特定格式化的字符串形式的AT指令来进行各种网络配置任务。例如尝试建立Wi-Fi连接时可执行如下动作: ```c char cmd[]="AT+CWMODE=1\r\n"; // 设定模式为客户站模式 if(HAL_UART_Transmit(&huart2,(uint8_t*)cmd,strlen(cmd),HAL_MAX_DELAY)!= HAL_OK){ Error_Handler(); } // 延迟一段时间等待回应... HAL_Delay(100); char ssid[]="your_SSID"; char pwd[]="your_PASSWORD"; sprintf((char *)cmd,"AT+CWJAP=\"%s\",\"%s\"\r\n",ssid,pwd); if(HAL_UART_Transmit(&huart2,(uint8_t*)cmd,strlen(cmd),HAL_MAX_DELAY)!= HAL_OK){ Error_Handler(); } ``` 值得注意的是,在实际开发过程中应当加入更多的错误处理机制以应对可能出现的各种异常状况。此外,考虑到实时性和效率问题,建议合理安排延时时间间隔,并考虑使用中断驱动的方式代替轮询读取返回消息的方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

流浪法师解剖鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值