Raspberry Pi und Arduino: Gebäude zuverlässige Systeme mit Watchdog-Timer

6 Schritt:Schritt 1: Einführung in die Watchdog-Timer Schritt 2: So richten Sie den Raspberry Pi internen Watchdog-Timer eingestellt Schritt 3: So richten Sie die Arduino internen Watchdog-Timer eingestellt Schritt 4: Interne versus externe Watchdog-Timer / Probleme mit internen Timer Schritt 5: Hinzufügen eines externen WatchDog-Timer, um Ihre Projekt Schritt 6: Vorschläge für Erzieher und Fazit

Raspberry Pi und Arduino: Gebäude zuverlässige Systeme mit Watchdog-Timer

Zusammenfassung: In diesem Instructable wir uns an, wie zu zuverlässigeren Computersysteme mit Watchdog-Timer zu bauen. Wir zeigen, wie Sie und verwenden Sie den Raspberry Pi und Arduino internen Watchdog-Timer. Wir erklären auch, warum ein externer WatchDog-Timer ist eine bessere Wahl in vielen, aber nicht allen Systemen.
Sehen Sie mehr auf Watchdog-Timer in Solar Power Anwendungen auf www.switchdoc.com .
Schritt 1 - Einführung in die Watchdog-Timer
Schritt 2 - Einrichten der Raspberry Pi internen Watchdog-Timer eingestellt
Schritt 3 - So richten Sie die Arduino internen Watchdog-Timer eingestellt
Schritt 4 - Interne versus externe Watchdog-Timer / Probleme mit internen Timer
Schritt 5 - Hinzufügen eines externen WatchDog-Timer, um Ihre Projekt
Schritt 6 - Vorschläge für Erzieher und Fazit
Ziele
In diesem Instructable erfahren Sie, wie:
Was sind Watchdog-Timer und warum sie sind cool, wie man die Raspberry Pi Interne Watchdog Timer verwenden Wie die Arduino internen Watchdog Timer benutzen vergleichen und Interne versus externe Watchdog-Timer, wie eine externe WatchDog Timer Anregungen für Schülerexperimente mit Watchdog-Timer verwenden

Schritt 1: Einführung in die Watchdog-Timer

  1. Raspberry Pi und Arduino: Gebäude zuverlässige Systeme mit Watchdog-Timer

    Raspberry Pi und Arduino: Gebäude zuverlässige Systeme mit Watchdog-Timer

    Raspberry Pi und Arduino: Gebäude zuverlässige Systeme mit Watchdog-Timer

    Raspberry Pi und Arduino: Gebäude zuverlässige Systeme mit Watchdog-Timer

    Einführung in die Watchdog-Timer
    Computer verlieren manchmal ihren Weg. Ein Leistungs Glitch, RFI (Radio Frequency Interference), hängende Peripheriegeräte, oder einfach nur schlechte Programmierung kann dazu führen, kleine Computer zu hängen, was Ihre Anwendung zu versagen. Es passiert die ganze Zeit. Wie oft haben Sie an Ihren PC neu zu starten? Nicht sehr oft, aber einmal in während Ihr Mac oder PC friert so müssen Sie schalten Sie den Computer neu. Raspberry Pi Willen manchmal einfrieren, weil einer Aufgabe nicht Freisetzung von Steckdosen oder verbrauchen andere Systemressourcen und von Netzschwankungen. Arduinos manchmal wegen der Spannungsabfälle in der Stromleitung oder eine kurze Unterbrechung der Stromversorgung oder aufgrund von Systemressourcen wie RAM und / oder Stapelspeicher, die eine sehr begrenzte Ressource in einem Arduino läuft einfrieren. Manchmal sogar Programmierer (Keuchen!) Machen Fehler.
    Sehen Sie den Watchdog-Timer und Computer-Block Diagram oben.
    In kleinen Computern können Sie Ihr Gerät die Möglichkeit geben, von Störungen mit Hilfe einer so genannten WatchDog-Timer (WDT) erholen. A WDT ist eine elektronische Zeitgeber, der verwendet wird, um zu erkennen und sich von Fehlfunktionen des Computers. Wenn der Computer nicht den Timer zurückzusetzen (auch "tätschelte den Hund") auf der WDT vor Ablauf des WDT-Timer wird der WDT-Signal verwendet werden, um entweder Korrekturmaßnahmen einzuleiten oder einfach, um den Computer neu zu starten.
    Wird die Verwendung von einem Watchdog-Timer für Ihre Computer-Projekt mehr zuverlässig? Die Antwort ist ja. Die ordnungsgemäße Verwendung eines Watchdog-Timer kann Ihren Computer neu starten zu machen, wenn es verloren geht. Ein bekanntes Problem mit einigen Python-Bibliotheken auf dem Raspberry Pi ist, dass einige dieser Bibliotheken nicht richtig loslassen Steckdosen und nach einem längeren Zeitraum (in der Regel Tage - nicht Wochen) die Raspberry Pi hängen oder Thrash, weil es von Ressourcen . Ein richtig entworfenes Programm könnte dies zu erkennen und starten Sie den Computer, sondern ein WatchDog-Timer kann verwendet werden, um eine ganze Menge von Sünden mit einem Schlag zu decken.
    In Projekt Curacao , verwenden wir ein WatchDog-Timer, um die Batterieleistung-Watchdog bei einem Spannungsabfall oder einer RFI verärgert Ereignis zurückgesetzt.
    In unserer WeatherPi Instructable (http://www.instructables.com/id/Create-Your-Own-Solar-Powered-Raspberry-Pi-Weather/) verwenden wir den Watchdog-Timer, um sicherzustellen, dass die Raspberry Pi Leistung wird nach einer "shutdown -h now" zu stoppen und auch zu erkennen, der Computer verloren geht geschlossen. Mehr reliablity!

Schritt 2: So richten Sie den Raspberry Pi internen Watchdog-Timer eingestellt

  1. Raspberry Pi und Arduino: Gebäude zuverlässige Systeme mit Watchdog-Timer

    Raspberry Pi und Arduino: Gebäude zuverlässige Systeme mit Watchdog-Timer

    Zusammenfassung: In Schritt 2 dieses Instructable wir uns an, wie die Einrichtung der Raspberry Pi internen Watchdog-Timer. Wir haben auch über die Probleme mit dem Raspberry Pi internen WatchDog sprechen und erklären, warum eine externe Watchdog-Timer, wie die SwitchDoc Labs Dual-WatchDog-Timer ist eine bessere Wahl in vielen, aber nicht allen Systemen.
    Einrichten der Raspberry Pi internen Watchdog-Timer
    Zunächst eine Definition. Wto wird als die maximale Zeit, die der Watchdog-Timer zählen kann, bevor es muss zurückgesetzt werden (in anderen Worten, wenn es den Computer neu zu starten, wenn der Computer geht weg. Der BCM2835 System on a Chip definiert, Befugnisse der Raspberry Pi hat eine WDT an Bord. Es hat 20 Bits und zählt jedes 16US für ein WTO von 16 Sekunden. Das heißt, Sie müssen auf die interne WTD früher als alle 16 Sekunden zu schreiben oder die WDT wird ausgelöst.
    Führen Sie den folgenden Befehl, um den internen Watchdog-Kernel-Modul zu laden:
    $ Sudo modprobe bcm2708_wdog
    Für Raspbian, um das Modul zu laden, das nächste Mal startet das System, fügen Sie eine Zeile in die Datei / etc / Module mit "bcm2708_wdog". $ Echo "bcm2708_wdog" | tee -a sudo / etc / modules
    Führen Sie nun "lsmod" und suchen Sie nach der Zeile, in der folgende Liste:
    bcm2708_wdog 3537 0
    Dies stellt sicher, dass der Watchdog-Modul erfolgreich geladen wurde. Jetzt ändern / etc / modules und fügen bcm2708_wdog
    um das Modul beim Booten laden, indem Sie den folgenden Befehl:
    sudo echo bcm2708_wdog >> / etc / modules
    Dann benutzen wir den Watchdog (8) daemon, um den Hund zu streicheln:
    sudo apt-get install Watchdog chkconfig
    sudo chkconfig Watchdog
    sudo /etc/init.d/watchdog Start
    Der Watchdog (8) Daemon erfordert einige einfache Konfiguration auf dem Raspberry Pi. Ändern /etc/watchdog.conf nur enthalten:
    Watchdog-device = / dev / watchdog
    Watchdog-Timeout = 14
    Realtime = yes
    priority = 1
    Um das Intervall festgelegt, um den Hund zu streicheln alle vier Sekunden: Intervall = 4
    Endlich:
    sudo /etc/init.d/watchdog Neustart
    Puh! Damit wird der interne Raspberry Pi WatchDog.
    Testen des Internal Raspberry Pi WatchDog
    Um den internen Watchdog testen, stellen Sie es wie oben. Als nächstes bearbeiten Sie eine Datei mit dem Namen forkbomb.sh und setzen Sie die folgenden Befehle in der Datei:
    #! / Bin / bash
    swapoff -a: () {: |: &} ;:
    Führen Sie die Datei forkbomb.sh:
    sudo sh -x forkbomb.sh
    Ihre Raspberry Pi wird schließlich neu zu starten. Eine Gabel Bombe funktioniert wie folgt: Die Funktion wird zwei Mal aufgerufen, und die Pipeline backgrounded; jede folgende neuen Anruf über die Prozesse laicht noch Anrufe an ":" (Funktion). Dies führt schnell zu einem explosiven Nutzung der Systemressourcen, verlangsamt Reaktion zum Stillstand, und töten die Fähigkeit der Raspberry Pi, um den Watchdog-Timer klopfen. Wenn Sie nicht erscheinen, die Swap-Laufwerk aus und dann die Gabel Bombe muss auch zu füllen, dass, was die Bombe viel, viel langsamer macht.
    Probleme mit dem Internal Raspberry Pi WatchDog
    Es gibt jedoch eine Anzahl von Problemen mit dem internen Watchdog. Die interne WatchDog nicht einschalten Zyklus des Systems. Es startet den Raspberry Pi. Dies bedeutet, dass es nicht unter allen Bedingungen zu starten. Vor allem an der Macht / Spannungsabfälle auf geringe oft mit solarbetriebene Systeme erlebt (siehe unsere Solar Power Instructable hier).
    Wenn der Raspberry Pi länger dauert, bis beim Booten als 14 Sekunden (oder auf den Wert, Sie WTO-), der WatchDog kann Feuer, das den Raspberry Pi in einer unendlichen Bootsequenz setzt. Das kann passieren. Ich habe es getan.
    Wenn Sie die Raspberry Pi (sudo shutdown -h now) zu stoppen, wird der Raspberry Pi nie neu gestartet. Wenn Ihr Programm tut dies durch Unfall, sind Sie fertig.
    Ich habe den internen Watchdog gefunden unzuverlässig. Ich konnte es nie die Spur, aber es fühlt sich wie eine Art Konflikt zwischen User-Space und Kernel-Space. Es gibt einige Situationen, in denen die Pi nicht reagieren, aber die Herzschlag immer noch auftreten. Hochlastsituationen zum Beispiel.
    Der interne Watchdog nicht völlig unabhängig von der Raspberry Pi. Theoretisch sollte dies keine Rolle, aber die Raspberry Pi Linux ist ein komplexes System.
    Dies sind einige der Fragen, die mit einem externen WatchDog aufgelöst werden kann. Allerdings bedeutet dies nicht, die interne WatchDog ist nutzlos, nur begrenzt.

Schritt 3: So richten Sie die Arduino internen Watchdog-Timer eingestellt

  1. Raspberry Pi und Arduino: Gebäude zuverlässige Systeme mit Watchdog-Timer

    Raspberry Pi und Arduino: Gebäude zuverlässige Systeme mit Watchdog-Timer

    Zusammenfassung: In Schritt 3 dieser Instructable, betrachten wir, wie die Einrichtung der Arduino internen Watchdog-Timer. Wir haben auch über die Probleme mit dem Arduino internen Watchdog Timer zu sprechen und zu erklären, warum eine externe Watchdog-Timer ist eine bessere Wahl in vielen, aber nicht allen Systemen.
    Einrichten des Arduino internen Watchdog-Timer

    Das Arduino ist eine viel einfachere Maschine als ein Raspberry Pi. Allerdings ist es tatsächlich einfacher, ein Arduino hängen, als es ist ein Raspberry Pi, weil der gesamte Code ist single threaded auf dem Arduino. Single-Threaded bedeutet, dass es nur ein Programm läuft zu einem Zeitpunkt auf der Arudino (mit Ausnahme von Interrupts in einer Weise, von Denken). Der Punkt ist, wenn Sie nur ein Thread zu einem Zeitpunkt ausgeführt wird, legen Sie auf jede auf diesem Thread wird der Computer zu stoppen. Selbstverständlich gibt es andere Probleme, die dazu führen können Sie Ihren Code zum Absturz zu bringen und Arduino zu sperren. Timeouts auf Peripheriegeräte, Leistungsprobleme, RFI, etc., etc. Bad Code mit den millis () ist ein klassisches Problem. Sie müssen die Rollover auf 49,5 Tage zu behandeln, wenn Sie sich nicht mit einer Echtzeituhr.
    Wie Sie das Arduino internen Watchdog verwenden (wenn Sie können, damit es funktioniert)
    Zunächst eine Definition. Wto wird als die maximale Zeit, die der Watchdog-Timer zählen kann, bevor es muss zurückgesetzt werden (in anderen Worten, wenn es den Computer neu zu starten, wenn der Computer geht weg) definiert.
    Es gibt eine Menge Dinge, die die interne WatchDog von der Arbeit in der Arduino halten, also Vorsicht.
    Hier ist ein Weg, um mit dem internen Arduino Watchdog-Timer arbeiten. Zuerst von allen, der WTO von allen Arduino Modelle beträgt maximal 8 Sekunden. Denken Sie daran. Mit einer längeren Wto deckt viel mehr Sünden meiner Meinung nach (WTO beträgt 16 Sekunden auf dem Innen Raspberry Pi WatchDog - die noch nicht lang genug für unseren Geschmack), so dass der Arduino Wto ist ein bisschen kurz. Wir haben oft serielle Prozesse, die länger als 8 Sekunden in unsere Designs laufen. Ja, Sie können zu übernehmen klopfte in den Code, aber wenn Sie mit externen Bibliotheken, das ist ein Schmerz.
    Um mit der Arduino WDT experimentieren, bauen eine neue Skizze im Arudino IDE. WARNUNG: Wenn Sie einen ArduinoMega 2560 oder ein ähnliches Gerät sind, können Sie "soft brick" Ihr Gerät. Siehe Kommentare bei der Probleme weiter unten. Meine Arduino UNO von SainSmart funktionierte gut mit dieser Skizze. Beginnen mit
      #include <avr / wdt.h>
    
      #define RESETWATCHDOG
     Leere setup ()
     {
    	   Serial.begin (57600);
               Serial.println ("");
               Serial.println ("-------> Arduino Rebooted");
               Serial.println ("");
               wdt_enable (WDTO_8S);
    
    
     }
    
    
     Leere Schleife ()
     {
    
     #ifdef RESETWATCHDOG
    	 wdt_reset ();
     #endif
    
    	 Serial.println ("Arduino Running");
    	 Verzögerung (1000);
    
     }
    
    

    Führen Sie die Skizze und lassen Sie es für 30 Sekunden oder so laufen. Sie sollten niemals die Meldung "Arduino Rebooted" wieder nach einem Neustart. Dann kommentieren Sie die RESETWATCHDOG Anweisung wie folgt:
    // #define RESETWATCHDOG
    Nun, wenn Sie die Skizze ausführen, wenn Ihr WatchDog funktioniert, dann sollten Sie sehen die Arduino Reboot alle 8 Sekunden oder so in der seriellen Monitor.
    Raspberry Pi und Arduino: Gebäude zuverlässige Systeme mit Watchdog-Timer

    Probleme mit dem Internal Arduino WatchDog-Timer
    Die Nutzung der Arduino Internal Watchdogtimer ist bestenfalls problematisch. Das Arduino WatchDog-Timer hat ein WTO-8 Sekunden wenn Sie also laden Sie eine neue Skizze und der alte Skizze hat den Watchdog eingeschaltet, dann sind Sie in einer Endlos-Reboot-Vorgang zu bekommen. Dies wird als "weiches Mauerwerk". Das Arduino ist dann ziemlich wertlos (ohne viel Arbeit), aber es noch läuft. WatchDog abläuft, Bootloader gestartet wird, Bootload funktioniert für eine Weile, WatchDog abläuft, etc., etc. etc. Einige Bootloader nun den WatchDog angemessen zu deaktivieren, aber Vorsicht es gibt eine Menge von Arduinos gibt (wie die Mega 2560 - von dem wir sind große Fans), die immer noch nicht funktionieren. Sie können den Bootloader zu aktualisieren, aber es ist keine leichte Aufgabe. Dies ist ein Problem, das wir haben in mehrmals ausgeführt werden.
      Die interne Arduino WatchDog nicht einschalten Zyklus des Systems. Es startet das Arduino über die Reset-Leitung. Dies bedeutet, dass es nicht unter allen Bedingungen zu starten. Vor allem in Low-Power / brownout Bedingungen oft mit erfahrenen Solar Powered-Systeme . Ich habe dies in gesehen Projekt Curacao . Es gibt Probleme mit dem Bootloader (siehe oben) Die internen Watchdog-Timer ist nicht völlig unabhängig von der Arduino. Wenn Ihr Code springt ein Stück Code deaktiviert die WDT, sind Sie fertig. Versuchen Sie das Überschreiben Ihren Stack zu sehen, welche neuen Top-Code in einem kleinen Embedded-System wie dem Arduino passieren kann. Die maximale WTO 8 Sekunden. Sie können ganz einfach in Routinen, wie die serielle Kommunikation für mehr als 8 Sekunden. Herauszufinden, alle Möglichkeiten und setzen wdt_reset () ruft an der richtigen Stelle ist schwierig und mit einigen seriellen Routinen, unmöglich.

Schritt 4: Interne versus externe Watchdog-Timer / Probleme mit internen Timer

  1. Raspberry Pi und Arduino: Gebäude zuverlässige Systeme mit Watchdog-Timer

    Interne versus externe Watchdog-Timer
    Zusammenfassung: In Schritt 4 dieser Instructable schauen wir uns die Unterschiede zwischen interner und externer Watchdog-Timer. Wir die Probleme mit dem Arduino und der Raspberry Pi internen Watchdog überprüfen auch erklären, warum eine externe Watchdog-Timer, wie die SwitchDoc Labs Dual-WatchDog-Timer ist eine bessere Wahl in vielen, aber nicht allen Systemen.
    Je größer der Hund je größer der Biss
    Was ist ein externer WatchDog-Timer? Es ist eine unabhängige Timer, die getrennt von der Packung oder CPU vollständig ist. Manchmal (wie beispielsweise mit dem SwitchDog Labs WatchDog ) eine völlig andere Bord.
    Was ist ein internen Watchdog-Timer? Es ist ein Timer, der intern in der CPU und eng mit der CPU (wie der Arduino internen Watchdog-Timer und der Raspberry Pi internen Watchdog Timer) ist.
    Im Falle der Raspberry Pi und einem Arduino, ein Außen WatchDog-Timer eine viel größere Rinde als eine Innen. Warum sagen wir das? Denn es gibt keine Möglichkeit, dass die interne Software jedoch fehlerhaft, kann ein externer WatchDog-Timer zu tun, ihre Arbeit, wo ein internen Watchdog Timer kann durch Software abgeschaltet werden zu stoppen. Bei manchen Konstruktionen Abschalten der internen Watchdog Timer macht Sinn. In anderen, tut es nicht.
    Natürlich, wenn Sie zum Abschalten eines externen WatchDog-Timer über Software möchten, können Sie mit Hilfe eines GPIO-Pin, um ein Relais oder einen Transistor zu steuern, aber in der Regel, die Sie nicht wollen, zu tun, wenn Sie nicht haben, um. Raspberry Pi und Arduino: Gebäude zuverlässige Systeme mit Watchdog-Timer

    Probleme mit internen Watchdog-Timer
    Zusammenfassung der Probleme mit internen Watchdog-Timer ab Schritt 2 und Schritt 3:
      Die interne WatchDog nicht einschalten Zyklus des Systems. Es startet den Computer neu. Dies bedeutet, dass es nicht unter allen Bedingungen zu starten. Vor allem in Low-Power / brownout Bedingungen oft mit solarbetriebene Systeme erlebt. Den Computer, die sie bringen eine externe WatchDog-Timer kann schlagen immer das Gerät, bis er sich wieder, oder noch besser, können Leistungszyklus: Ohne eine clevere Schaltung, manchmal die Raspberry Pi oder Arduino kommt nicht wieder nur mit einem Reset-Lösung. zurück, wenn die Leistungspegel sind weniger braun. Sie können auf eine Menge mehr als 16 Sekunden ausstrecken WTO auf, alle möglichen Booten Sequenzen abdecken. Wto wird als die maximale Zeit, die der Watchdog-Timer zählen kann, bevor es muss zurückgesetzt werden (mit anderen Worten definiert, wenn es neu gestartet der Computer, wenn der Computer geht weg. Lösung: Eine Schaltung wie die Dual-WatchDog-Timer geht den ganzen Weg zu einer WTO 240 Sekunden Das ist auch lang genug für einen Windows-Rechner zu booten.. Nun, die meisten der Zeit Wenn Sie zu stoppen. . der Computer, sind Sie fertig Die interne WatchDog wird nicht neu starten, nicht so sehr ein Problem mit dem Arduino, aber ein größeres Problem mit dem Raspberry Pi Lösung:... Ein externer WatchDog ist unabhängig davon, was Sie mit der Software im Inneren zu tun Sie können 't es vermasseln. Auf dem Raspberry Pi, gibt es Situationen, in denen die CPU zu viel für Ihr Programm geladen, aber vielleicht immer noch den Prozess tätschelte den Watchdog so halten tätschelte den Hund. Auf dem Arduino, da das die patting ist getan alles in einem Thread, ist dies weniger ein Problem. Lösung: Ein externer WatchDog ist unabhängig davon, was Sie mit der Software im Inneren zu tun. Sie können nicht es vermasseln.

    Nun, verstehen Sie bitte, wir nicht hassen Interner Watchdog-Timer. In jedem System-Design, wir schauen immer, um den internen man zuerst zu verwenden. In den letzten 20 Jahren finden wir uns Abdriften von der Nutzung der Binnenwatchdogs wegen der oben genannten Probleme, und nur vielleicht, haben wir nicht auf bei der Konstruktion so schwer zu denken. Weniger Variablen zu steuern. Mehr definiertes Verhalten. Wir können sehen, was vor sich geht, indem man die LEDs. Auch ohne unsere Gläser auf.

Schritt 5: Hinzufügen eines externen WatchDog-Timer, um Ihre Projekt

  1. Raspberry Pi und Arduino: Gebäude zuverlässige Systeme mit Watchdog-Timer

    Raspberry Pi und Arduino: Gebäude zuverlässige Systeme mit Watchdog-Timer

    Zusammenfassung: In Schritt 5 dieses Instructable schauen wir auf die Einrichtung eines externen WatchDog Timer Entsprechung der Arduino und auch mit dem Raspberry Pi. Wir nutzen die SwitchDoc Labs Doppel WatchDog-Timer , der eine gute Wahl für ein externes WatchDog-Timer in vielen Systemen ist. Schließlich schauen wir auf einer realen Welt Problem der RFI (Radio Frequency Interference), was wirklich geht an die Projekt Curacao Box.
    Externer Watchdog-Timer für Raspberry Pi / Arduino Systeme
    Eine Lösung, um alle mögliche Probleme und Probleme mit der internen Watchdog-Timer in den vorangegangenen 4 Schritte dieses Instructable diskutiert ist, eine zu verwenden Externe WatchDog-Timer . Als wir diese Reihe von Problemen mit der Erforschung Projekt Curacao , haben wir beschlossen, unsere eigene Außen Watchdog-Timer zu bauen. Entwerfen eigener Timer gibt uns einen festen Satz von Parametern nicht abhängig von anderen Sofware Prozesse (in der Raspberry Pi Fall) und die Arduino wir verwenden (im anderen Fall). Und dann gab es die erheblichen Energiesystem Themen wie Projekt Curacao ist Solar-und Windmühle und hat Probleme Unterspannung (hey, bewölkt in den Tropen wird es auch!).
    Der Kodex für "klopfte auf den Hund" in Python und C, um "klopfen den Hund" oder lösen die externe Watchdog-Timer müssen Sie den folgenden Code verwenden. Da die Zeile muss in den hochohmigen Modus gehalten werden und dann einfach auf Masse gelegt, wenn Sie den Hund zu streicheln, der Code für das Arduino sieht so aus:
      #define RESET_WATCHDOG1 9
    
    
     nichtig ResetWatchdog1 ()
     {
    
    
          pinMode (RESET_WATCHDOG1, OUTPUT);
          Verzögerung (200);
          pinMode (RESET_WATCHDOG1, INPUT);
          Serial.println ("Watchdog1 Reset");
     }
    
    Und in Python für den Raspberry Pi, sieht der Code wie folgt aus:
      #define RESET_WATCHDOG1 18
     def resetWatchDog ():
    
    
    	 GPIO.setup (RESET_WATCHDOG1, GPIO.OUT)
    	 GPIO.output (RESET_WATCHDOG1, False)
    	 time.sleep (0,200)
    	 GPIO.setup (RESET_WATCHDOG1, GPIO.IN) 

    Sie stellen diese Funktionen in Ihrem Code, so dass Sie den Hund öfter pat als Wto. Wto wird als die maximale Menge an Zeit der Watchdog-Timer zählen kann, bevor es muss zurückgesetzt werden (in anderen Worten, wenn er den Computer neu zu starten, wenn definiert der Computer geht weg.
    : Sie können die gesamte Spezifikation für die SwitchDoc Labs Dual-WatchDog Timer hier herunterladen DualWatchDog_101914-V1.3 .
    Raspberry Pi und Arduino: Gebäude zuverlässige Systeme mit Watchdog-Timer

    Einstellen WTO über die SwitchDoc Externe WatchDog-Timer
    Raspberry Pi und Arduino: Gebäude zuverlässige Systeme mit Watchdog-Timer


    Sie Wto von etwa 220 Sekunden bis 30 Sekunden ein.
    Verwenden eines externen WatchDog-Timer mit dem Arduino Raspberry Pi und Arduino: Gebäude zuverlässige Systeme mit Watchdog-Timer


    Dual WatchDog und ArduinoUsing eines externen WatchDog-Timer mit dem Raspberry Pi
    Raspberry Pi und Arduino: Gebäude zuverlässige Systeme mit Watchdog-Timer


    Dual WatchDog mit Raspberry Pi B +
    Raspberry Pi und Arduino: Gebäude zuverlässige Systeme mit Watchdog-Timer


    Dual WatchDog mit Raspberry Pi B (und A)
    Hochfrequenzstörungen - A Real World Problem
    Raspberry Pi und Arduino: Gebäude zuverlässige Systeme mit Watchdog-Timer

    Der wesentliche Problem, das wir entdeckt, in Project Curacao mit RFI (Radio Frequency Interference) war, als die Amateur-Radio-Leute ihre weltweiten Radiowettbewerb im Oktober und November eingeschaltet auf 28 MHz. Unsere Box ist mit einem Funkturm in Curacao verbunden. Und zu einem 15-Meter-Linie, die gerade geschieht, etwa 3 Wellenlängen von 28 MHz, was eine sehr gute Antenne verbunden ist. Dinge sah gut aus, bis das Radio-Wettbewerb!
    Die Wellenlänge der Funkwellen 28MHz beträgt etwa 5 Meter. Wir hatten einen 15-Meter-Linie. Keine schlechte Antenne zum Empfang von 28 MHz-Signale. Unter der Annahme, dass es etwa 12 Meter effektive wir haben eine schöne 1/2 Wellenlänge (2,5 Wellenlängen tatsächlich) und starrte auf den Eingang mit dem Arduino. Und die WeatherRack (in der folgenden Entfernung gesehen) ist direkt mit dem Turm, in dem das 28 MHz Signal gesendet wird, verbunden.
    Raspberry Pi und Arduino: Gebäude zuverlässige Systeme mit Watchdog-Timer


    Neue Solar-Panels auf der Oberseite des Projekt Curacao Box - WeatherRack in Hintergrund
    Könnte ein Problem, das ist sicher sein. Wir schickten Fragen an die Radio-Götter, welche Art von Spannungen könnte ich erwarten. Ein Gott (Geoff H.) antwortete und sprach bis 2V. Das ist ziemlich nah an 2,5 Volt, die beginnen Auslösung Dinge.
    Die zweite Gott (Jeff M.) angegeben, dass es den ganzen Weg bis zu 3V und dass der Wettbewerb in den vergangenen Wochenende war nicht nur auf 28 MHz betragen. Es war ein all-Bandwettbewerb, auf die 160, 80, 40, 20, 15, und 10-Meter-Bands.
    Raspberry Pi und Arduino: Gebäude zuverlässige Systeme mit Watchdog-Timer


    SwitchDoc Dual-Watchdogkarte in Project Curacao Installierte
    (- 29,0 MHz 28,3), 15 m (21,2 bis 21,4) und 20 m (14,15 bis 14,3 MHz) bei Tageslicht auf der Contest-Wochenende, werden Sende auf 10m gewesen. (- 1,9 MHz ~ 1,8), 80m (~ 3,6 bis 3,9 MHz), 40m (~ 7,05-7,25 MHz) und 20 m (~ 14,15 bis 14,3 MHz) während der Nachtstunden auf der Contest-Wochenende, werden Sende auf 160 Mio. gewesen.
    Viele kleine Signale um unsere Box läuft mit dem großen neuen Draht (Antenne) angeschlossen ist.
    Dieser Wettbewerb nahm das Projekt Curacao angezählt.
    Ein Grund mehr, um eine Verwendung Externe WatchDog-Timer , weil die RFI wurde Inbetriebnahme des Arduino in einem Zustand, der eine ein und aus Power-Reset erforderlich.

Schritt 6: Vorschläge für Erzieher und Fazit

  1. Raspberry Pi und Arduino: Gebäude zuverlässige Systeme mit Watchdog-Timer

    Abschluss
    Watchdog-Timer kann die Zuverlässigkeit Ihrer Arduino und Raspberry Pi Projekte zu verbessern. Interne Watchdogs haben ihre Grenzen sowohl der Arduino und Raspberry Pi, aber trotzdem Ihres Projekts Zuverlässigkeit zu verbessern. Für jene Fragen (wie Spannungsabfälle, Stromausfall, Codierungsfehler und RFI), die nicht gut durch die Interne Watchdog-Timer behandelt werden, ist eine bessere Lösung, um eine externe WatchDog-Timer zu verwenden.
    Vorschläge für Experimente Educator
    Anschließen eines Arduino mit einem einfachen Programm tätschelte den Hund. Zeigen Sie, was passiert, wenn Sie nicht klopfen Sie mit dem Hund (die LED auf dem Dual-Watchdogkarte blinkt, wenn nicht tätschelte) Machen Sie dasselbe mit einem Raspberry Pi schreiben Arduino Programm, das absichtlich geht in eine Endlosschleife, finden Sie die Watchdog-Reset des Arduino