Smart-Dustbin

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen

Autoren: Alvin John, Almustapha Lawan
Gruppe: 2.1
Betreuer: Prof. Schneider

→ zurück zur Übersicht: WS 21/22: Angewandte Elektrotechnik (BSE)

Abb 1: Titelbild: Smart-Dustbin: geschlossen(links), geöffnet(rechts) [1]





Einleitung

In diesem Projekt soll ein Smart-Dustbin (Mülleimer) entwickelt werden. Der Smart-Mülleimer sollte seinen Deckel jedes Mal automatisch öffnen, wenn jemand etwas hineinwirft und dies mit Hilfe von Ultraschallsensor, Servomotor und Arduino geschieht. Die Idee für einen smart Mülleimer entstand aus der Pandemie-Situation, in der allen geraten wurde, so wenig öffentliche Sachen wie möglich anzufassen. Mit Hilfe eines Ultraschallsensors im Inneren des Mülleimers und einem LCD an der Außenseite zeigt der Mülleimer an, wie voll er ist. In der Abbildung 1 sieht man die Skizze des Smart-Dustbins. Der Deckel sollte abweichend von der Zeichung um 60° geöffnet sein.

Abb 2: Smart-Dustbin CAD [2]












Anforderungen

ID Inhalt
Tabelle 1: Anforderungen an den Smart Dustbin
1 Der Abstand zwischen Mülleimer und Person/Gegenstand muss gemessen werden. Messgenauigkeit beträgt ca. 3mm
2 Der Deckel muss mit Hilfe des Servomotors geöffnet werden. Servo (SG90), wegen 0° - 180° Drehung. Öffnungswinkel ungefähr 60°.
3. wie voll der Mülleimer ist, muss auf dem LCD-Bildschirm in Prozent angezeigt werden.
4. Der Arduino soll über eine 9 Volt Blockbatterie mit Spannung versorgt werden.

Funktionaler Systementwurf/Technischer Systementwurf

Abb 3: Systementwurf Smart-Dustbin [3]

Der in Abb. 3 abgebildete Systementwurf gibt einen kleinen Überblick über die Sensoren und Aktoren, sowie ihre entsprechenden Funktionen im System. Der Arduino spielt die Hauptrolle in dem System. Dieser soll über eine 9 Volt Blockbatterie mit Spannung versorgt werden. Die Sensoren und Aktoren werden an den Arduino angeschlossen und über diesen gesteuert. Das LCD-Modul zeigt wie voll der Eimer ist.











Komponentenspezifikation

Komponenten Beschreibung Bilder


Tabelle 2: Spezifikation der Bauteilen
1 Ardunio Uno Der Arduino Uno R3 ist das Herzstück des Produktes, dabei handelt es sich um eine Mikrocontroller von ATMEL, der ATMEGA 328P. Die auf ihm Bootloader-Software ermöglicht Arduino-Programme auszuführen.

Das Arduino UNO verfügt über 14 digitale I/O Pins, wovon sechs als PWM Kanäle genutzt werden können. Darüber hinaus sind sechs analoge Input Pins verfügbar.[4]

Arduino Uno[5]
2 9V Batterie Die 9V Batterie versorgt die Sensoren, den Servomotor und das LCD mit Spannung. Es ist mit den Vcc- und GND-Pins von Arduino verbunden.
Batterie[6]
3 HC-SR04 Ultraschall Der HC-SR04 ist ein Ultraschall sensor, welcher in diesem Projekt zum einsatz kommt, Abstand zwischen Gegenstand bzw. Person zu ermitteln. Die eigentliche Messung wird über den Anschluss Trigger gestartet. Nach Triggerung mit einer fallenden Flanke misst das Modul selbstständig die Entfernung und wandelt diese in ein PWM Signal welches am Ausgang zur Verfügung steht, dabei werden nur 50 Messungen pro Sekunde durchgeführt.Ein zweiter Ultraschallsensor wurde verwendet, um den Müllpegel zu messen. Der Sensor ist auf dem Deckel( auf der Unterseite) befestigt und nach unten gerichtet. Es misst die Höhe des Mülls, die später in Prozent umgerechnet und auf dem LCD angezeigt wird[7]
Ultraschall[8]
4 Servo Motor Das Servo ist oben auf der Abdeckung geklebt. Am Ende des Blattes des Servomotors wird ein kleiner Faden angebracht und der Faden wird dann 3 cm vom Motor entfernt in Richtung Deckelmitte angebracht. Das Servo öffnet und schließt den Deckel.
Servo Motor[9]


5 LCD mit I^2C Modul Der LCD-Monitor zeigt den Müllpegel an. Es zeigt auch "Opening" an, wenn der Deckel geöffnet wird, "Put your waste", wenn der Deckel geöffnet ist, und "closing", bevor er schließt.
LCD Display[10]


6 Eimer der Eimer wurde von IKEA hergestellt, bei Amazon gekauft
Eimer [11]
7 Deckel aus Pappe Der Deckel besteht aus Karton, ist in der Mitte geschnitten und mit einem Klebeband zusammengehalten, damit er die Öffnungs- und Schließfunktionen reibungslos ausführen kann
Dustbin-cover [12]

Hardware

Abb 4:Verkabelung zum Arduino [13]










Abb 5: Schaltplan mittels Multisim [14]















Software

Die Smart Dustin Software wurde mit der Arduino IDE implementiert. Diese besteht aus vier Teilen, zuerst die Anbindung von Bibliotheken und Variablendefinitionen, danach das Auslesen von Ultraschalsensoren und die Distanzberechnung und anschließend der Loop. Als Bibliotheken wurden LiquidCrystal.h, Servo.h und Wire.h verwendet. Der Loop wurde in verschiedenen Zuständen realisiert, zuerst wird der Ultraschall vorne überprüft, ob der Abstand zum Gegenstand bzw. Person kleiner 50cm ist, wenn diesen Fall auftritt, wird den Deckel um 60° geöffnet. Als weitere zustände werden der zweite Ultraschall gemessen, wie voll der Smart Dustin ist und anschließend auf dem Display dargestellt.

Abb 7: Programmablauf PAP [15]





























Arduino Code

Hier sind einige Auszüge aus dem Quellcode dargestellt:

Header und Benötigte Bibliotheken

/*******************************************************************************************************
 *        Hochschule Hamm-Lippstadt        GET Fachpraktikum                                     *
 *******************************************************************************************************
 * Modul           : SmartDustbin.ino                           
 *                                                               
 * Datum           : 23.12.2021                            
 *                                                               
 * Funktion        : Abstandmessen und der Deckel von dem Mülleimer öffnen. Auch auf LCD zeigen wie voll 
 *                   der Eimer ist. (in %)
 *                                                                                                                           
 * Hardware        : UNO, LCD 1602, 2x HC-SR04, Servo SG90
 * Implementation  : Arduino IDE 1.8.13                    
 *                                                               
 * Include         : Servo.h                              
 *                   LiquidCrystal_I2C.h                                            
 *                   Wire.h
 *                   LiquidCrystal.h                                    
 *                   
 * Autoren         : Alvin John & Almustapha Lawan                                      
 *                                                               
 * Letzte Änderung : 23.12.2021                             
 *                                                               
 ********************************************************************************************************/

/********************************************************************************************************/

                                                          

#include <Servo.h>   //servo library
#include <LiquidCrystal_I2C.h>
#include <LiquidCrystal.h>
#include <Wire.h> 

LiquidCrystal_I2C lcd(0x27, 16, 2); // I2C address 0x3F, 16 column and 2 rows
Servo servo;     

#define trigPin1 12
#define echoPin1 11
#define trigPin2 6
#define echoPin2 7

int servoPin = 8;
double  GarbageLevel=0;
long duration, distance, RightSensor,LeftSensor;


void setup()
{
  Serial.begin (9600);
  
  servo.attach(servoPin);  
  pinMode(trigPin1, OUTPUT);
  pinMode(echoPin1, INPUT);
  pinMode(trigPin2, OUTPUT);
  pinMode(echoPin2, INPUT);
  
  servo.write(0);         //close cap on power on
  delay(100);
  servo.detach(); 

  lcd.init();               // initialize the lcd
  lcd.backlight();          // open the backlight 

}

void loop() 
{
  UltraSonicSensor(trigPin1, echoPin1);
  RightSensor = distance;
  UltraSonicSensor(trigPin2, echoPin2);
  LeftSensor = distance;
  
    if ( LeftSensor<50 ) 
      {
      //Change distance as per your need
       servo.attach(servoPin);
        lcd.clear();
        lcd.setCursor(0, 0); // start to print at the first row
        lcd.print("Opening");
        delay(1000);
       servo.write(0);  
       lcd.clear();
        lcd.setCursor(0, 0); // start to print at the first row
        lcd.print("Put your waste");
       delay(3000);       
       lcd.clear();
        lcd.setCursor(0, 0); // start to print at the first row
        lcd.print("Closing");
        delay(1000);
       servo.write(100);    
       delay(2000);
//     servo.detach();      
      }
//Serial.print(LeftSensor);
//Serial.print(" - ");
//Serial.println(RightSensor);
    if ( RightSensor>23 ) 
      {
         lcd.clear();
        lcd.setCursor(0, 0); // start to print at the first row
        lcd.print("Garbage Percent:");
        lcd.setCursor(1, 7);
        lcd.print("0%");
        //lcd.print();  
      }   
    else if ( RightSensor < 22)
      {
        lcd.clear();
        lcd.setCursor(0, 0); // start to print at the first row
        GarbageLevel= 100- RightSensor*4.34782;
        lcd.print("Garbage Percent: ");
        lcd.setCursor(1, 7);
        lcd.print(GarbageLevel);
         lcd.print("%");
       delay(2000);
      }
}

void UltraSonicSensor(int trigPin,int echoPin)
{
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  duration = pulseIn(echoPin, HIGH);
  distance = (duration/2) / 29.1;
}

Komponententest

Die Bauteile wurden vor der Verdrahtung und das Zusammenfügen einzeln getestet, dafür wurde ein kleines Programm geschrieben, um sicher zu stellen, dass die Funktionsfähig sind und möglichst Fehlerfreies Produkt zu konstruieren.

Abb 6:Versuchsaufbau, bevor die Komponenten in den Smart-Dustbin eingebaut wurden [16]

















Ergebnis

Das Projekt wurde erfolgreich abgeschlossen. Der Smart-Dustin hatte den Abstand zum Person bzw Gegenstände mit Hilfe von Ultraschall mit einer Genauigkeit von ca. 3mm gemessen, den Deckel ungefähr auf 60° geöffnet und anschließend wie voll der Eimer auf dem LCD-Display dargestelt, somit sind alle die zuvor genannten Anforderungen erfüllt.


Abb 8: Anzeige, während der Smart-Dustbin im Betrieb ist [17]


























Zusammenfassung

Im Rahmen des GET-Fachpraktikum WS 21/22 Projekt wurden ein Mechatronisches System mit Hilfe von einem oder mehreren Mikrokontroller entwickelt. Zusammengefasst, durch unser können und die erlangten wissen aus verschiedenen Bereichen wie "Elektronik, Informatik, Konstruktionstechnik, Mess und Reglungstechnik usw." an der Hochschule Hamm-lippstadt wurde am Ende der projektbearbeitungsphase ein komplett fähiges Smart-Dustin erstellt. Bevor des Beginns der Konstruktion wurde ein Projektplan erstellt, welcher uns Schritt für Schritt zeigt, was und wann zu machen ist, das hat uns sehr geholfen, die geschätzte Bearbeitungszeit zu halten. Nachdem die Bauteile zusammen konstruiert sind, wurde das Smart-Dustin programmiert und anschließend natürlich das Produkt getestet, um sicher zu stellen, dass es die oben genannten Anforderungen erfüllt hat.


Lessons Learned

Die wichtigsten ,,Lessons-Learned" sind:

Planung des Projektes,

Programmierung von Arduino,

Fritzing,

Verkabelungsplan,

Konstruktion mit CAD,

Team-Arbeit,

& um das Beste aus den begrenzten Ressourcen zu machen.

Projektplan

Abb 9: Projektplan [18]


















YouTube Video


Abnahmetest

Test-Artikel des Projekts " Smart-Home" WiSe 22/23. Die Intelligente Automatiesierung im Haus wird getestet. Dafür werden die zu übertragendenden Daten wie das Pc-Worx Projekt über Pheonix Contact AXC 1050 geschickt sowie die Code für die Ansteurung des Servo, RFID, und Bewegungsmelder über Arduino Uno geschickt. Der Abschnitt Testfall lässt sich über den Knopf "Ausklappen" anzeigen.

Verwendete Daten

Hier wird alles aufgelistet inkl. Datum/Versionnummer, was zur Ausführung des Testfalls notwendig ist. SVN-Projektarchiv: XY in Version 12345 Wikiartikel: XY vom 22.12.2022 Benötigte Software: XY in Version XY


Der Testfall im Detail

Bezeichnung: Bezeichnung des Testfalls
Erstellt von: Namen
Erstellt am: Datum
Testinstanz: PC/Versuchsaufbau/Prototyp XY/Prüfstand XY...

Schritt Nr. Beschreibung Ausgangszustand Aktion(en) Erwartetes Ergebnis Ergebnis Bewertung Bemerkung
Precondition 1 PC und Daten vorbereiten PC ist aus, Kabel nicht eingesteckt Start des Rechners Der PC ist a, die Anlage betriebsbereit, Update SVN Arbeitskopie (Pfad: https://svn.hshl.de/svn/MTR_GPE_Praktikum/trunk/Fachthemen/SmartHome/WS_22_23/) PC ist an, SVN-Ordner " SmartHome WS_22_23" ausgecheckt i.O.
Precondition 2 Phoenix Contact AXC 1050 hochfahren Anlage ist aus Netzteil anschließen, Schalterknopf betätigen Anlage ist betriebsbereit, SPS-Status ist auf grün (siehe Ergebnis)
Precondition 3 Arduino Uno hochfahren Mikrocontroller ist aus USB-Kabel vom Anschließen Anlage ist betriebsbereit, Arduino Uno blinkt ... ... ...
Testschritt 1 SmartHome Programm öffnen. Anlage ist betriebsbereit Ordner Entwicklung klicken, SmartHome SPS öffnen PC Worx Arbeitsbereich geöffnet (siehe Ergebnis)
i.O.
Testschritt 2 Steuerung neu starten Anlage ist betriebsbereit Arbeitsbereich „Busaufbau“ markieren, IP 192.168.0.14 wählen.

Gerätdetails klicken, den Reiter erweiterte Einstellung wählen und Steuerung neu starten.

Steuerung neu gestartet (siehe Ergebnis)
...
Testschritt 3 Projekt neu erzeugen Anlage ist betriebsbereit Wechsel zum IEC-Programming Plattform, wähle Main, und danach wieder Main. Unter Code Projekt neu erzeugen Projekt neu erzeugt, 0 Fehler (siehe Ergebnis)
... ...
Testschritt 4 Projekt automatischer Betrieb Anlage ist betriebsbereit wähle den Button Ausführung (siehe Ergebnis), und danach rücksetzen, dann senden und kalt ausführen. Projekt läuft, Temperatur und Feuchtigkeit gemessen, Lüfter schaltet an, wenn die Temperaturwert > 12000 oder Feuchtigkeitswert> 11000. Wenn nicht, gehe zu Schritt 5.
... ...
Testschritt 5 Projekt manueller Betrieb Anlage ist betriebsbereit Bestätige den Schalter 7 und danach 6, um im manuellen Betrieb zu wechseln. Projekt läuft, Lüfter schaltet an.
... ...
Testschritt 6 Echtzeit Online Werte ansehen Anlage ist betriebsbereit Wähle den Button Online und Debug durchführen. Projekt läuft, online Werte wird angezeigt.
... ...
Postcondition 1 Anlage herunterfahren Anlage läuft Druckluft an XY abdrehen, Netzteil am Schalter XY ausschalten Druckluft = 0bar an Anzeige XY, SPS aus (alle LEDs aus), Netzteil aus Druckluft = 0bar an Anzeige XY, SPS aus (alle LEDs aus), Netzteil aus i.O.
Postcondition 2 PC herunterfahren PC läuft Daten in XY speichern, Software XY schließen,... PC aus, Daten in XY gesichert PC aus, Daten in XY gesichert i.O.
Postcondition 3 ... ... ... ... ... ... ...






















Literatur


→ zurück zur Übersicht: WS 21/22: Angewandte Elektrotechnik (BSE)

  1. Alvin John - Eigenes Werk
  2. Alvin John - Eigenes Werk
  3. Alvin John - Eigenes Werk
  4. https://www.grund-wissen.de/elektronik/arduino/aufbau.html, abgerufen am 9.12.21
  5. Fritzing Software
  6. Fritzing Software
  7. https://www.mikrocontroller.net/attachment/218122/HC-SR04_ultraschallmodul_beschreibung_3.pdf, abgerufen am 9.12.21
  8. Almustapha Lawan, Eigenes Werk
  9. Fritzing Software
  10. Fritzing Software
  11. https://www.amazon.de/dp/B00Y0JM1HW/ref=pe_27091401_487027711_TE_SCE_3p_dp_1, abgerufen am 16.11.21
  12. Alvin John - Eigenes Werk
  13. Almustapha Lawan - Eigenes Werk
  14. Almustapha Lawan - Eigenes Werk
  15. Alvin John - Eigenes Werk
  16. Alvin John - Eigenes Werk
  17. Alvin John - Eigenes Werk
  18. Almustapha Lawan - Eigenes Werk