Dacă ați rulat Raspberry Pi Pico W pentru o perioadă foarte lungă de timp, sunt șanse ca în cele din urmă să observați că programul dvs. nu mai rulează.
Unul dintre motivele pentru care programele eșuează pe o perioadă lungă de timp implică fiabilitatea Wi-Fi. Dacă Wi-Fi-ul tău devine nefiabil, primul instinct al lui Pico W este să se blocheze.
Să vedem cum putem face Pico W mai rezistent în MicroPython.
Ce cauzează fiabilitatea Wi-Fi pe Pico W?
Wi-Fi-ul dvs. se deconectează de multe ori pe zi. Este greu să percepi acest lucru pe telefon sau pe computer, deoarece sistemele de operare și software-ul au explicat acest deficiență garantată a rețelelor Wi-Fi.
Cu Pico W, un script simplu care conectează și preia date s-ar bloca dacă Pico W-ul tău și-ar pierde conexiunea. Singura soluție este să-l resetați greu trăgând puterea.
Dacă proiectul dvs. necesită date de înregistrare ore în șir, nu doriți să fiți nevoit să monitorizați în mod constant întreruperile.
Gestionarea erorilor este cheia pentru a vă asigura că programul dumneavoastră poate supraviețui prin conexiuni slabe.
Îmbunătățirea puterii semnalului Wi-Fi va ajuta?
S-ar putea să vă gândiți dacă ar trebui să utilizați o rețea mesh pentru a crește puterea semnalului. Da, va ajuta, dar nu într-o măsură în care puteți evita scenariile în care există o scădere a conexiunii.
Într-un experiment, am plasat un Pico W într-o locație de la etajul doi al unei case și un alt Pico W lângă routerul Wi-Fi. Diferența de rezultat este că dispozitivul de la etajul doi s-a deconectat mai devreme decât Pico W situat mai aproape de router. Acesta din urmă a avut în cele din urmă o conexiune întreruptă, așa cum se reflectă de lacunele în colectarea datelor.
Din păcate, deși îmbunătățirea puterii semnalului reduce problema, aceasta nu o rezolvă. Deci, să ne uităm la câteva metode de a scrie cod mai rezistent.
Metoda de conectare și deconectare software
Dacă proiectul dvs. necesită doar comunicare unidirecțională, această metodă ar fi perfectă pentru el. Câteva exemple ar fi dispozitivele de înregistrare a temperaturii care trebuie să fie rulate pe o perioadă lungă de timp, dar înregistrează date doar din când în când.
Acest lucru rezolvă problema blocărilor care apar atunci când Pico W crede că este conectat, dar când încearcă să trimită date la un punct final, își dă seama că este offline, apoi se blochează.
Cheia acestei metode implică o procedură în care programul dumneavoastră rulează într-o buclă infinită. În această buclă se află o funcție care va rula după o anumită perioadă de timp. Această funcție va conecta Pico W la Wi-Fi, își va face treaba (de exemplu, trimite date către un server), apoi se va deconecta.
Resetare hardware software
Folosirea codului de resetare hardware MicroPython vă poate ajuta să vă asigurați că Pico W va funcționa chiar dacă nu interveniți. Vezi noastre introducere în MicroPython dacă aveți nevoie de ajutor, atunci rulați această comandă:
import mașinărie
mașinărie.resetare()
Să presupunem că pierzi conexiunea la miezul nopții în timp ce dormi. Dacă nu ați avut o resetare hardware a software-ului, va trebui să resetați manual programul dimineața. Acest lucru ar putea cauza opt ore de pierdere a înregistrării datelor.
Dacă aveți o resetare hardware a software-ului, pe care ați introdus-o în blocul de cod de gestionare a erorilor, Pico W se va reseta singur.
Dezavantajul acestui lucru este că, la resetare hardware, starea programului dvs. se va pierde și, dacă programul se blochează, resetarea hardware a software-ului nu se va declanșa.
Utilizați temporizatorul de supraveghere încorporat al Pico W
Un temporizator de supraveghere hardware este practic un dispozitiv care ar reseta Pico W-ul dvs. dacă funcționează defectuos. Cronometrele Watchdog sunt cronometre cu numărătoare inversă. Dacă primesc un semnal înainte ca numărătoarea inversă să ajungă la zero, atunci numărătoarea inversă este resetată. Cu toate acestea, dacă numărătoarea inversă ajunge la zero, atunci va reseta Pico W.
În MicroPython, codul de bază este astfel:
din mașinărie import WDT
wdt = WDT(timeout=1000) #timeout este în ms
wdt.a hrani() #resetărinumărătoarea inversă
Poți vizita Documentația WDT a MicroPython pentru a afla mai multe și de asemenea Documentele SDK oficiale de la Pico pentru îndrumări C++.
Faceți conexiunea dvs. Pico W rezistentă la bombă
Pentru a oferi lui Pico W cea mai bună șansă de a rula pe o perioadă nedeterminată cu o conexiune Wi-Fi, va trebui să faceți mai multe lucruri.
În primul rând, asigurați-vă că conexiunea Wi-Fi este suficient de puternică. Deși codul poate atenua unele provocări cu Wi-Fi, în funcție de metoda utilizată, uneori poate duce la pierderea stării programului sau la pierderea punctelor de date.
În al doilea rând, programul trebuie să aibă o metodă de recuperare din conexiunile Wi-Fi întrerupte, astfel încât să puteți continua serviciul.
Cu acești pași implementați, puteți avea încredere că aveți o conexiune mai fiabilă de la Pico W.