Inhaltsverzeichnis:

SmartBin: 4 Schritte
SmartBin: 4 Schritte

Video: SmartBin: 4 Schritte

Video: SmartBin: 4 Schritte
Video: Sophisticated path planning for collision-free bin picking with Smart Bin Picking Software 2024, November
Anonim
Image
Image

Der Hauptzweck dieses Projekts besteht darin, ein elektronisches Gerät zu erstellen, das mindestens einen Raspberry Pi verwendet. Das Team besteht aus 5 angehenden Maschinenbauingenieuren und einem Automatisierungsingenieur. Unser Projekt besteht darin, einen Mülleimer zu bauen, der sich automatisch öffnet und schließt, ausgelöst durch eine Fußbewegung unter dem Bewegungsmelder, der sich in der Mitte auf der Vorderseite des Mülleimers befindet. Ein Wifi-USB-Stick wird verwendet, um Daten auf eine Website zu senden. Dieser Behälter wird "Der SmartBin" genannt. Das humorvolle Video oben stellt unseren innovativen SmartBin vor.

Um dieses Projekt und diesen bemerkenswerten SmartBin durchzuführen, waren mehrere Werkzeuge notwendig:

  • Ein Meter
  • Starker Kleber
  • Ein Klebeband
  • Eine Holzsäge
  • Ein Schraubenzieher
  • Eine Bohrmaschine
  • Eine Klemme
  • Ein Messer

Schritt 1: SmartBin-Ausrüstung

SmartBin-Ausrüstung
SmartBin-Ausrüstung
SmartBin-Ausrüstung
SmartBin-Ausrüstung

Der SmartBin besteht aus grünen, orangen und roten LED-Leuchten, die an einer Halterung auf der linken Seite des Behälters angebracht sind und den Füllstand anzeigen. Diese Lichter sind deutlich sichtbar und warnen den Benutzer, wenn der Müllsack ausgetauscht werden muss. Die verwendete Programmiersprache ist Python. Der gemessene Füllstand des Behälters wird an folgende Website übermittelt:

Hier sind die Elemente, die verwendet wurden, aber Sie können leicht eine alternative Lösung finden:

  • 1 Behälter ("Schwenkdeckel"-Behälter)
  • 1 Servomotor zum Öffnen des Behälters
  • 1 Raspberry Pi 2
  • 2 Netzteile (5V Handyladegerät und 6V Netzteil) zur Versorgung des Raspberry Pi und des Stellmotors
  • 1 Ultraschallsensor zur Messung des Füllstands des Behälters
  • Einige LEDs zur Füllstandsanzeige (4 grün, 2 orange und 1 rot)
  • 1 Ultraschall-Bewegungsmelder zur Erkennung einer Bewegung
  • 1 16 GB SD-Karte
  • Elektrische Widerstände (10.000 Ohm, 2000 Ohm und 1000 Ohm)
  • 1 WLAN-USB-Stick zur drahtlosen Übertragung auf die Website.
  • 1 Steckbrett und einige Raspberry-Kabel

Der geschätzte Herstellungspreis beträgt 80€.

Schritt 2: Herstellung der Raspberry Box und der LED-Leiste

Herstellung der Raspberry Box und der LED Bar
Herstellung der Raspberry Box und der LED Bar
Herstellung der Raspberry Box und der LED Bar
Herstellung der Raspberry Box und der LED Bar
Herstellung der Raspberry Box und der LED Bar
Herstellung der Raspberry Box und der LED Bar

Verwenden Sie zur Herstellung der Himbeerbox eine Holzsäge. Befestige jede Seite der Box mit Nieten, damit sie sauber aussieht. Wie der Name schon sagt, enthält diese Box nicht nur den Raspberry Pi, sondern auch den Bewegungssensor, den Sie unten platzieren. Sobald die Kiste gebaut ist, malen Sie sie in der gleichen Farbe wie die Tonne. 3D-Drucktechnologie könnte verwendet werden, um diese Box zu erstellen.

Verwenden Sie für die Herstellung der LED-Leiste einen Elektrokanal, in den Sie Löcher bohren, damit die LED-Leuchten installiert werden können. Auch die LED-Leiste muss lackiert werden. Wenn alles fertig ist, installieren Sie die LEDs im Kanal und stellen Sie den elektrischen Anschluss her. Achten Sie darauf, jedes LED-Kabel mit Klebeband richtig zu nummerieren. Es hilft Ihnen, jede LED während der Verdrahtung zu identifizieren.

Schließlich befestigen Sie die Box und die LED-Leiste an der Vorderseite Ihres Mülleimers.

Schritt 3: Der Deckelteil

Das Deckelteil
Das Deckelteil
Das Deckelteil
Das Deckelteil

Beim Deckel des Behälters besteht der erste Schritt darin, den Stellmotor auf den Deckel zu kleben. Eine Verlängerung des Hebels muss vorher erfolgen. Der Hebel wird auf einen zuvor handgefertigten Anschlag treffen. Befestigen Sie eine Schraubdose am Deckel und bohren Sie ein Loch hinein, um den Ultraschallsensor in der richtigen Position zu halten. Stellen Sie sicher, dass Sie die Kabel richtig mit Klebeband am Deckel befestigen.

Schritt 4: Softwareteil- und Datenerfassung

Softwareteil- und Datenerfassung
Softwareteil- und Datenerfassung
Softwareteil- und Datenerfassung
Softwareteil- und Datenerfassung
Softwareteil- und Datenerfassung
Softwareteil- und Datenerfassung

Was den Softwareteil angeht, haben wir die Programmiersprache Python verwendet. Das Programm wird auf der SD-Karte gespeichert, die beim Einschalten vom Raspberry Pi ausgeführt wird. Das Verdrahtungsschema ist oben verfügbar. Das Gpio-Pins-Bild ist für alle Himbeertypen unter dem folgenden Link verfügbar:

www.raspberrypi-spy.co.uk/2012/06/simple-g…

Es ist möglich, einen Ultraschallsensor zu verwenden, um den Bewegungsmelder zu ersetzen, Sie müssen nur eine "Wenn-Schleife" im Code erstellen.

Wie oben erwähnt, werden die Daten über den Füllstand des Behälters an eine auf wix.com erstellte Website übermittelt. Auf dieser Website finden Sie verschiedene Registerkarten, die Teammitglieder, Hardware- und Software-Präsentationen sammeln, … Die interessante Registerkarte ist eigentlich die Registerkarte "Datenbank", die die Informationen über die Müllmenge direkt aus dem SmartBin sammelt und eine Grafik mit den Daten erstellt. Die Grafik zeigt die Entwicklung des Füllstands an. Es ist möglich, Daten von der Website einzusehen oder herunterzuladen. Der folgende Link ist die von uns verwendete Website und zeigt Ihnen, wie Sie mit Python auf Google Sheets lesen und schreiben:

www.makeuseof.com/tag/read-write-google-sh…

Zum "Autorun-Teil" des Codes schreiben Sie in das Terminal: sudo nano /etc/xdg/lxsession/LXDE-pi/autostart

Schreiben Sie dann am Ende des gerade geöffneten Skripts diese beiden Codezeilen: python /home/pi/main.py & python /home/pi/csvcontrol.py &

Um den Aurorun zu speichern, drücke: Strg + O Dann drücke: Enter Dann drücke: Strg + X

Als letzte Codezeile schreiben: sudo reboot

Sie können auch den Anhang herunterladen, der den vollständigen Python-Code enthält, der für das Projekt verwendet wird. Beide Codes werden gleichzeitig ausgeführt!

Hier ist der main.py-Code:

import RPi. GPIO als GPIOimport datetime import time import csv

GPIO.setmode(GPIO. BCM)

GPIO.setwarnings(Falsch)

capteurP = 7

Servo = 17

GPIO.setup(Servo, GPIO. OUT)

GPIO.setup(capteurP, GPIO. IN)

pwm=GPIO. PWM(17, 50)

GPIO.setup(5, GPIO. OUT)

GPIO.setup(6, GPIO. OUT) GPIO.setup(13, GPIO. OUT) GPIO.setup(19, GPIO. OUT) GPIO.setup(20, GPIO. OUT) GPIO.setup(21, GPIO. OUT) GPIO.setup(26, GPIO. OUT)

Trigger = 23

Echo = 24

GPIO.setup(Trigger, GPIO. OUT)

GPIO.setup(Echo, GPIO. IN)

GPIO.setwarnings(Falsch)

GPIO.output(5, False)

GPIO.output(6, False) GPIO.output(13, False) GPIO.output(19, False) GPIO.output(20, False) GPIO.output(21, False) GPIO.output(26, False)

GPIO.output (Trigger, False)

timeset = time.time()

Distanz=100 Speicher=0 time.sleep(2) pwm.start(12.5)

während Wahr:

timetac = time.time() if GPIO.input(capteurP) und timetac-timeset0.9: pwm. ChangeDutyCycle(2.5) time.sleep(0.2) memory=-0.5 pwm. ChangeDutyCycle(0) timetac = time.time() time.sleep(0.5) if timetac-timeset>15 or memory>0.4: if memory>0.4: pwm. ChangeDutyCycle(2.5) time.sleep(1) für x im Bereich(0, 1): # GPIO.output(Trig, True) time.sleep(0.01) GPIO.output(Trig, False)

while GPIO.input(Echo)==0 und timetac-timeset<17: timetac = time.time() DebütImpulsion = time.time()

während GPIO.input(Echo)==1:

finImpulsion = time.time() if timetac-timeset<17: distance1 = round((finImpulsion - debütImpulsion) * 340 * 100 / 2, 1) distance2=distanz if (distanz1-distanz2)<1 und (distanz2-distanz1)0.4: dis=round((60-distanz)*5/6, 1) with open('capteur.csv', 'w') als csvfile: capteurwriter= csv.writer(csvfile) time_str= datetime.datetime.strftime(datetime.datetime.now(), '%Y-%m-%d %H:%M:%S') print('Time:{0} Quantitee:{1}'.format(time_str, dis)) capteurwriter. writerow([time_str, dis]) memory=-0.1 if distance < 52.5: GPIO.output(5, True) else: GPIO.output(5, False) if distance < 45: GPIO.output(6, True) else: GPIO.output(6, False) wenn Abstand < 37,5: GPIO.output(13, True) sonst: GPIO.output(13, False) wenn Abstand < 30: GPIO.output(19, True) sonst: GPIO.output(19, False) wenn Abstand < 22,5: GPIO.output(20, True) else: GPIO.output(20, False) wenn Abstand < 15: GPIO.output(21, True) sonst: GPIO.output(21, False) wenn Abstand < 7,5: GPIO.output(26, True) sonst: GPIO.output(26, False)

Hier ist der csvcontrol.py-Code. Vergessen Sie nicht, die erstellte Datei ".json" in das gleiche Verzeichnis wie main.py einzufügen. Die Datei ".json" wird mit der Google-API erstellt. Ein Screenshot ist in den Bildern zu sehen.

import datetimeimport time import csv import gspread

from oauth2client.service_account import ServiceAccountCredentials

ab Zeit Schlaf importieren Traceback importieren

timec2='lol'

while True: time.sleep(5) loc=('capteur.csv') mit open(loc) als csvfile: readCSV = csv.reader(csvfile, delimiter=', ') für Zeile in readCSV: print(row[0]) timec=row[0] print(row[1]) distance=row[1] distance=float(str(distanz)) if timec2!=timec: timec2=timec print('Time:{0} Quantitee:{ 1}'.format (timec, entfernung))

SCOPES = ['https://www.googleapis.com/auth/spreadsheets', "https://www.googleapis.com/auth/drive.file", "https://www.googleapis.com/auth/ Fahrt"]

Credentials = ServiceAccountCredentials.from_json_keyfile_name('client_secret.json', SCOPES) gc = gspread.authorize(credentials) wks= gc.open("graph").sheet1 wks= wks.append_row((timec, distance))

Empfohlen: