Espressif ESP32 WiFi Station

Overview

This sample demonstrates how to use ESP32 to connect to a WiFi network as a station device. To configure WiFi credentials, edit prj.conf. Enabling the net_shell module provides a set of commands to test the connection. See network shell for more details.

Supported SoCs

The following SoCs are supported by this sample code so far:

  • ESP32

  • ESP32-S2

  • ESP32-C3

Building and Running

Make sure you have the ESP32 connected over USB port.

The sample can be built and flashed as follows:

west build -b esp32 samples/boards/esp32/wifi_station
west flash

If using another supported Espressif board, replace the board argument in the above command with your own board (e.g., ESP32-S2 board).

Sample Output

To check output of this sample, run west espressif monitor or any other serial console program (i.e. on Linux minicom, putty, screen, etc). This example uses west espressif monitor, which automatically detects the serial port at /dev/ttyUSB0:

$ west espressif monitor
I (288) boot: Loaded app from partition at offset 0x10000
I (288) boot: Disabling RNG early entropy source...
I (611) wifi:wifi driver task: 3ffb2be8, prio:2, stack:3584, core=0
I (613) wifi:wifi firmware version: 9c89486
I (613) wifi:wifi certification version: v7.0
I (614) wifi:config NVS flash: disabled
I (618) wifi:config nano formating: disabled
I (622) wifi:Init data frame dynamic rx buffer num: 32
I (627) wifi:Init management frame dynamic rx buffer num: 32
I (632) wifi:Init management short buffer num: 32
I (636) wifi:Init dynamic tx buffer num: 32
I (640) wifi:Init static rx buffer size: 1600
I (645) wifi:Init static rx buffer num: 10
I (648) wifi:Init dynamic rx buffer num: 32
phy_version: 4350, 18c5e94, Jul 27 2020, 21:04:07, 0, 2
I (783) wifi:mode : softAP (24:6f:28:80:32:e9)
I (784) wifi:Total power save buffer number: 16
I (784) wifi:Init max length of beacon: 752/752
I (788) wifi:Init max length of beacon: 752/752
*** Booting Zephyr OS build zephyr-v2.4.0-49-g4da59e1678f7  ***
I (798) wifi:mode : sta (24:6f:28:80:32:e8)
I (1046) wifi:new:<4,1>, old:<1,1>, ap:<255,255>, sta:<4,1>, prof:1
I (1694) wifi:state: init -> auth (b0)
I (1711) wifi:state: auth -> assoc (0)
I (1717) wifi:state: assoc -> run (10)
I (1745) wifi:connected with myssid, aid = 4, channel 4, 40U, bssid = d8:07:b6:dd:47:7a
I (1745) wifi:security: WPA2-PSK, phy: bgn, rssi: -57
I (1747) wifi:pm start, type: 1

esp_event: WIFI STA start
esp_event: WIFI STA connected
I (1813) wifi:AP's beacon interval = 102400 us, DTIM period = 1
net_dhcpv4: Received: 192.168.68.102
esp32_wifi_sta: Your address: 192.168.68.102
esp32_wifi_sta: Lease time: 7200 seconds
esp32_wifi_sta: Subnet: 255.255.255.0
esp32_wifi_sta: Router: 192.168.68.1

Sample console interaction

If the CONFIG_NET_SHELL option is set, network shell functions can be used to check internet connection.

shell> net ping 8.8.8.8
PING 8.8.8.8
28 bytes from 8.8.8.8 to 192.168.68.102: icmp_seq=0 ttl=118 time=19 ms
28 bytes from 8.8.8.8 to 192.168.68.102: icmp_seq=1 ttl=118 time=16 ms
28 bytes from 8.8.8.8 to 192.168.68.102: icmp_seq=2 ttl=118 time=21 ms