Inhoudsopgave:

SmartBin: 4 stappen
SmartBin: 4 stappen

Video: SmartBin: 4 stappen

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

Het belangrijkste doel van dit project is om een elektronisch apparaat te maken dat ten minste één Raspberry Pi gebruikt. Het team bestaat uit 5 toekomstige werktuigbouwkundigen en een automatiseringsingenieur. Ons project bestaat uit het maken van een prullenbak die automatisch opent en sluit door een voetbeweging onder de bewegingsdetector in het midden aan de voorkant van de prullenbak. Een Wifi USB-stick wordt gebruikt om gegevens naar een website te sturen. Deze bak heet "De SmartBin". De humoristische video hierboven introduceert onze innovatieve SmartBin.

Om dit project en deze opmerkelijke SmartBin uit te voeren, waren verschillende tools nodig:

  • Een meter
  • Sterke lijm
  • Een plakband
  • Een houtzaag
  • Een schroevendraaier
  • Een boormachine
  • een klem
  • Een mes

Stap 1: SmartBin-apparatuur

SmartBin-apparatuur
SmartBin-apparatuur
SmartBin-apparatuur
SmartBin-apparatuur

De SmartBin bestaat uit groene, oranje en rode LED-lampjes die op een armatuur aan de linkerkant van de bak zijn geplaatst om aan te geven hoe vol deze is. Deze lampjes zijn duidelijk zichtbaar en waarschuwen de gebruiker wanneer het nodig is de vuilniszak te vervangen. De gebruikte programmeertaal is Python. Het gemeten vulniveau van de bak wordt doorgegeven aan de volgende website:

Hier zijn de elementen die zijn gebruikt, maar u kunt gemakkelijk een alternatieve oplossing vinden:

  • 1 bak (bak "schommeldeksel")
  • 1 servomotor om de bak te openen
  • 1 Framboos Pi 2
  • 2 voedingen (5V mobiele telefoon oplader en 6V voeding) om de Raspberry Pi en de servomotor te voeden
  • 1 Ultrasone sensor om het vulniveau van de bak te meten
  • Enkele LED's om het vulniveau weer te geven (4 groen, 2 oranje en 1 rood)
  • 1 Ultrasone bewegingsdetector om een beweging te detecteren
  • 1 16Gb SD-kaart
  • Elektrische weerstanden (10.000 Ohm, 2000 Ohm en 1000 Ohm)
  • 1 WiFi-usb-stick om draadloze verzending naar de website mogelijk te maken.
  • 1 Breadboard en enkele Raspberry-kabels

De geschatte fabricageprijs is € 80.

Stap 2: Fabricage van de Raspberry Box en de LED Bar

Fabricage van de Raspberry Box en de LED Bar
Fabricage van de Raspberry Box en de LED Bar
Fabricage van de Raspberry Box en de LED Bar
Fabricage van de Raspberry Box en de LED Bar
Fabricage van de Raspberry Box en de LED Bar
Fabricage van de Raspberry Box en de LED Bar

Gebruik een houtzaag om de Raspberry-doos te maken. Bevestig elke kant van de doos met klinknagels om het er schoon uit te laten zien. Zoals de naam al doet vermoeden, bevat deze doos niet alleen de Raspberry Pi, maar ook de bewegingssensor die je onderaan plaatst. Zodra de doos is gebouwd, schildert u deze in dezelfde kleur als de prullenbak. 3D-printtechnologie zou kunnen worden gebruikt om deze doos te maken.

Gebruik voor de fabricage van de LED-bar een elektrische leiding waarin u gaten boort om de LED-verlichting te kunnen installeren. Ook de LED bar moet geverfd worden. Als alles klaar is, installeert u de LED's in het kanaal en maakt u de elektrische aansluiting. Besteed aandacht aan het correct nummeren van elke LED-kabel met plakband. Het zal u helpen om elke LED te identificeren tijdens de bedrading.

Bevestig ten slotte de doos en de LED-balk aan de voorkant van uw bak.

Stap 3: Het dekseldeel

Het Dekseldeel
Het Dekseldeel
Het Dekseldeel
Het Dekseldeel

Wat betreft het deksel van de bak, de eerste stap is om de servomotor op het deksel te lijmen. Een verlenging van de hefboomwerking moet vooraf worden gemaakt. De hendel zal een aanslag raken die eerder met de hand is gemaakt. Bevestig een schroefdoosje aan het deksel en maak er een gat in om de ultrasone sensor in de juiste positie te houden. Zorg ervoor dat u de kabels correct bevestigt op het deksel met tape.

Stap 4: Softwareonderdeel en data-acquisitie

Software onderdeel en data-acquisitie
Software onderdeel en data-acquisitie
Software onderdeel en data-acquisitie
Software onderdeel en data-acquisitie
Software onderdeel en data-acquisitie
Software onderdeel en data-acquisitie

Wat het softwaregedeelte betreft, hebben we de programmeertaal Python gebruikt. Het programma wordt opgeslagen op de SD-kaart die door de Raspberry Pi wordt uitgevoerd wanneer deze wordt aangezet. Het bedradingsschema is hierboven beschikbaar. De afbeelding van Gpio-pinnen is beschikbaar voor alle frambozensoorten op de onderstaande link:

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

Het is mogelijk om een ultrasone sensor te gebruiken om de bewegingsdetector te vervangen, u hoeft alleen een "if-lus" in de code te maken.

Zoals hierboven vermeld, worden de gegevens met betrekking tot het niveau waarop de bak is gevuld, verzonden naar een website die is gemaakt op wix.com. Op deze website kun je verschillende tabbladen vinden die teamleden verzamelen, hardware- en softwarepresentatie, … Het interessante tabblad is eigenlijk het tabblad "Database" dat de informatie over de hoeveelheid afval rechtstreeks uit de SmartBin verzamelt en een grafiek maakt met de gegevens. De grafiek geeft de evolutie van het niveau van de vulling weer. Het is mogelijk om gegevens van de website in te zien of te downloaden. De onderstaande link is de website die we hebben gebruikt en laat je zien hoe je met python op google sheets kunt lezen en schrijven:

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

Over het "autorun-gedeelte" van de code, schrijf in de terminal: sudo nano /etc/xdg/lxsession/LXDE-pi/autostart

Schrijf vervolgens aan het einde van het zojuist geopende script deze twee coderegels: python /home/pi/main.py & python /home/pi/csvcontrol.py &

Om de aurorun op te slaan, drukt u op: C trl + O Druk vervolgens op: Enter Druk vervolgens op: C trl + X

Schrijf als laatste coderegel: sudo reboot

U kunt ook de bijlage downloaden, de volledige python-code die voor het project is gebruikt. Beide codes worden tegelijkertijd uitgevoerd!

Hier is de main.py-code:

importeer RPi. GPIO als GPIOimporteer datumtijd importeertijd importeer csv

GPIO.setmode(GPIO. BCM)

GPIO.setwaarschuwingen (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

Echo = 24

GPIO.setup (Trig, GPIO. OUT)

GPIO.setup (Echo, GPIO. IN)

GPIO.setwaarschuwingen (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)

tijdset = tijd.tijd()

afstand=100 geheugen=0 tijd.slaap(2) pwm.start(12.5)

terwijl waar:

timetac = time.time() if GPIO.input(capteurP) en 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) for x in range(0, 1): # GPIO.output(Trig, True) time.sleep(0.01) GPIO.output (Trig, False)

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

terwijl 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) met 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) indien afstand < 37,5: GPIO.output(13, True) else: GPIO.output(13, False) indien afstand < 30: GPIO.output(19, True) else: GPIO.output(19, False) als afstand < 22,5: GPIO.output (20, True) else: GPIO.output (20, False) als afstand < 15: GPIO.output (21, True) else: GPIO.output (21, False) als afstand < 7,5: GPIO.output (26, True) anders: GPIO.output (26, False)

Hier is de csvcontrol.py-code. Vergeet niet om het gemaakte ".json"-bestand in dezelfde map van de main.py te plakken. Het ".json"-bestand is gemaakt met Google API. Een screenshot is beschikbaar in de foto's.

import datetimeimport time import csv import gspread

van oauth2client.service_account import ServiceAccountCredentials

van tijd import slaap import traceback

timec2='lol'

while True: time.sleep(5) loc=('capteur.csv') met open(loc) als csvfile: readCSV = csv.reader(csvfile, delimiter=', ') voor rij in readCSV: print(row[0]) timec=rij[0] print(rij[1]) distance=rij[1] distance=float(str(distance)) if timec2!=timec: timec2=timec print('Time:{0} Quantitee:{ 1}'.format(timec, afstand))

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

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

Aanbevolen: