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. Lees snel verder!
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.
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:
- Een handzeep pompje. Bijvoorbeeld bij de Kruidvat zijn deze te koop, zoals een Dettol handzeep pompje.
- Arduino Nano. Is onder andere op Bol.com te bestellen (Zelf solderen) en bij Kiwi Electronics. Je zou bijvoorbeeld ook een Arduino Uno kunnen gebruiken. In “Arduino kopen” lees je waar je het beste een Arduino Uno kan kopen en handige starter kits.
- Mini USB kabel voor de Arduino Nano of een USB kabel type A/B voor de Arduino Uno. Bij Bol.com kan je een Arduino Nano + Mini USB kabel kopen of een Arduino Uno + USB kabel A/B. In een Starter Kit zit een USB kabel meestal inbegrepen.
- Ultrasoon sensor HC-SR04. Met deze sensor meet je contactloos de afstand tot een bepaald object. Bij Kiwi Electronics kan je deze sensor bestellen.
- Micro Servo SG90. Dit motortje gaat het pompje bedienen. Bij Kiwi Electronics is de Micro Servo SG90 te bestellen.
- 170-punt breadboard, ook bij Kiwi Electronics te bestellen. Dit is nodig om het circuit te maken.
- Vier jumper wires M/F. Te bestellen bij Kiwi Electronics.
- Drie jumper wires M/M. Te bestellen bij Kiwi Electronics.
- Secondelijm. Daarmee lijm je de ultrasoon sensor HC-SR04 en de Micro Servo SG90 vast aan het handzeep pompje. Op Bol.com kan je eenvoudig secondelijm bestellen.
- Dun ijzerdraad, zoals deze bij Bol.com.
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.
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.
In het artikel “Arduino programmeertaal” lees je meer over de programmeertaal van de Arduino IDE.
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.
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:
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.