ESP01S WIFI模块
ESP8266系列无线模块是安信可科技自主研发设计的一系列高性价比WiFisOC模组。该系列模块支持标准的IEEE802.11 b/g/n 协议,内置完整的TCP/IP协议栈。用户可以使用该系列模块为现有的设备添加联网功能,也可以构建独立的网络控制器。即使在不了解其原理的情况下,只要有一定的串口知识理解,那么就可以轻松上手该模块,进而实现手机WiFi操作。功能特点:基于ESP8266芯片开发,模组集成了透传功能,即买即用,支持串口AT指令集,用户通过串口即可实现网络访问,广泛应用于智能穿戴,智能家居,家庭安防,遥控器,汽车电子,智慧照明,工业物联网等领域。
模块来源
采购链接:
https://item.taobao.com/item.htm?spm=a21n57.1.0.0.7b86523chejZKP&id=609138951184&ns=1&abbucket=0
资料下载:
https://pan.baidu.com/s/13mQInPq5drMzs8sXzC14dQ
提取码: pj4z
规格参数
工作电压:3.0V-3.6V
工作电流:IMAX = 170mA
模块尺寸:14.4 x 24.7 MM
控制方式:串口
移植过程
我们的目标是在立创开发板GD32E230C8T6上能够完成无线传输的功能。首先要获取资料,查看数据手册应如何实现,再移植至我们的工程。
查看资料
该WIFI模块,有三种模式即STA、AP、STA+AP。
这里主要使用AP和STA模式作为案例,实现近距离无线控制和远距离无线控制。
- STA模式是指ESP8266作为客户端连接到一个无线路由器上(或者无线热点),可以访问网络中的其他设备。
- AP模式是指ESP8266作为热点,其他设备可以连接到它上面,实现无线网络通信。
- STA+AP模式就是两者同时实现。
使用前,需要烧入MQTT固件,后续的案例有使用MQTT,如不烧入MQTT固件,在涉及到MQTT的AT命令时会不断失败。
固件烧录接线:
烧录步骤:
引脚选择
使用串口1(串口1-TX=PA2,串口1-RX=PA3)
移植至工程
首先我们把必要文件拉入工程文件夹
替换掉文件
我们打开工程添加C文件到目录
接下来,我们添加h文件的路径
案例一 AP模式下的手机控制
使用AP模式通过AT命令,控制WIFI模块开启热点、多连接、服务器。待手机连接后,通过手机APP进行数据互传。
使用案例前,请确保bsp_esp01s.c和bsp_esp01s.h移植成功。
首先使用手机连接WIFI模块的热点。其次打开APP连接服务器。服务器默认IP为192.168.4.1,端口号在代码中设置为了5000。
连接上WIFI的热点后,打开APP连接服务器。
在main.c中,编写如下代码。
/******************************************************************************
* 测试硬件:立创开发板·GD32E230C8T6 使用主频72Mhz 晶振8Mhz
* 版 本 号: V1.0
* 修改作者: www.lckfb.com
* 修改日期: 2023年11月02日
* 功能介绍:
*****************************************************************************
* 梁山派软硬件资料与相关扩展板软硬件资料官网全部开源
* 开发板官网:www.lckfb.com
* 技术支持常驻论坛,任何技术问题欢迎随时交流学习
* 立创论坛:club.szlcsc.com
* 其余模块移植手册:【立创·GD32E230C8T6开发板】模块移植手册
* 关注bilibili账号:【立创开发板】,掌握我们的最新动态!
* 不靠卖板赚钱,以培养中国工程师为己任
******************************************************************************/
#include "gd32e23x.h"
#include "systick.h"
#include "bsp_usart.h"
#include "stdio.h"
#include "BSP_ESP01S.h"
int main(void)
{
AP_PARAMETER ap_parameter={0};
uint8_t test_ret = 0;
systick_config(); //滴答定时器初始化 1ms
usart_gpio_config(115200U);
printf("start\r\n");
//WIFI初始化
WIFI_ESP01S_Init();
//设置WIFI模块为AP模式
WIFI_MODE_AP_Init();
while(1)
{
//判断是否有设备连接
Get_Device_connection_status();
// printf("wifi_link_flag == %d\r\n", wifi_link_flag );
//如果当前设备连接了服务器(手机APP连接上热点)
if( wifi_link_flag == 2 )
{
//printf("Get_WIFI_AP_Data = %d\r\n", Get_WIFI_AP_Data(&ap_parameter) );
if( Get_WIFI_AP_Data(&ap_parameter) == 1 )//如果接收到数据
{
//输出接收的数据
printf("ID = %d\r\n", ap_parameter.device_id );//设备ID
printf("data len = %d\r\n", ap_parameter.device_datalen );//发送过来的数据长度
printf("data = %s\r\n", ap_parameter.device_data );//发送过来的数据
}
}
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
案例现象:
当手机APP接入WIFI连接成功之后,APP发送数据到GD32E230C8T6的串口。