#esp32 #embassy #wifi

no-std esp-embassy-wifihelper

Simple helper library to make it easier to connect to wifi with esp-embassy

2 releases

new 0.2.3 Apr 25, 2025
0.2.2 Feb 8, 2025

#2161 in Embedded development

Download history 113/week @ 2025-02-05 13/week @ 2025-02-12 15/week @ 2025-02-19 6/week @ 2025-02-26 15/week @ 2025-03-26 121/week @ 2025-04-23

122 downloads per month

MIT license

17KB
207 lines

esp-embassy-wifi

Simple helper library to make it easier to connect to wifi with esp-embassy.

How to use

The wifi_example.rs in examples folder show a minimal esp32c3 example code. The part that use this library is this:

let wifi = WifiStack::new(
    spawner,
    peripherals.WIFI,
    peripherals.TIMG0,
    peripherals.RNG,
    peripherals.RADIO_CLK,
    SSID.try_into().unwrap(),
    PASSWORD.try_into().unwrap(),
);

How to set up and start delayed through a channel

For cases where wifi is not supposed to connect at startup, or the ssid/password is unknown at startup, a variant for connecting is used. The correct hardware resources are set up and the tasks are spawned, but it waits for a message on a channel with the ssid/password information.

static CHANNEL: Channel<CriticalSectionRawMutex, ClientConfiguration, 1> = Channel::new();

let wifi = WifiStack::new_connect_later(
    spawner,
    peripherals.WIFI,
    peripherals.TIMG0,
    peripherals.RNG,
    peripherals.RADIO_CLK,
    CHANNEL.receiver(),
);

The wifi will then try to connect with:

let client_config = ClientConfiguration {
    ssid: SSID.try_into().unwrap(),
    password: PASSWORD.try_into().unwrap(),
    ..Default::default()
};
let _ = CHANNEL.send(client_config).await;

Supported devices

This has been tested on esp32, esp32c3, esp32s3 and esp32c6, and is assumed to work on the remaining esp32 devices as well.

Dependencies

~100MB
~525K SLoC