Innholdsfortegnelse:

SmartBin: 4 trinn
SmartBin: 4 trinn

Video: SmartBin: 4 trinn

Video: SmartBin: 4 trinn
Video: Концепция умной мусорной станции Smart Bin 2024, November
Anonim
Image
Image

Hovedformålet med dette prosjektet er å lage en elektronisk enhet som bruker minst en Raspberry Pi. Teamet består av 5 fremtidige mekaniske ingeniører og en automatiseringsingeniør. Prosjektet vårt består av å lage en søppelbøtte som åpnes og lukkes automatisk utløst av en fotbevegelse under bevegelsesdetektoren i midten på forsiden av søppelbøtten. En Wifi USB -pinne brukes til å sende data til et nettsted. Denne bingen kalles "The SmartBin". Den humoristiske videoen ovenfor introduserer vår innovative SmartBin.

For å gjennomføre dette prosjektet og denne bemerkelsesverdige SmartBin, var flere verktøy nødvendig:

  • En meter
  • Sterkt lim
  • En tape
  • En tresag
  • En skrutrekker
  • En boremaskin
  • En klemme
  • En kniv

Trinn 1: SmartBin -utstyr

SmartBin -utstyr
SmartBin -utstyr
SmartBin -utstyr
SmartBin -utstyr

SmartBin består av grønne, oransje og røde LED -lys som er plassert på et armatur på venstre side av beholderen som vil indikere hvor fylt den er. Disse lysene vil være godt synlige og varsle brukeren når det er nødvendig å bytte søppelsekken. Programmeringsspråket som brukes er Python. Det målte fyllingsnivået til beholderen overføres til følgende nettsted:

Her er elementene som har blitt brukt, men du kan enkelt finne en alternativ løsning:

  • 1 kasse ("svingdeksel")
  • 1 Servomotor for å åpne beholderen
  • 1 Raspberry Pi 2
  • 2 strømforsyninger (5V mobiltelefon lader og 6V strømforsyning) for å forsyne Raspberry Pi og servomotoren
  • 1 Ultralydsensor for å måle fyllingsnivået på beholderen
  • Noen lysdioder viser fyllingsnivået (4 grønne, 2 oransje og 1 røde)
  • 1 Ultralydbevegelsesdetektor for å oppdage en bevegelse
  • 1 16 GB SD-kort
  • Elektriske motstander (10.000 ohm, 2000 ohm og 1000 ohm)
  • 1 WiFi usb -pinne for å aktivere trådløs overføring til nettstedet.
  • 1 brødbrett og noen bringebærkabler

Den estimerte produksjonsprisen er 80 €.

Trinn 2: Produksjon av bringebærboksen og LED -stangen

Produksjon av bringebærboksen og LED -stangen
Produksjon av bringebærboksen og LED -stangen
Produksjon av bringebærboksen og LED -stangen
Produksjon av bringebærboksen og LED -stangen
Produksjon av bringebærboksen og LED -stangen
Produksjon av bringebærboksen og LED -stangen

Bruk tresag for å produsere bringebærboksen. Fest hver side av esken med nagler for å få den til å se ren ut. Som navnet antyder, inneholder denne boksen ikke bare Raspberry Pi, men vil også inneholde bevegelsessensoren som du vil plassere nederst. Når esken er bygget, må du male den i samme farge som beholderen. 3D -utskriftsteknologi kan brukes til å lage denne boksen.

For fremstilling av LED -stangen, bruk en elektrisk kanal der du borer hull for å la LED -lysene installeres. LED -stangen må også males. Når alt er klart, installerer du lysdiodene i kanalen og gjør den elektriske tilkoblingen. Vær oppmerksom på å nummerere hver LED -kabel med tape. Det vil hjelpe deg med å identifisere hver LED under ledninger.

Fest til slutt esken og LED -stangen foran på beholderen.

Trinn 3: Lokkdelen

Lokkdelen
Lokkdelen
Lokkdelen
Lokkdelen

Når det gjelder lokket på beholderen, er det første trinnet å lime servomotoren til lokket. En forlengelse av innflytelsen må gjøres tidligere. Spaken treffer et stopp som tidligere var håndlaget. Fest en skruekasse til lokket og lag et hull i den for å holde ultralydsensoren i riktig posisjon. Sørg for at du fester kabler korrekt på lokket med tape.

Trinn 4: Programvaredel og datainnsamling

Programvare og datainnsamling
Programvare og datainnsamling
Programvare og datainnsamling
Programvare og datainnsamling
Programvare og datainnsamling
Programvare og datainnsamling

Når det gjelder programvaredelen, brukte vi programmeringsspråket python. Programmet lagres på SD-kortet som vil bli kjørt av Raspberry Pi når det slås på. Ledningsopplegget er tilgjengelig ovenfor. Gpio pins -bildet er tilgjengelig for alle bringebærtypene på lenken nedenfor:

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

Det er mulig å bruke en ultralydsensor til å erstatte bevegelsesdetektoren, du trenger bare å lage en "if loop" i koden.

Som nevnt ovenfor, blir dataene om nivået som beholderen fylles til, overført til et nettsted opprettet på wix.com. På dette nettstedet kan du finne forskjellige faner som samler teammedlemmer, maskinvare- og programvarepresentasjon, … Den interessante kategorien er faktisk "Database" -fanen som samler informasjon om mengden søppel direkte fra SmartBin og lager en graf med dataene. Grafen viser utviklingen av fyllingsnivået. Det er mulig å se eller laste ned data fra nettstedet. Lenken nedenfor er nettstedet vi brukte, og viser deg hvordan du leser og skriver på Google -ark med python:

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

Angående "autorun-delen" av koden, skriver du i terminalen: sudo nano/etc/xdg/lxsession/LXDE-pi/autostart

Skriv deretter disse to kodelinjene på slutten av skriptet som nettopp har åpnet: python /home/pi/main.py & python /home/pi/csvcontrol.py &

For å lagre aurorun, trykk: C trl + O Trykk deretter: Enter Deretter, trykk: C trl + X

Skriv som siste kodelinje: sudo reboot

Du kan også laste ned vedlegget som er hele pythonkoden som ble brukt til prosjektet. Begge kodene kjøres samtidig!

Her er main.py -koden:

importer RPi. GPIO som GPIOimport datetime import time import csv

GPIO.setmode (GPIO. BCM)

GPIO.setwarnings (False)

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)

Trig = 23

Ekko = 24

GPIO.setup (Trig, GPIO. OUT)

GPIO.setup (Echo, GPIO. IN)

GPIO.setwarnings (False)

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 (Trig, False)

timeset = time.time ()

avstand = 100 minne = 0 tid. søvn (2) pwm.start (12,5)

mens det er sant:

timetac = time.time () hvis GPIO.input (capteurP) og timetac-timeset0.9: pwm. ChangeDutyCycle (2.5) time.sleep (0.2) minne = -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) for x in range (0, 1): # GPIO.output (Trig, True) time.sleep (0,01) GPIO.output (Trig, False)

mens GPIO.input (Echo) == 0 og timetac-timeset <17: timetac = time.time () debutImpulsion = time.time ()

mens GPIO.input (Echo) == 1:

finImpulsion = time.time () if timetac-timeset <17: distance1 = round ((finImpulsion-debutImpulsion) * 340 * 100 /2, 1) distance2 = distance if (distance1-distance2) <1 and (distance2-distance1) 0.4: dis = round ((60-distance)*5/6, 1) with open ('capteur.csv', 'w') as 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) if distance <37.5: GPIO.output (13, True) else: GPIO.output (13, False) if distance <30: GPIO.output (19, True) else: GPIO.output (19, Falsk) hvis avstand <22.5: GPIO.output (20, True) else: GPIO.output (20, False) if distance <15: GPIO.output (21, True) else: GPIO.output (21, False) hvis avstand <7,5: GPIO.output (26, True) else: GPIO.output (26, False)

Her er csvcontrol.py -koden. Ikke glem å lime inn den.. Json -filen i den samme katalogen til main.py. ". Json" -filen er opprettet med google API. Et skjermbilde er tilgjengelig på bildene.

import datetimeimport time import csv import gspread

fra oauth2client.service_account import ServiceAccountCredentials

fra tid importere søvn importere spor tilbake

timec2 = 'lol'

while True: time.sleep (5) loc = ('capteur.csv') with open (loc) as csvfile: readCSV = csv.reader (csvfile, delimiter = ',') for rad i readCSV: print (rad [0]) timec = rad [0] print (rad [1]) distanse = rad [1] distanse = float (str (distanse)) hvis timec2! = timec: timec2 = timec print ('Time: {0} Quantitee: { 1} '. -Format (tid, avstand))

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

credentials = ServiceAccountCredentials.fr_json_keyfile_name ('client_secret.json', SCOPES) gc = gspread.authorize (credentials) wks = gc.open ("graf"). sheet1 wks = wks.append_row ((timec, distanse))

Anbefalt: