Pi PICO W resilience.

Mar 07, 2024 0 Replies

I am passing this along so it might be somwhere searchable if anyone has the same problem,



Basically my PICO Ws were not reconnecting to the Wifi after loss of Wifi access point.



This, however seems to work



int main() { int ret; struct tcp_pcb *connection; char buf[2048]; stdio_init_all(); initialise_adc(); if (cyw43_arch_init_with_country(CYW43_COUNTRY_UK)) { printf("Wi-Fi init failed"); return -1; } cyw43_arch_enable_sta_mode(); set_hostname(hostname); sleep_ms(20); printf("THERMOMETER FOR %s\n",hostname); while (TRUE) { // *check wifi is up and connect/reconnect as necessary*.. while((cyw43_tcpip_link_status(&cyw43_state,CYW43_ITF_STA)) != CYW43_LINK_UP) cyw43_arch_wifi_connect_timeout_ms(ssid, password, CYW43_AUTH_WPA2_AES_PSK, 20000); // do your stuff here... sleep_ms(6000); // rinse and repeat.. } }



The key issue is that cyw43_tcpip_link_status(&cyw43_state,CYW43_ITF_STA); will not return CYW43_LINK_UP until *everything* is sorted out including DHCP assignment of an IP address...



Fingers crossed this is now reasonably bullet proof.



Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required