Rücknahmeautomat (RVM)
Komponenten und Verbrauchsmaterialien
| | × | 1 | |
| NodeMCU ESP8266 Breakout Board | | × | 1 | |
| Induktiver Näherungssensor, 15 mm | | × | 2 | |
| Kapazitiver Näherungssensor, 12 mm | | × | 1 | |
| | × | 2 | |
| Alphanumerisches LCD, 16 x 2 | | × | 1 | |
| Ultraschallsensor - HC-SR04 (Generic) | | × | 2 | |
| | × | 1 | |
| | × | 1 | |
| Single Turn Potentiometer - 100k Ohm | | × | 1 | |
| Schaltbetätiger, Kopf für Druckknopf mit Federrückstellung | | × | 1 | |
| | × | 2 | |
| | × | 1 | |
| | × | 1 | |
| | × | 1 | |
| | × | 2 | |
Über dieses Projekt
MOTIVATION:
Wo landen Plastikwasserflaschen?
Auf Deponien, auf Ozeanen oder Flüssen und auf Gehwegen. Es wurde geschätzt, dass 46.000 Stück Plastikmüll pro Quadratmeile auf dem Meer schwimmen. Dieser Kunststoff tötet Tiere, tritt Chemikalien aus und stört Ökosysteme. Jede Flasche kann bis zu tausend Jahre brauchen, um sich zu zersetzen, und während des Prozesses können gefährliche und schädliche Chemikalien austreten. Einige ausgetretene Toxine können Krebs und Fortpflanzungsstörungen verursachen. Beim Verbrennen von Kunststoff entstehen giftige Emissionen wie Kohlenmonoxid, Chlor, Salzsäure, Furane und Nitrite. Leider kann das Argument des Recyclings nur so wenig für seinen Fall ausrichten, da nur 12% der 35 Milliarden Flaschen, die pro Jahr konsumiert werden, recycelt werden, was darauf hindeutet, dass nur die Hälfte von dem, was Sie in einen Papierkorb legen, tatsächlich recycelt wird.
IDEE:
Eine intelligente Maschine für die Entsorgung von Kunststoff- und Metallabfällen ist ein System, das Kunststoffabfälle (Flaschen) und Metalldosen zum Recycling annimmt und im Gegenzug Pints in der Brieftasche an den Betreiber ausgibt, der den Abfall recycelt. Der Rücknahmeautomat ist mit einem Näherungssensor ausgestattet, um zwischen verschiedenen Flaschenarten zu unterscheiden, und die Punkte werden gesammelt, wenn der Benutzer den Code auf der Website eingibt. Diese Erfindung bezieht sich allgemein auf die Abfallwirtschaft und das Recycling von Kunststoff- und Metallabfällen (Flaschen) in die Umgebung. Das Vermüllen von Plastikmüll in der Umwelt und die geringere Bereitschaft, das Plastik zu recyceln, stellt ein anhaltendes Problem für die Umwelt und alle Lebewesen dar.
ARBEITEN:
Ein Rücknahmeautomat ist ein Gerät, das gebrauchte Getränkebehälter annimmt und Geld an den Benutzer zurückgibt (die Umkehrung des typischen Verkaufszyklus). Die Maschinen sind an Orten beliebt, die zwingende Recyclinggesetze oder Containerpfandgesetze haben.
Die Grundoperationen umfassen Schritte, bei denen der Recycler die leere Flasche/Dose in die Aufnahmeöffnung stellt; Das horizontale Zuführsystem ermöglicht dem Benutzer, Behälter einzeln einzuführen. Anschließend wird die Flasche/Dose mit Hilfe von kapazitiven und induktiven Näherungssensoren automatisch abgetastet. Wenn der Sensorwert des induktiven Sensors 1 ist, ist das Objekt plastisch und wenn der Sensorwert des induktiven Sensors 0 und der kapazitive Sensorwert 1 ist, ist das Objekt plastisch.
Was das Belohnungssystem betrifft, verteilt RVM wertvolle Token wie Münzen oder Coupons, wenn Getränkebehälter recycelt werden. Die Coupons werden dann zum Einlösen von Geschenken am Schalter verwendet. Aufgrund des Umweltbewusstseins und des Ziels, den Papierverbrauch zu reduzieren, wird der Coupondruck jedoch nicht sehr beliebt. In unserem vorgeschlagenen System erscheint also bei der Erkennung des Kunststoffs ein verschlüsselter Code auf dem LCD-Bildschirm. Dann muss der Benutzer den auf dem Automaten vorhandenen ODER-Code scannen, um zur Website zu navigieren, um seine Punkte einzulösen, indem er den erhaltenen Code auf dem LCD-Bildschirm eingibt.
Es gibt eine Datenbank für den Benutzer, der ein Konto auf der Website des umgekehrten Plastikautomaten hat. Es ist obligatorisch, ein Konto zu haben, um sich auf der Website anzumelden, um die Punkte für die Entsorgung von Kunststoff einzulösen.
Die Maschine hat eine weitere Funktion, wenn die Maschine voll ist, werden die Müllsammler oder Recycling-Anbieter benachrichtigt und mit Hilfe einer Anwendung benachrichtigt. Der Füllstand der Maschine wird mit Ultraschallsensor und NodeMCU überwacht, wenn die Maschine voll ist, werden die Kollektoren informiert und der genaue Standort der Maschine wird mit Hilfe des globalen Positionierungssystems gesendet.
Code
- Abfalltrennung
- Überwachung des Mülleimers
AbfalltrennungC/C++
#include //#include "Arduino.h"//#include "Button.h"#include LiquidCrystal lcd(1,2,4,5,6,7);const int knapp =3;int ButtonState =0; // aktueller Zustand des Buttonint oldButtonState =0;const int ledPin1 =10; const int ledPin2 =11; const int Summen1 =12; const int Summen2 =13; const int plasticsensor=A0;int metalsensor=A1;int metalsensor_M=A2;Servo myservo;Servo myservo_M;int pos =90;int pos_M =360;void setup() { pinMode(knapp, INPUT); digitalWrite (knapp, LOW); lcd.begin(16,2);lcd.clear(); myservo.attach(9); myservo_M.attach(8); pinMode (Kunststoffsensor, INPUT_PULLUP); pinMode (Metallsensor, INPUT_PULLUP); pinMode (Metallsensor_M, INPUT_PULLUP); pinMode (ledPin1, AUSGANG); pinMode (ledPin2, AUSGANG); pinMode (buzz1, AUSGANG); pinMode (buzz2, AUSGANG); Serial.begin (9600);} Void Schleife () { lcd.setCursor (0,0); lcd.print("METALL EINSETZEN"); lcd.setCursor(0,1); lcd.print("RECHTE SEITE"); Verzögerung (6000); lcd.clear(); int sensor_read =digitalRead (Kunststoffsensor); Serial.println ("Kunststoffsensor"); Serial.println (sensor_read); // Verzögerung (10); int sensor_read_m=digitalRead (Metallsensor); // Plastikbehälter Serial.println ( "Metallsensor1"); Serial.println (sensor_read_m); // Verzögerung (10); int sensor_read_mm=digitalRead(metalsensor_M); Serial.println (sensor_read_mm); // Verzögerung (10); if((sensor_read==1)&&(sensor_read_m!=1)){ for (pos =90; pos <=240; pos +=1) {// geht von 0 Grad auf 180 Grad // in Schritten von 1 Grad myservo.write(pos); // dem Servo sagen, dass es zur Position in der Variablen 'pos' gehen soll //delay (5); digitalWrite (ledPin1, HIGH); digitalWrite (buzz1, HIGH); // wartet 15 ms, bis das Servo die Position erreicht hat} // Verzögerung (5000); for (pos =240; pos>=90; pos -=1) {// geht von 0 Grad auf 180 Grad // in Schritten von 1 Grad myservo.write(pos); // Verzögerung (5); } } else { // geht von 180 Grad auf 0 Grad myservo.write(pos); digitalWrite (ledPin1, LOW); digitalWrite (buzz1, LOW); } if((sensor_read_mm==1)&&(sensor_read==0)){ for (pos_M =360; pos_M>=50; pos_M -=1) {// geht von 0 Grad auf 180 Grad // in Schritten von 1 Grad myservo_M.write(pos_M); // Verzögerung (5); digitalWrite (ledPin2, HIGH); digitalWrite (buzz2, HIGH); } // Servo sagen, dass es in der Variablen 'pos' zur Position gehen soll // Verzögerung (5000); for (pos_M =50; pos_M <=360; pos_M +=1) {// geht von 180 Grad auf 0 Grad myservo_M.write(pos_M); // dem Servo sagen, dass es in der Variablen 'pos' in die Position gehen soll //delay (5); // wartet 15 ms, bis das Servo die Position erreicht hat}} else{myservo_M.write (pos_M); digitalWrite (ledPin2, LOW); digitalWrite (buzz2, LOW); } }
Überwachung des MülleimersC/C++
#include "ThingSpeak.h"#include #include #include #include #define BLYNK_PRINT Seriell #define TRIGGER2 5#define ECHO2 4WiFi client;statisch const int RXPin =4, TXPin =5; // GPIO 4 =D2 (tx von GPS verbinden) und GPIO 5 =D1 (Rx von GPSstatic verbinden const uint32_t GPSBaud =9600; // wenn die Baudrate 9600 in Ihrem Fall nicht funktioniert hat, verwenden Sie 4800unsigned long myChannelField =1067056; / / Channel IDconst int ChannelField =1; // Welcher Kanal soll dataconst char schreiben * myWriteAPIKey ="FMV95MD2A1J7Y8SP"; // Ihr schreibt ATinyGPSPlus gps; // Das TinyGPS++ objectWidgetMap myMap(V0); // V0 für den virtuellen Pin von Map WidgetSoftwareSerial ss (RXPin, TXPin); // Die serielle Verbindung zum GPS-GerätBlynkTimer-Timer;// Sie sollten Auth Token im Blynk App.char erhalten auth[] ="YVvgHBx9fIM1-yR_2XrGXXkKdIuEmrYL";// Ihre WLAN-Zugangsdaten.// Passwort festlegen to "" for open networks.char ssid[] ="diksha";char pass[] ="diksha19";unsigned int move_index =1;void setup() { Serial.begin (115200); ss.begin (GPSBaud); Blynk.begin (auth, ssid, pass); // Timer.setInterval (5000L, checkGPS); pinMode (TRIGGER2, OUTPUT); pinMode (ECHO2, INPUT); pinMode (BUILTIN_LED, OUTPUT); WiFi.mode (WIFI_STA); ThingSpeak. begin (client);}/*void checkGPS () { if (gps.charsProcessed () <10) { Serial.println (F ("Kein GPS erkannt:Verkabelung überprüfen")); }}*/void loop () { if (WiFi.status () ! =WL_CONNECTED) { Serial.print ( "Versuch, eine Verbindung mit der SSID herzustellen:"); Serial.println (ssid); while (WiFi.status() !=WL_CONNECTED) { WiFi.begin(ssid, pass); Serial.print("."); Verzögerung (100); } Serial.println("\nVerbunden."); } while (ss.available()> 0) { // Sketch zeigt jedes Mal Informationen an, wenn ein neuer Satz korrekt codiert wird. if (gps.encode (ss.read ())) Serial.println ( "GPS verbunden"); // displayInfo (); { if (gps.location.isValid()) { float latitude =(gps.location.lat()); //Speichern des Lat. und Lon. Float Länge =(gps.location.lng()); Serial.print("LAT:"); Serial.println (Breitengrad, 6); // Float auf x Dezimalstellen Serial.print ("LONG:"); Serial.println (Längengrad, 6); ThingSpeak.setField(3, Breitengrad); ThingSpeak.setField(4, Längengrad); ThingSpeak.writeFields(myChannelField, myWriteAPIKey); Blynk.virtualWrite(V1, String(Breitengrad, 6)); Blynk.virtualWrite(V2, String(Länge, 6)); myMap.location(move_index, latitude, longitude, "GPS_Location"); } } } // lange Dauer1, Distanz1; lange Dauer2, Distanz2; digitalWrite (TRIGGER2, NIEDRIG); VerzögerungMikrosekunden(2); digitalWrite (TRIGGER2, HIGH); VerzögerungMikrosekunden(10); digitalWrite (TRIGGER2, NIEDRIG); Dauer2 =pulseIn(ECHO2, HIGH); Distanz2 =(Dauer2/2) / 29,1; if (distanz2 <=5) { Blynk.notify ("Bitte!! leeren Sie den Mülleimer");} Serial.println ("2 Ultraschall-Zentimeter:"); Serial.println (Abstand2); Blynk.virtualWrite(V6, Abstand2); ThingSpeak.writeField(myChannelField, ChannelField, distance2, myWriteAPIKey); Verzögerung (100); Blynk.run(); timer.run();}
Schaltpläne