Arduino stabiliteit

In een van mijn projecten zit een Arduino, die een wireless HC-12 module aanstuurt.

Nu is het de bedoeling dat de schakeling meerdere maanden na elkaar ingeschakeld blijft. Waarom moet je letten om de boel zo stabiel mogelijk te krijgen?

In de setup method wordt de HC-12 module geconfigureerd (oa channel). Wanneer de module om een of andere reset, wordt die cinfig nooit meer gedaan.
Is het verstandig om bv ieder uur de module sowieso terug te configureren? Hoe lossen jullie dit op?

Arco

Special Member

Waarom zou die module resetten? Dan is er toch wat goed mis...
Je kunt toch de status opvragen? Als die klopt is alles in orde.

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
elmowww

Golden Member

De millis() timer kan resetten. Afhankelijk van de grootte van je variabele. Zoek op "millis() overflow".

Als je deze gebruikt om te timen is het dus belangrijk dat je daarop let.

Zorg dat er geen condities kunnen ontstaan dat de processor ergens op blijft wachten wat om (onbekende) redenen niet komt. Werk daar met timeouts en foutafhandeling. Verder kan je nog een watchdogtimer opnemen, die moet je ook juist gebruiken.

Ik weet niet waarom die module zou resetten, ik ken ze niet.

Als je je foutafhandeling bijvoorbeeld zo in elkaar steekt dat als iets misult je maximaal 3x retried, en daarna softwarematig je arduino reset, waarbij in de initialisatie van dee arduino ook al je peripherals meegenomen worden, kan het best goed functioneren.

Je wilt denk ik wel loggen dat je module reset. Want als dat te vaak gebeurd en je hebt het niet door is dat wel een bron van mogelijke fouten.

Maar het is natuurlijk afhankelijk van je applicatie of een dergelijke "recover" geoorloofd is.

PA0EJE - www.eje-electronics.nl - e.jongerius[aapje]eje-electronics.nl - EJE Electronics - Elektronica/firmware ontwikkeling

Hmm, qua hardware
1. Voeding
2. Omgevings straling
3. Layout van de pcb
4. ESD

qua software
1. Buiten de array schrijven / lezen
2. Stack overflow in recursive functies
3. memory overflow bij dynamische geheugen
4. Pointers
5. Type casting
6. counter overflow

Zomaar een aantal puntjes die in mijn hoofd opkomen zijn ze wellicht niet allemaal. Betekend trouwens niet dat dit altijd fout gaat, maar kan wel fout gaan als het niet goed wordt toegepast. Vaak zijn dit ook dingen die naar loop van tijd te voorschijn komen.

PE2BAS
Kruimel

Golden Member

Is het niet makkelijker voor elke keer dat je wil zenden eens de instellingen op te vragen (of domweg opnieuw weg te schrijven)? Dan weet je zeker of de module goed zal werken. Ik kon ik het eerste document dat Google uitspuugde niet zo snel zien hoe de communicatie werkte, waarschijnlijk een soort I2C waarvan de commando's verborgen zitten in een bibliotheek die je van een Chinese site kan downloaden. Daar moet je dan eens kijken of tweezijdige communicatie mogelijk is.

Gebruik een slimme watchdog.

If tlastSuccess > 90s then reset

Even uitpluizen waar je een goeie trigger vindt.

Kruimel

Golden Member

Het ging volgens mij om de module, en niet zo zeer de Arduino. Het zal zeer afhangen van je systeem als geheel of het mogelijk is om te zien of je zendmodule nog functioneert of niet. Het is dus eigenlijk meer een kwestie van "HC-12 module stabiliteit" dan van de Arduino zoals ik het nu zie.

Met een tweede ontvanger kan je mooi monitoren.