Smart-Dustbin: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
 
(109 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 4: Zeile 4:
'''Autoren:''' [[Benutzer:Alvin-Varghese John| Alvin John]],  [[ Almustapha-Abdu Lawan| Almustapha Lawan]]<br/>
'''Autoren:''' [[Benutzer:Alvin-Varghese John| Alvin John]],  [[ Almustapha-Abdu Lawan| Almustapha Lawan]]<br/>
'''Gruppe:''' 2.1<br/>
'''Gruppe:''' 2.1<br/>
'''Betreuer: Prof. Göbel & Prof. Schneider''' <br/>
'''Betreuer: Prof. Schneider''' <br/>


→ zurück zur Übersicht: [[:Kategorie:ProjekteET_MTR_BSE_WS2021|WS 21/22: Angewandte Elektrotechnik (BSE)]]
→ zurück zur Übersicht: [[:Kategorie:ProjekteET_MTR_BSE_WS2021|WS 21/22: Angewandte Elektrotechnik (BSE)]]
[[Datei:TitelBildSmartDustbin.jpg|500px|thumb|rechts|Abb 1: Titelbild: Smart-Dustbin: geschlossen(links), geöffnet(rechts) <ref>Alvin John - Eigenes Werk</ref>]]


==Einleitung==
==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 ist um 90° geöffnet.
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.


[[Datei:SmartDusbin.JPG|400px|thumb|links|Abb 1: Smart-Dustbin <ref>Alvin John - Eigenes Werk</ref>]]
[[Datei:SmartDusbin.JPG|400px|thumb|links|Abb 2: Smart-Dustbin CAD <ref>Alvin John - Eigenes Werk</ref>]]




Zeile 39: Zeile 48:




{| class="mw-datatable"
{| class="wikitable"
! style="font-weight: bold;" | ID
! style="font-weight: bold;" | ID
! style="font-weight: bold;" | Inhalt
! style="font-weight: bold;" | Inhalt
! style="font-weight: bold;" | Geprüft von
! style="font-weight: bold;" | Datum


|+ style = "text-align: left"|Tabelle 1: Anforderungen an den Smart Dustbin
|+ style = "text-align: left"|Tabelle 1: Anforderungen an den Smart Dustbin
|-
|-
| 1
| 1
| Der Abstand zwischen Mülleimer und Person/Gegenstand muss gemessen werden. Messgenauigkeit beträgt ca. 3mm
| Der Abstand zwischen Mülleimer und Person/Gegenstand muss gemessen werden. Messgenauigkeit beträgt ca. 3mm  
|
|
|-
|-
| 2
| 2
| Der Deckel muss mit Hilfe des Servomotors geöffnet werden. Servo (SG90), wegen 0° - 180° Drehung. Öffnungswinkel 90°.
| Der Deckel muss mit Hilfe des Servomotors geöffnet werden. Servo (SG90), wegen 0° - 180° Drehung. Öffnungswinkel ungefähr 60°.  
|
|-
|-
| 3
| 3.
| Der Mikrocontroller und die Ultraschallsensoren im Mülleimer müssen mit einer Schicht bedeckt werden.
| wie voll der Mülleimer ist, muss auf dem LCD-Bildschirm in Prozent angezeigt werden.
|
|
|  
|  
|-
|-
| 4.
| 4.
| wie voll der Mülleimer ist, muss auf dem LCD-Bildschirm in Prozent angezeigt werden.
|
|
|
|-
| 5.
| Der Arduino soll über eine 9 Volt Blockbatterie mit Spannung versorgt werden.
| Der Arduino soll über eine 9 Volt Blockbatterie mit Spannung versorgt werden.
|
|  
|
|}
|}


==Funktionaler Systementwurf/Technischer Systementwurf==
==Funktionaler Systementwurf/Technischer Systementwurf==
[[Datei:FunktionalerSystementwurfSmartDustbin.JPG|400px|thumb|links|Abb 2: Systementwurf Smart-Dustbin <ref>Alvin John - Eigenes Werk</ref>]]
[[Datei:FunktionalerSystementwurfSmartDustbin.JPG|400px|thumb|links|Abb 3: Systementwurf Smart-Dustbin <ref>Alvin John - Eigenes Werk</ref>]]


Der in Abb. 2 abgebildete Systementwurf gibt einen kleinen Überblick über die Sensoren und Aktoren, sowie ihre entsprechenden Funktionen im System.
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.
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.


Zeile 94: Zeile 88:




<!-- Füllen Sie Ihre Projektskizze bis hierher aus. Fügen Sie einen Projektplan unten ein.  -->




Zeile 99: Zeile 94:




<!-- Füllen Sie Ihre Projektskizze bis hierher aus. Fügen Sie einen Projektplan unten ein.  -->


==Komponentenspezifikation==
==Komponentenspezifikation==
Zeile 116: Zeile 110:
|1
|1
|Ardunio Uno  
|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.<ref>https://www.grund-wissen.de/elektronik/arduino/aufbau.html, abgerufen am 9.12.21 </ref>
|[[Datei: Arduino_UnoR3.png|126px|mini|zentriert|Arduino Uno<ref>Fritzing Software</ref>]]
|[[Datei: Arduino_UnoR3.png|126px|mini|zentriert|Arduino Uno<ref>Fritzing Software</ref>]]
   
   
Zeile 122: Zeile 117:
|2
|2
|9V Batterie  
|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.
|[[Datei: 9VBatterie.png|126px|mini|zentriert|Batterie<ref>Fritzing Software</ref>]]   
|[[Datei: 9VBatterie.png|126px|mini|zentriert|Batterie<ref>Fritzing Software</ref>]]   


Zeile 128: Zeile 123:
|3
|3
|HC-SR04 Ultraschall  
|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<ref>https://www.mikrocontroller.net/attachment/218122/HC-SR04_ultraschallmodul_beschreibung_3.pdf, abgerufen am 9.12.21 </ref>
|[[Datei: UltraschallHC_SR04.png|126px|mini|zentriert|Ultraschall<ref>Fritzing Software</ref>]]  
   
|[[Datei: UltraschallCAD.png|126px|mini|zentriert|Ultraschall<ref>Almustapha Lawan, Eigenes Werk</ref>]]  
   
   
|-
|-
|4
|4
|Servo Motor
|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.
|[[Datei:Servo.png|126px|mini|zentriert|Servo Motor<ref>Fritzing Software</ref>]]
|[[Datei:Servo.png|126px|mini|zentriert|Servo Motor<ref>Fritzing Software</ref>]]


Zeile 140: Zeile 136:
|-
|-
|5
|5
|LCD Display
|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.
|[[Datei:LCDDisplay16x2.png|126px|mini|zentriert|LCD Display<ref>Fritzing Software</ref>]]   
|[[Datei:LCDDisplay16x2.png|126px|mini|zentriert|LCD Display<ref>Fritzing Software</ref>]]   
   
   
|-
|-
|6
|6
|Eimercover
|Eimer
|  
| der Eimer wurde von IKEA hergestellt, bei Amazon gekauft
|[[Datei:Smartdustincover.jpg|126px|mini|zentriert|Dustbin-cover <ref>Almustapha Lawan - Eigenes Werk</ref>]]  
|[[Datei:Eimer.png|126px|mini|zentriert|Eimer <ref>https://www.amazon.de/dp/B00Y0JM1HW/ref=pe_27091401_487027711_TE_SCE_3p_dp_1, abgerufen am 16.11.21 </ref>]] 
 
|-
|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
|[[Datei:Cover.jpg|126px|mini|zentriert|Dustbin-cover <ref>Alvin John - Eigenes Werk</ref>]]    
|}
|}


==Umsetzung (HW/SW)==
== Hardware==
 
 
[[Datei:Schaltplanfritzing.png|550px|mini|links|Abb 4:Verkabelung zum Arduino <ref>Almustapha Lawan - Eigenes Werk</ref>]]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
[[Datei:Schaltplanmultisim update.png|550px|mini|links|Abb 5: Schaltplan mittels Multisim <ref>Almustapha Lawan - Eigenes Werk</ref>]]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 


Hardware


== Hardware==




Zeile 166: Zeile 207:


==Software==
==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.
[[Datei:Programmablauf PAP.jpg|300px|mini|rechts|Abb 7: Programmablauf PAP <ref>Alvin John - Eigenes Werk</ref>]]
==Arduino Code==
Hier sind einige Auszüge aus dem Quellcode dargestellt:
<div style="width:950px; height:500px; overflow:auto; border: 1px solid #000">
Header und Benötigte Bibliotheken
<pre>
/*******************************************************************************************************
*        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;
}
</pre>
</div>


==Komponententest==
==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.
[[Datei:Connections.jpeg|550px|mini|links|Abb 6:Versuchsaufbau, bevor die Komponenten in den Smart-Dustbin eingebaut wurden <ref>Alvin John - Eigenes Werk</ref>]]




==Ergebnis==
==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.
[[Datei:DisplayonLCD.jpg|500px|mini|links|Abb 8: Anzeige, während der Smart-Dustbin im Betrieb ist <ref>Alvin John - Eigenes Werk</ref>]]




{| class="mw-datatable"
! style="font-weight: bold;" |
! style="font-weight: bold;" | Anforderungen
! style="font-weight: bold;" | Ergebnis in %


|+ style = "text-align: left"|Tabelle 3: Ergebnis des Projektes
|-
| 1
| Der Abstand zwischen Mülleimer und Person/Gegenstand muss gemessen werden. Messgenauigkeit beträgt ca. 3mm
| 100




|-
| 2
| Der Deckel muss mit Hilfe des Servomotors geöffnet werden. Servo (SG90), wegen 0° - 180° Drehung. Öffnungswinkel 90°.
| 100




|-
| 3
| Der Mikrocontroller und die Ultraschallsensoren im Mülleimer müssen mit einer Schicht bedeckt werden.
| 100




|-
| 4.
| wie voll der Mülleimer ist, muss auf dem LCD-Bildschirm in Prozent angezeigt werden.
| 100




|-
| 5.
| Der Arduino soll über eine 9 Volt Blockbatterie mit Spannung versorgt werden.
| 100
|
|}


==Zusammenfassung==
==Zusammenfassung==
===Lessons Learned===
 
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.




==Projektunterlagen==
==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===
===Projektplan===
===Projektdurchführung===




==YouTube Video==
 
[[Datei:Smartdustinplan.png|1050px|mini|links|Abb 9: Projektplan <ref>Almustapha Lawan - Eigenes Werk</ref>]]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 




==Weblinks==
== YouTube Video ==


{{#ev:youtube|https://www.youtube.com/watch?v=GSaqTcltH8o|800px|left}}
<br clear=all>


==Literatur==
==Literatur==

Aktuelle Version vom 5. Januar 2023, 01:27 Uhr

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


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