Skip to content

Technik Blog

Programmieren | Arduino | ESP32 | MicroPython | Python | Raspberry Pi | Raspberry Pi Pico

Menu
  • Smarthome
  • Gartenautomation
  • Arduino
  • ESP32 & Co.
  • Raspberry Pi & Pico
  • Solo Mining
  • Deutsch
  • English
Menu

Arduino Projekt: Abfalleimer mit Bewegungssensor

Posted on 30. Dezember 201810. Juni 2025 by Stefan Draeger

Es gibt diverse Abfalleimer und eigentlich ist an diesen nichts Besonderes jedoch gibt es auch welche mit Bewegungssensor. Dieser Bewegungssensor setzt einen Motor / Servo in Gang welcher den Deckel des Abfalleimers öffnet. Eigentlich ist dieses System ganz einfach und auch relativ leicht umzusetzen. Jedoch lassen sich die Hersteller dieses System königlich bezahlen (die Preise können zwischen 30 € bis weit über 100 € liegen).

Nun möchte ich in diesem Projekt zeigen wie man aus einem ganz normalen Abfalleimer und ein paar Sensoren, einem Servo und einem Arduino dieses System selber nachbaut.

Mülleimer 2.0
Dieses Video auf YouTube ansehen.

  • Was wird benötigt für den Abfalleimer mit Bewegungssensor?
  • Aufbau des Abfalleimer mit Bewegungssensors
    • Erstellen eines Prototypen
      • Video des Abfalleimer mit Bewegungssensor
    • Aufbau des Projektes
      • Materialliste
      • Platte für den Mikrocontroller
  • Quellcode

Was wird benötigt für den Abfalleimer mit Bewegungssensor?

Als Erstes wird ein Abfalleimer benötigt, ich verwende den Abfalleimer von IKEA (Modell Filur mit einem Fassungsvermögen von 10l).

IKEA 10l Eimer FILUR
IKEA 10l Eimer FILUR

Es werden für die Durchführung folgende Werkzeuge benötigt:

  • Lötkolben
    • Lötkolbenständer
    • Lötzinn
    • Lötfett
    • Temperaturbeständige Unterlage
  • Heißklebepistole
    • Klebesticks
  • Seitenschneider
  • Bohrmaschine
    • 2 mm Bohrer
  • Kreuzschraubendreher

Des Weiteren werden folgende elektronische Bauteile benötigt:

  • 1x Arduino UNO*
  • 1x Servo SG90 9G*
  • 1x Gesten Sensor ADPS9960*
  • Breadboardkabel*

Hinweis von mir: Die mit einem Sternchen (*) markierten Links sind Affiliate-Links. Wenn du über diese Links einkaufst, erhalte ich eine kleine Provision, die dazu beiträgt, diesen Blog zu unterstützen. Der Preis für dich bleibt dabei unverändert. Vielen Dank für deine Unterstützung!

Je nach Material des Abfalleimers kann es sein das ein stärkerer Servo benötigt wird. Die starken Servomotoren haben jedoch auch eine größere Stromaufnahme somit ist es zwingend erforderlich das ein zusätzliches Netzteil verwendet werden muss.

Aufbau des Abfalleimer mit Bewegungssensors

Erstellen eines Prototypen

Bevor ich am Eimer herumschrauben möchte ich einen Prototyp am Schreibtisch bauen. Das Erstellen eines Prototyps erlaubt es einem kleine bis große Fehler frühzeitig zu erkennen und zu beheben.

Schaltung - Geestensensor ADPS9960, RGB NeoPixel WS1812b, Servo 9g am Arduino UNO
Schaltung – Geestensensor ADPS9960, RGB NeoPixel WS1812b, Servo 9g am Arduino UNO

Video des Abfalleimer mit Bewegungssensor

Geestensensor ADPS9960, Servo und 5mm NeoPixel am Arduino UNO
Dieses Video auf YouTube ansehen.

Aufbau des Projektes

Nachdem das Ganze am Prototypen funktioniert wollen wir nun das richtige Projekt aufbauen.

Als Erstes müssen wir ein Grundgerüst für den Arduino UNO, die Batterie sowie für den Servo schaffen.
Der Deckel des Eimers hat einen ca. 10 mm breiten Rand, an diesem werde ich mit Holzleisten eine kleine Sperrholzplatte schrauben. Des Weiteren benötige ich noch eine Vorrichtung für den Servo damit dieser beim Schwenken den Deckel öffnet bzw. schließt.

Materialliste

  • 2x 1 m, 10 mm im Quadrat Holzleiste,
  • 1x Sperrholzplatte DIN A4,
  • Holzschrauben 3x12mm
  • Holzleim

Die Materialien findest du in jedem, gut sortierten Baumarkt.
Beim Holzleim schwöre ich auf den Uhu Wasserfest, dieser bietet einen guten Preis / Leistungsverhältnis und trocknet sehr schnell.

Platte für den Mikrocontroller

Für die Montage des Arduino UNO und der Batterie benötigen wir eine kleine Sperrholzplatte von 15 cm x 15 cm.
Des Weiteren eine Leiste von 16 cm an dem einen Ende sägen wir jedoch mit einer Gehrungssäge einen 45° Winkel.

Projekt "Eimer" - Holzplatte für Microcontroller & Batterie
Projekt „Eimer“ – Holzplatte für Mikrocontroller & Batterie

Da die Schrauben mit einer Länge von 12 mm zu lang für die dünne (3 mm) Sperrholzplatte sind, klebe ich noch eine 4 mm starke Platte in den passenden Maßen für den Arduino und die Batterie auf.

Eimer - Schaltung mit Servo 4.3g
Eimer – Schaltung mit Servo 4.3g

Ich habe einmal mit einem kleinen Servo probiert den Deckel zu öffnen, jedoch hat dieser nicht genug Leistung daher muss mindestens ein 9g Servero verwendet werden.

Damit die gesamte Schaltung von oben etwas geschützt ist, klebe ich zusätzlich eine dünne Sperrholzplatte drauf. Auf diese Platte wird dann die LED angebracht.

Eimer - Abdeckung mit LED
Eimer – Abdeckung mit LED

Der 9g Servo erhält einen kleinen Arm welcher im Winkel von ca. 105 Grad gedreht wird.

Eimer - Servo mit Arm
Eimer – Servo mit Arm

Der Arm des Servo’s fährt auf der kleinen Holzplatte (blau markiert) entlang. Hier musste ich mit 100er Schleifpapier nachhelfen damit die Leiste ordentlich glatt ist.

Damit ist das Projekt erledigt und wir können den Sketch aufspielen.

Quellcode

Im Sketch habe ich Kommentare verfasst. Dieses macht spätere Modifikationen einfacher.

#include "Adafruit_APDS9960.h" //Bibliothek für den Geestensensor
#include <Servo.h>  //Bibliothek für den Servomotor
#include <Adafruit_NeoPixel.h> //Bibliothek für den 5mm WS1812B NeoPixel

//Initialisieren der Objekte

//Geestensensor
Adafruit_APDS9960 apds;

//Servomotor
Servo servo;

#define PIN            10 //digitaler Pin D10
#define NUMPIXELS      1 //Anzahl der NeoPixel
//NeoPixel
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);

//Zeit zwischen den Schritten
//des Servormotors
int waitTime = 15;

//Variable um zu speichern ob der Deckel geschlossen ist.
bool isBinClosed = true;

//Variable wie lange der Deckel geöffnet bleiben soll.
long timer = 5000;

//Variable zum speichern des Zeitstempels wann der Deckel geöffnet wurde
long lastOpenTime = -1;

//Winkel / Schritte wie weit der Servo sich bewegen soll
const int ANGLE = 105;

void setup() {
  Serial.begin(115200); //Beginn der seriellen Kommunikation
  if(!apds.begin()){
    Serial.println("Initialiserung des Sensors fehlgeschlagen.");
    Serial.println("Bitte prüfen Sie die Verkabelung!");
  }
  else {
    Serial.println("Der Sensor wurde erfolgreich initialisiert!");
  }
 
  apds.enableProximity(true);
  apds.enableGesture(true);

  servo.attach(9); //Servomotor am digitalen Pin D9
  pixels.begin(); 
  lightUp(0,0,0); //setzen der Farbe "schwarz" (die LED ist aus)
}

void loop() {
 uint8_t gesture = apds.readGesture(); //lesen der Geeste
 switch(gesture){
      case APDS9960_LEFT:  openBin(); break;
      case APDS9960_RIGHT: closeBin(); break;
 }

 //Wenn der aktuelle Zeitstempel minus der Zeitspanne welcher der Deckel 
 //geöffnet sein soll größer als der Zeitstempel der letzten öffnung ist
 //dann soll der Deckel geschlossen werden.
 if((millis()-timer) > lastOpenTime){
    closeBin();
 }
}

void openBin(){
  //nur wenn der Deckel geschlossen ist dann...
  if(isBinClosed){
    lastOpenTime = millis(); //speichern des aktuellen Zeitstempels
    isBinClosed = false; //setzen das der Deckel geöffnet ist
    lightUp(0,255,0); //LED rot aufleuchten lassen
    //Schleife von 0 bis ANGLE (Deckel öffnet sich)
    for(int position = 0; position<=ANGLE; position++){ 
      servo.write(position); //Schreiben des aktuellen Wertes der Variable 'position' (180...1)
      delay(waitTime); //Pause
    } 
  }
}
 
void closeBin(){
  //nur wenn der Deckel geöffnet ist UND die Zeitabgelaufen ist dann...
  if(!isBinClosed & (millis()-timer) > lastOpenTime){
    lastOpenTime = -1; // zurücksetzen des Zeitstempels
    isBinClosed = true; //setzen das der Deckel geschlossen ist
    lightUp(0,0,255); //LED blau aufleuchten lassen
    //schleife von ANGLE bis 0 (Deckel schließt sich)
    for(int position = ANGLE; position>=0; position--){ 
      servo.write(position); //Schreiben des aktuellen Wertes der Variable 'position' (180...1)
      delay(waitTime); //Pause
    }  
    lightUp(0,0,0);
  }
}

void lightUp(int red, int green, int blue){
  pixels.setPixelColor(0, pixels.Color(red,green,blue));
  pixels.show(); // Wichtig !! für die Anzeige der neuen Farbe muss diese Funktion aufgerufen werden.
}

1 thought on “Arduino Projekt: Abfalleimer mit Bewegungssensor”

  1. Dakar55 sagt:
    14. Januar 2022 um 22:28 Uhr

    Super tolle Sache so ein Abfalleimer mit Bewegungssensor. Sehr praktisch!

    Antworten

Schreibe einen Kommentar Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Fragen oder Feedback?

Du hast eine Idee, brauchst Hilfe oder möchtest Feedback loswerden?
Support-Ticket erstellen

Newsletter abonnieren

Bleib auf dem Laufenden: Erhalte regelmäßig Updates zu neuen Projekten, Tutorials und Tipps rund um Arduino, ESP32 und mehr – direkt in dein Postfach.

Jetzt Newsletter abonnieren

Unterstütze meinen Blog

Wenn dir meine Inhalte gefallen, freue ich mich über deine Unterstützung auf Tipeee.
So hilfst du mit, den Blog am Leben zu halten und neue Beiträge zu ermöglichen.

draeger-it.blog auf Tipeee unterstützen

Vielen Dank für deinen Support!
– Stefan Draeger

Kategorien

Tools

  • Unix-Zeitstempel-Rechner
  • ASCII Tabelle
  • Spannung, Strom, Widerstand und Leistung berechnen
  • Widerstandsrechner
  • 8×8 LED Matrix Tool
  • 8×16 LED Matrix Modul von Keyestudio
  • 16×16 LED Matrix – Generator

Links

Blogverzeichnis Bloggerei.de TopBlogs.de das Original - Blogverzeichnis | Blog Top Liste Blogverzeichnis trusted-blogs.com

Stefan Draeger
Königsberger Str. 13
38364 Schöningen
Tel.: 01778501273
E-Mail: info@draeger-it.blog

Folge mir auf

link zu Fabook
link zu LinkedIn
link zu YouTube
link zu TikTok
link zu Pinterest
link zu Instagram
  • Impressum
  • Datenschutzerklärung
  • Disclaimer
  • Cookie-Richtlinie (EU)
©2025 Technik Blog | Built using WordPress and Responsive Blogily theme by Superb
Cookie-Zustimmung verwalten
Wir verwenden Technologien wie Cookies, um Geräteinformationen zu speichern und/oder darauf zuzugreifen. Wir tun dies, um das Surferlebnis zu verbessern und um personalisierte Werbung anzuzeigen. Wenn Sie diesen Technologien zustimmen, können wir Daten wie das Surfverhalten oder eindeutige IDs auf dieser Website verarbeiten. Wenn Sie Ihre Zustimmung nicht erteilen oder zurückziehen, können bestimmte Funktionen beeinträchtigt werden.
Funktional Immer aktiv
Die technische Speicherung oder der Zugang ist unbedingt erforderlich für den rechtmäßigen Zweck, die Nutzung eines bestimmten Dienstes zu ermöglichen, der vom Teilnehmer oder Nutzer ausdrücklich gewünscht wird, oder für den alleinigen Zweck, die Übertragung einer Nachricht über ein elektronisches Kommunikationsnetz durchzuführen.
Vorlieben
Die technische Speicherung oder der Zugriff ist für den rechtmäßigen Zweck der Speicherung von Präferenzen erforderlich, die nicht vom Abonnenten oder Benutzer angefordert wurden.
Statistiken
Die technische Speicherung oder der Zugriff, der ausschließlich zu statistischen Zwecken erfolgt. Die technische Speicherung oder der Zugriff, der ausschließlich zu anonymen statistischen Zwecken verwendet wird. Ohne eine Vorladung, die freiwillige Zustimmung deines Internetdienstanbieters oder zusätzliche Aufzeichnungen von Dritten können die zu diesem Zweck gespeicherten oder abgerufenen Informationen allein in der Regel nicht dazu verwendet werden, dich zu identifizieren.
Marketing
Die technische Speicherung oder der Zugriff ist erforderlich, um Nutzerprofile zu erstellen, um Werbung zu versenden oder um den Nutzer auf einer Website oder über mehrere Websites hinweg zu ähnlichen Marketingzwecken zu verfolgen.
Optionen verwalten Dienste verwalten Verwalten von {vendor_count}-Lieferanten Lese mehr über diese Zwecke
Einstellungen anzeigen
{title} {title} {title}