Indholdsfortegnelse:

SmartBin: 4 trin
SmartBin: 4 trin

Video: SmartBin: 4 trin

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

Hovedformålet med dette projekt er at oprette en elektronisk enhed, der bruger mindst en Raspberry Pi. Teamet består af 5 fremtidige mekaniske ingeniører og en automatiseringsingeniør. Vores projekt består i at lave en skraldespand, der åbner og lukker automatisk udløst af en fodbevægelse under bevægelsesdetektoren placeret i midten på skraldespandens forside. Et Wifi USB -stik bruges til at sende data til et websted. Denne skraldespand kaldes "The SmartBin". Den humoristiske video ovenfor introducerer vores innovative SmartBin.

For at gennemføre dette projekt og denne bemærkelsesværdige SmartBin var flere værktøjer nødvendige:

  • En meter
  • Kraftig lim
  • Et tape
  • En træ sav
  • En skruetrækker
  • En boremaskine
  • En klemme
  • En kniv

Trin 1: SmartBin -udstyr

SmartBin -udstyr
SmartBin -udstyr
SmartBin -udstyr
SmartBin -udstyr

SmartBin består af grønne, orange og røde LED -lamper, der er placeret på et armatur i venstre side af skraldespanden, som angiver, hvor fyldt det er. Disse lys vil være tydeligt synlige og vil advare brugeren, når det er nødvendigt at udskifte skraldespanden. Det anvendte programmeringssprog er Python. Skålens målte fyldningsniveau overføres til følgende websted:

Her er de elementer, der er blevet brugt, men du kan nemt finde en alternativ løsning:

  • 1 kasse (bakke til "svingdæksel")
  • 1 Servomotor til at åbne beholderen
  • 1 Raspberry Pi 2
  • 2 strømforsyninger (5V mobiltelefon oplader og 6V strømforsyning) til levering af Raspberry Pi og servomotoren
  • 1 Ultralydssensor til måling af beholderens påfyldningsniveau
  • Nogle lysdioder viser påfyldningsniveauet (4 grønne, 2 orange og 1 røde)
  • 1 Ultralyds bevægelsessensor til at registrere en bevægelse
  • 1 16 GB SD-kort
  • Elektriske modstande (10.000 ohm, 2000 ohm og 1000 ohm)
  • 1 WiFi usb -stick for at muliggøre trådløs transmission til webstedet.
  • 1 brødbræt og nogle hindbærkabler

Den anslåede fremstillingspris er 80 €.

Trin 2: Fremstilling af hindbærkassen og LED -stangen

Fremstilling af hindbærkassen og LED -stangen
Fremstilling af hindbærkassen og LED -stangen
Fremstilling af hindbærkassen og LED -stangen
Fremstilling af hindbærkassen og LED -stangen
Fremstilling af hindbærkassen og LED -stangen
Fremstilling af hindbærkassen og LED -stangen

Brug træsav til fremstilling af hindbærkassen. Fastgør hver side af kassen med nitter for at få den til at se ren ud. Som navnet antyder, indeholder denne boks ikke kun Raspberry Pi, men indeholder også den bevægelsessensor, som du placerer i bunden. Når kassen er bygget, skal du male den i samme farve som skraldespanden. 3D -printteknologi kan bruges til at oprette denne boks.

Til fremstilling af LED -stangen skal du bruge en elektrisk kanal, hvor du borer huller, så LED -lamperne kan installeres. LED -stangen skal også males. Når alt er klar, skal du installere lysdioderne i kanalen og lave den elektriske forbindelse. Vær opmærksom på at nummerere hver LED -kabler korrekt med tape. Det hjælper dig med at identificere hver LED under ledninger.

Til sidst skal du vedhæfte boksen og LED -stangen på forsiden af din skraldespand.

Trin 3: Lågdelen

Lågdelen
Lågdelen
Lågdelen
Lågdelen

Vedrørende låget på beholderen er det første trin at lime servomotoren til låget. En forlængelse af gearingen skal tidligere foretages. Håndtaget rammer et stop, som tidligere var håndlavet. Fastgør en skruekasse til låget og lav et hul i den for at holde ultralydssensoren i den rigtige position. Sørg for korrekt tilslutning af kabler på låget med tape.

Trin 4: Softwaredel og dataindsamling

Softwaredel og dataindsamling
Softwaredel og dataindsamling
Softwaredel og dataindsamling
Softwaredel og dataindsamling
Softwaredel og dataindsamling
Softwaredel og dataindsamling

Med hensyn til softwaredelen brugte vi programmeringssproget python. Programmet gemmes på SD-kortet, som vil blive kørt af Raspberry Pi, når det tændes. Ledningsskemaet er tilgængeligt ovenfor. Gpio pins -billedet er tilgængeligt for alle hindbærtyper på nedenstående link:

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

Det er muligt at bruge en ultralydssensor til at udskifte bevægelsesdetektoren, du skal bare oprette en "if loop" i koden.

Som nævnt ovenfor, overføres dataene om det niveau, som beholderen er fyldt til, til et websted, der er oprettet på wix.com. På dette websted kan du finde forskellige faner, der samler teammedlemmer, hardware- og softwarepræsentation, … Den interessante fane er faktisk fanen "Database", der indsamler information om mængden af skraldespand direkte fra SmartBin og opretter en graf med dataene. Grafen viser udviklingen af fyldets niveau. Det er muligt at se eller downloade data fra webstedet. Linket herunder er det websted, vi brugte, og viser dig, hvordan du læser og skriver på Google -ark med python:

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

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

Skriv derefter disse to kodelinjer i slutningen af scriptet, der lige har åbnet: python /home/pi/main.py & python /home/pi/csvcontrol.py &

For at gemme aurorun skal du trykke på: C trl + O Derefter trykke på: Enter derefter trykke på: C trl + X

Skriv som sidste kode linje: sudo reboot

Du kan også downloade vedhæftet fil, som er den fulde python -kode, der bruges til projektet. Begge koder køres på samme tid!

Her er main.py -koden:

importer RPi. GPIO som GPIOimport datetime importtid import csv

GPIO.setmode (GPIO. BCM)

GPIO.setwarnings (falsk)

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 (ekko, GPIO. IN)

GPIO.setwarnings (falsk)

GPIO.output (5, falsk)

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, Falsk)

timeset = time.time ()

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

mens det er sandt:

timetac = time.time () hvis GPIO.input (capteurP) og timetac-timeset0.9: pwm. ChangeDutyCycle (2.5) time.sleep (0.2) memory = -0.5 pwm. ChangeDutyCycle (0) timetac = time.time () time.sleep (0,5) hvis timetac-timeset> 15 eller hukommelse> 0,4: hvis memory> 0,4: pwm. ChangeDutyCycle (2,5) time.sleep (1) for x i område (0, 1): # GPIO.output (Trig, True) time.sleep (0,01) GPIO.output (Trig, Falsk)

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 og (distance2-distance1) 0,4: dis = rund ((60-distance)*5/6, 1) med åben ('capteur.csv', 'w') som 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, Falsk) hvis afstand <37,5: GPIO.output (13, True) else: GPIO.output (13, False) if distance <30: GPIO.output (19, True) else: GPIO.output (19, Falsk) hvis afstand <22.5: GPIO.output (20, True) else: GPIO.output (20, False) if distance <15: GPIO.output (21, True) else: GPIO.output (21, False) hvis afstand <7,5: GPIO.output (26, True) ellers: GPIO.output (26, Falsk)

Her er csvcontrol.py -koden. Glem ikke at indsætte den oprettede ".json" -fil i den samme mappe i main.py. ". Json" -filen oprettes med google API. Et skærmbillede er tilgængeligt på billederne.

import datetimeimport time import csv import gspread

fra oauth2client.service_account import ServiceAccountCredentials

fra tid importere søvn import spor tilbage

timec2 = 'lol'

mens True: time.sleep (5) loc = ('capteur.csv') med open (loc) som csvfile: readCSV = csv.reader (csvfile, delimiter = ',') for række i readCSV: print (række [0]) timec = række [0] print (række [1]) distance = række [1] distance = float (str (distance)) if timec2! = timec: timec2 = timec print ('Time: {0} Quantitee: { 1} '. Format (tid, afstand))

SCOPES = ['https://www.googleapis.com/auth/spreadsheets', "https://www.googleapis.com/auth/drive.file", "https://www.googleapis.com/auth/ kø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, distance))

Anbefalede: