INHOUDSOPGAWE:

SmartBin: 4 stappe
SmartBin: 4 stappe

Video: SmartBin: 4 stappe

Video: SmartBin: 4 stappe
Video: Необычный 4 тактный двигатель - БЕЗ КЛАПАНОВ гильза вращается Что за зверь такой ??? 2024, November
Anonim
Image
Image

Die hoofdoel van hierdie projek is om 'n elektroniese toestel te skep wat ten minste een Raspberry Pi gebruik. Die span bestaan uit 5 toekomstige meganiese ingenieurs en een outomatiseringsingenieur. Ons projek bestaan uit die maak van 'n asblik wat outomaties oop en toemaak, veroorsaak deur 'n voetbeweging onder die bewegingsdetektor in die middel aan die voorkant van die asblik. 'N Wifi USB -stick word gebruik om data na 'n webwerf te stuur. Hierdie asblik word 'The SmartBin' genoem. Die humoristiese video hierbo stel ons innoverende SmartBin bekend.

Om hierdie projek en hierdie merkwaardige SmartBin uit te voer, was verskeie instrumente nodig:

  • 'N Meter
  • Sterk gom
  • 'N Plakband
  • 'N Houtsaag
  • 'N Skroewedraaier
  • 'N Boormasjien
  • 'N Klem
  • N mes

Stap 1: SmartBin -toerusting

SmartBin -toerusting
SmartBin -toerusting
SmartBin -toerusting
SmartBin -toerusting

Die SmartBin bestaan uit groen, oranje en rooi LED -ligte wat op 'n armatuur aan die linkerkant van die bak geplaas word, wat aandui hoe gevul dit is. Hierdie ligte sal duidelik sigbaar wees en sal die gebruiker waarsku wanneer dit nodig is om die asblik te vervang. Die programmeertaal wat gebruik word, is Python. Die gemete vulvlak van die asblik word na die volgende webwerf gestuur:

Hier is die elemente wat gebruik is, maar u kan maklik 'n alternatiewe oplossing vind:

  • 1 Bakkie (asbak vir "swaai omslag")
  • 1 Servomotor om die as oop te maak
  • 1 Framboos Pi 2
  • 2 kragtoevoer (5V selfoonlaaier en 6V kragtoevoer) om die Raspberry Pi en die servomotor te voorsien
  • 1 Ultrasone sensor om die vulvlak van die asblik te meet
  • Sommige LED's om die vulvlak te vertoon (4 groen, 2 oranje en 1 rooi)
  • 1 Ultrasoniese bewegingsdetektor om 'n beweging op te spoor
  • 1 16 GB SD-kaart
  • Elektriese weerstande (10.000 ohm, 2000 ohm en 1000 ohm)
  • 1 WiFi -usb -stick om draadlose oordrag na die webwerf moontlik te maak.
  • 1 Broodbord en 'n paar framboos kabels

Die geskatte vervaardigingsprys is 80 €.

Stap 2: Vervaardiging van die framboosdoos en die LED -balk

Vervaardiging van die framboosdoos en die LED -staaf
Vervaardiging van die framboosdoos en die LED -staaf
Vervaardiging van die framboosdoos en die LED -staaf
Vervaardiging van die framboosdoos en die LED -staaf
Vervaardiging van die framboosdoos en die LED -staaf
Vervaardiging van die framboosdoos en die LED -staaf

Gebruik 'n houtsaag om die framboosbak te vervaardig. Maak elke kant van die boks vas met klinknaels om dit skoon te laat lyk. Soos die naam aandui, bevat die boks nie net die Raspberry Pi nie, maar ook die bewegingsensor wat u onderaan sal plaas. Sodra die boks gebou is, verf dit in dieselfde kleur as die asblik. 3D -druktegnologie kan gebruik word om hierdie boks te skep.

Vir die vervaardiging van die LED -balk, gebruik 'n elektriese kanaal waarin u gate boor sodat die LED -ligte geïnstalleer kan word. Die LED -balk moet ook geverf word. As alles gereed is, installeer die LED's in die kanaal en maak die elektriese verbinding. Let op die nommer van elke LED -kabel met kleeflint. Dit sal u help om elke LED tydens die bedrading te identifiseer.

Heg laastens die boks en die LED -balk aan die voorkant van u asblik.

Stap 3: Die deksel deel

Die deksel deel
Die deksel deel
Die deksel deel
Die deksel deel

Met betrekking tot die deksel van die bak, is die eerste stap om die servomotor aan die deksel te plak. 'N Uitbreiding van die hefboom moet vooraf gemaak word. Die hefboom raak 'n stop wat voorheen met die hand gemaak is. Maak 'n skroefdoos aan die deksel vas en maak 'n gaatjie daarin om die ultrasoniese sensor in die regte posisie te hou. Maak seker dat u die kabels korrek op die deksel met band vasmaak.

Stap 4: Sagteware -onderdeel en data -verkryging

Sagteware -onderdele en dataverkryging
Sagteware -onderdele en dataverkryging
Sagteware -onderdele en dataverkryging
Sagteware -onderdele en dataverkryging
Sagteware -onderdele en dataverkryging
Sagteware -onderdele en dataverkryging

Wat die sagtewaregedeelte betref, het ons die python -programmeertaal gebruik. Die program word gestoor op die SD-kaart wat deur die Raspberry Pi bestuur sal word wanneer dit aangeskakel word. Die bedradingskema is hierbo beskikbaar. Die Gpio -penne -beeld is beskikbaar vir al die framboosoorte op die onderstaande skakel:

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

Dit is moontlik om 'n ultrasoniese sensor te gebruik om die bewegingsdetektor te vervang; u hoef net 'n 'if -lus' in die kode te skep.

Soos hierbo genoem, word die data rakende die vlak waarop die asblik gevul word, oorgedra na 'n webwerf wat op wix.com geskep is. Op hierdie webwerf kan u verskillende oortjies vind wat spanlede, hardeware- en sagtewareaanbiedings bymekaarmaak … Die interessante oortjie is eintlik die blad 'Databasis' wat die inligting rakende die hoeveelheid asblik regstreeks uit die SmartBin versamel en 'n grafiek met die data skep. Die grafiek toon die evolusie van die vulvlak. Dit is moontlik om data van die webwerf af te sien of af te laai. Die onderstaande skakel is die webwerf wat ons gebruik het en sal u wys hoe u met python op Google -blaaie kan lees en skryf:

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

Oor die 'outorun-gedeelte' van die kode, skryf in die terminale: sudo nano/etc/xdg/lxsession/LXDE-pi/autostart

Skryf dan aan die einde van die skrif wat pas oopgemaak is, hierdie twee kode lyne: python /home/pi/main.py & python /home/pi/csvcontrol.py &

Om die aurorun te stoor, druk: C trl + O Druk dan: Enter Dan, druk: C trl + X

Skryf as laaste kode reël: sudo herlaai

U kan ook die aanhangsel aflaai, die volledige python -kode wat vir die projek gebruik is. Beide kodes word gelyktydig uitgevoer!

Hier is die main.py -kode:

voer RPi. GPIO in as GPIO invoer datatyd invoer tyd invoer csv

GPIO.setmode (GPIO. BCM)

GPIO.setwarnings (Onwaar)

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.setwarnings (Onwaar)

GPIO.output (5, onwaar)

GPIO.output (6, Onwaar) GPIO.output (13, Onwaar) GPIO.output (19, Onwaar) GPIO.output (20, Onwaar) GPIO.output (21, Onwaar) GPIO.output (26, Onwaar)

GPIO.output (Trig, Onwaar)

timeset = time.time ()

afstand = 100 geheue = 0 tyd. slaap (2) pwm.start (12,5)

terwyl dit waar is:

timetac = time.time () as 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) as timetac-timeset> 15 of memory> 0.4: if memory> 0.4: pwm. ChangeDutyCycle (2.5) time.sleep (1) for x in range (0, 1): # GPIO.output (Trig, Waar) time.sleep (0.01) GPIO.output (Trig, Onwaar)

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

terwyl 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 = rond ((60 afstand)*5/6, 1) met oop ('capteur.csv', 'w') as csvfile: capteurwriter = csv.writer (csvfile) time_str = datetime.datetime.strftime (datetime.datetime.now (), '%Y-%m-%d%H:%M:%S') druk ('Time: {0} Quantitee: {1}'. format (time_str, dis)) capteurwriter. writerow ([time_str, dis]) memory = -0.1 as afstand <52.5: GPIO.output (5, True) anders: GPIO.output (5, Onwaar) as afstand <45: GPIO.output (6, True) anders: GPIO.output (6, Onwaar) as afstand <37.5: GPIO.output (13, True) anders: GPIO.output (13, Onwaar) as afstand <30: GPIO.output (19, True) anders: GPIO.output (19, Onwaar) as afstand <22.5: GPIO.output (20, True) anders: GPIO.output (20, Onwaar) as afstand <15: GPIO.output (21, True) anders: GPIO.output (21, Onwaar) as afstand <7.5: GPIO.output (26, True) anders: GPIO.output (26, Onwaar)

Hier is die csvcontrol.py -kode. Moenie vergeet om die gemaakte ".json" -lêer in dieselfde gids van die main.py. Die ".json" lêer word geskep met Google API. 'N Kiekie is op die foto's beskikbaar.

import datetimeimport time import csv import gspread

vanaf oauth2client.service_account invoer ServiceAccountCredentials

van tyd af invoer slaap invoer terugvoer

timec2 = 'lol'

terwyl True: time.sleep (5) loc = ('capteur.csv') met open (loc) as csvfile: readCSV = csv.reader (csvfile, delimiter = ',') vir ry in readCSV: print (ry [0]) timec = ry [0] druk (ry [1]) afstand = ry [1] afstand = vlot (str (afstand)) as timec2! = timec: timec2 = timec print ('Tyd: {0} Quantitee: { 1} '. -Formaat (tyd, afstand))

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

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

Aanbeveel: