Innehållsförteckning:

SmartBin: 4 steg
SmartBin: 4 steg

Video: SmartBin: 4 steg

Video: SmartBin: 4 steg
Video: KUKA.SmartBinPicking Webinar 2024, November
Anonim
Image
Image

Huvudsyftet med detta projekt är att skapa en elektronisk enhet som använder minst en Raspberry Pi. Teamet består av 5 framtida mekaniska ingenjörer och en automationsingenjör. Vårt projekt består av att göra en papperskorg som öppnas och stängs automatiskt utlöst av en fotrörelse under rörelsedetektorn i mitten på papperskorgen. Ett Wifi USB -minne används för att skicka data till en webbplats. Detta fack kallas "The SmartBin". Den humoristiska videon ovan introducerar vår innovativa SmartBin.

För att genomföra detta projekt och denna anmärkningsvärda SmartBin var flera verktyg nödvändiga:

  • En meter
  • Kraftigt lim
  • En tejp
  • En vedsåg
  • En skruvdragare
  • En borrmaskin
  • En klämma
  • En kniv

Steg 1: SmartBin -utrustning

SmartBin -utrustning
SmartBin -utrustning
SmartBin -utrustning
SmartBin -utrustning

SmartBin består av gröna, orange och röda LED -lampor som är placerade på en armatur på vänster sida av papperskorgen som visar hur fylld den är. Dessa lampor kommer att vara tydligt synliga och varnar användaren när det är nödvändigt att byta papperskorgen. Programmeringsspråket som används är Python. Fackets uppmätta fyllningsnivå överförs till följande webbplats:

Här är de element som har använts men du kan enkelt hitta en alternativ lösning:

  • 1 behållare ("svängskydd")
  • 1 Servomotor för att öppna behållaren
  • 1 Raspberry Pi 2
  • 2 nätaggregat (5V mobiltelefonladdare och 6V strömförsörjning) för att leverera Raspberry Pi och servomotorn
  • 1 Ultraljudssensor för att mäta behållarens fyllningsnivå
  • Några lysdioder för att visa fyllningsnivån (4 gröna, 2 orange och 1 röda)
  • 1 Ultraljudsrörelsedetektor för att upptäcka en rörelse
  • 1 16 GB SD-kort
  • Elektriska motstånd (10.000 ohm, 2000 ohm och 1000 ohm)
  • 1 WiFi usb -stick för att möjliggöra trådlös överföring till webbplatsen.
  • 1 brödbräda och några hallonkablar

Det uppskattade tillverkningspriset är 80 €.

Steg 2: Tillverkning av hallonboxen och LED -fältet

Tillverkning av hallonboxen och LED -stången
Tillverkning av hallonboxen och LED -stången
Tillverkning av hallonboxen och LED -stången
Tillverkning av hallonboxen och LED -stången
Tillverkning av hallonboxen och LED -stången
Tillverkning av hallonboxen och LED -stången

Använd en träsåg för att tillverka hallonlådan. Fäst varje sida av lådan med nitar så att den ser ren ut. Som namnet antyder innehåller den här rutan inte bara Raspberry Pi utan också rörelsessensorn som du kommer att placera längst ner. När lådan är byggd målar du den i samma färg som papperskorgen. 3D -utskriftsteknik kan användas för att skapa denna låda.

För tillverkning av LED -stången, använd en elektrisk kanal där du borrar hål för att låta LED -lamporna installeras. LED -stången måste också målas. När allt är klart installerar du lysdioderna i kanalen och gör den elektriska anslutningen. Var uppmärksam på att nummerera varje LED -kabel korrekt med tejp. Det hjälper dig att identifiera varje lysdiod under kabeldragning.

Slutligen fäst lådan och LED -fältet på framsidan av din papperskorg.

Steg 3: Lockdelen

Locket del
Locket del
Locket del
Locket del

När det gäller locket på behållaren är det första steget att limma servomotorn på locket. En förlängning av hävstången måste göras tidigare. Spaken kommer att träffa ett stopp som tidigare var handgjort. Fäst en skruvlåda på locket och gör ett hål i den för att hålla ultraljudssensorn i rätt läge. Se till att du fäster kablarna korrekt på locket med tejp.

Steg 4: Programvaru- och datainsamling

Programvara och datainsamling
Programvara och datainsamling
Programvara och datainsamling
Programvara och datainsamling
Programvara och datainsamling
Programvara och datainsamling

När det gäller programvarudelen använde vi programmeringsspråket python. Programmet sparas på SD-kortet som kommer att köras av Raspberry Pi när det slås på. Kabelschemat är tillgängligt ovan. Gpio pins -bilden är tillgänglig för alla hallontyper på länken nedan:

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

Det är möjligt att använda en ultraljudssensor för att ersätta rörelsedetektorn, du behöver bara skapa en "if loop" i koden.

Som nämnts ovan överförs uppgifterna om nivån till vilken papperskorgen fylls till en webbplats skapad på wix.com. På den här webbplatsen kan du hitta olika flikar som samlar teammedlemmar, hårdvaru- och programvarupresentation, … Den intressanta fliken är faktiskt "Databas" -fliken som samlar information om mängden papperskorgen direkt från SmartBin och skapar en graf med data. Diagrammet visar utvecklingen av fyllningens nivå. Det är möjligt att se eller ladda ner data från webbplatsen. Länken nedan är webbplatsen vi använde och visar hur du läser och skriver på Google -ark med python:

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

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

Skriv sedan dessa två kodrader i slutet av skriptet som just öppnat: python /home/pi/main.py & python /home/pi/csvcontrol.py &

För att spara aurorun, tryck på: C trl + O Tryck sedan: Enter Enter, tryck på: C trl + X

Skriv som sista kodrad: sudo reboot

Du kan också ladda ner bilagan som är hela pythonkoden som används för projektet. Båda koder körs samtidigt!

Här är main.py -koden:

importera RPi. GPIO som GPIOimportera datetime importtid importera csv

GPIO.setmode (GPIO. BCM)

GPIO.setwarnings (falskt)

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

Eko = 24

GPIO.setup (Trig, GPIO. OUT)

GPIO.setup (Echo, GPIO. IN)

GPIO.setwarnings (falskt)

GPIO.output (5, falskt)

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 ()

avstånd = 100 minne = 0 tid. sömn (2) pwm.start (12,5)

medan det är sant:

timetac = time.time () om GPIO.input (capteurP) och 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)

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

medan 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 = rund ((60 distans)*5/6, 1) med öppen ('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, 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) om avstånd <22.5: GPIO.output (20, True) else: GPIO.output (20, False) if distance <15: GPIO.output (21, True) else: GPIO.output (21, False) om avstånd <7,5: GPIO.output (26, True) annars: GPIO.output (26, Falskt)

Här är csvcontrol.py -koden. Glöm inte att klistra in den skapade ".json" -filen i samma katalog för main.py. ". Json" -filen skapas med google API. En skärmdump finns på bilderna.

import datetimeimport time import csv import gspread

från oauth2client.service_account import ServiceAccountCredentials

från tid importera sömn import spår tillbaka

timec2 = 'lol'

medan True: time.sleep (5) loc = ('capteur.csv') med open (loc) som csvfile: readCSV = csv.reader (csvfile, delimiter = ',') för rad i readCSV: print (rad [0]) timec = rad [0] print (rad [1]) distans = rad [1] distans = float (str (distans)) om timec2! = timec: timec2 = timec print ('Tid: {0} Quantitee: { 1} '. -Format (tid, avstånd))

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

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

Rekommenderad: