WiFi连接STA模式
一、ESP32的WiFi功能介绍
前面章节内容,基本上都是描述了ESP32强大的MCU能力,这些MCU能力使得ESP32可以替换许多类型的单片机工作,而自己承担这部分功能;当然ESP32的IOT能力才是它的主业,从硬件配置来看,ESP32支持2.4GHz频段WiFi+BT(LE)4.2,而esp-idf对WiFi的驱动支持可谓是十分完善,我们不需要花费太多的精力研究底层实现,更多的将精力放在自己的应用设计上。
对于ESP32的WIFI,有三种工作模式:
- STA模式,这种模式是ESP32最常用的模式,ESP32可以连接到任何已经存在的WiFi网络,从而允许ESP32与网络上的其他设备进行通信,类似于一台普通的WiFi客户端设备。
- AP模式,这种模式下ESP32创建自己的WiFi网络,成为一个小型WiFi路由器,接受其它WiFi终端设备连接,这种模式多用于设备配网。
- STA+AP模式,在这种模式下,ESP32 同时工作在STA和AP两种模式下,既可以连接到已有的WiFi网络,也可以提供WiFi热点,这种高级功能使ESP32能够连接到现有的WiFi网络,同时创建自己的网络,充当桥接器或中继器,通俗的讲就是连接到一个热点后,ESP32自己又创建了一个网络,允许其它设备接入,这些设备以ESP32为中继节点,可以访问互联网。
二、STA模式代码
STA模式代码位于esp32-board/wifi,因为esp-idf的WiFi驱动已经十分的完善,所以我们不需要很多代码就能完成WiFi连接,看到esp32-board/wifi/main/simple_wifi_sta.c文件,
#define DEFAULT_WIFI_SSID "wifitest"
#define DEFAULT_WIFI_PASSWORD "12345678"
static const char *TAG = "wifi";
/** 事件回调函数
* @param arg 用户传递的参数
* @param event_base 事件类别
* @param event_id 事件ID
* @param event_data 事件携带的数据
* @return 无
*/
static void event_handler(void* arg, esp_event_base_t event_base,int32_t event_id, void* event_data)
{
if(event_base == WIFI_EVENT)
{