Eseguire un server web sul Raspberry Pi Pico W

Questo progetto può essere considerato come l'"Hello World!" del Pico W. Dimostra come connettersi al Wi-Fi, come eseguire un server web HTTP sul Pico W e come controllare i pin GPIO.

Se siete alla ricerca di un progetto facile e veloce per iniziare a lavorare con la vostra Pico, questo fa per voi!

Passi per far lampeggiare il LED via WiFi su Pico W

Ci sono tre temi generali per ottenere questo risultato.

Configurare MicroPython

Per prima cosa, è necessario configurare MicroPython. Scaricare il file UF2 qui che è specificamente destinato a Pico W.

Pulsante Pico W Bootsel

Tenere premuto il pulsante BOOTSEL e collegare il Pico W via USB.

Una volta montato, copiare il file UF2 appena scaricato sul Pico.

Utilizzare Thonny per programmare Pico W

Thonny semplifica la programmazione di Pico W ed è preinstallato sul sistema operativo Raspberry Pi. È inoltre possibile scaricarlo per Windows, Mac e Linux qui.

Assicurarsi che l'interprete sia impostato su MicroPython (Raspberry Pi Pico).

L'IDE Thonny con Micropython

Thonny si collegherà al Raspberry Pi Pico W e sarà possibile eseguire comandi nella shell (il segmento inferiore dell'IDE Thonny).

Eseguire una scansione della rete per verificare che il wireless di Pico W funzioni.

Thonny IDE esegue una scansione wlan

Nella shell, è possibile eseguire questo codice per verificare se il chip wireless funziona.

Utilizzate questo codice per stampare tutte le reti wireless disponibili nella vostra zona.

import network
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
print(wlan.scan())

Programmare il server web

Creare un dizionario chiamato segreti.py e utilizzare il contenuto seguente, sostituendo i valori di ssid e pw con la propria rete.

secrets = {
    'ssid': 'Replace-this-with-your-Wi-Fi-Name',
    'pw': 'Replace-this-with-your-Wi-Fi-Password'
    }

Quindi, creare main.py che ospiterà il codice principale. Poiché il codice è lungo molte righe, è possibile trovarlo qui nel nostro Github.

Creare la pagina HTML che verrà servita

Server web Pico W

Il seguente file sarà il file HTML che verrà servito quando si carica l'indirizzo IP di Pico W. Salvarlo come indice.html

Si tratta di una semplice pagina con due pulsanti che consentono di accendere e spegnere il LED della Pico W.

<!DOCTYPE html>
<html>
    <head>
        <title>Pico W</title>
    </head>
    <body>
        <h1>Pico W</h1>
        <p>Control the onboard LED</p>
        <a href=\"?led=on\"><button>ON</button></a> 
        <a href=\"?led=off\"><button>OFF</button></a>
    </body>
</html>

E' tempo di gestire tutto

Server web Pico W

Fate clic sul pulsante di esecuzione di Thonny, un pulsante verde con il simbolo del gioco.

Verrà visualizzato l'indirizzo IP di Pico W. Copiarlo nel browser Web collegato alla stessa rete wireless.

Cliccate sui pulsanti e vedrete la modifica.

È possibile trovare il Il repo di Github contiene tutti i file.

Il nostro Il video di YouTube per questo progetto approfondisce anche la spiegazione del codice..

E se siete alla ricerca di altri progetti che vi ispirino, date un'occhiata alla nostra serie di progetti Paragon. qui.

5 commenti

  1. Pablo in Luglio 13, 2022 il 4:31 pm

    Errore trovato quando lo provo

    %Run -c $EDITOR_CONTENT
    Traceback (ultima chiamata più recente):
    File "", riga 1, in
    ImportError: nessun modulo chiamato 'network'

  2. Charles in Ottobre 25, 2022 il 8:51 pm

    Alla riga 100 si utilizza la funzione get_html(). Quando eseguo il codice, ottengo un errore "get_html" non è definito.

  3. Gunther in Novembre 28, 2022 il 12:51 am

    La funzione di ricerca per ricerca restituisce anche un valore se, ad esempio, il referrer contiene la stringa 'led=xx'. Quindi sia led_on che led_off ottengono un valore positivo allo stesso tempo e il LED viene spento di nuovo, quando invece si voleva accendere. Per ovviare a questo problema, l'istruzione if deve essere estesa per controllare un valore di indice piccolo (ho usato 20 solo come regola generale):

    se (led_on > -1 e led_on -1 e led_off < 20):
    Ora funziona come previsto.

  4. Gunther in Novembre 28, 2022 il 12:53 am

    Ho provato a commentare, ma in qualche modo il commento non esce correttamente...

Lascia un commento