uitleg sturing zwembad

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

 

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:

  1. meten van de temperatuur van het zwembad
  2. meten van de temperatuur van het dak (zonnecollectoren)
  3. meten van de omgevingstemperatuur en de luchtvochtigheid
  4. Aansturen van het zandfilter
  5. aansturen van de verlichting
  6. meten van de waterhoogte
  7. Hoofdnode waar alle informatie wordt verwerkt en opdrachten worden uitgevaardigd
zonnecollectoren
Zonnecollectoren voor opwarmen van het zwembad

Op dit moment zijn de volgende nodes gereed op een breadboard. Ze werken, maar er moeten nog verschillende dingen aangebeuren

  1. Temperatuur zwembad
  2. temperatuur dak
  3. omgevingstemperatuur en luchtvochtigheid
  4. 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

  1. wifi (een van de meest gebruikte soorten)
  2. bedraad
  3. 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

  1. verzamelen temperatuur zwembad
  2. verzamelen temperatuur dak
  3. verzamelen luchtvochtigheid en omgevings temperatuur
  4. 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.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *

Deze website gebruikt Akismet om spam te verminderen. Bekijk hoe je reactie-gegevens worden verwerkt.