Hoi allemaal, dit is mijn eerste post op dit forum.
Ik heb een Arduino Mega 2560 met EthernetShieldRev2 gebruikt om temperaturen en luchtvochtigheidsgraad te meten op 4 punten in een installatie. Ik heb vier AM2302 sensoren gebruikt. Op zich heb ik alles wat ik in eerste instantie wilde voor elkaar gekregen. Ik heb een testset met de sensoren op een breadboard direct naast de arduino wekenlang probleemloos kunnen testen. Nadat ik twee voorlopig definitieve sets heb gemaakt waarbij de sensoren met kabellengtes tot 3 meter zijn aangesloten en die ook probleemloos werkte heb ik ze op hun locaties ingebouwd. Binnen een week waren beide Arduinos vastgelopen en remote niet meer te benaderen terwijl de routers waarop ze zijn aan aangesloten wel bereikbaar waren en correct werkten.
Ik laat de arduino periodiek een regel aan een logbook op de SD card toevoegen met alle meetwaardes en errorcodes van de sensoren, het actief zijn van de Ethernetlink, of het internet actief is of niet, de millis counter en datum/tijd die ik via NTP ophaal.
Nu is mijn vraag:
Kan ik een arduino errorcodes laten opslaan wanneer er iets niet klopt in het functioneren van het apparaat zelf. Waaruit ik later kan herleiden waardoor het apparaat vastgelopen is. Want wanneer ik een usb kabel aansluit om verbinding met mijn laptop te maken, herstart de arduino en werkt alles weer normaal. Hierdoor kom ik er niet achter waardoor de arduino was vastgelopen.
Wat ik zou proberen is elke functie een eigen code in een database laten opslaan als die wordt aangeroepen. Bij het vastlopen kan je dan zien welke functie als laatste is aangeroepen en correct is uitgevoerd. Dat impliceert ook dat je dan kan achterhalen welke functie de fout heeft gegenereerd. Is het steeds dezelfde functie dan kan je daarna specifieke stappen in de functie een eigen code laten opslaan en zo kom je steeds dichter waarom het fout gaat.
Ik snap wat je voorstelt alhoewel ik nig geen idee heb hoe hier uitvoering aan te geven. De derde set draait echter nogsteeds foutloos op mijn bureau. Dus ik vraag me af of het wel aan de code ligt of aan de hardware of aan de locaties waar de twee sets aan het meten zijn. Frits bedankt voor jouw reactie in ieder geval.
Ja. Je junt iets opslaan op je SD kaart or je kunt iets opslaan in EEPROM.
Je Arduino wordt gereset omdat er twee signalen worden geactiveerd (DTR and RTS) als je een seriele poort opent. Er zijn terminal programmas die je kunt configureren zodat deze signalen niet worden geactiveerd als je de poort opent, bv coolterm.
Je kunt ook debug informatie naar bv Serial1 sturen en Serial1 via een serial-to-usb converter aansluiten op je PC.
Hoi sterretje, dat ik iets kan opslaan dat weet ik, sterker dat doe ik al. Ik sla de waarden van de sensoren op. Ik bedoel of er door de Arduino errorcodes worden gegenereerd voordat die uitvalt die ik kan terugzoeken of opslaan.
Ik heb inmiddels een extra serial2usb printje gekocht en die aangesloten op pin 1 en 2. Nu kan ik zonder dat de Arduino zich reset meekijken op de serialprint berichten. Hopelijk geeft dat meer duidelijkheid.
Nee, alleen je programma kan informatie genereren. De enige andere informatie die mogelijk beschikbaar is is de oorzaak van een reset (bv power cycle, watchdog reset); echter ik denk dat de bootloader deze wist.
Waarom 1 en 2? 0 en 1 zou logischer zijn. Of zoals ik voorstelde, gebruik van Serial 1/2/3; daarvoor moet je echter je programma aanpassen.
Natuurlijk, dat bedoelde ik ook .... de eerste twee digitale pins. Dat zijn 0 en 1. My bad. Code hoefde ik nu (nog) niet aan te passen.
De serial monitor output wordt hier ook aangeboden. Ik gebruik Putty om dit weer te geven. Dat werkt prima.