Pond[CTRL] Update

Er zat een bug in de firmware waarbij stekkers met functie ‘altijd aan’ of ‘altijd uit’ niet reageerden op voederpauze. De functie ‘altijd aan’ en ‘altijd uit’ deden dus hun naam wel eer aan, echter bleek dit niet handig.

Na aansluiten van schrikdraad (moet altijd aan staan i.v.m. een terugkerende reiger) op een stekker wilde ik dat deze tijdens voeren uit ging. Wel zo veilig voor de kids (en mijzelf).

De bug is nu uiteraard opgelost.

De enige (nu bekende) fout is nog steeds dat de pH-sensor extreem afwijkende waarden geeft bij een omgevingstemperatuur van minder dan ongeveer 7,5˚C. Dit lijkt niet afhankelijk van de watertemperatuur. Nu de temperatuur in de nacht niet zo ver meer zakt is het moeilijk deze fout te reproduceren. Voor de koude nachten zich weer laten zien, wil ik een tweede pH sensor installeren om te kijken of het te maken heeft met de sensor of wellicht het hardware-ontwerp. Maar: eerst maar eens genieten van de warme dagen!

Huidige firmwareversie: 1135

Pond[CTRL] Update

Vandaag heb ik zeven prachtige Euro Koi mogen verwelkomen in de vijver. Ik hoop ze ooit zo vertrouwd met mensen te kunnen maken dat ze uit je handen eten. Om daarmee te beginnen heb ik de voederpauze-functie ingebouwd. Ik wil de Koi alleen voeren tijdens een voederpauze, waarbij alle pompen uitgeschakeld zijn. Ik hoop dat de vissen zo slim worden dat als er geen stroming is, ze het besef hebben dat er gevoerd wordt. Ik voer alleen in een voederring, zodat ik na het voeren het overtollige voer gemakkelijk kan verwijderen.

In de firmware moet de voederpauze automatisch uitgeschakeld worden na een half uur. Deze functie bleek verwijderd te zijn bij het verplaatsen van de hoofdfuncties naar de WiFi-module. De firmware is nu aangepast en werkt weer naar behoren.

Daarnaast heb ik vandaag een eerste begin gemaakt aan de iOS-app. Omdat ik nog helemaal niet bekend was met XCode en SwiftUI heb ik eerst een aantal online tutorials moeten doorlopen.

Huidige firmwareversie: 1133

Pond[CTRL] Update

Er zat een bug in de firmware waarbij uitgeschakelde sensoren een alarm konden verzoorzaken. Dit is opgelost vanaf firmwareversie 1130.

Huidige firmwareversie: 1130

Pond[CTRL] Update

De vernieuwde taakverdeling tussen microprocessor en WiFi-module blijkt een goede zet te zijn geweest. Pond[CTRL] draait vele malen stabieler en heeft de afgelopen 24 uur nog geen enkele ongeplande reset gehad (een ongeplande reset is een reset door bijvoorbeeld een hard- of softwarefout).

Vandaag heb ik de API en de firmware van de WiFi-module aangepast. De API geeft nu een json-resultaat na uploaden van data waarin de meest firmware-versie en de status vermeld staan. Indien de API-call succesvol was, dan zal de programmeerbare LED gaan branden wat vanaf nu aangeeft of er een succesvolle link is met de API. De LED brandt net zo lang tot er een negatieve of geen status ontvangen wordt. Door de versienummers van de huidige firmware en de nieuwste firmware te vergelijken, wordt er nu een automatische update in gang gezet.

Huidige firmwareversie: 1129

Pond[CTRL] Update

Omdat Pond[CTRL] nu naast de vijver hangt in een waterdichte behuizing, is het lastig om software van de microprocessor te updaten. Hierdoor heb ik de beslissing genomen om alle logica en berekeningen te verplaatsen van de software van de microprocessor naar die van de WiFi-module welke op afstand bij te werken is.

De microprocessor doet nu niets anders van sensorgegevens ophalen en luisteren naar opdrachten van de WiFi-module. De WiFi-module kan vanaf nu ook stekkers schakelen, de status-LED besturen en buzzer (de)activeren.

Daarnaast was het geven van opdrachten vanaf de online app te complex. Er moest gewerkt worden met byte-arrays die direct doorgespeeld werden naar de microprocessor. Ik heb opdracht-URLs toegevoegd aan de webserver van de WiFi-module, waarmee aan de hand van simpele opdrachten gecombineerd met POST-data alles op te halen en in te stellen is. Voor test-doeleinden is de ‘query?data=’-URL nog steeds aanwezig maar werkt alleen zodra ingelogd op de module.

De microprocessor crashte, ondanks het toevoegen van varistors, bij het schakelen van meerde apparaten gelijktijdig. Om dit te voorkomen heb ik een kleine vertraging van het schakelen van elk relais toegevoegd waarmee het probleem verholpen lijkt.

Enige probleem op dit moment is nog steeds de foute meetwaarden van de pH-sensor bij een buitentemperatuur van onder de 10 graden Celcius. Het vreemde is dat de meting niet afhankelijk is van de watertemperatuur, terwijl de sensor in het water hangt.

Pond[CTRL] Update

Pond[CTRL] is nu enige tijd actief en door uitgebreid te testen heb ik een en ander aan de hard- en software aangepast.

Software

De belangrijkste wijziging in de software is het afvlakken van de meetwaarden. Er wordt nu bij temperatuur- en pH-sensoren een gemiddelde van de laatste 120 juiste meetwaarden weergegeven, waarbij een juiste meetwaarde een waarde is die maximaal 5% afwijkt van de voorgaande. Bij schakelen van relais bleek er soms een foute meetwaarde tussen te zitten (door een dip in de stroomvoorziening) waardoor meetwaarden een alarm veroorzaakten. De 5% regel zit geprogrammeerd in de microprocessor zelf en de WiFi-module om ook storingen op de I2C-bus op te vangen.

De ingebouwde interface van de WiFi-module werkte alleen juist in standalone-modus (wanneer Pond[CTRL] als access point fungeerde). De interface werkt nu in beide modi.

Hardware

De hardware bleek helaas ook niet helemaal te functioneren zoals gewenst. Veel apparaten kunnen geschakeld worden zonder problemen, echter bij het uitschakelen van een zwaardere pomp ontstond er storing in de stroomvoorziening waardoor de microprocessor zichzelf resette. Dit probleem is gemakkelijk op te lossen door een voldoende zware varistor op de fase en nul van elk relais te zetten. De bedoeling is om deze varistor in het standaardontwerp van de print op te nemen.

Online Dashboard

Het online Dashboard toont nu alleen het bereik van de meetwaarden en niet langer het gehele bereik tussen laag en hoog alarm.

Problemen

Het enige probleem wat ik nog niet opgelost is, is de instabiliteit van de pH sensor bij temperaturen onder de 10 graden Celsius. Omdat ik niet weet of dit aan de sensor of het hardware-ontwerp van Pond[CTRL] ligt, wil ik eerst een tweede sensor testen.

What’s next

De komende tijd zal vooral bestaan uit een duurtest en (tromgeroffel!) het ontwerpen van een iOS-app. De app zal het online dashboard en app combineren in één.

Update 08.01.2020

Ondanks weinig online updates, heb ik de afgelopen tijd toch flink wat vooruitgang geboekt. De volgende zaken werken nu:

  • Pond[CTRL] versie 3.3 werkt zoals verwacht met aansluitingen voor 2 pH- en 2 temperatuursensoren en een vlotterschakelaar en vijf schakelbare stekkers. Stekkers zijn schakelbaar afhankelijk van meetwaarden of instellingen en voor elke sensor of stekker kunnen alarmparameters ingesteld worden. Alle aansluitingen zijn getest en werken. pH-sensoren kunnen gekalibreerd worden. Voor de temperatuursensoren kan een correctie (zowel positief als negatief) opgegeven worden.
  • De besturingssoftware ondersteunt communicatie met de ESP8266 WiFi-module via I2C. De ESP8266 is master en stuurt 17 bytes (byte 1 = commando, byte 2-17 data) waarop Pond[CTRL] reageert met een antwoord van 16 bytes.
  • De WiFi-module werkt als access-point indien er niet verbonden kan worden met het opgegeven netwerk. Anders werkt deze als draadloze client.
  • De WiFi-module heeft een beperkte webinterface en ondersteunt http-requests als voorbereiding op een eventuele app.
  • De WiFi-module heeft een mDNS-responder voor gemakkelijke toegang. Deze is werkend getest op Windows (met Bonjour), iOS en macOS. Android lijkt (nog) niet te werken.
Meetwaarden van de sensoren tijdens de testfase. Dit is uiteraard niet de definitieve gebruikersinterface.