Als je je Raspberry Pi Pico W heel lang hebt gebruikt, is de kans groot dat je uiteindelijk merkt dat je programma niet meer werkt.
Een van de redenen waarom programma's gedurende een lange periode uitvallen, is de betrouwbaarheid van wifi. Als uw Wi-Fi onbetrouwbaar wordt, is het eerste instinct van de Pico W om te crashen.
Laten we eens kijken hoe we de Pico W veerkrachtiger kunnen maken in MicroPython.
Wat veroorzaakt wifi-betrouwbaarheid op de Pico W?
Uw wifi wordt vele malen per dag verbroken. Het is moeilijk om dit op je telefoon of pc waar te nemen, omdat besturingssystemen en software deze gegarandeerde tekortkoming van wifi-netwerken hebben verklaard.
Met de Pico W zou een eenvoudig script dat verbinding maakt en gegevens ophaalt, crashen als uw Pico W de verbinding zou verliezen. De enige oplossing is om hem hard te resetten door aan de stroom te trekken.
Als uw project urenlang gegevens moet loggen, wilt u niet constant storingen moeten controleren.
Foutafhandeling is de sleutel om ervoor te zorgen dat uw programma kan overleven door slechte verbindingen.
Zal het verbeteren van de wifi-signaalsterkte helpen?
Je zou kunnen overwegen of u een mesh-netwerk moet gebruiken om de signaalsterkte te vergroten. Ja, het zal helpen, maar niet in die mate dat je scenario's kunt vermijden waarin de verbinding wegvalt.
In één experiment plaatsten we een Pico W op een locatie op de tweede verdieping van een huis en een andere Pico W naast de wifi-router. Het verschil in uitkomst is dat het apparaat op de tweede verdieping eerder werd losgekoppeld dan de Pico W dichter bij de router. De laatste had uiteindelijk ook een verbroken verbinding, zoals blijkt uit hiaten in de gegevensverzameling.
Hoewel het verbeteren van de signaalsterkte het probleem vermindert, lost het het helaas niet op. Laten we dus eens kijken naar enkele methoden om meer veerkrachtige code te schrijven.
Softwaremethode verbinden en loskoppelen
Als uw project alleen eenrichtingscommunicatie vereist, is deze methode daar perfect voor. Enkele voorbeelden zijn temperatuurloggers die gedurende een lange periode moeten worden gebruikt, maar slechts af en toe gegevens loggen.
Dit lost het probleem op van crashes die optreden wanneer uw Pico W denkt dat hij verbonden is, maar wanneer hij probeert gegevens naar een eindpunt te sturen, realiseert hij zich dat hij offline is en crasht hij vervolgens.
De sleutel tot deze methode is een procedure waarbij uw programma in een oneindige lus wordt uitgevoerd. Binnen deze lus bevindt zich een functie die wordt uitgevoerd nadat een bepaalde hoeveelheid tijd is verstreken. Deze functie verbindt de Pico W met Wi-Fi, doet zijn werk (bijv. gegevens naar een server sturen) en verbreekt de verbinding.
Softwarematige harde reset
Door de harde reset-code van MicroPython te gebruiken, kunt u ervoor zorgen dat uw Pico W blijft werken, zelfs als u niet tussenbeide komt. Zie onze introductie tot MicroPython als je hulp nodig hebt, voer dan deze opdracht uit:
importeren machine
machine.terugzetten()
Stel dat u om middernacht de verbinding verliest terwijl u slaapt. Als u geen harde reset van de software had, zou u het programma 's ochtends handmatig moeten resetten. Dit kan acht uur aan gegevensverlies veroorzaken.
Als u een harde reset van de software heeft, die u in uw codeblok voor foutafhandeling hebt geplaatst, zal de Pico W zichzelf resetten.
Het nadeel hiervan is dat bij een harde reset de status van uw programma verloren gaat en als uw programma crasht, wordt de harde reset van de software niet geactiveerd.
Gebruik de ingebouwde Watchdog-timer van de Pico W
Een hardware watchdog-timer is in feite een apparaat dat uw Pico W zou resetten als deze niet goed werkt. Watchdog-timers zijn countdown-timers. Als ze een signaal krijgen voordat het aftellen nul bereikt, wordt het aftellen gereset. Als het aftellen echter nul bereikt, wordt de Pico W gereset.
In MicroPython is de basiscode als volgt:
van machine importeren WDT
wdt = WDT(time-out=1000) #time-out is in ms
wdt.voer() #resetaftellen
Je kan bezoeken WDT-documentatie van MicroPython om meer te leren en ook Pico's officiële SDK-documenten voor C++-richtlijnen.
Maak de verbinding van uw Pico W bomvrij
Om uw Pico W de beste kans te geven om voor onbepaalde tijd op een Wi-Fi-verbinding te werken, moet u meerdere dingen doen.
Zorg er allereerst voor dat de wifi-verbinding redelijk sterk is. Hoewel code sommige uitdagingen met wifi kan verminderen, kan het, afhankelijk van de gebruikte methode, soms resulteren in een verloren programmastatus of verloren gegevenspunten.
Ten tweede moet het programma een methode hebben om te herstellen van verbroken Wi-Fi-verbindingen, zodat u door kunt gaan met de service.
Met deze stappen kunt u vertrouwen op een betrouwbaardere connectiviteit van uw Pico W.