Uitleg van de nodes en de afwegingen
De sturing van het zwembad bestaat uit verschillende onderdelen (nodes). Deze nodes geven gegevens door of voeren een bepaalde actie uit.
In dit bericht uitleg van de verschillende nodes en waarom ik voor bepaalde dingen heb gekozen
Contents
Wat is een node
Een node is een onderdeel in een geheel wat een specifieke taak heeft. Dat kan zijn een meting of een actie uitvoert.
Een node zou kunnen zijn het meten van een temperatuur.
De verschillende nodes
Bij het zwembad heb ik verschillende nodes nodig, te weten de volgende:
- meten van de temperatuur van het zwembad
- meten van de temperatuur van het dak (zonnecollectoren)
- meten van de omgevingstemperatuur en de luchtvochtigheid
- Aansturen van het zandfilter
- aansturen van de verlichting
- meten van de waterhoogte
- Hoofdnode waar alle informatie wordt verwerkt en opdrachten worden uitgevaardigd
Op dit moment zijn de volgende nodes gereed op een breadboard. Ze werken, maar er moeten nog verschillende dingen aangebeuren
- Temperatuur zwembad
- temperatuur dak
- omgevingstemperatuur en luchtvochtigheid
- aansturen zandfilter
Wat moet een node doen
Een node heeft een specifieke taak om uit te voeren. Als voorbeeld wil ik de Temperatuur van het zwembad nemen.
Node Zwembad heeft eigenlijk maar 1 taak en dat is om de temperatuur van het zwembad door te geven aan de hoofdnode. Er wordt een bericht gemaakt wat elke keer (om de zoveel tijd) naar de hoofdnode wordt verzonden.
In dat bericht staan de volgende dingen:
- van welke node komt het bericht
- sensorwaarde1
- sensorwaarde2
- batterij voltage
Eisen voor een node
Een node moet kunnen werken zonder externe voeding. Dit houdt dus in, dat er GEEN draden moeten worden getrokken naar de node toe om deze op spanning te houden.
Hiervoor is een accupack in de node aanwezig die op te laden is door middel van een usb aansluiting Een simpele usb-telefoon lader kan het werk doen.
waterdicht
Een node dient waterdicht te zijn omdat deze een heel seizoen buiten ligt, hij is dus blootgesteld aan weersomstandigheden. Er moet dus een waterdichte box omheen.
Verbinding met de hoofdnode
De node heeft een verbinding nodig met de hoofdnode. Er zijn verschillende mogelijkheden op dit moment van schrijven
- wifi (een van de meest gebruikte soorten)
- bedraad
- radiografisch
Ik heb gekozen voor radiografisch. Dit heb ik gedaan omdat met de wifi er scripts moeten worden geschreven om de gegevens door te voeren naar de hoofnode. Dit ging me teveel tijd kosten.
Wifi
Een ESP8266 (lolin of wat ook) zou makkelijker zijn, mits ik hier makkelijk de gegevens mee kan doorsturen. Dat is nu juist niet het geval.
Bedraad
Het bedrade verhaal heeft ook zo zijn voor en nadelen.
Voordeel:
De snelheid waarmee kan worden gecommuniceerd. Deze snelheid kan oplopen tot de maximale snelheid van een arduino. Er wordt namelijk serieel en via digitale signalen gecommuniceerd.
Nadeel:
Er moet een hoop draden worden getrokken. Elke sensor heeft zo zijn eigen bedrading nodig en er kunnen fouten ontstaan met het aansluiten van de bekabeling op de hoofdArduino.
Radiografisch
Radiografisch heeft voor en nadelen. Om dit te kunnen realiseren, maak ik gebruik van de NRF24L01 modules. Deze hebben het nadeel dat het alleen maar communicatiemodules zijn en er dus geen soort van Arduino (microcontroler) in zit waar een sketch in kan worden geplaatst
Hierdoor ben ik genoodzaakt om er een goedkope arduino Nano aan te koppelen voor het sturen van de commando’s
Conclusie keuze
Daarom heb ik gekozen voor de radiografische verbinding. In dit geval kan ik namelijk mijn nodes overal plaatsen waar ik wil. Tenminste binnen een straal van 100m in het vrije veld. Dit is aan te passen maar dat heb ik op dit moment volgens mij niet nodig. Dat zal pas komen als de eerste testen worden gedraaid.
video over hoe je het bereik van de modules kunt vergroten
Wat doet de hoofdnode
De hoofdnode is een Arduino Mega met een NRF24L01 welke een Nextion scherm stuurt.
Door gebruik te maken van een Nextion scherm kan ik dingen laten besluiten, maar ook dingen sturen .
Voor de opmaak van het Nextion screen maak ik gebruik van de Nextion Editor
Het Nextionscherm is een touchscreen met maar 2 draden naast de +5v en de GND. Hierdoor heb ik veel mogelijkheden tot extra aansluitingen op mijn Arduino. Op dit moment is het Nexionscherm aangesloten op de TX1 en RX1 van de Arduino Mega, maar dit kan ook via SoftwareSerial om zo een extra RX en TX te kunnen genereren.
Autonoom handelen
De bedoeling is dat de HoofdNode helemaal autonoom kan handelen, dus zonder tussenkomst van een persoon. Hierdoor kan de eigenaar van deze ZCU-combinatie ook weg gaan terwijl het zwembad gewoon door gaat met verwarmen, eventueel koelen en dergelijke
Gegevens verzamelen
Deze node verzamelt de gegevens die nodig zijn voor het uitvoeren van de bepaalde functies
- verzamelen temperatuur zwembad
- verzamelen temperatuur dak
- verzamelen luchtvochtigheid en omgevings temperatuur
- instellingen die nodig zijn voor de werking
Aan de hand van deze gegevens kan de Hoofdnode besluiten nemen en deze uitvoeren
Besluiten nemen en uitvoeren
Doordat de Hoofdnode autonoom werkt, is het ook de bedoeling dat deze besluiten gaat nemen.
Een voorbeeld hiervan is:
Stel de dak temperatuur is hoger dan de zwembad temperatuur, dit door de zonnecollectoren. Dus het water moet via de zonnecollectoren naar het zwembad stromen.
Door de pomp nu aan te zetten, zal dat gaan gebeuren en wordt het water door de slangen in de zonnecollector verwarmd en terug gepompt het zwembad in.
Handmatige handelingen toestaan
Soms is het nodig of leuk om de pomp aan te kunnen zetten. Dit is mogelijk door op het vinkje achter pomp te klikken. De Hoofdnode stuurt een signaal naar de PompNode. Deze zal het signaal bekijken en afhankelijk van wat hij aantreft, zal hij de pomp aan of uit zetten.