Raspberry Pi en Arduino: betrouwbare bouwsystemen met WatchDog Timers (3 / 6 stap)

Stap 3: Het instellen van de Arduino interne WatchDog-Timer


Samenvatting: In stap 3 van dit Instructable kijken we naar het instellen van de Arduino interne watchdog-timer. We ook praten over de problemen met de Arduino interne WatchDog-Timer en uitleggen waarom een externe WatchDog-Timer, is een betere keuze in vele, maar niet alle systemen.

Instellen van de Arduino interne WatchDog-Timer


De Arduino is een veel eenvoudiger machine dan een Raspberry Pi. Echter, het is eigenlijk makkelijker om op te hangen van een Arduino, dan is het een Raspberry Pi omdat alle code interne schroefdraad op de Arduino. Single threaded betekent dat er slechts één programma tegelijk op de Arudino (met uitzondering van Interrupts, bij wijze van denken). Het punt is dat hebt u slechts één thread tegelijk uitgevoerd, om het even welk hangen op dat draad met de computer stoppen zal. Natuurlijk, er zijn andere problemen die ervoor dat uw programmacode crash en Arduino zorgen kunnen te lock-up. Time-outs op randapparatuur, power kwesties, RFI, etc., etc. Slechte code met behulp van de functie millis() is een klassiek probleem. U moet de rollover 49.5 dagen omgaan, als u geen een real timerklok gebruikt.

Het gebruik van de Arduino interne WatchDog (als u annuleerteken merk op werkzaamheden)

Eerste van alle een definitie. WTO wordt gedefinieerd als de maximale hoeveelheid tijd die de WatchDog-timer tellen kunt vooraleer op nood voor opnieuw worden ingesteld (met andere woorden, wanneer het opnieuw van de computer opstarten zal als de computer verdwijnt).

Er zijn een heleboel dingen die zal de interne WatchDog houden van het werken in de Arduino, dus oppassen.

Hier is een manier om te werken met de interne Arduino WatchDog-timer. Eerst en vooral is de Wto van alle modellen van de Arduino een MAXIMUM van 8 seconden. Hou dat in gedachten. Met een langere Wto omvat veel meer zonden in mijn mening (Wto is 16 seconden op de interne Raspberry Pi WatchDog – die nog niet lang genoeg is voor onze smaak), zodat de Arduino Wto een beetje kort is. We hebben vaak seriële processen die langer dan 8 seconden in onze ontwerpen lopen. Ja, u kunt opnemen klopte in de code, maar wanneer u externe bibliotheken gebruikt, dat is een pijn.

Bouwen om te experimenteren met uw Arduino WDT, een nieuwe schets in de IDE Arudino. Waarschuwing: Als u een ArduinoMega 2560 of soortgelijk apparaat gebruikt, kunt u "zachte brick" uw apparaat. Zie de opmerkingen in de problemen hieronder. Mijn Arduino UNO van SainSmart werkte prima met deze schets. Beginnen met

 #include <avr/wdt.h> #define RESETWATCHDOG void setup() { Serial.begin(57600); Serial.println(""); Serial.println ("------->Arduino Rebooted"); Serial.println(""); wdt_enable(WDTO_8S); } void loop() { #ifdef RESETWATCHDOG wdt_reset(); #endif Serial.println("Arduino Running"); delay(1000); } 

Uitvoeren van de schets en laat het lopen voor 30 seconden of zo. U moet nooit zien de "Arduino gereboot" bericht weer na een reboot. Vervolgens, commentaar uit de RESETWATCHDOG-instructie als volgt:

#define RESETWATCHDOG

Nu wanneer u de schets, uitvoert als uw WatchDog werkt, dan moet u de Arduino Reboot elke 8 seconden of zo in de seriële monitor.

Problemen met de interne Arduino WatchDog-Timer

Gebruik van de interne WatchDogTimer van de Arduino is problematisch op zijn best. De Arduino WatchDog-Timer heeft een Wto van 8 seconden dus als u een nieuwe schets wilt downloaden en de oude schets heeft de WatchDog ingeschakeld, dan kunt u in een oneindige reboot-reeks. Dit heet "zachte bricking". De Arduino is dan vrijwel waardeloos (zonder een heleboel werk), maar het is nog steeds actief. WatchDog verloopt, bootloader begint, bootload werken voor een tijdje, WatchDog verloopt, etc., etc. etc. Sommige bootloaders nu de WatchDog op de juiste wijze uitschakelen, maar pas op er zijn een heleboel Arduinos daar (als het Mega-2560 - van die we grote fans zijn) die nog steeds niet werken. U kunt het bijwerken van de bootloader, maar het is niet een gemakkelijke taak. Dit is een probleem dat we meerdere malen ben tegengekomen.

  1. De interne Arduino WatchDog doet niet macht cyclus het systeem. Het herstart de Arduino via de lijn resetten. Dit betekent dat het niet opnieuw onder alle omstandigheden starten. Vooral in low-power / brownout voorwaarden vaak ervaren met Zonne-aangedreven systemen. Ik heb dit gezien in Project Curacao.
  2. Er zijn problemen met de bootloader (zie hierboven)
  3. De interne WatchDog-Timer is niet volledig onafhankelijk van de Arduino. Als uw code naar een stukje code schakelt de WDT springt, bent u klaar. Probeer uw stapel om te zien welke interessante dingen kunnen gebeuren aan code in een kleine embedded systeem zoals de Arduino te overschrijven.
  4. De maximale Wto is 8 seconden. U kan in routines, zoals de seriële communicatie voor meer dan 8 seconden. Uitzoeken van alle mogelijkheden en brengen wdt_reset() oproepen op de juiste plek is moeilijk en met sommige seriële routines, niet onmogelijk.

Gerelateerde Artikelen

Verbind uw Raspberry Pi en Arduino Uno!

Verbind uw Raspberry Pi en Arduino Uno!

Zowel de Raspberry Pi en Arduino Uno zijn zeer krachtige apparaten, goed op verschillende dingen. De Arduino boards Arduino boards zijn geweldig lezing in- en uitgangen van diverse verschillende dingen. De Raspberry Pi is in feite een mini, open-sour
Arduino IOT automatisering met ESP8266

Arduino IOT automatisering met ESP8266

Dit is een IoT automatiseringsproject. niet net als anderen die alleen de sensorgegevens te met het internet halen. Ik gebruikte er techniek om controle de apparaten door lezing dat web api met behulp van wifi module esp8266. met deze techniek kunnen
Goedkope Arduino WiFi schild met ESP8266

Goedkope Arduino WiFi schild met ESP8266

In mijn vorige Instructable heb ik beschreven hoe de ESP-01 module aansluit op een breadboard.Dit is slechts de eerste stap om een goedkope Arduino WiFi schild de ESP8266-module gebruiken. U kunt het met enkele meer elektronische componenten en de Wi
Arduino Real timerklok met Alarm en milieu-sensoren

Arduino Real timerklok met Alarm en milieu-sensoren

Arduino Klok, met batterij back-up (real-time clock), tijd, datum, Alarm, temperatuur, vochtigheid, druk, LCD uitvoer, invoer van het toetsenbord, slaapstand, LED LCD verlichting (4 X) wit met dimmer controleStap 1: OnderdelenlijstArduino Real timerk
Arduino Output Tester met LED #Xolcano

Arduino Output Tester met LED #Xolcano

dit is een eenvoudige en zeer nuttig Project wanneer u op een prototype u werkt kunt dit gebruiken om tijd te besparen..! dus letz slagStap 1: Onderdelen die nodig zijn 1) LED 3 mm-#72) 1 k weerstand - #73) geperforeerde breadboard4) solderen lood5)
Arduino "Knipperen praten" met behulp van Charlieplexing

Arduino "Knipperen praten" met behulp van Charlieplexing

Dit project kan worden geclassificeerd als een apparaat van AAC (alternatief en Augmentative communicatie), die worden gebruikt als een communicatiemiddel voor mensen die lijden aan slopende ziekten zoals ALS en dergelijke, die leiden tot volledige v
Met behulp van de Arduino shift registreert met ultrasone sensoren

Met behulp van de Arduino shift registreert met ultrasone sensoren

De HC-SR04 ultrasone bereik sensing module is zeer geschikt voor sensing afstanden die kunnen worden gebruikt als invoer voor uw Arduino projecten, maar met behulp van meerdere (meer dan twee) kan snel kost je een hoop pinnen.Deze fundamentele Instru
Arduino alcohol concentratie meter

Arduino alcohol concentratie meter

Hallo, ga vandaag ik u tonen hoe een Arduino alcohol concentratie meter om zelf te maken.Als mijn laatste project 'm I sorry about mijn Engels.Dit instructable ik had vertaald uit: http://arduino.vn/bai-viet/720-huong-dan-lam-may-d...Ik had de overee
Arduino GPS/GSM Tracker (WatchDog ingeschakeld)

Arduino GPS/GSM Tracker (WatchDog ingeschakeld)

Wat is een GPS of GLONASS?Een GPS tracking-apparaat is een apparaat, normaal gedragen door een bewegend voertuig of persoon, die gebruikmaakt van het Global Positioning System te bepalen en de precieze locatie bijhouden, en dus die van de vervoerder,
Arduino licht Display met "Vixen"

Arduino licht Display met "Vixen"

ik zal u tonen hoe te maken van uw eigen geautomatiseerde lichtshow!  Hebt u vragen of opmerkingen voel je vrij om te posten.WAARSCHUWING VAN DE WAARSCHUWING WAARSCHUWING WAARSCHUWING WAARSCHUWING WAARSCHUWING WAARSCHUWING WAARSCHUWING WAARSCHUWING W
Program Arduino Pro Mini met behulp van de Arduino Uno

Program Arduino Pro Mini met behulp van de Arduino Uno

Hallo iedereen. Vandaag ga ik laten zien hoe te programmeren van de arduino pro mini met behulp van de arduino uno.Als u al een arduino uno en je nieuw arduino pro hoeft mini, dan kunt u niet te kopen van de USB naar seriële converter om te programme
Hoe maak je een Arduino sound synthesizer met MIDI-interface

Hoe maak je een Arduino sound synthesizer met MIDI-interface

Met deze synthesizer kun je Arduino reproduceren van volledig aangepaste golfvormen. Als gevolg van de MIDI-interface, kan het worden aangesloten op alle instrumenten die dergelijke functie en spelen met het gewenste geluid.Stap 1: materialen(In dit
ARDUINO FINGERPRINT SCANNER met 16 X 2 LCD

ARDUINO FINGERPRINT SCANNER met 16 X 2 LCD

Dit instructable is gebaseerd en geïnspireerd door Arduino LCD tutorial en vingerafdruk scanner van Adafruit (http://www.adafruit.com/product/751). Ik heb toegevoegd 16 x 2 LCD in de vingerafdruk kunnen zien wat de status van het proces van het scann
Arduino Led Vu-Meter

Arduino Led Vu-Meter

Arduino led vu-meterYouTube-video 'sDocumenten