Smart-Dustbin: Unterschied zwischen den Versionen
Zeile 590: | Zeile 590: | ||
{| class="wikitable" style="width: 50%;" | {| class="wikitable" style="width: 50%;" | ||
! style="font-weight: bold;" | Schritt Nr. !! Beschreibung !! Ausgangszustand !! Aktion(en) | ! style="font-weight: bold;" | Schritt Nr. !! Beschreibung !! Ausgangszustand !! Aktion(en) !! Erwartetes Ergebnis !! Ergebnis !! Bewertung !! Bemerkung | ||
|- | |- | ||
| Precondition 1 | | Precondition 1 |
Version vom 5. Januar 2023, 01:03 Uhr
Autoren: Alvin John, Almustapha Lawan
Gruppe: 2.1
Betreuer: Prof. Schneider
→ zurück zur Übersicht: WS 21/22: Angewandte Elektrotechnik (BSE)
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.
Anforderungen
ID | Inhalt | |
---|---|---|
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
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 |
|
|
---|---|---|---|---|
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] |
||
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. | ||
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] | ||
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. |
| |
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. |
| |
6 | Eimer | der Eimer wurde von IKEA hergestellt, bei Amazon gekauft | ||
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 |
Hardware
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.
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.
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.
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
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)
- ↑ Alvin John - Eigenes Werk
- ↑ Alvin John - Eigenes Werk
- ↑ Alvin John - Eigenes Werk
- ↑ https://www.grund-wissen.de/elektronik/arduino/aufbau.html, abgerufen am 9.12.21
- ↑ Fritzing Software
- ↑ Fritzing Software
- ↑ https://www.mikrocontroller.net/attachment/218122/HC-SR04_ultraschallmodul_beschreibung_3.pdf, abgerufen am 9.12.21
- ↑ Almustapha Lawan, Eigenes Werk
- ↑ Fritzing Software
- ↑ Fritzing Software
- ↑ https://www.amazon.de/dp/B00Y0JM1HW/ref=pe_27091401_487027711_TE_SCE_3p_dp_1, abgerufen am 16.11.21
- ↑ Alvin John - Eigenes Werk
- ↑ Almustapha Lawan - Eigenes Werk
- ↑ Almustapha Lawan - Eigenes Werk
- ↑ Alvin John - Eigenes Werk
- ↑ Alvin John - Eigenes Werk
- ↑ Alvin John - Eigenes Werk
- ↑ Almustapha Lawan - Eigenes Werk