Automatische zeepdispenser kopen of zelf maken met een Arduino?

Lijkt het je gaaf om een eigen automatische zeepdispenser (Automatische zeeppomp) te maken met een Arduino? Dan is dit het juiste artikel voor jou. Als je daar niet zo zin in hebt, zie je in het eerste hoofdstuk waar je eenvoudig een automatische zeepdispenser kan kopen. Een zeepdispenser met een sensor zorgt dat het automatisch gaat. Ga lekker zelf aan de slag en kom erachter wat je nog meer nodig hebt. Met een makkelijke uitleg en een beetje creativiteit krijg je het snel werkend. Of bestel eenvoudig een automatische zeepdispenser.

Op het moment van schrijven zitten we nog in de coronacrisis. Veel mensen nemen hygiëne veel serieuzer en handen wassen hoort daar ook bij. Een automatische zeepdispenser kan daarom niet ontbreken.

Met een automatische zeepdispenser hoef je de zeepdispenser zelf niet aan te raken. Dit is veel beter dan een gewone zeepdispenser. Stel dat vijf familieleden elke dag hun handen wassen en daardoor ook de zeepdispenser aanraken. Dan heeft het toch weinig meerwaarde?

Automatische zeepdispenser (Automatische zeeppomp) kopen: Voor de luie mensen

Geen zin om zelf een automatische zeepdispenser te maken? Gelukkig is er goed nieuws. Op Bol.com kan je namelijk heel eenvoudig een goede automatische zeepdispenser kopen.

In de winkels zijn ze vaak uitverkocht en daarom is het handig om op Bol.com een kijkje te nemen.

Handen wassen skelet

Automatische zeepdispenser (Automatische zeeppomp) maken: Voor de doeners

Laten we een bekende uitdrukking eens omdraaien. Ben je liever moe dan lui? Mooi! Want vanaf nu gaan we lekker aan de slag. We gaan met een Arduino een automatische zeepdispenser maken.

Wil je eerst meer lezen over een Arduino? Lees dan het artikel “Wat is een Arduino?”. Er is ook een speciale Arduino cursus te volgen als je er echt meer in wil gaan duiken.

De automatische zeepdispenser werkte niet helemaal zoals wij gehoopt hadden, maar de code en de connecties kloppen wel. Het motortje had niet genoeg kracht om het pompje ver genoeg naar beneden te trekken.

Met een beetje creativiteit krijg je de automatische zeepdispenser wel werkend. En misschien doe je wel inspiratie op voor andere leuke projecten met een Arduino.

Wat heb je nodig?

Om zelf een automatische zeepdispenser te maken heb je een aantal dingen nodig. Hieronder zetten we alles op een rijtje:

Stappenplan om de automatische zeepdispenser te maken met een Arduino

Voor het maken van een automatische zeepdispenser zijn er een aantal stappen nodig. Als je al deze stappen volgt, is het vrij eenvoudig om alles werkend te krijgen. Echter zal je zelf nog een beetje moeten knutselen met een handzeep pompje, om alle componenten op de juiste manier erop te plaatsen.

Circuit maken

Eerst gaan we een circuit maken. We verbinden de ultrasoon sensor HC-SR04 en de Micro Servo SG90 met de Arduino Nano op de 170-punt breadboard.

Automatische zeepdispenser circuit
Klik op de afbeelding om het te vergroten

Als eerste plaats je de Arduino Nano in het breadboard. Voor de connectie van de ultrasoon sensor HC-SR04 gebruik je de vier jumper wires M/F. En voor de connectie van de Micro Servo SG90 gebruik je de drie jumper wires M/M.

We gebruiken een breadboard, omdat we daardoor niet hoeven te solderen. Een breadboard is ideaal voor het maken van connecties en om te testen. Als je gelijk gaat solderen en er blijkt iets niet te kloppen, dan is het veel lastiger om dat te corrigeren.

Eerst test je op een breadboard of alles goed werkt. Als je echt van een prototype naar een product wil gaan, dan ga je meestal pas solderen.

De connecties van de ultrasoon sensor HC-SR04 zijn:

HC-SR04 Arduino Nano
VCC 5V
Trig D2
Echo D3
Gnd GND

De connecties van de Micro Servo SG90 zijn:

Micro Servo SG90 Arduino Nano
GND (Zwart/bruin kabeltje) GND
VCC (Rood kabeltje) 5V
PWM (Geel/oranje kabeltje) D4

De digitale pinnen (D2, D3 en D4) graag aanhouden, zoals hierboven is aangegeven. In de code die je zo zal zien is het namelijk ook zo ingesteld. Als je andere digitale pinnen wil gebruiken, dan moet je dat ook in de code aanpassen.

Arduino IDE downloaden

De Arduino IDE is de ontwikkelomgeving voor de Arduino. In deze ontwikkelomgeving kan je code schrijven en uploaden naar je Arduino.

Download de goede Arduino IDE voor het besturingssysteem waarop je werkt en ga dan verder.

Code voor de ultrasoon sensor HC-SR04 en testen

Eerst gaan we kijken of de ultrasoon sensor HC-SR04 werkt. Dit doen we met de volgende code:

const int pinTrig = 2; // Digitale pin Arduino voor Trig pin
const int pinEcho = 3; // Digitale pin Arduino voor Echo pin

// Variabelen declareren
long tijd, afstand;

void setup() {
  // Input en output vaststellen
  pinMode(pinEcho, INPUT);
  pinMode(pinTrig, OUTPUT);

  // Start serial communication
  Serial.begin(9600);
}

void loop() {
  // Sensor triggeren bij 10 µs. Eerst pinTrig LOW zetten voor 5 microsecondes
  // om schoon signaal te krijgen
  digitalWrite(pinTrig, LOW);
  delayMicroseconds(5);
  digitalWrite(pinTrig, HIGH);
  delayMicroseconds(10);
  digitalWrite(pinTrig, LOW);

  // pinEcho lezen en afstand berekenen
  tijd = pulseIn(pinEcho, HIGH); // pulseIn() geeft duur van pulse terug in microseconden
  afstand = tijd * 0.034 / 2;

  // Afstand in cm printen in Serial Monitor
  Serial.print(afstand);
  Serial.println(" cm");

  // Vertraging van 50 microsecondes
  delay(50);
}

Door middel van het commentaar in de code is het goed te begrijpen. De sensor zendt een ultrasone geluidsgolf uit. Als er een object voor de sensor staat, dan kaatst de geluidsgolf terug. Hier zit een bepaalde tijd tussen en die tijd bepaald de afstand.

Snap je de werking van de bovenstaande code niet zo goed en heb je nog geen ervaring met programmeren? Dan is het heel interessant om het e-book “Snelcursus Leren Programmeren” te lezen.

Nu is het tijd om te gaan testen. Eerst moet je de code uploaden naar je Arduino. Als je nog niet goed weet hoe dit moet, dan is “Weerstation aansluiten, code uploaden en starten” handig om te lezen.

Wij hadden eerst wat problemen met het uploaden van de code naar de Arduino Nano. Het kan helpen om de “Processor” naar “ATmega328P (Old Bootloader)” te zetten. In het menu kom je zo bij “Processor” in de Arduino IDE: Tools > Processor.

Als je de code hebt geüpload, klik je op Ctrl + Shift + M en start je de seriële monitor. Daar zie je de waardes in centimeters. Hou je hand voor de sensor om het te testen. Als het goed is zie je de waardes veranderen naar realistische afstanden in centimeters tussen je hand en de sensor.

HC-SR04 seriële monitor test

Code voor de Micro Servo SG90 en testen

Nu is de Micro Servo SG90 aan de beurt. De code ziet er zo uit:

#include <Servo.h>

Servo servo; // servo object maken om Servo mee aan te sturen in de code

int pinServo = 4; // Digitale pin Arduino voor Servo motor
int angle = 0; // Positie van de Servo motor in graden

void setup() {
  // Start serial communication
  Serial.begin(9600);
  
  // Digitale pin instellen
  servo.attach(pinServo);

  // Beginnen met nulpunt (0 graden)
  servo.write(angle);
}

void loop() {
  // De motor van 0 tot 45 graden laten draaien door middel van for loop
  for (angle = 0; angle < 45; angle++) {
    servo.write(angle);
    Serial.println(angle);
    delay(50); // Delay waarde eventueel veranderen om motor sneller/langzamer te maken
  }

  // Motor terug laten draaien door middel van for loop
  for (angle = 45; angle > 0; angle--) {
    servo.write(angle);
    Serial.println(angle);
    delay(50);
  }
}

In deze code staat ook weer veel commentaar om de werking duidelijker te maken. Upload de code naar je Arduino en test of het 45 graden heen en weer draait.

Code samenvoegen en testen

We hebben de bovenstaande codes samengevoegd en wat aanpassingen gedaan, zodat het is geoptimaliseerd voor de automatische zeepdispenser. De code ziet er zo uit:

#include <Servo.h>

const int pinTrig = 2; // Digitale pin Arduino voor Trig pin van de HC-SR04
const int pinEcho = 3; // Digitale pin Arduino voor Echo pin van de HC-SR04

// Variabelen declareren
long tijd, afstand;

// Servo object
Servo servo;

int pinServo = 4; // Digitale pin Arduino voor Servo motor
int angle = 0; // Positie van de Servo motor in graden

void setup() {
  // Start serial communication
  Serial.begin(9600);

  // Input en output vaststellen van de HC-SR04
  pinMode(pinEcho, INPUT);
  pinMode(pinTrig, OUTPUT);

  // Pin en beginpunt van Servo motor vaststellen
  servo.attach(pinServo);
  servo.write(angle);
}

void loop() {
  // Sensor triggeren bij 10 µs. Eerst pinTrig LOW zetten voor 5 microsecondes
  // om schoon signaal te krijgen
  digitalWrite(pinTrig, LOW);
  delayMicroseconds(5);
  digitalWrite(pinTrig, HIGH);
  delayMicroseconds(10);
  digitalWrite(pinTrig, LOW);

  // pinEcho lezen en afstand berekenen
  tijd = pulseIn(pinEcho, HIGH); // pulseIn() geeft duur van pulse terug in microseconden
  afstand = tijd * 0.034 / 2;

  // Als afstand HC-SR04 tot hand kleiner is dan 6 cm, dan pompje naar beneden halen
  if (afstand < 6) {
    Serial.println("Pompje naar beneden halen.");

    // De motor van 0 tot 90 graden laten draaien
    for (angle = 0; angle < 90; angle++) {
      servo.write(angle);
      Serial.println(angle);
      delay(10); // Delay waarde eventueel veranderen om motor sneller/langzamer te maken
    }

    // Motor terug laten draaien
    for (angle = 90; angle > 0; angle--) {
      servo.write(angle);
      Serial.println(angle);
      delay(10);
    }
    // 2 seconden delay, zodat hand op tijd weg is en proces niet gelijk opnieuw begint
    delay(2000);
  }

  delay(50);
}

Upload de code en test of het werkt (Ctrl + Shift + M). Houd je hand minder dan zes centimeter voor de ultrasoon sensor HC-SR04. Als het goed is gaat dan het motortje van de Micro Servo SG90 90 graden draaien en weer terug.

Werkt het allemaal zoals verwacht? Zoja, dan is het een kwestie van alle onderdelen op het handzeep pompje plaatsen, waardoor het automatisch gaat werken.

Alle onderdelen op handzeep pompje plaatsen

In de onderstaande afbeelding zie je hoe wij de onderdelen op het handzeep pompje hebben geplaatst:

Automatische zeepdispenser prototype

Zoals eerder aangegeven werkte deze automatische zeepdispenser niet helemaal optimaal. De Micro Servo SG90 is via een ijzeren draadje verbonden aan het pompje. Via de ultrasoon sensor HC-SR04 wordt een hand voor het pompje herkend en trekt het motortje de pomp naar beneden.

Echter had de Micro Servo SG90 niet genoeg kracht om de pomp ver naar beneden te trekken. Het pompje werd maar een beetje naar beneden getrokken, waardoor er nauwelijks zeep uit kwam.

Houd er bij je eigen automatische zeepdispenser rekening mee om eventueel het aantal graden dat het motortje draait aan te passen in de code. Je ziet zelf hoe ver het pompje ingedrukt moet worden om er zeep uit te krijgen.

Misschien krijg jij het wel werkend met een ander pompje, andere componenten erbij en/of een andere constructie? Dit is een voorbeeld van een werkende automatische zeepdispenser met een Arduino:

Gebruik nu de automatische zeepdispenser

Als je de automatische zeepdispenser werkend hebt gekregen, is het leuk om er echt gebruik van te maken. Soldeer alle componenten netjes aan elkaar en zorg bijvoorbeeld dat het op batterijen werkt.

Met een beetje creativiteit kan jij thuis gebruik maken van je eigen automatische zeepdispenser.

Nog meer over de Arduino leren?

Als je in dit hoofdstuk bent aangekomen, dan was een automatische zeepdispenser (Automatische zeeppomp) kopen geen optie voor jou. Heel goed! Een automatische zeepdispenser maken is toch veel leuker?

Het is gaaf om vaker met de Arduino leuke projecten te doen en er meer over te leren. In “Arduino cursus” lees je welke cursus gaaf en leerzaam is om te volgen.

Ook zijn er Arduino boeken voor beginners. Wij hebben de beste Arduino boeken voor beginners op een rijtje gezet.

Wij horen het graag als je de automatische zeepdispenser wel werkend hebt gekregen en/of je inspiratie hebt opgedaan voor andere gave projecten.

Heb je nog vragen en/of opmerkingen? Laat dan hieronder een reactie achter of neem contact op.

Plaats een reactie