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.
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).
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.
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
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
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.
Errore trovato quando lo provo
%Run -c $EDITOR_CONTENT
Traceback (ultima chiamata più recente):
File "", riga 1, in
ImportError: nessun modulo chiamato 'network'
Ciao Pablo - assicurati di utilizzare l'ultimo file UF2 per il Pico W (non solo per il Pico) - lo trovi qui. https://www.raspberrypi.com/documentation/microcontrollers/micropython.html
Il modulo di rete è di serie!
Alla riga 100 si utilizza la funzione get_html(). Quando eseguo il codice, ottengo un errore "get_html" non è definito.
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.
Ho risolto il problema aggiungendo la linea:
r = r[:50]
avant
led_on = r.find('?led=on')
led_off = r.find('?led=off')
Cela retire les caractères superfluss de la requête
Ho provato a commentare, ma in qualche modo il commento non esce correttamente...