Raspberry Pi och Arduino: bygga tillförlitliga system med WatchDog timer (3 / 6 steg)

Steg 3: Hur du ställer in Arduino inre WatchDog Timer



Sammanfattning: I steg 3 i detta Instructable titta vi på hur du ställer in Arduino inre watchdog timer. Vi också prata om problem med Arduino inre WatchDog Timer och förklara varför en extern WatchDog Timer, är ett bättre val i många men inte alla, system.

Ställa in Arduino inre WatchDog Timer


Arduino är en mycket enklare maskin än en Raspberry Pi. Men är det faktiskt lättare att hänga en Arduino än det är en Raspberry Pi eftersom all kod är enda gängade på Arduino. Single gängade innebär att det finns bara ett program körs med en tid på Arudino (med undantag för avbrott, ett slags tänkande). Det är om du bara har en röd tråd i taget, någon hänga upp på att tråden kommer att stoppa datorn. Naturligtvis finns det andra problem som kan orsaka din kod till krasch och Arduino att låsa upp. Timeout på kringutrustning, driva frågor, RFI, etc., etc. Dålig kod med hjälp av funktionen millis() är ett klassiskt problem. Du behöver för att hantera välta på 49,5 dagar om du inte använder en realtidsklocka.

Hur du använder Arduino inre WatchDog (om du kan få det att fungera)

Först av allt en definition. WTO: S definieras som maximala tiden WatchDog timer kan räkna innan det behöver återställas (med andra ord, när det kommer att starta om datorn om datorn går bort).

Det finns en hel del saker som kommer att hålla den interna vakthund från att arbeta i Arduino, så se upp.

Här är ett sätt att arbeta med interna Arduino WatchDog timer. Först och främst är Wto av alla Arduino modeller högst 8 sekunder. Håll detta i åtanke. Att ha en längre Wto täcker mycket mer synder i min mening (Wto är 16 sekunder på den interna Raspberry Pi vakthund – vilket fortfarande inte är tillräckligt lång för vår smak), så Arduino Wto är lite kort. Vi har ofta seriell processer som kör längre än 8 sekunder i vår design. Ja, du kan införliva klappa in i koden, men när du använder externa bibliotek, som är en smärta.

Om du vill experimentera med din Arduino WDT, bygga en ny skiss i Arudino IDE. Varning: Om du använder en ArduinoMega 2560 eller liknande enhet, kan du "mjuka brick" enheten. Se kommentarerna i avsnittet problem nedan. Min Arduino UNO från SainSmart fungerade bra med denna skiss. Börja med

#include < avr/wdt.h >

#define RESETWATCHDOG
void setup()
{
Serial.BEGIN(57600);
Serial.println("");
Serial.println ("---> Arduino startas");
Serial.println("");
wdt_enable(WDTO_8S);

}

void loop()
{

#ifdef RESETWATCHDOG
wdt_reset();
#endif

Serial.println ("Arduino kör");
Delay(1000);

}

Köra skissen och låt den gå i 30 sekunder eller så. Aldrig bör du se meddelandet "Arduino Rebooted" igen efter omstart. Då, kommentera bort uttrycket RESETWATCHDOG såhär:

#define RESETWATCHDOG

Nu när du kör skissen, om din WatchDog fungerar, sedan ska du se Arduino omstart varje 8 sekunder eller så i följetong monitor.

Problem med interna Arduino WatchDog Timer

Användning av Arduino interna WatchDogTimer är problematiskt i bästa. Arduino WatchDog Timer har en Wto 8 sekunder så om du hämtar en ny skiss och gamla skissen har aktiverat vakthund, då du kan få in i en oändlig pånyttfödd ordnar. Detta kallas "mjuka Murning". Arduino är sedan ganska mycket värdelös (utan mycket arbete), men det är fortfarande igång. WatchDog upphör, bootloader startar, bootload verk ett tag, WatchDog upphör, etc., etc. etc. Vissa stöveln loadersgoogle nu inaktivera vakthund på lämpligt sätt, men se upp det finns en hel del Arduinos ute (som Mega 2560 - där vi är stora fans) som fortfarande fungerar inte. Du kan uppdatera bootloader men det är inte ett lätt jobb. Detta är ett problem vi har stött på flera gånger.

  1. Den inre Arduino vakthund inte makt cykel systemet. Det omstarter Arduino via återställa linjen. Detta innebär att det inte startar om i alla förhållanden. Särskilt i låg effekt / brownout villkor ofta upplevs med Solar Powered system. Jag har sett detta i Projektet Curacao.
  2. Det finns problem med bootloader (se ovan)
  3. Den inre WatchDog Timer är inte helt oberoende av Arduino. Om din kod hoppar till en bit kod inaktiverar WDT, är du klar. Försök skriva över din stack för att se vilka intressanta saker kan hända till kod i ett litet inbäddade system såsom Arduino.
  4. Den maximala Wto är 8 sekunder. Enkelt kan du i rutiner, till exempel seriell kommunikation för mer än 8 sekunder. Räkna ut alla möjligheterna och att sätta wdt_reset() samtal på rätt plats är svårt och med vissa seriella rutiner, omöjligt.
Se Steg
Relaterade Ämnen

Anslut din Raspberry Pi och Arduino Uno!

Både Raspberry Pi och Arduino Uno är mycket kraftfulla enheter, bra på olika saker. Arduino styrelser är awesome på att läsa in- och utgångar från diverse olika saker. Raspberry Pi är i grunden en mini, öppen källkod Linux dator. Om du sätta dessa tv...

CoPiino fuktkontroll - raspberry pi och arduino

Jag kom nyligen över en vän till mig. Vi pratade om våra senaste projekt där han slutligen berättade om sin källare som har mycket hög luftfuktighet och är för närvarande inte att bra plats där du vill köra projekt.Detta fick oss att tänka på en ny p...

Google spelar musik Internet Radio (Raspberry Pi och Arduino)

jag letade efter ett projekt att göra med min Raspberry Pi och hittade detta Instructable och tänkte jag skulle ha en gå på något liknande som arbetat med Google spela musik. Jag hade en ungefärlig uppfattning om vad jag ville ha det sista objektet t...

MrRobot - Ubuntu Mobile app aktiverad Robotics (Raspberry Pi och arduino inblandade)

Projektet MrRobot är en Ubuntu Mobile app aktiverad Robotics som har funktionen av röst, touch och skaka kontroll för att interagera med den Rapiro roboten. Detta projekt utförs inom 28 timmar i Ubuntu Shenzhen Hackathon av vårt team E-minderåriga. A...

Hur att reparera och göra tillförlitliga membranen i en kinesisk tankless vattenvärmaren

Hej,Tyvärr måste jag börja med att säga att denna information lämnas endast för utbildning, och att jag eller någon jag är anknuten till är på något sätt ansvariga för några skador, eller skador till följd av någon försöker dessa reparationer av någo...

Arduino - växten vattnas System med TFT LCD-väderstation skärmen

Hej peepz, jag skapade en prototyp växt vattning system med väderstation på en TFT LCD för inomhus växande.Naturligtvis kan du bygga den för att använda den utomhus till.Detta projekt fungerar men är bara grunden för ett större projekt... från här ka...

Enkel (och smutsiga) puls bredd modulering (PWM) med 555 Timer

enkel krets för DC Motor varvtalsreglering (fläkthastighetskontroll, ljus / LED dimmring och etc) med 555 timer.Också en bra utgångspunkt för nybörjare som vill få sina händer smutsiga med 555 timer IC. Vissa skulle hävda att detta inte är den mest e...

Ännu en annan Exploration Rover web-kontrollerade (med Raspberry Pi och Arduino. Android, Iphone, PC, MAC compatible)

Här är en annan exploration rover, byggt i 1 timme eller mindre, utan det krävs. Everthing du behöver finns i förpackningen! Det ger dig grund att bygga och förbättra din egen rover.RaspberryPi med wifi USB-adapter, USB-webbkamera, web-server (apache...

En Guide till Raspberry Pi Arduino kommunikation i inbyggda system

Det här är en guide till olika metoder för kommunikation mellan Raspberry Pi och Arduino. Denna guide är skapad av allt jag lärt mig från inrättandet av en kapacitet skog. Inlägget av projektet kan ses, en video av projektet kan ses här, och dokument...

K'NEX Gun: Tillförlitlig (R3) (Build)

The RMACR, postat på 9 Mar 2013, har alltid varit en av mina favorit bygger. Effektiv, men ändå enkel, tillförlitlig (aka R4 / RMACR V.2) är en stor inomhus K'NEX kriget pistol. Efter bränning minst 100 rundor igenom det, har jag ännu att uppleva i a...

RC Multi Channel Arduino proportionella sändare / mottagare med knappen trimmare

Är du ute efter för att göra din egen quadcopter drone eller RC bil med Arduino men vet inte var du ska börja? Kanske du redan köpt några 433MHz RF moduler bara för att finna de var inte så enkelt att använda som du trodde? Prova på detta!Du får lära...

Hur du använder Watchdog Timer på Arduino

I detta Instructable tar vi en titt på Watchdog Timer på Arduino och tre olika sätt att konfigurera den. Vi visar ett enkelt exempel med Watchdog Timer och du kan hitta koden från exemplet på ForceTronics blogg http://forcetronic.blogspot.com/2016/02...

Designa och bygga en synthesizer med Meeblip och Arduino, adderat video!

För min praktikplats på Skapa digitalmusik/Meeblip jag har skapat ganska kul liten synthesizer. Det här är tänkt att vara mer flexibla än andra synthesizer genom att göra det helt oberoende. Det är batteridriven, har egen förstärkare/högtalare och st...

Tillförlitlig, säker, anpassningsbar SMS fjärrstyrning (Arduino/pfodApp) - ingen kodning krävs

Uppdateringen: 19 maj 2015: användning av pfodParser bibliotek Version 2.5 eller senare. Det fixar en rapporterade problemet inte att tillräckligt med tid att ansluta till nätverket efter att ha slagit upp shieldIntroduktionHur är pfodSMS fjärrkontro...

Raspberry Pi och ROS (Robotic Operating System)

i den här guiden vi ska gå över att inrätta en Raspberry Pi med Linux och ROS. Samt att bekanta sig med några av grunderna genom att köra några enkla handledning program från "ROS WIKI" . Om du är obekant med ROS kan du kolla in WIKI eller en av...

Styra din Tv, Dvd och ljud system med Arduino och Android

Hej alla, detta är min andra instructable och min första på engelska, så, ledsen för misstag.Jag vill dela detta projekt det handlar om hur du kan styra din Tv, DVD och ljudanläggningen med Arduino och en app för Android med app inventor.Om du gillar...

En enkel och tillförlitlig dörr larmsystem

Innan vi förklarar "hur man gör?"Jag ska berätta Svaren för "Varför göra?"Har ditt barn någonsin öppnade dörren och gick utanför utan din vetskap?Vet du om någon försöker öppna din dörr från utanför?Så det är bättre att ha en dörr larm...

Väder Buddy System använder elektriska Imp och Arduino vederbörlig

bara skicka en video av min kompis vädersystem som jag nyligen gjort. Den elektriska Imp används för att ansluta till internet och få väderinformation och Arduino Due skicka denna information till de respekterade delarna.Jag vet inte om bygget förtjä...

Hur man bygger en människor räknare med Raspberry Pi och Ubidots

I detta enkla projekt använder vi en rörelsesensor för att upptäcka om ett objekt passerar framför våra Raspberry Pi. Sedan ska vi räkna hur många gånger det händer, och skicka det här värdet till Ubidots.Kundräknare är vanligtvis dyra enheter använd...