Inhoudsopgave:
- Stap 1: SmartBin-apparatuur
- Stap 2: Fabricage van de Raspberry Box en de LED Bar
- Stap 3: Het dekseldeel
- Stap 4: Softwareonderdeel en data-acquisitie
Video: SmartBin: 4 stappen
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:17
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
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
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
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
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:
Game Design in Flick in 5 stappen: 5 stappen
Game-ontwerp in Flick in 5 stappen: Flick is een heel eenvoudige manier om een game te maken, vooral zoiets als een puzzel, visuele roman of avonturengame
Gezichtsdetectie op Raspberry Pi 4B in 3 stappen: 3 stappen
Gezichtsdetectie op Raspberry Pi 4B in 3 stappen: In deze Instructable gaan we gezichtsdetectie uitvoeren op Raspberry Pi 4 met Shunya O/S met behulp van de Shunyaface-bibliotheek. Shunyaface is een bibliotheek voor gezichtsherkenning/detectie. Het project streeft naar de hoogste detectie- en herkenningssnelheid met
Doe-het-zelfspiegel in eenvoudige stappen (met LED-stripverlichting): 4 stappen
DIY make-upspiegel in eenvoudige stappen (met behulp van LED-stripverlichting): In dit bericht heb ik een doe-het-zelfspiegel gemaakt met behulp van de LED-strips. Het is echt gaaf en je moet ze ook proberen
Hoe plug-ins in WordPress te installeren in 3 stappen: 3 stappen
Hoe plug-ins in WordPress te installeren in 3 stappen: In deze tutorial laat ik je de essentiële stappen zien om de WordPress-plug-in op je website te installeren. In principe kunt u plug-ins op twee verschillende manieren installeren. De eerste methode is via ftp of via cpanel. Maar ik zal het niet opsommen, want het is echt compl
SmartBin: 8 stappen
SmartBin: Este é um projeto para um sistema inteligente de coletas, no qual os caminh&es de lixo recebem dados das lixeiras, identificando a quantidade de lixo presente em cada uma delas, e uma rota de coleta traçs, com base na informa