# Guida alla Risoluzione dei Problemi Questa guida ti aiuta a risolvere problemi comuni quando lavori con il curriculum IoT for Beginners. I problemi sono organizzati per categoria per una facile navigazione. ## Sommario - [Problemi di Installazione](../..) - [Installazione di Python](../..) - [VS Code e Estensioni](../..) - [PlatformIO (Wio Terminal)](../..) - [Librerie Grove](../..) - [Problemi Hardware](../..) - [Raspberry Pi](../..) - [Wio Terminal](../..) - [Dispositivo Virtuale (CounterFit)](../..) - [Problemi di Connettività](../..) - [Connessione WiFi](../..) - [Servizi Cloud](../..) - [MQTT](../..) - [Problemi con Sensori e Attuatori](../..) - [Sensori Grove](../..) - [Fotocamera](../..) - [Microfono e Altoparlante](../..) - [Problemi dell’Ambiente di Sviluppo](../..) - [VS Code](../..) - [Ambienti Virtuali Python](../..) - [Dipendenze](../..) - [Problemi di Prestazioni](../..) - [Messaggi di Errore Comuni](../..) - [Ottenere Aiuto](../..) --- ## Problemi di Installazione ### Installazione di Python #### Problema: versione di Python troppo vecchia **Errore:** `Python 3.6 o superiore è richiesto` **Soluzione:** 1. Scarica l’ultima versione di Python 3 da [python.org](https://www.python.org/downloads/) 2. Durante l’installazione su Windows, seleziona "Add Python to PATH" 3. Verifica l’installazione: ```bash python3 --version ``` #### Problema: più versioni di Python causano conflitti **Sintomi:** viene eseguita la versione sbagliata di Python, pacchetti installati in posizione errata **Soluzione:** - **Windows:** usa `py -3` invece di `python` per chiamare esplicitamente Python 3 - **macOS/Linux:** usa `python3` invece di `python` - Crea e usa sempre ambienti virtuali per i progetti #### Problema: comando pip non trovato **Errore:** `'pip' non è riconosciuto come comando interno o esterno` **Soluzione:** 1. Prova `pip3` invece di `pip` 2. Oppure usa `python -m pip` o `python3 -m pip` 3. Assicurati che Python sia aggiunto al PATH (reinstalla Python e seleziona l’opzione) ### VS Code e Estensioni #### Problema: estensione Pylance non funziona **Sintomi:** nessun IntelliSense Python, completamento codice o controllo tipo **Soluzione:** 1. Apri Command Palette di VS Code (`Ctrl+Shift+P` o `Cmd+Shift+P`) 2. Esegui "Python: Select Interpreter" 3. Scegli l’interprete Python corretto (ambiente virtuale se usato) 4. Ricarica la finestra di VS Code #### Problema: VS Code non rileva ambiente virtuale **Sintomi:** interprete Python sbagliato selezionato **Soluzione:** 1. Assicurati di aver attivato l’ambiente virtuale nel terminale 2. Apri Command Palette e esegui "Python: Select Interpreter" 3. Seleziona l’interprete dalla cartella `.venv` 4. Controlla nella barra di stato (in basso a sinistra) che venga mostrata la versione corretta di Python ### PlatformIO (Wio Terminal) #### Problema: installazione di PlatformIO fallisce **Errore:** vari errori durante l’installazione di PlatformIO **Soluzione:** 1. Assicurati che VS Code sia aggiornato 2. Installa prima l’estensione C/C++ 3. Riavvia VS Code dopo aver installato PlatformIO 4. Controlla la connessione internet (PlatformIO scarica file di grandi dimensioni) #### Problema: PlatformIO non rileva la scheda **Sintomi:** impossibile caricare il codice su Wio Terminal **Soluzione:** 1. Prova un cavo USB diverso (alcuni cavi sono solo per la ricarica) 2. Controlla Gestione Dispositivi (Windows) o `ls /dev/tty*` (macOS/Linux) 3. Installa o aggiorna i driver USB 4. Prova una porta USB diversa 5. Scorri rapidamente due volte l’interruttore di accensione del Wio Terminal per entrare in modalità bootloader #### Problema: errori di compilazione in PlatformIO **Errore:** `fatal error: Arduino.h: No such file or directory` **Soluzione:** 1. Elimina la cartella `.pio` nel tuo progetto 2. Esegui "PlatformIO: Rebuild" da Command Palette 3. Assicurati che `platformio.ini` abbia la configurazione scheda corretta: ```ini [env:seeed_wio_terminal] platform = atmelsam board = seeed_wio_terminal framework = arduino ``` ### Librerie Grove #### Problema: import della libreria Grove fallisce su Raspberry Pi **Errore:** `ModuleNotFoundError: No module named 'grove'` **Soluzione:** 1. Reinstalla le librerie Grove: ```bash cd ~ git clone https://github.com/Seeed-Studio/grove.py cd grove.py sudo pip3 install . ``` 2. Se usi un ambiente virtuale, potrebbe essere necessario installarle globalmente o copiare le librerie 3. Verifica che I2C sia abilitato: `sudo raspi-config nonint do_i2c 0` #### Problema: sensore Grove non rilevato **Errore:** `IOError: [Errno 121] Remote I/O error` **Soluzione:** 1. Controlla le connessioni fisiche (assicurati che il cavo Grove sia inserito completamente) 2. Verifica che il sensore sia collegato alla porta corretta (analogica, digitale, I2C, UART) 3. Esegui `i2cdetect -y 1` per vedere se il dispositivo appare sul bus I2C 4. Prova un cavo Grove diverso 5. Assicurati che la Grove Base Hat sia correttamente posizionata sui pin GPIO del Raspberry Pi --- ## Problemi Hardware ### Raspberry Pi #### Problema: Raspberry Pi non si avvia **Sintomi:** nessun display, nessuna attività LED, o schermata arcobaleno **Soluzione:** 1. **Controlla alimentatore:** usa alimentatore USB-C ufficiale 5V 3A per Pi 4 2. **Problemi con la scheda SD:** - Riformatta la scheda SD e reinstalla Raspberry Pi OS - Prova una scheda SD diversa (usa marche raccomandate) - Assicurati che la scheda SD sia inserita correttamente 3. **Controlla connessione HDMI:** prova entrambe le porte HDMI su Pi 4, usa la porta HDMI più vicina all’alimentazione #### Problema: impossibile connettersi in SSH a Raspberry Pi **Sintomi:** connessione rifiutata o timeout **Soluzione:** 1. Abilita SSH: - Quando scrivi la scheda SD con Raspberry Pi Imager, configura SSH nelle opzioni avanzate - Oppure crea un file vuoto chiamato `ssh` (senza estensione) nella partizione di boot 2. Trova l’indirizzo IP del Pi: - Controlla i dispositivi connessi al router - Usa `ping raspberrypi.local` (se mDNS funziona) - Usa strumenti di scansione come `nmap` o Angry IP Scanner 3. Controlla la rete: - Assicurati che il Pi sia nella stessa rete del tuo computer - Prova la connessione Ethernet invece del WiFi 4. Verifica username/password (default: nome utente `pi`, password `raspberry`) #### Problema: Grove Base Hat non riconosciuto **Sintomi:** sensori non funzionanti, errori I2C **Soluzione:** 1. Assicurati che la Base Hat sia correttamente inserita su tutti i pin GPIO 2. Controlla la presenza di pin piegati sul Pi o sulla Base Hat 3. Abilita l’interfaccia I2C: ```bash sudo raspi-config nonint do_i2c 0 sudo reboot ``` 4. Verifica che I2C funzioni: `i2cdetect -y 1` #### Problema: Raspberry Pi lento **Sintomi:** interfaccia lenta, risposta ritardata **Soluzione:** 1. Controlla la velocità della scheda SD (usa Class 10 o migliore, o SSD tramite USB) 2. Libera spazio su disco: `df -h` per controllo, elimina file non necessari 3. Riduci memoria GPU in `raspi-config` se non usi pesantemente fotocamera/display 4. Chiudi applicazioni non necessarie 5. Considera di passare a Pi 4 con più RAM se usi Pi 3 o precedente ### Wio Terminal #### Problema: schermo Wio Terminal rimane nero **Sintomi:** nessun output video dopo il caricamento del codice **Soluzione:** 1. Controlla se il codice inizializza il display (libreria TFT_eSPI) 2. Aggiorna il firmware del Wio Terminal da [Seeed Wiki](https://wiki.seeedstudio.com/Wio-Terminal-Getting-Started/) 3. Aggiungi codice di inizializzazione display: ```cpp #include TFT_eSPI tft; tft.begin(); tft.fillScreen(TFT_BLACK); ``` 4. Prova a caricare uno sketch di esempio da PlatformIO per testare l’hardware #### Problema: WiFi non funziona su Wio Terminal **Sintomi:** impossibile connettersi al WiFi, errori di rete **Soluzione:** 1. **Aggiorna firmware WiFi:** segui la guida di aggiornamento firmware WiFi per Wio Terminal su [Seeed Wiki](https://wiki.seeedstudio.com/Wio-Terminal-Network-Overview/) 2. **Controlla credenziali WiFi:** assicurati che SSID e password siano corretti 3. **Banda WiFi:** Wio Terminal supporta solo WiFi 2.4GHz (non 5GHz) 4. **Forza segnale:** avvicinati al router 5. **Impostazioni router:** alcune reti aziendali/WPA-Enterprise potrebbero non funzionare #### Problema: Wio Terminal non riconosciuto dal computer **Sintomi:** dispositivo USB non rilevato **Soluzione:** 1. **Prova cavo USB diverso:** usa cavo dati, non solo carica 2. **Entra in modalità bootloader:** fai scorrere l’interruttore di accensione verso il basso due volte rapidamente - Il LED blu dovrebbe lampeggiare, il dispositivo appare come "Arduino" in Gestione Dispositivi 3. **Installa driver (Windows):** - Scarica e installa [driver USB Seeed](https://wiki.seeedstudio.com/Driver_for_Seeeduino/) 4. **Prova porta USB diversa:** evita hub USB, usa connessione diretta 5. **Aggiorna driver USB di sistema** #### Problema: sensori non funzionano su Wio Terminal **Sintomi:** sensori Grove non leggono dati **Soluzione:** 1. Controlla le connessioni dei cavi Grove 2. Verifica di usare la porta Grove corretta (sinistra o destra) 3. Includi le librerie corrette per il sensore 4. Controlla requisiti di alimentazione dei sensori 5. Testa il sensore con codice d’esempio dalla libreria ### Dispositivo Virtuale (CounterFit) #### Problema: app CounterFit non si avvia **Errore:** vari errori Python all’avvio di CounterFit **Soluzione:** 1. Assicurati che l’ambiente virtuale sia attivato 2. Installa o reinstalla CounterFit: ```bash pip install CounterFit ``` 3. Controlla che la porta 5000 non sia già in uso: - Windows: `netstat -ano | findstr :5000` - macOS/Linux: `lsof -i :5000` 4. Termina il processo che usa la porta 5000 o usa una porta diversa: ```bash counterfit --port 5001 ``` #### Problema: impossibile connettersi a CounterFit dal codice **Errore:** connessione rifiutata o timeout **Soluzione:** 1. Verifica che CounterFit sia avviato: apri browser su `http://127.0.0.1:5000` 2. Controlla che URL di connessione nel codice corrisponda all’indirizzo CounterFit 3. Assicurati che il firewall non blocchi la connessione 4. Prova a riavviare sia l’app CounterFit che il codice #### Problema: sensori non appaiono in CounterFit **Sintomi:** i sensori creati non compaiono nell’interfaccia di CounterFit **Soluzione:** 1. Crea i sensori nell’interfaccia di CounterFit prima di eseguire il codice 2. Aggiorna la pagina del browser 3. Controlla che il tipo di sensore corrisponda a quello previsto dal codice 4. Pulisci la cache del browser --- ## Problemi di Connettività ### Connessione WiFi #### Problema: dispositivo non si connette al WiFi **Sintomi:** timeout connessione, autenticazione fallita **Soluzione:** 1. **Verifica SSID e password:** controlla che le credenziali siano corrette 2. **Banda WiFi:** la maggior parte dei dispositivi IoT supporta solo 2.4GHz (non 5GHz) 3. **Impostazioni del router:** - Disabilita AP isolation se attivata - Usa sicurezza WPA2-PSK (evita WPA3, WEP o reti aperte) - Verifica che DHCP sia abilitato 4. **Reti nascoste:** se SSID è nascosto, potrebbe essere necessario configurarlo esplicitamente 5. **Forza segnale:** avvicina il dispositivo al router 6. **Interferenze:** altri dispositivi, microonde o pareti possono interferire #### Problema: connessione WiFi cade frequentemente **Sintomi:** connettività intermittente **Soluzione:** 1. Controlla stabilità del router e considera un riavvio 2. Aggiorna firmware del dispositivo 3. Usa IP statico invece di DHCP 4. Riduci distanza dal router o aggiungi un ripetitore WiFi 5. Controlla interferenze da altri dispositivi 6. Verifica che l’alimentazione sia adeguata (specialmente per Raspberry Pi) ### Servizi Cloud #### Problema: impossibile connettersi a Azure IoT Hub **Errore:** autenticazione fallita, connessione rifiutata **Soluzione:** 1. **Verifica credenziali:** - Controlla che stringa di connessione sia corretta - Assicurati che non ci siano spazi o interruzioni di linea nella stringa 2. **Controlla registrazione dispositivo:** il dispositivo deve essere registrato nell’IoT Hub 3. **Firewall/proxy:** assicurati che siano consentiti MQTT (porta 8883) o HTTPS (porta 443) in uscita 4. **Regione IoT Hub:** verifica che IoT Hub sia attivo e non in regione diversa causando latenza 5. **Limiti di quota:** controlla se il livello gratuito è stato superato 6. **Test connessione:** ```bash az iot hub device-identity show-connection-string --hub-name YourIoTHub --device-id YourDevice ``` #### Problema: Azure Functions non si attiva **Sintomi:** messaggi inviati ma funzione non eseguita **Soluzione:** 1. Controlla che la Function App sia in esecuzione (non ferma) 2. Verifica la stringa di connessione nelle impostazioni della Function App 3. Controlla i log della funzione nel Portale Azure 4. Assicurati che il punto di fine compatibile Event Hub sia configurato correttamente 5. Verifica che il formato del messaggio corrisponda a quanto atteso dalla funzione 6. Controlla il piano di servizio della Function App (consumo vs dedicato) ### MQTT #### Problema: Connessione MQTT fallita **Errore:** Connessione rifiutata, autenticazione fallita **Soluzione:** 1. **Indirizzo broker:** Verificare che URL/IP del broker sia corretto 2. **Porta:** Controllare il numero di porta (1883 per non criptato, 8883 per TLS) 3. **Autenticazione:** Verificare username/password se richiesti 4. **TLS/SSL:** Assicurarsi che i certificati siano validi e attendibili 5. **Firewall:** Controllare che la porta non sia bloccata 6. **Test con client MQTT:** Usare MQTT Explorer o mosquitto_pub/sub per testare #### Problema: Messaggi MQTT non ricevuti **Sintomi:** Messaggi pubblicati ma non ricevuti dagli abbonati **Soluzione:** 1. **Nomi topic:** Verificare che il topic dell’abbonato corrisponda esattamente a quello del publisher 2. **Livello QoS:** Provare QoS 1 o 2 invece di 0 3. **Wildcard:** Controllare che i caratteri jolly del topic siano usati correttamente (`+` per livello singolo, `#` per livelli multipli) 4. **Messaggi trattenuti:** Il publisher può impostare il flag retain per conservare l’ultimo messaggio 5. **Tempi di connessione:** Assicurarsi che l’abbonato si connetta prima che i messaggi siano pubblicati --- ## Problemi con Sensori e Attuatori ### Sensori Grove #### Problema: Sensore fornisce valori errati **Sintomi:** Letture a 0, -1, o valori insensati **Soluzione:** 1. **Controllare connessioni:** Assicurarsi che il sensore sia collegato correttamente 2. **Porta corretta:** Verificare che il sensore sia nel tipo di porta adeguato: - Sensori analogici → Porte analogiche (A0, A2, A4) - Sensori digitali → Porte digitali (D5, D16, D18, ecc.) - Sensori I2C → Porte I2C 3. **Calibrazione:** Alcuni sensori necessitano calibrazione (umidità del suolo, luce) 4. **Riavvio:** Scollegare e ricollegare il sensore 5. **Datasheet sensore:** Verificare le specifiche e i requisiti del sensore #### Problema: Il sensore capacitivo di umidità del suolo legge sempre bagnato **Sintomi:** Sensore legge alta umidità anche da secco **Soluzione:** 1. **Calibrazione necessaria:** I sensori del suolo richiedono calibrazione: - Leggere valore in aria (linea di base a secco) - Leggere valore in acqua (linea di base a bagnato) - Mappare le letture tra questi valori 2. **Controllare rivestimento sensore:** I sensori di umidità possono degradarsi se il rivestimento è danneggiato 3. **Posizionamento:** Assicurarsi che il sensore sia inserito completamente nel terreno #### Problema: Letture errate di temperatura/umidità **Sintomi:** DHT11/DHT22 mostra temperatura o umidità errata **Soluzione:** 1. **Posizionamento sensore:** Evitare luce solare diretta, fonti di calore, o correnti d’aria 2. **Tempo di riscaldamento:** Lasciare 2 secondi dopo l’accensione prima di leggere 3. **Frequenza di lettura:** I sensori DHT necessitano tempo tra le letture (almeno 2 secondi) 4. **Controllare condensa:** La condensa può influenzare le letture 5. **Qualità sensore:** DHT11 è meno preciso di DHT22 ### Fotocamera #### Problema: Fotocamera non rilevata su Raspberry Pi **Errore:** `mmal: mmal_vc_component_create: failed to create component 'vc.ril.camera'` **Soluzione:** 1. **Abilitare interfaccia fotocamera:** ```bash sudo raspi-config ``` Vai in Interface Options → Camera → Enable 2. **Controllare cavo a nastro:** Assicurarsi che il cavo della fotocamera sia inserito correttamente - Lato blu rivolto verso le porte USB sul Pi Zero - Lato blu rivolto lontano dalle porte USB sul Pi 4 3. **Aggiornare firmware:** ```bash sudo apt update sudo apt full-upgrade sudo reboot ``` 4. **Testare fotocamera:** ```bash raspistill -o test.jpg ``` #### Problema: Immagini della fotocamera di scarsa qualità **Sintomi:** Immagini sfocate, scure o sbiadite **Soluzione:** 1. **Messa a fuoco:** Rimuovere pellicola protettiva dalla lente, regolare la messa a fuoco se possibile 2. **Illuminazione:** Assicurarsi che ci sia illuminazione adeguata 3. **Impostazioni fotocamera:** Regolare esposizione, ISO, bilanciamento del bianco nel codice 4. **Stabilità:** Mantenere la fotocamera ferma, usare un treppiede se necessario 5. **Risoluzione:** Non superare la massima risoluzione della fotocamera ### Microfono e Altoparlante #### Problema: Nessun input/output audio **Sintomi:** Microfono non registra, altoparlante non emette suono **Soluzione:** 1. **Controllare connessioni:** Verificare che i dispositivi audio siano collegati correttamente 2. **Testare hardware:** - Altoparlante: `speaker-test -t wav -c 2` - Microfono: `arecord -l` per elencare, `arecord test.wav` per registrare 3. **Impostazioni volume:** Controllare e regolare il volume: ```bash alsamixer ``` 4. **Selezionare dispositivo audio:** Specificare il dispositivo audio corretto nel codice 5. **Problemi driver:** Aggiornare ALSA o reinstallare driver audio #### Problema: ReSpeaker hat non funziona **Sintomi:** Dispositivo audio non rilevato **Soluzione:** 1. **Installare driver:** ```bash git clone https://github.com/HinTak/seeed-voicecard cd seeed-voicecard sudo ./install.sh sudo reboot ``` 2. **Verifica installazione:** `arecord -l` dovrebbe elencare ReSpeaker 3. **Aggiornare firmware:** Alcune versioni di Pi OS necessitano aggiornamenti driver 4. **Controllare collegamento:** Assicurarsi che l’hat sia collegato correttamente ai pin GPIO --- ## Problemi con Ambiente di Sviluppo ### VS Code #### Problema: Terminale non attiva automaticamente ambiente virtuale **Sintomi:** Il terminale si apre ma venv non è attivato **Soluzione:** 1. **Impostare interprete Python:** Palette comandi → "Python: Select Interpreter" → Scegliere venv 2. **Riavviare VS Code** dopo aver selezionato l’interprete 3. **Controllare impostazioni:** In `settings.json` aggiungere: ```json "python.terminal.activateEnvironment": true ``` #### Problema: Codice non eseguito sul dispositivo **Sintomi:** Codice eseguito ma niente succede sul dispositivo **Soluzione:** 1. **Verificare che codice sia salvato** (controllare punto sulla scheda file) 2. **Controllare quale Python è in uso:** `which python` o `where python` 3. **Per Wio Terminal:** Assicurarsi che il codice sia caricato via PlatformIO (cliccare bottone upload) 4. **Per Raspberry Pi:** Collegarsi via SSH e eseguire il codice lì 5. **Controllare finestra output** per errori #### Problema: IntelliSense non mostra funzioni della libreria **Sintomi:** Nessun completamento automatico per moduli importati **Soluzione:** 1. Assicurarsi che la libreria sia installata nell’ambiente corrente 2. Ricaricare la finestra di VS Code 3. Controllare che l’interprete Python sia corretto 4. Installare type stubs se disponibili: `pip install types-` ### Ambienti Virtuali Python #### Problema: Impossibile creare ambiente virtuale **Errore:** `The virtual environment was not created successfully` **Soluzione:** 1. **Installare modulo venv:** - Ubuntu/Debian: `sudo apt install python3-venv` - macOS: Incluso con Python - Windows: Reinstallare Python con tutti i componenti 2. **Verificare installazione Python:** Accertarsi che Python sia installato correttamente 3. **Usare percorso completo:** Provare `python3 -m venv .venv` con invocazione esplicita python3 #### Problema: Pacchetti installati nella posizione sbagliata **Sintomi:** Errore di import dopo installazione pacchetto **Soluzione:** 1. **Verificare che venv sia attivato:** Il prompt dovrebbe mostrare `(.venv)` 2. **Controllare posizione pip:** `which pip` dovrebbe puntare a `.venv/bin/pip` 3. **Reinstallare in venv:** Attivare venv, quindi `pip install ` 4. **Non usare sudo con pip** in ambiente virtuale #### Problema: Ambiente virtuale non portabile **Sintomi:** Venv non funziona dopo spostamento o su computer diverso **Soluzione:** 1. **Non spostare venv:** Eliminare e ricreare nella nuova posizione 2. **Usare requirements.txt:** ```bash pip freeze > requirements.txt pip install -r requirements.txt ``` 3. **Ricreare venv:** ```bash python3 -m venv .venv source .venv/bin/activate # oppure activate.bat su Windows pip install -r requirements.txt ``` ### Dipendenze #### Problema: Installazione pacchetto fallisce **Errore:** Vari errori pip durante installazione **Soluzione:** 1. **Aggiornare pip:** ```bash pip install --upgrade pip ``` 2. **Installare strumenti di compilazione:** - Ubuntu/Debian: `sudo apt install build-essential python3-dev` - macOS: `xcode-select --install` - Windows: Installare Visual Studio Build Tools 3. **Controllare connessione internet** 4. **Provare indice pacchetti diverso:** `pip install --index-url https://pypi.org/simple/ ` 5. **Installare versione specifica:** `pip install ==` #### Problema: Conflitti di dipendenze **Errore:** `ERROR: pip's dependency resolver does not currently take into account all the packages that are installed` **Soluzione:** 1. **Usare ambiente virtuale nuovo** per ogni progetto 2. **Aggiornare pacchetti:** `pip install --upgrade ` 3. **Controllare requisiti:** Usare `pip check` per trovare conflitti 4. **Installare versioni compatibili:** Specificare intervalli di versioni in requirements.txt --- ## Problemi di Prestazioni ### Problema: Codice lento **Sintomi:** Ritardi, timeout, comportamento non reattivo **Soluzione:** 1. **Ridurre frequenza lettura sensori:** Non leggere i sensori troppo spesso 2. **Ottimizzare cicli:** Evitare busy-waiting, usare sleep() o ritardi 3. **Problemi di memoria:** - Chiudere applicazioni non necessarie - Liberare spazio di archiviazione - Monitorare con `top` o `htop` su Pi 4. **Velocità scheda SD:** Usare scheda SD più veloce o SSD per Raspberry Pi 5. **Ritardi di rete:** Usare operazioni async per chiamate di rete ### Problema: Errori di memoria esaurita **Errore:** `MemoryError` o blocco del sistema **Soluzione:** 1. **Per Raspberry Pi:** - Chiudere applicazioni non necessarie - Aumentare spazio swap - Usare OS più leggero (versione Lite) - Aggiornare RAM (Pi 4 ha opzioni 2/4/8GB) 2. **Per Wio Terminal:** - Ridurre dimensioni buffer - Usare immagini più piccole - Ottimizzare uso stringhe - Controllare perdite di memoria (memoria non liberata) ### Problema: Perdita o corruzione dati **Sintomi:** Messaggi mancanti, file corrotti **Soluzione:** 1. **Problemi con scheda SD:** - Usare schede SD di qualità (evitare economiche/fake) - Eseguire backup regolari - Spegnere correttamente (non staccare alimentazione) 2. **Overflow buffer:** Aumentare dimensioni buffer nel codice 3. **Affidabilità rete:** Implementare logica di retry e gestione errori 4. **Qualità del Servizio:** Usare QoS MQTT 1 o 2 per messaggi importanti --- ## Messaggi di Errore Comuni ### `ModuleNotFoundError: No module named 'X'` **Causa:** Pacchetto non installato o ambiente virtuale non attivato **Soluzione:** ```bash pip install X ``` Assicurarsi prima che l’ambiente virtuale sia attivato. ### `Permission denied` su Linux/macOS **Causa:** Necessarie autorizzazioni elevate o problema permessi file **Soluzione:** - Per operazioni di sistema: Usare `sudo` - Per pip: NON usare sudo con venv, attivare prima venv - Per porta seriale: Aggiungere utente al gruppo dialout: `sudo usermod -a -G dialout $USER`, poi logout/login ### `OSError: [Errno 98] Address already in use` **Causa:** Porta già utilizzata da un altro processo **Soluzione:** 1. Trovare processo che usa porta: `lsof -i :` o `netstat -ano | findstr :` 2. Terminare processo o usare porta diversa nel codice ### `SSL: CERTIFICATE_VERIFY_FAILED` **Causa:** Fallita la validazione del certificato SSL **Soluzione:** 1. Aggiornare certificati: `pip install --upgrade certifi` 2. Controllare che l’ora di sistema sia corretta: `date` 3. Solo per sviluppo (non produzione): Disabilitare verifica nel codice ### `IndentationError: unexpected indent` **Causa:** Problemi di indentazione in Python (misto tab/spazi) **Soluzione:** 1. Usare indentazione coerente (4 spazi è lo standard Python) 2. Configurare editor per usare spazi al posto di tab 3. VS Code: Impostare `"editor.insertSpaces": true` e `"editor.tabSize": 4` ### `UnicodeDecodeError` o `UnicodeEncodeError` **Causa:** Problemi di codifica caratteri **Soluzione:** ```python # Durante la lettura dei file with open('file.txt', 'r', encoding='utf-8') as f: content = f.read() # Durante la scrittura dei file with open('file.txt', 'w', encoding='utf-8') as f: f.write(content) ``` --- ## Richiedere Aiuto Se hai provato questi passaggi di risoluzione problemi e riscontri ancora problemi: ### 1. Controlla Risorse Esistenti - **Documentazione:** Consulta il [README](README.md) e le istruzioni delle lezioni - **Guide hardware:** Controlla [hardware.md](hardware.md) per informazioni specifiche sull’hardware - **Seeed Studio Wiki:** [Seeed Studio Wiki](https://wiki.seeedstudio.com/) per componenti Grove ### 2. Cerca Problemi Simili - **GitHub Issues:** Cerca tra le [issue esistenti](https://github.com/microsoft/IoT-For-Beginners/issues) - **Stack Overflow:** Cerca messaggi di errore - **Forum dispositivi:** Consulta forum Raspberry Pi o Arduino ### 3. Crea un Issue su GitHub Se non trovi una soluzione: 1. Vai su [GitHub Issues](https://github.com/microsoft/IoT-For-Beginners/issues) 2. Clicca "New Issue" 3. Fornisci: - Chiara descrizione del problema - Passi per riprodurre - Messaggi di errore (testo completo) - Versioni hardware/software - Cosa hai già provato - Screenshot se rilevanti ### 4. Unisciti alla Comunità - **Discord:** [Microsoft Foundry Discord](https://discord.gg/nTYy5BXMWG) - **Microsoft Learn:** [Microsoft Learn IoT](https://docs.microsoft.com/learn/browse/?products=azure-iot) ### 5. Fornisci Buoni Report di Bug Un buon report di bug include: - **Ambiente:** Sistema operativo, versione di Python, hardware utilizzato - **Passi per riprodurre:** Passi esatti che causano il problema - **Comportamento previsto:** Cosa dovrebbe succedere - **Comportamento effettivo:** Cosa succede realmente - **Messaggi di errore:** Testo completo dell'errore, non screenshot - **Codice:** Esempio minimo di codice che riproduce il problema --- ## Consigli per la prevenzione ### Buone pratiche generali 1. **Fare backup:** Backup regolari di schede SD/codice funzionanti 2. **Documentare le modifiche:** Annotare cosa funziona nei commenti 3. **Controllo versione:** Usare git per tracciare le modifiche al codice 4. **Testare incrementalmente:** Testare piccole modifiche prima di combinarle 5. **Leggere i messaggi di errore:** Spesso indicano esattamente cosa non va 6. **Aggiornare regolarmente:** Mantenere software/firmware aggiornati 7. **Usare componenti di qualità:** Evitare cavi/alimentatori economici 8. **Alimentazione stabile:** Usare alimentatore appropriato (soprattutto per Pi) ### Flusso di lavoro per lo sviluppo 1. **Iniziare semplice:** Partire da codice di esempio che funziona 2. **Una modifica alla volta:** Più facile trovare cosa rompe 3. **Test frequenti:** Scoprire i problemi presto 4. **Mantenere ordine:** Organizzare file e codice in modo logico 5. **Commentare il codice:** Il te stesso futuro ti ringrazierà --- *Questa guida alla risoluzione dei problemi è mantenuta dalla comunità. Se trovi una soluzione a un problema non elencato qui, considera di [contribuire](CONTRIBUTING.md) per aiutare gli altri!* --- **Disclaimer**: Questo documento è stato tradotto utilizzando il servizio di traduzione AI [Co-op Translator](https://github.com/Azure/co-op-translator). Sebbene ci impegniamo per l’accuratezza, si prega di notare che le traduzioni automatiche possono contenere errori o inesattezze. Il documento originale nella sua lingua nativa deve essere considerato la fonte autorevole. Per informazioni critiche, si raccomanda una traduzione professionale umana. Non siamo responsabili per eventuali malintesi o interpretazioni errate derivanti dall’uso di questa traduzione.