Inmiddels ben ik druk bezig met de code voor de uiteindelijke controller.
Let op: Technobabble alert!!
De web interface moet gemaakt worden, die moet de variabelen gaan vullen die het programma gebruikt om het lichtschema te starten.
Het is de eerste keer dat ik een Arduino achtig bordje als webserver gebruik, de manier van coden is net even anders als met normale serial inputs.
Het eerste idee was om een Arduino Uno (of Mega) te gebruiken met een bluetooth module en dan via een app aan te sturen, ik heb dit niet gedaan omdat Wifi net wat meer vrijheid geeft.
Apps maken kan ik alleen voor Android, dan is het via de laptop dus al niet aan te sturen, mocht ik dit willen, en mocht ik in het buitenland zijn en er is iets verkeerd wil ik mijn vrouw makkelijk kunnen helpen.
Dus, de Wemos D1 kwam om de hoek.
Omdat je veel meer ruimte hebt kun je er uitgebreider mee aansturen dan met een normale Arduino, de code is wel grotendeels hetzelfde.
De eerste versie van het programma was simpel de ingebouwde led aan- en uitzetten via een webpage met een radio button.
De tweede versie was de led aan en uit zetten met een textbox, doormiddel van 1 of 0 invullen.
De derde versie gaat morgen in de chip, die daadwerkelijk een verlichtingschema gaat laten draaien. Ik heb dit al getest in het kort, en dat werkt op zich prima.
De vierde versie, die ik nu aan het maken ben, is volledig instelbaar.
- Invullen van de maximale lichtintensiteit (van 0 tot 1023, omdat de Wemos een PWM resolutie van 10 bits heeft kun je dus preciezer aansturen. Mocht je met een Uno/Mega preciezer willen aansturen kun je een TLC5940 van Texas Instruments gebruiken, alleen moet je dan wel even een transistor ertussen zetten omdat het een current sink driver is.)
- Invullen van de minimale (nacht)lichtintensiteit
- Invullen tijd zonsopkomst (voorgeprogrammeerd duurt deze 30 minuten)
- Invullen tijd zonsondergang
- Invullen tijd begin ochtendlicht
- Invullen tijd begin nachtlicht
- Invullen alarm waarde ondergrens temperatuur
- Invullen alarm waarde bovengrens temperatuur
De instelpagina is klaar, de hoofdpagina moet ik nog even bouwen maar dat is peanuts.
De volgende stap is om de waardes die de site doorgeeft in het flashgeheugen op te slaan, zodat bij stroomstoring de data niet verloren gaat en je blijft zitten met een niet werkende verlichting wanneer de stroom terug komt.
Normaal zouden deze variabelen in het RAM weggeschreven worden, waardoor je bij een POR geen gegevens meer hebt. Door het weg te schrijven kun je die data dus bewaren en krijg je daar geen gezeur mee.
Daarnaast moet
De volgende stappen die ik wil maken zijn:
- Temperatuur daadwerkelijk aansturen(bovenwaarde natuurlijk) door middel van een relais op de verwarming. Dit geeft ook een beveiliging bij op hol slaan van de verwarming.
- PH meten en waar nodig corrigeren.
- Automatiseren plantenvoeding.
Dat brengt echter weer aardig wat kosten met zich mee en ik denk niet dat ik voldoende uitgangen heb op de D1 om alles te doen. Ik kan er dan voor kiezen een bordje te kopen met meer uitgangen of er een tweede bordje aan te hangen dat via I2c communiceert met de hoofdcontroller. Dit is toekomstmuziek en heeft ook geen grote haast.
Tot zover de technobabble update