.. note:: Ciao, benvenuto nella Community di appassionati di SunFounder Raspberry Pi, Arduino e ESP32 su Facebook! Approfondisci le tue conoscenze su Raspberry Pi, Arduino e ESP32 insieme ad altri appassionati. **Perché unirti?** - **Supporto esperto**: Risolvi i problemi post-vendita e affronta le sfide tecniche con l'aiuto della nostra community e del nostro team. - **Impara e condividi**: Scambia consigli e tutorial per migliorare le tue competenze. - **Anteprime esclusive**: Ottieni accesso anticipato agli annunci di nuovi prodotti e alle anteprime. - **Sconti speciali**: Approfitta di sconti esclusivi sui nostri prodotti più recenti. - **Promozioni festive e giveaway**: Partecipa a promozioni festive e concorsi a premi. 👉 Pronto a esplorare e creare con noi? Clicca su [|link_sf_facebook|] e unisciti oggi stesso! .. _iot_access: 1. Accesso alla Rete =========================== Il Raspberry Pi Pico W è molto simile al Raspberry Pi Pico, con gli stessi GPIO, porta microUSB e dimensioni. L'unica differenza è l'aggiunta del chip Wi-Fi CYW43439 a 2,4 GHz di Infineon. Ora vediamo come si collega alla nostra rete Wi-Fi. **Componenti necessari** In questo progetto, abbiamo bisogno dei seguenti componenti. È sicuramente conveniente acquistare un kit completo, ecco il link: .. list-table:: :widths: 20 20 20 :header-rows: 1 * - Nome - ELEMENTI IN QUESTO KIT - LINK * - Kit Kepler - 450+ - |link_kepler_kit| Puoi anche acquistarli separatamente dai link qui sotto. .. list-table:: :widths: 5 20 5 20 :header-rows: 1 * - SN - COMPONENTE - QUANTITÀ - LINK * - 1 - :ref:`cpn_pico_w` - 1 - |link_picow_buy| * - 2 - Cavo Micro USB - 1 - 1. Collegarsi a Internet ------------------------------------ Con solo cinque righe di MicroPython, il nostro Raspberry Pi Pico W si collega felicemente a Internet. Queste 5 righe di codice possono essere eseguite direttamente dalla Shell, premendo ``Enter`` dopo averle digitate. Oppure, puoi seguire il metodo seguente e creare un nuovo file ``.py`` per eseguirlo. .. code-block:: python import network wlan = network.WLAN(network.STA_IF) wlan.active(True) wlan.connect("SSID","PASSWORD") print(wlan.isconnected()) #. Crea un nuovo script cliccando il pulsante **Nuovo** su Thonny, e copia e incolla il codice sopra, cambiando ``SSID`` e ``PASSWORD`` con i tuoi. .. image:: img/access1.png #. Per eseguire lo script, clicca sul pulsante **Esegui script corrente** o premi F5. Se la connessione ha successo, verrà stampato ``true``. .. note:: Assicurati che il Raspberry Pi Pico W sia collegato al computer tramite un cavo USB, quindi clicca nell'angolo in basso a destra per selezionare MicroPython (Raspberry Pi Pico).COMXxx come interprete. .. image:: img/access2.png 2. Valutazione del Timeout e Mostra IP ----------------------------------------------- Considerando alcune condizioni di rete scadenti, aggiungiamo un timeout al codice. Se la connessione ha successo, l'IP del Pico W verrà visualizzato dopo aver copiato e eseguito lo script. .. code-block:: python import network import time wlan = network.WLAN(network.STA_IF) wlan.active(True) wlan.connect("SSID","PASSWORD") # Wait for connect or fail wait = 10 while wait > 0: if wlan.status() < 0 or wlan.status() >= 3: break wait -= 1 print('waiting for connection...') time.sleep(1) # Handle connection error if wlan.status() != 3: raise RuntimeError('wifi connection failed') else: print('connected') print('IP: ', wlan.ifconfig()[0]) .. image:: img/access3.png * Funzione ``wlan.status()``: Restituisce lo stato attuale della connessione wireless, il valore restituito è mostrato nella tabella seguente. .. list-table:: :widths: 40 10 50 * - Stato - Valore - Descrizione * - STAT_IDLE - 0 - nessuna connessione e nessuna attività, * - STAT_CONNECTING - 1 - connessione in corso, * - STAT_WRONG_PASSWORD - -3 - fallito a causa di password errata, * - STAT_NO_AP_FOUND - -2 - fallito perché nessun punto di accesso ha risposto, * - STAT_CONNECT_FAIL - -1 - fallito a causa di altri problemi, * - STAT_GOT_IP - 3 - connessione riuscita. * Funzione ``wlan.ifconfig()``: Ottiene indirizzi IP, maschere di sottorete, gateway e server DNS. Questo metodo restituirà un 4-tuple contenente le informazioni sopra quando chiamato direttamente. In questo caso, stampiamo solo l'indirizzo IP. * `class WLAN – MicroPython Docs `_ .. _create_secrets: 3. Salvare informazioni private in ``secrets.py`` ---------------------------------------------------------- Quando condividi il tuo progetto Pico W, probabilmente non vorrai che altri vedano la tua password Wi-Fi o la chiave API. Per una buona sicurezza, possiamo creare un file ``secrets.py`` per memorizzare le tue informazioni private. #. Copia il codice seguente in un nuovo file di script su Thonny. Ricorda di cambiare ``SSID`` e ``PASSWORD`` con i tuoi. .. code-block:: python secrets = { 'ssid': 'SSID', 'password': 'PASSWORD', } #. Scegli Raspberry Pi Pico nella finestra popup che appare quando clicchi sul pulsante Salva o premi ``Ctrl+S``. .. image:: img/access4.png #. Imposta il nome a ``secrets.py``. .. image:: img/access5.png #. Ora puoi vedere questo script nel tuo Raspberry Pi Pico W. .. image:: img/access6.png #. In altri script, puoi chiamarlo come segue. Se lo esegui, vedrai una connessione Wi-Fi riuscita. Il file ``secrets.py`` è importato come una libreria, quindi non dobbiamo preoccuparci della fuga di informazioni. .. code-block:: python :emphasize-lines: 3,7 import network import time from secrets import secrets wlan = network.WLAN(network.STA_IF) wlan.active(True) wlan.connect(secrets['ssid'], secrets['password']) # Wait for connect or fail wait = 10 while wait > 0: if wlan.status() < 0 or wlan.status() >= 3: break wait -= 1 print('waiting for connection...') time.sleep(1) # Handle connection error if wlan.status() != 3: raise RuntimeError('wifi connection failed') else: print('connected') print('IP: ', wlan.ifconfig()[0]) .. image:: img/access8.png .. _do_connect: 4. Connettiti a Internet tramite ``do_connect.py`` -------------------------------------------------------------- Considerando che ciascuno dei nostri prossimi progetti richiederà una connessione di rete, perché non creare un nuovo file ``do_connect.py`` e scrivere le funzioni rilevanti al suo interno per riutilizzarle, il che può semplificare notevolmente il codice di progetti complessi. #. Copia il seguente codice in un nuovo file di script e salvalo su Raspberry Pi Pico come ``do_connect.py``. .. code-block:: python import network import time from secrets import * def do_connect(ssid=secrets['ssid'],psk=secrets['password']): wlan = network.WLAN(network.STA_IF) wlan.active(True) wlan.connect(ssid, psk) # Wait for connect or fail wait = 10 while wait > 0: if wlan.status() < 0 or wlan.status() >= 3: break wait -= 1 print('waiting for connection...') time.sleep(1) # Handle connection error if wlan.status() != 3: raise RuntimeError('wifi connection failed') else: print('connected') ip=wlan.ifconfig()[0] print('network config: ', ip) return ip .. image:: img/access7.png #. Chiamandolo in altri script come segue, permetterà al Raspberry Pi Pico W di connettersi alla rete. .. code-block:: python from do_connect import * do_connect() .. https://www.tomshardware.com/reviews/raspberry-pi-pico-w