30 KiB
Przewodnik rozwiązywania problemów
Ten przewodnik pomoże Ci rozwiązać typowe problemy podczas pracy z kursem IoT for Beginners. Problemy są uporządkowane według kategorii, aby ułatwić nawigację.
Spis treści
- Problemy z instalacją
- Problemy sprzętowe
- Problemy z łącznością
- Problemy z czujnikami i siłownikami
- Problemy ze środowiskiem programistycznym
- Problemy z wydajnością
- Typowe komunikaty o błędach
- Uzyskiwanie pomocy
Problemy z instalacją
Instalacja Pythona
Problem: Wersja Pythona jest zbyt stara
Błąd: Python 3.6 lub wyższy jest wymagany
Rozwiązanie:
- Pobierz najnowszą wersję Pythona 3 z python.org
- Podczas instalacji na Windows zaznacz opcję „Add Python to PATH”
- Zweryfikuj instalację:
python3 --version
Problem: Konflikty związane z wieloma wersjami Pythona
Objawy: Uruchamiana jest niewłaściwa wersja Pythona, pakiety instalują się w złym miejscu
Rozwiązanie:
- Windows: Używaj
py -3zamiastpythonaby jawnie wywołać Python 3 - macOS/Linux: Używaj
python3zamiastpython - Zawsze twórz i używaj wirtualnych środowisk dla projektów
Problem: Nie znaleziono polecenia pip
Błąd: 'pip' nie jest rozpoznawany jako polecenie wewnętrzne lub zewnętrzne
Rozwiązanie:
- Spróbuj zamiast
pipużyćpip3 - Lub użyj
python -m pipalbopython3 -m pip - Upewnij się, że Python został dodany do PATH (przeinstaluj Pythona i zaznacz tę opcję)
VS Code i rozszerzenia
Problem: Rozszerzenie Pylance nie działa
Objawy: Brak IntelliSense, uzupełniania kodu lub sprawdzania typów w Pythonie
Rozwiązanie:
- Otwórz paletę poleceń VS Code (
Ctrl+Shift+PlubCmd+Shift+P) - Wpisz „Python: Select Interpreter”
- Wybierz właściwy interpreter Pythona (wirtualne środowisko jeśli używasz)
- Przeładuj okno VS Code
Problem: VS Code nie wykrywa wirtualnego środowiska
Objawy: Wybrano niewłaściwy interpreter Pythona
Rozwiązanie:
- Upewnij się, że aktywowałeś wirtualne środowisko w terminalu
- Otwórz paletę poleceń i uruchom „Python: Select Interpreter”
- Wybierz interpreter z folderu
.venv - Sprawdź, czy pasek stanu (lewy dolny róg) pokazuje właściwą wersję Pythona
PlatformIO (Wio Terminal)
Problem: Instalacja PlatformIO nie powiodła się
Błąd: Różne błędy podczas instalacji PlatformIO
Rozwiązanie:
- Upewnij się, że VS Code jest aktualny
- Najpierw zainstaluj rozszerzenie C/C++
- Uruchom ponownie VS Code po instalacji PlatformIO
- Sprawdź połączenie internetowe (PlatformIO pobiera duże pliki)
Problem: PlatformIO nie wykrywa płytki
Objawy: Nie można wgrać kodu do Wio Terminal
Rozwiązanie:
- Wypróbuj inny kabel USB (niektóre kable służą tylko do ładowania)
- Sprawdź Menedżera urządzeń (Windows) lub
ls /dev/tty*(macOS/Linux) - Zainstaluj lub zaktualizuj sterowniki USB
- Wypróbuj inny port USB
- Przesuń przełącznik zasilania na Wio Terminal szybko dwa razy, aby wejść w tryb bootloadera
Problem: Błędy kompilacji w PlatformIO
Błąd: fatal error: Arduino.h: No such file or directory
Rozwiązanie:
- Usuń folder
.piow projekcie - Uruchom „PlatformIO: Rebuild” z palety poleceń
- Upewnij się, że plik
platformio.inizawiera poprawną konfigurację płyty:[env:seeed_wio_terminal] platform = atmelsam board = seeed_wio_terminal framework = arduino
Biblioteki Grove
Problem: Import biblioteki Grove nie działa na Raspberry Pi
Błąd: ModuleNotFoundError: No module named 'grove'
Rozwiązanie:
- Ponownie zainstaluj biblioteki Grove:
cd ~ git clone https://github.com/Seeed-Studio/grove.py cd grove.py sudo pip3 install . - Jeśli używasz wirtualnego środowiska, może być konieczna globalna instalacja lub skopiowanie bibliotek
- Sprawdź, czy I2C jest włączone:
sudo raspi-config nonint do_i2c 0
Problem: Czujnik Grove nie jest wykrywany
Błąd: IOError: [Errno 121] Remote I/O error
Rozwiązanie:
- Sprawdź połączenia fizyczne (upewnij się, że kabel Grove jest całkowicie wsunięty)
- Zweryfikuj, czy czujnik podłączony jest do właściwego portu (analogowy, cyfrowy, I2C, UART)
- Uruchom
i2cdetect -y 1aby zobaczyć, czy urządzenie pojawia się na magistrali I2C - Wypróbuj inny kabel Grove
- Upewnij się, że Grove Base Hat jest poprawnie osadzony na pinach GPIO Raspberry Pi
Problemy sprzętowe
Raspberry Pi
Problem: Raspberry Pi nie uruchamia się
Objawy: Brak obrazu, brak aktywności diod LED lub wyświetla się tęczowy ekran
Rozwiązanie:
- Sprawdź zasilacz: Użyj oficjalnego zasilacza 5V 3A USB-C dla Pi 4
- Problemy z kartą SD:
- Sformatuj kartę SD i ponownie zainstaluj Raspberry Pi OS
- Wypróbuj inną kartę SD (używaj polecanych marek)
- Upewnij się, że karta SD jest prawidłowo włożona
- Sprawdź połączenie HDMI: Spróbuj obu portów HDMI na Pi 4, użyj portu HDMI bliższego zasilaniu
Problem: Nie można połączyć się z Raspberry Pi przez SSH
Objawy: Połączenie odrzucone lub brak odpowiedzi
Rozwiązanie:
- Włącz SSH:
- Podczas nagrywania SD karti za pomocą Raspberry Pi Imager, skonfiguruj SSH w zaawansowanych opcjach
- Lub utwórz pusty plik o nazwie
ssh(bez rozszerzenia) w partycji boot
- Znajdź adres IP Pi:
- Sprawdź urządzenia podłączone do routera
- Użyj
ping raspberrypi.local(jeśli działa mDNS) - Użyj narzędzi do skanowania sieci, takich jak
nmaplub Angry IP Scanner
- Sprawdź sieć:
- Upewnij się, że Pi jest w tej samej sieci co komputer
- Spróbuj połączenia przez Ethernet zamiast WiFi
- Zweryfikuj nazwę użytkownika/hasło (domyślnie: użytkownik
pi, hasłoraspberry)
Problem: Grove Base Hat nie jest rozpoznany
Objawy: Czujniki nie działają, błędy I2C
Rozwiązanie:
- Upewnij się, że Base Hat jest poprawnie osadzony na wszystkich pinach GPIO
- Sprawdź, czy nie ma wygiętych pinów na Pi lub Base Hat
- Włącz interfejs I2C:
sudo raspi-config nonint do_i2c 0 sudo reboot - Zweryfikuj działanie I2C:
i2cdetect -y 1
Problem: Raspberry Pi działa wolno
Objawy: Interfejs opóźnia się, powolna reakcja
Rozwiązanie:
- Sprawdź szybkość karty SD (używaj klasy 10 lub lepszej, lub SSD przez USB)
- Zwolnij miejsce na dysku:
df -hdo sprawdzenia, usuń niepotrzebne pliki - Zmniejsz pamięć GPU w
raspi-config, jeśli nie używasz intensywnie kamery/wyświetlacza - Zamknij zbędne aplikacje
- Rozważ aktualizację do Pi 4 z większą ilością RAM, jeśli masz Pi 3 lub starszy
Wio Terminal
Problem: Ekran Wio Terminal pozostaje czarny
Objawy: Brak wyświetlania po wgraniu kodu
Rozwiązanie:
- Sprawdź, czy kod inicjalizuje wyświetlacz (biblioteka TFT_eSPI)
- Zaktualizuj firmware Wio Terminal z Seeed Wiki
- Dodaj kod inicjalizujący wyświetlacz:
#include <TFT_eSPI.h> TFT_eSPI tft; tft.begin(); tft.fillScreen(TFT_BLACK); - Spróbuj wgrać przykładowy szkic z PlatformIO, aby przetestować sprzęt
Problem: WiFi nie działa na Wio Terminal
Objawy: Nie można połączyć się z WiFi, błędy sieciowe
Rozwiązanie:
- Zaktualizuj firmware WiFi: Postępuj według instrukcji aktualizacji WiFi Wio Terminal
- Sprawdź dane uwierzytelniające WiFi: Upewnij się, że SSID i hasło są poprawne
- Pasmo WiFi: Wio Terminal obsługuje tylko WiFi 2.4GHz (nie 5GHz)
- Siła sygnału: Przesuń urządzenie bliżej routera
- Ustawienia routera: Niektóre sieci enterprise/WPA-Enterprise mogą nie działać
Problem: Wio Terminal nie jest rozpoznawany przez komputer
Objawy: Urządzenie USB nie jest wykrywane
Rozwiązanie:
- Wypróbuj inny kabel USB: Używaj kabla danych, a nie tylko do ładowania
- Wejdź w tryb bootloadera: Przesuń wyłącznik zasilania dwa razy szybko w dół
- Niechbieska dioda LED powinna pulsować, urządzenie pojawi się jako „Arduino” w Menedżerze urządzeń
- Zainstaluj sterowniki (Windows):
- Pobierz i zainstaluj sterownik USB Seeed
- Wypróbuj inny port USB: Unikaj hubów USB, używaj bezpośredniego połączenia
- Zaktualizuj sterowniki USB systemu
Problem: Czujniki nie działają na Wio Terminal
Objawy: Czujniki Grove nie odczytują danych
Rozwiązanie:
- Sprawdź połączenia kabla Grove
- Zweryfikuj, że używasz właściwego portu Grove (lewy lub prawy)
- Dołącz odpowiednie biblioteki dla czujnika
- Sprawdź wymagania zasilania czujnika
- Przetestuj czujnik przykładowym kodem z biblioteki
Wirtualne urządzenie (CounterFit)
Problem: Aplikacja CounterFit nie uruchamia się
Błąd: Różne błędy Pythona podczas uruchamiania CounterFit
Rozwiązanie:
- Upewnij się, że wirtualne środowisko jest aktywne
- Zainstaluj/ponownie zainstaluj CounterFit:
pip install CounterFit - Sprawdź, czy port 5000 nie jest już zajęty:
- Windows:
netstat -ano | findstr :5000 - macOS/Linux:
lsof -i :5000
- Windows:
- Zakończ proces korzystający z portu 5000 lub użyj innego portu:
counterfit --port 5001
Problem: Nie można połączyć się z CounterFit z kodu
Błąd: Połączenie odrzucone lub brak odpowiedzi
Rozwiązanie:
- Zweryfikuj, że CounterFit działa: otwórz przeglądarkę i wpisz
http://127.0.0.1:5000 - Sprawdź, czy adres URL połączenia w kodzie odpowiada adresowi CounterFit
- Upewnij się, że zapora sieciowa nie blokuje połączenia
- Spróbuj ponownie uruchomić zarówno aplikację CounterFit, jak i swój kod
Problem: Czujniki nie pojawiają się w CounterFit
Objawy: Utworzone czujniki nie wyświetlają się w interfejsie CounterFit
Rozwiązanie:
- Utwórz czujniki w interfejsie CounterFit przed uruchomieniem kodu
- Odśwież stronę w przeglądarce
- Sprawdź, czy typ czujnika odpowiada temu, czego oczekuje kod
- Wyczyść pamięć podręczną przeglądarki
Problemy z łącznością
Połączenie WiFi
Problem: Urządzenie nie może połączyć się z WiFi
Objawy: Przekroczenie czasu oczekiwania, uwierzytelnienie nie powiodło się
Rozwiązanie:
- Sprawdź SSID i hasło: Zweryfikuj, czy dane uwierzytelniające są poprawne
- Pasmo WiFi: Większość urządzeń IoT obsługuje tylko 2.4GHz (nie 5GHz)
- Ustawienia routera:
- Wyłącz izolację AP, jeśli jest włączona
- Używaj zabezpieczeń WPA2-PSK (unikaj WPA3, WEP lub otwartych sieci)
- Upewnij się, że DHCP jest włączone
- Ukryte sieci: Jeśli SSID jest ukryte, być może trzeba je jawnie skonfigurować
- Siła sygnału: Przesuń urządzenie bliżej routera
- Zakłócenia: Inne urządzenia, kuchenka mikrofalowa lub ściany mogą powodować zakłócenia
Problem: Połączenie WiFi często zanika
Objawy: Przerywane połączenie
Rozwiązanie:
- Sprawdź stabilność routera i rozważ jego restart
- Zaktualizuj firmware urządzenia
- Użyj statycznego adresu IP zamiast DHCP
- Zmniejsz odległość od routera lub dodaj wzmacniacz sygnału WiFi
- Sprawdź zakłócenia od innych urządzeń
- Zweryfikuj, czy zasilanie jest wystarczające (zwłaszcza dla Raspberry Pi)
Usługi w chmurze
Problem: Nie można połączyć się z Azure IoT Hub
Błąd: Uwierzytelnianie nie powiodło się, połączenie odrzucone
Rozwiązanie:
- Zweryfikuj dane uwierzytelniające:
- Sprawdź, czy ciąg połączeniowy jest poprawny
- Upewnij się, że nie ma dodatkowych spacji lub znaków nowej linii w ciągu połączeniowym
- Sprawdź rejestrację urządzenia: Urządzenie musi być zarejestrowane w IoT Hub
- Zapora/proxy: Upewnij się, że dostęp wychodzący na MQTT (port 8883) lub HTTPS (port 443) jest dozwolony
- Region IoT Hub: Upewnij się, że IoT Hub działa i nie jest w innym regionie powodującym opóźnienia
- Limity kwot: Sprawdź, czy limity darmowego planu nie zostały przekroczone
- Testuj połączenie:
az iot hub device-identity show-connection-string --hub-name YourIoTHub --device-id YourDevice
Problem: Funkcje Azure nie są wywoływane
Objawy: Wiadomości są wysyłane, ale funkcja nie jest uruchamiana
Rozwiązanie:
- Sprawdź, czy aplikacja funkcji działa (nie jest zatrzymana)
- Zweryfikuj ciąg połączeniowy w ustawieniach aplikacji funkcji
- Sprawdź logi funkcji w portalu Azure
- Upewnij się, że punkt końcowy kompatybilny z Event Hub jest poprawnie skonfigurowany
- Zweryfikuj, czy format wiadomości odpowiada oczekiwaniom funkcji
- Sprawdź plan usługi aplikacji funkcji (konsumpcyjny vs dedykowany)
MQTT
Problem: Połączenie MQTT nie powiodło się
Błąd: Połączenie odmówione, uwierzytelnianie nie powiodło się
Rozwiązanie:
- Adres brokera: Sprawdź, czy adres URL/IP brokera jest poprawny
- Port: Sprawdź numer portu (1883 dla nieszyfrowanego, 8883 dla TLS)
- Uwierzytelnianie: Zweryfikuj nazwę użytkownika/hasło, jeśli wymagane
- TLS/SSL: Upewnij się, że certyfikaty są ważne i zaufane
- Firewall: Sprawdź, czy port nie jest zablokowany
- Test za pomocą klienta MQTT: Użyj MQTT Explorer lub mosquitto_pub/sub do testu
Problem: Wiadomości MQTT nie są odbierane
Objawy: Wiadomości są publikowane, ale nie są odbierane przez subskrybentów
Rozwiązanie:
- Nazwy tematów: Zweryfikuj, czy temat subskrybenta dokładnie pasuje do tematu wydawcy
- Poziom QoS: Spróbuj QoS 1 lub 2 zamiast 0
- Wildcardy: Sprawdź, czy symbole wieloznaczne tematów są używane poprawnie (
+dla pojedynczego poziomu,#dla wielopoziomowego) - Zachowane wiadomości: Wydawca może ustawić flagę retain, aby zachować ostatnią wiadomość
- Czas połączenia: Upewnij się, że subskrybent łączy się przed publikacją wiadomości
Problemy z czujnikami i aktuatorami
Czujniki Grove
Problem: Czujnik zwraca niepoprawne wartości
Objawy: Odczyty wynoszą 0, -1 lub są bezsensowne
Rozwiązanie:
- Sprawdź połączenia: Upewnij się, że czujnik jest poprawnie podłączony
- Prawidłowy port: Zweryfikuj, czy czujnik jest podłączony do odpowiedniego typu portu:
- Czujniki analogowe → porty analogowe (A0, A2, A4)
- Czujniki cyfrowe → porty cyfrowe (D5, D16, D18 itd.)
- Czujniki I2C → porty I2C
- Kalibracja: Niektóre czujniki wymagają kalibracji (wilgotność gleby, światło)
- Restart: Odłącz i ponownie podłącz czujnik
- Karta katalogowa czujnika: Sprawdź specyfikacje i wymagania czujnika
Problem: Pojemnościowy czujnik wilgotności gleby zawsze wskazuje wilgotność
Objawy: Czujnik odczytuje wysoką wilgotność, nawet gdy gleba jest sucha
Rozwiązanie:
- Wymagana kalibracja: Czujniki gleby wymagają kalibracji:
- Odczyt wartości na powietrzu (sucha baza)
- Odczyt wartości w wodzie (mokra baza)
- Mapuj odczyty pomiędzy tymi wartościami
- Sprawdź powłokę czujnika: Czujniki wilgotności mogą się pogorszyć, jeśli powłoka jest uszkodzona
- Miejsce instalacji: Upewnij się, że czujnik jest całkowicie umieszczony w glebie
Problem: Niepoprawne odczyty czujnika temperatury/wilgotności
Objawy: DHT11/DHT22 pokazuje błędną temperaturę lub wilgotność
Rozwiązanie:
- Umieszczenie czujnika: Unikaj bezpośredniego światła słonecznego, źródeł ciepła lub przepływu powietrza
- Czas rozgrzewania: Pozwól czujnikowi 2 sekundy po włączeniu zasilania przed odczytem
- Częstotliwość odczytu: Czujniki DHT potrzebują czasu pomiędzy odczytami (co najmniej 2 sekundy)
- Sprawdź kondensację: Może wpływać na odczyty
- Jakość czujnika: DHT11 jest mniej dokładny niż DHT22
Kamera
Problem: Kamera nie jest wykrywana na Raspberry Pi
Błąd: mmal: mmal_vc_component_create: failed to create component 'vc.ril.camera'
Rozwiązanie:
- Włącz interfejs kamery:
Przejdź do Interface Options → Camera → Włączsudo raspi-config - Sprawdź taśmę: Upewnij się, że taśma kamery jest poprawnie włożona
- Niebieska strona skierowana w stronę portów USB na Pi Zero
- Niebieska strona skierowana od portów USB na Pi 4
- Aktualizacja firmware:
sudo apt update sudo apt full-upgrade sudo reboot - Test kamery:
raspistill -o test.jpg
Problem: Zdjęcia z kamery są złej jakości
Objawy: Nieostre, ciemne lub wyblakłe obrazy
Rozwiązanie:
- Ostrość: Usuń ochronną folię z obiektywu, wyreguluj ostrość, jeśli jest regulowana
- Oświetlenie: Zapewnij odpowiednie oświetlenie
- Ustawienia kamery: Dostosuj ekspozycję, ISO, balans bieli w kodzie
- Stabilność: Trzymaj kamerę nieruchomo, użyj statywu jeśli potrzeba
- Rozdzielczość: Nie przekraczaj maksymalnej rozdzielczości kamery
Mikrofon i Głośnik
Problem: Brak dźwięku wejściowego/wyjściowego
Objawy: Mikrofon nie nagrywa, głośnik nie odtwarza dźwięku
Rozwiązanie:
- Sprawdź połączenia: Zweryfikuj, czy urządzenia audio są poprawnie podłączone
- Test sprzętu:
- Głośnik:
speaker-test -t wav -c 2 - Mikrofon:
arecord -ldo listy,arecord test.wavdo nagrania
- Głośnik:
- Ustawienia głośności: Sprawdź i dostosuj głośność:
alsamixer - Wybierz urządzenie audio: Określ poprawne urządzenie audio w kodzie
- Problemy ze sterownikami: Zaktualizuj ALSA lub ponownie zainstaluj sterowniki audio
Problem: Nakładka ReSpeaker nie działa
Objawy: Urządzenie audio nie jest wykrywane
Rozwiązanie:
- Zainstaluj sterowniki:
git clone https://github.com/HinTak/seeed-voicecard cd seeed-voicecard sudo ./install.sh sudo reboot - Sprawdź instalację:
arecord -lpowinno wykazać ReSpeaker - Aktualizacja firmware: Niektóre wersje Pi OS wymagają aktualizacji sterowników
- Sprawdź montaże: Upewnij się, że nakładka jest poprawnie podłączona do pinów GPIO
Problemy z środowiskiem programistycznym
VS Code
Problem: Terminal nie aktywuje automatycznie środowiska wirtualnego
Objawy: Terminal się otwiera, ale venv nie jest aktywowany
Rozwiązanie:
- Ustaw interpreter Pythona: Paleta poleceń → "Python: Select Interpreter" → Wybierz venv
- Uruchom ponownie VS Code po wybraniu interpretera
- Sprawdź ustawienia: W
settings.jsondodaj:"python.terminal.activateEnvironment": true
Problem: Kod nie działa na urządzeniu
Objawy: Kod działa, ale nic się nie dzieje na urządzeniu
Rozwiązanie:
- Zweryfikuj, czy kod jest zapisany (sprawdź kropkę na zakładce pliku)
- Sprawdź, który Python działa:
which pythonlubwhere python - Dla Wio Terminal: Upewnij się, że kod jest przesłany przez PlatformIO (kliknij przycisk upload)
- Dla Raspberry Pi: Połącz się przez SSH i uruchom kod tam
- Sprawdź okno wyjścia pod kątem błędów
Problem: IntelliSense nie pokazuje funkcji biblioteki
Objawy: Brak autouzupełniania dla importowanych modułów
Rozwiązanie:
- Upewnij się, że biblioteka jest zainstalowana w bieżącym środowisku
- Przeładuj okno VS Code
- Sprawdź, czy interpreter Pythona jest poprawny
- Zainstaluj typy (type stubs), jeśli są dostępne:
pip install types-<library-name>
Środowiska wirtualne Pythona
Problem: Nie można utworzyć środowiska wirtualnego
Błąd: The virtual environment was not created successfully
Rozwiązanie:
- Zainstaluj moduł venv:
- Ubuntu/Debian:
sudo apt install python3-venv - macOS: Powinien być dołączony do Pythona
- Windows: Zainstaluj ponownie Pythona ze wszystkimi składnikami
- Ubuntu/Debian:
- Sprawdź instalację Pythona: Zweryfikuj, czy Python jest poprawnie zainstalowany
- Użyj pełnej ścieżki: Spróbuj
python3 -m venv .venvz explicite wywołaniem python3
Problem: Pakiety instalowane w niewłaściwej lokalizacji
Objawy: Błąd importu po instalacji pakietu
Rozwiązanie:
- Zweryfikuj, czy venv jest aktywowany: Wiersz poleceń powinien pokazywać
(.venv) - Sprawdź lokalizację pip:
which pippowinno wskazywać.venv/bin/pip - Zainstaluj ponownie w venv: Aktywuj venv, następnie
pip install <package> - Nie używaj sudo z pip w środowisku wirtualnym
Problem: Środowisko wirtualne nie jest przenośne
Objawy: Venv nie działa po przeniesieniu lub na innym komputerze
Rozwiązanie:
- Nie przenoś venv: Usuń i utwórz ponownie w nowym miejscu
- Używaj requirements.txt:
pip freeze > requirements.txt pip install -r requirements.txt - Utwórz ponownie venv:
python3 -m venv .venv source .venv/bin/activate # lub activate.bat w systemie Windows pip install -r requirements.txt
Zależności
Problem: Błąd instalacji pakietu
Błąd: Różne błędy pip podczas instalacji
Rozwiązanie:
- Zaktualizuj pip:
pip install --upgrade pip - Zainstaluj narzędzia build:
- Ubuntu/Debian:
sudo apt install build-essential python3-dev - macOS:
xcode-select --install - Windows: Zainstaluj Visual Studio Build Tools
- Ubuntu/Debian:
- Sprawdź połączenie internetowe
- Próbuj innego indeksu pakietów:
pip install --index-url https://pypi.org/simple/ <package> - Zainstaluj konkretną wersję:
pip install <package>==<version>
Problem: Konflikty zależności
Błąd: ERROR: pip's dependency resolver does not currently take into account all the packages that are installed
Rozwiązanie:
- Używaj świeżego środowiska wirtualnego dla każdego projektu
- Aktualizuj pakiety:
pip install --upgrade <package> - Sprawdź wymagania: Użyj
pip checkdo wykrywania konfliktów - Instaluj zgodne wersje: Określ zakres wersji w requirements.txt
Problemy z wydajnością
Problem: Kod działa wolno
Objawy: Opóźnienia, timeouty, brak reakcji
Rozwiązanie:
- Zmniejsz częstotliwość odczytów czujników: Nie odczytuj czujników zbyt często
- Optymalizuj pętle: Unikaj aktywnego oczekiwania, używaj sleep() lub opóźnień
- Problemy z pamięcią:
- Zamknij niepotrzebne aplikacje
- Zwolnij miejsce na dysku
- Monitoruj za pomocą
toplubhtopna Pi
- Szybkość karty SD: Użyj szybszej karty SD lub SSD dla Raspberry Pi
- Opóźnienia sieciowe: Używaj operacji asynchronicznych dla wywołań sieciowych
Problem: Błędy braku pamięci
Błąd: MemoryError lub zawieszanie się systemu
Rozwiązanie:
- Dla Raspberry Pi:
- Zamknij niepotrzebne aplikacje
- Zwiększ przestrzeń wymiany (swap)
- Używaj lżejszego systemu (wersja Lite)
- Zwiększ RAM (Pi 4 ma opcje 2/4/8GB)
- Dla Wio Terminal:
- Zmniejsz rozmiary buforów
- Używaj mniejszych obrazów
- Optymalizuj użycie łańcuchów znaków
- Sprawdź wycieki pamięci (niezwolniona pamięć)
Problem: Utrata lub uszkodzenie danych
Objawy: Brakujące wiadomości, uszkodzone pliki
Rozwiązanie:
- Problemy z kartą SD:
- Używaj jakościowych kart SD (unikaj tanich/podróbek)
- Regularne kopie zapasowe
- Bezpieczne wyłączanie (nie odcinaj zasilania)
- Przepełnienie bufora: Zwiększ rozmiary buforów w kodzie
- Niezawodność sieci: Wprowadź logikę powtórzeń i obsługę błędów
- Jakość usług: Używaj MQTT QoS 1 lub 2 dla ważnych wiadomości
Najczęstsze komunikaty błędów
ModuleNotFoundError: No module named 'X'
Przyczyna: Pakiet nie jest zainstalowany lub środowisko wirtualne nie jest aktywowane
Rozwiązanie:
pip install X
Najpierw upewnij się, że środowisko wirtualne jest aktywowane.
Permission denied na Linux/macOS
Przyczyna: Wymagane są podwyższone uprawnienia lub problem z uprawnieniami do pliku
Rozwiązanie:
- Dla operacji systemowych: Użyj
sudo - Dla pip: NIE używaj sudo z venv, najpierw aktywuj venv
- Dla portu szeregowego: Dodaj użytkownika do grupy dialout:
sudo usermod -a -G dialout $USER, potem wyloguj się i zaloguj ponownie
OSError: [Errno 98] Address already in use
Przyczyna: Port jest już używany przez inny proces
Rozwiązanie:
- Znajdź proces korzystający z portu:
lsof -i :<port>lubnetstat -ano | findstr :<port> - Zabij proces lub użyj innego portu w swoim kodzie
SSL: CERTIFICATE_VERIFY_FAILED
Przyczyna: Błąd walidacji certyfikatu SSL
Rozwiązanie:
- Zaktualizuj certyfikaty:
pip install --upgrade certifi - Sprawdź, czy czas systemowy jest poprawny:
date - Tylko do celów rozwojowych (nie produkcyjnych): Wyłącz weryfikację w kodzie
IndentationError: unexpected indent
Przyczyna: Problemy z wcięciami w Pythonie (mieszanie tabulatorów i spacji)
Rozwiązanie:
- Używaj spójnych wcięć (standardem jest 4 spacje)
- Skonfiguruj edytor, aby używał spacji zamiast tabulatorów
- VS Code: Ustaw
"editor.insertSpaces": trueoraz"editor.tabSize": 4
UnicodeDecodeError lub UnicodeEncodeError
Przyczyna: Problemy z kodowaniem znaków
Rozwiązanie:
# Podczas odczytu plików
with open('file.txt', 'r', encoding='utf-8') as f:
content = f.read()
# Podczas zapisywania plików
with open('file.txt', 'w', encoding='utf-8') as f:
f.write(content)
Uzyskiwanie pomocy
Jeśli wypróbowałeś te kroki rozwiązywania problemów i nadal masz problemy:
1. Sprawdź istniejące zasoby
- Dokumentacja: Przejrzyj README i instrukcje lekcji
- Przewodniki sprzętowe: Sprawdź hardware.md dla informacji specyficznych dla sprzętu
- Seeed Studio Wiki: Seeed Studio Wiki dla komponentów Grove
2. Szukaj podobnych problemów
- GitHub Issues: Szukaj istniejących zgłoszeń
- Stack Overflow: Szukaj komunikatów błędów
- Fora urządzeń: Sprawdź fora Raspberry Pi lub Arduino
3. Utwórz zgłoszenie na GitHub
Jeśli nie możesz znaleźć rozwiązania:
- Wejdź na GitHub Issues
- Kliknij "New Issue"
- Podaj:
- Jasny opis problemu
- Kroki do odtworzenia
- Komunikaty błędów (pełny tekst)
- Wersje sprzętu/oprogramowania
- Co już próbowałeś
- Zrzuty ekranu, jeśli są istotne
4. Dołącz do społeczności
- Discord: Microsoft Foundry Discord
- Microsoft Learn: Microsoft Learn IoT
5. Dostarczaj dobre raporty błędów
Dobry raport błędu zawiera:
- Środowisko: system operacyjny, wersja Pythona, używany sprzęt
- Kroki do odtworzenia: dokładne kroki wywołujące problem
- Oczekiwane zachowanie: co powinno się zdarzyć
- Rzeczywiste zachowanie: co faktycznie się dzieje
- Komunikaty o błędach: pełny tekst błędu, nie zrzuty ekranu
- Kod: minimalny przykład kodu reprodukujący problem
Wskazówki dotyczące zapobiegania
Ogólne najlepsze praktyki
- Rób kopie zapasowe: regularne kopie zapasowe działających kart SD/kodu
- Dokumentuj zmiany: zanotuj, co działa w komentarzach
- Kontrola wersji: używaj gita do śledzenia zmian w kodzie
- Testuj stopniowo: testuj małe zmiany przed połączeniem
- Czytaj komunikaty błędów: często mówią dokładnie, co jest źle
- Aktualizuj regularnie: utrzymuj oprogramowanie/firmware na bieżąco
- Używaj komponentów dobrej jakości: unikaj tanich kabli/zasilaczy
- Stabilne zasilanie: używaj odpowiedniego zasilacza (szczególnie Pi)
Przebieg pracy programisty
- Zacznij od prostego: rozpocznij od działającego przykładowego kodu
- Jedna zmiana na raz: łatwiej znaleźć, co psuje
- Testuj często: wykrywaj problemy wcześnie
- Utrzymuj porządek: organizuj pliki i kod logicznie
- Komentuj kod: przyszły ty będzie ci wdzięczny
Ten przewodnik rozwiązywania problemów jest utrzymywany przez społeczność. Jeśli znajdziesz rozwiązanie problemu, które tutaj nie zostało wymienione, rozważ wkład, aby pomóc innym!
Zastrzeżenie:
Niniejszy dokument został przetłumaczony za pomocą automatycznego tłumacza AI Co-op Translator. Mimo że dokładamy wszelkich starań, aby tłumaczenie było jak najdokładniejsze, prosimy mieć na uwadze, że tłumaczenia automatyczne mogą zawierać błędy lub niedokładności. Oryginalny dokument w języku źródłowym powinien być uważany za źródło autorytatywne. W przypadku informacji kluczowych zalecamy skorzystanie z profesjonalnego tłumaczenia wykonanego przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z korzystania z tego tłumaczenia.