Jeśli korzystałeś z Raspberry Pi Pico W przez bardzo długi czas, są szanse, że w końcu zauważysz, że Twój program już nie działa.
Jednym z powodów, dla których programy zawodzą przez długi czas, jest niezawodność Wi-Fi. Jeśli twoje Wi-Fi stanie się zawodne, pierwszym odruchem Pico W jest awaria.
Zobaczmy, jak możemy uczynić Pico W bardziej odpornym w MicroPythonie.
Co powoduje niezawodność Wi-Fi w Pico W?
Twoja sieć Wi-Fi rozłącza się wiele razy dziennie. Trudno to zauważyć na telefonie lub komputerze, ponieważ systemy operacyjne i oprogramowanie odpowiadają za tę gwarantowaną wadę sieci Wi-Fi.
W przypadku Pico W prosty skrypt, który łączy i pobiera dane, uległby awarii, gdyby Twój Pico W utracił połączenie. Jedynym rozwiązaniem jest twardy reset przez pociągnięcie zasilania.
Jeśli Twój projekt wymaga wielogodzinnego rejestrowania danych, nie chcesz stale monitorować przestojów.
Obsługa błędów jest kluczem do zapewnienia, że program przetrwa słabe połączenia.
Czy poprawa siły sygnału Wi-Fi pomoże?
Być może rozważasz czy powinieneś używać sieci kratowej aby zwiększyć siłę sygnału. Tak, to pomoże, ale nie w stopniu, w którym można uniknąć scenariuszy, w których występuje przerwa w połączeniu.
W jednym eksperymencie umieściliśmy Pico W w miejscu na drugim piętrze domu, a drugie Pico W obok routera Wi-Fi. Różnica w wyniku polega na tym, że urządzenie na drugim piętrze rozłączyło się wcześniej niż Pico W znajdujące się bliżej routera. Ten ostatni ostatecznie również miał zerwane połączenie, co odzwierciedlają luki w gromadzeniu danych.
Niestety, poprawa siły sygnału zmniejsza problem, ale go nie rozwiązuje. Przyjrzyjmy się więc kilku metodom pisania bardziej odpornego kodu.
Metoda łączenia i rozłączania oprogramowania
Jeśli Twój projekt wymaga tylko jednokierunkowej komunikacji, ta metoda będzie do tego idealna. Niektóre przykłady to rejestratory temperatury, które muszą działać przez długi czas, ale rejestrują dane tylko raz na jakiś czas.
Rozwiązuje to problem awarii występujących, gdy Pico W myśli, że jest podłączony, ale kiedy próbuje wysłać dane do punktu końcowego, zdaje sobie sprawę, że jest offline, a następnie przechodzi do awarii.
Kluczem do tej metody jest procedura, w której program działa w nieskończonej pętli. W tej pętli znajduje się funkcja, która zostanie uruchomiona po upływie określonego czasu. Ta funkcja połączy Pico W z Wi-Fi, wykona swoje zadanie (np. wyśle dane do serwera), a następnie rozłączy.
Twardy reset oprogramowania
Użycie kodu twardego resetu MicroPython może pomóc zapewnić, że Twój Pico W będzie działał, nawet jeśli nie będziesz interweniować. Zobacz nasze Wprowadzenie do MicroPythona jeśli potrzebujesz pomocy, uruchom to polecenie:
import maszyna
maszyna.Resetowanie()
Załóżmy, że tracisz połączenie o północy podczas snu. Jeśli nie masz twardego resetu oprogramowania, będziesz musiał ręcznie zresetować program rano. Może to spowodować utratę zapisanych danych przez osiem godzin.
Jeśli masz twardy reset oprogramowania, który umieściłeś w bloku kodu obsługi błędów, Pico W zresetuje się sam.
Wadą tego jest to, że po twardym resecie stan programu zostanie utracony, a jeśli program ulegnie awarii, twardy reset oprogramowania nie zostanie uruchomiony.
Użyj wbudowanego zegara Watchdog Pico W
Sprzętowy zegar nadzorujący to w zasadzie urządzenie, które resetuje Pico W, jeśli działa nieprawidłowo. Zegary Watchdog to liczniki odliczające. Jeśli dostaną sygnał, zanim odliczanie osiągnie zero, odliczanie jest resetowane. Jeśli jednak odliczanie osiągnie zero, zresetuje Pico W.
W MicroPython podstawowy kod jest taki:
z maszyna import WDT
wdt = WDT (przekroczenie czasu =1000) #timeout jest w ms
wdt.karmić() #resetujeodliczanie
Możesz odwiedzić Dokumentacja WDT MicroPythona dowiedzieć się więcej, a także Oficjalna dokumentacja SDK Pico zawierająca wskazówki dotyczące języka C++.
Spraw, aby Twoje połączenie Pico W było odporne na bomby
Aby zapewnić Twojemu Pico W najlepszą szansę na nieskończone działanie w połączeniu Wi-Fi, będziesz musiał zrobić wiele rzeczy.
Po pierwsze, upewnij się, że połączenie Wi-Fi jest dość mocne. Chociaż kod może złagodzić niektóre wyzwania związane z Wi-Fi, w zależności od zastosowanej metody może czasami spowodować utratę stanu programu lub utratę punktów danych.
Po drugie, program musi mieć jakąś metodę odzyskiwania po zerwanych połączeniach Wi-Fi, aby można było nadal korzystać z usługi.
Dzięki tym krokom możesz mieć pewność, że łączność Twojego Pico W będzie bardziej niezawodna.