Zwembad automatisering nieuw

Zo een tijdje niets van me laten horen, maar nu toch maar weer aan de slag.

Al een poosje ben ik weer aan de gang met het zwembad. Deze gaat eind april begin mei weer opgezet worden. Hierna zal ook de automatisering aangesloten worden.

Vorig jaar liep het redelijk, maar toch niet helemaal zoals ik het wilde. Nu ik dit jaar bezig ben geweest met de home automation, is ook het idee ontstaan om het zwembad weer verder door te automatiseren. Dit wordt nu gedaan met een ESP8266 en een Arduino. Misschien dat later de Arduino er tussen uit kan, maar voor dit moment draait hij er nog bij om het schermpje aan te sturen.

De volgende onderdelen zijn / worden gebruikt / gestuurd door de automatisering van het zwembad:

  1. 3,2 inch schermpje (lokaal bij het zwembad)
  2. keypad voor het bedienen van de controler
  3. DS18B20 voor het meten van de verschillende temperaturen
  4. HC-SR04 voor het meten van de waterhoogte
  5. ESP8266 voor het communiceren met de server
  6. PIR voor het detecteren of er personen in de buurt zijn zodat niet constant het scherm aan hoeft te staan
  7. DS3231 clock module voor dag en nacht detectie
  8. Arduino Mega

Dit zijn zo ongeveer alle onderdelen die ik tot nu toe denk nodig te hebben.

Om even de stand van zaken te vertellen. De volgende dingen werken nu naar behoren:

1 het schermpje

Het schermpje werkt naar behoren. Er is een totaal nieuw ontwerp gekomen wat simpel is en waar snel alle gegevens vanaf te lezen zijn.

Overbodige gegevens zoals temperaturen op het dak en andere soortgelijke informatie wordt niet meer getoond.

2 het keypad voor de bediening van de PoolDuino

Het keypad is een simpel 4×4 keypad wat ik heb besteld via e-bay. Dit is niet al te moeilijk aan te sluiten op een Arduino Mega.

4 x 4 keypad
4 x 4 keypad

Nadat het keypad is geleverd (afgelopen dagen) heb ik het gelijk geinstalleerd, maar wat bleek, het liep in het testprogramma uitstekend -de volgende code heb ik hiervoor gebruikt:

/*4x4 Matrix Keypad connected to Arduino,,
www.theorycircuit.com
This code prints the key pressed on the keypad to the serial port
Get keypad library file from : http://playground.arduino.cc/Code/Keypad */
#include <Keypad.h>

const byte numRows= 4; //number of rows on the keypad
const byte numCols= 4; //number of columns on the keypad

//keymap defines the key pressed according to the row and columns just as appears on the keypad
char keymap[numRows][numCols]=
{
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};

//Code that shows the the keypad connections to the arduino terminals
byte rowPins[numRows] = {10,9,8,7}; //Rows 0 to 3,
byte colPins[numCols]= {6,5,4,3}; //Columns 0 to 3

//initializes an instance of the Keypad class
Keypad myKeypad= Keypad(makeKeymap(keymap), rowPins, colPins, numRows, numCols);

void setup()
{
Serial.begin(9600);
}

//If key is pressed, this key is stored in 'keypressed' variable
//If key is not equal to 'NO_KEY', then this key is printed out
//if count=17, then count is reset back to 0 (this means no key is pressed during the whole keypad scan process
void loop()
{
char keypressed = myKeypad.getKey();
if (keypressed != NO_KEY)
{
Serial.print(keypressed);
}
}

Alleen liep het in mijn programma niet naar behoren. Regelmatig werkten toetsen niet en na veel puzzelen ben ik er achter gekomen dat er doordat de afstand tot het water werd gemeten er een delay ontstond van 12 ms. Dit is niet zo veel, maar dat gebeurde elke keer als de Arduino door de loop heen ging. Dat was dus niet echt de bedoeling.

Na wat zoeken kwam ik ook nog een functie tegen die de temperaturen meet en ook deze had er een delay in zitten.

Ik heb hiervoor een nieuwe functie geschreven, dat elke 1000ste keer dat de loop wordt doorlopen, de temperatuur en de afstand wordt gemeten.

Nu werkt in mijn programma ook het toetsenbord naar behoren

Een gedachte over “Zwembad automatisering nieuw”

Geef een reactie

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

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