Kazalo:

SmartBin: 4 koraki
SmartBin: 4 koraki

Video: SmartBin: 4 koraki

Video: SmartBin: 4 koraki
Video: Памяти Андрея Зяблых. Холангиокарцинома 4 стадии 2024, November
Anonim
Image
Image

Glavni namen tega projekta je ustvariti elektronsko napravo, ki uporablja vsaj eno Raspberry Pi. Ekipo sestavlja 5 bodočih strojnih inženirjev in en inženir avtomatizacije. Naš projekt je sestavljen iz izdelave koša za smeti, ki se samodejno odpre in zapre, ki ga sproži gibanje stopala pod detektorjem gibanja, ki se nahaja v sredini na sprednji strani koša za smeti. USB -ključek Wifi se uporablja za pošiljanje podatkov na spletno mesto. Ta koš se imenuje "SmartBin". Zgornji humoristični videoposnetek predstavlja naš inovativni SmartBin.

Za izvedbo tega projekta in tega izjemnega SmartBina je bilo potrebno več orodij:

  • Meter
  • Močno lepilo
  • Lepilni trak
  • Žaga za les
  • Izvijač
  • Vrtalni stroj
  • Objemka
  • Nož

1. korak: Oprema SmartBin

Oprema SmartBin
Oprema SmartBin
Oprema SmartBin
Oprema SmartBin

SmartBin je sestavljen iz zelenih, oranžnih in rdečih LED luči, ki so nameščene na svetilki na levi strani koša, kar kaže, kako napolnjen je. Te luči bodo jasno vidne in bodo uporabnika opozorile, kdaj je treba zamenjati vrečko za smeti. Uporabljeni programski jezik je Python. Izmerjena raven napolnjenosti koša se posreduje na naslednjo spletno stran:

Tu so elementi, ki so bili uporabljeni, vendar lahko preprosto najdete alternativno rešitev:

  • 1 zabojnik (zaboj za "pokrov z zamahom")
  • 1 Servomotor za odpiranje koša
  • 1 malina Pi 2
  • 2 napajalnika (5V polnilec za mobilne telefone in 6V napajalnik) za napajanje Raspberry Pi in servomotorja
  • 1 Ultrazvočni senzor za merjenje stopnje napolnjenosti koša
  • Nekaj LED za prikaz nivoja polnjenja (4 zelene, 2 oranžne in 1 rdeča)
  • 1 Ultrazvočni detektor gibanja za zaznavanje gibanja
  • 1 16 GB pomnilniška kartica SD
  • Električni upori (10.000 ohmov, 2000 ohmov in 1000 ohmov)
  • 1 WiFi USB ključek za brezžični prenos na spletno stran.
  • 1 Ohišje in nekaj malinovih kablov

Ocenjena cena izdelave je 80 €.

2. korak: izdelava škatle za maline in LED palice

Izdelava škatle za maline in LED palice
Izdelava škatle za maline in LED palice
Izdelava škatle za maline in LED palice
Izdelava škatle za maline in LED palice
Izdelava škatle za maline in LED palice
Izdelava škatle za maline in LED palice

Za izdelavo škatle za maline uporabite žago za les. Pritrdite vsako stran škatle z zakovicami, da bo videti čista. Kot že ime pove, bo to polje vsebovalo ne samo Raspberry Pi, ampak bo vključevalo tudi senzor gibanja, ki ga boste postavili na dno. Ko je škatla zgrajena, jo pobarvajte v isto barvo kot koš. Za izdelavo te škatle bi lahko uporabili tehnologijo 3D tiskanja.

Za izdelavo LED palice uporabite električni kanal, v katerem izvrtate luknje, da omogočite vgradnjo LED luči. LED bar je treba tudi pobarvati. Ko je vse pripravljeno, namestite LED v kanal in izvedite električno povezavo. Bodite pozorni na pravilno oštevilčenje vsakega LED kabla z lepilnim trakom. Pomagal vam bo pri ožičenju vsake LED.

Na koncu pritrdite škatlo in LED palico na sprednji del koša.

Korak 3: Del pokrova

Del pokrova
Del pokrova
Del pokrova
Del pokrova

Kar zadeva pokrov koša, je prvi korak lepljenje servomotorja na pokrov. Predhodno je treba razširiti vzvod. Ročica bo udarila v omejevalnik, ki je bil prej ročno izdelan. Na pokrov pritrdite vijačno škatlo in v njej naredite luknjo, da ultrazvočni senzor držite v pravem položaju. Prepričajte se, da ste s pokrovom pravilno pritrdili kable.

4. korak: Del programske opreme in pridobivanje podatkov

Del programske opreme in pridobivanje podatkov
Del programske opreme in pridobivanje podatkov
Del programske opreme in pridobivanje podatkov
Del programske opreme in pridobivanje podatkov
Del programske opreme in pridobivanje podatkov
Del programske opreme in pridobivanje podatkov

Kar zadeva programsko opremo, smo uporabili programski jezik python. Program se shrani na kartico SD, ki jo bo ob vklopu zagnala Raspberry Pi. Shema ožičenja je na voljo zgoraj. Slika zatičev Gpio je na voljo za vse vrste malin na spodnji povezavi:

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

Za zamenjavo detektorja gibanja je mogoče uporabiti ultrazvočni senzor, v kodi morate samo ustvariti "zanko if".

Kot je navedeno zgoraj, se podatki o ravni napolnjenosti koša prenašajo na spletno stran, ustvarjeno na wix.com. Na tem spletnem mestu lahko najdete različne zavihke, na katerih so zbrani člani skupine, predstavitev strojne in programske opreme … Zanimiv zavihek je pravzaprav zavihek "Baza podatkov", ki zbira podatke o količini smeti neposredno iz SmartBina in ustvari graf s podatki. Graf prikazuje razvoj stopnje polnjenja. Podatke je mogoče videti ali prenesti s spletnega mesta. Spodnja povezava je spletno mesto, ki smo ga uporabili in vam bo pokazalo, kako brati in pisati na Googlovih listih s pythonom:

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

V zvezi z "samodejnim delom" kode vpišite v terminal: sudo nano/etc/xdg/lxsession/LXDE-pi/autostart

Nato na koncu pravkar odprtega skripta napišite te dve kodni vrstici: python /home/pi/main.py & python /home/pi/csvcontrol.py &

Če želite shraniti aurorun, pritisnite: C trl + O Nato pritisnite: Enter Nato pritisnite: C trl + X

Zapiši kot zadnjo vrstico kode: sudo reboot

Prav tako lahko prenesete prilogo, ki je celotna koda python, uporabljena za projekt. Obe kodi se izvajata hkrati!

Tu je koda main.py:

uvoz RPi. GPIO kot GPIOimport datum -čas uvoz čas uvoza csv

Način GPIO.set (GPIO. BCM)

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

Sprožilec = 23

Odmev = 24

GPIO.setup (Trig, GPIO. OUT)

GPIO.setup (Echo, GPIO. IN)

GPIO.setwarnings (False)

GPIO.output (5, napačno)

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

razdalja = 100 pomnilnika = 0 čas. spanje (2) pwm.start (12.5)

medtem ko je res:

timetac = time.time (), če GPIO.input (capteurP) in timetac-timeset0,9: pwm. ChangeDutyCycle (2,5) time.sleep (0,2) pomnilnik = -0,5 pwm. ChangeDutyCycle (0) timetac = time.time () time.sleep (0,5), če timetac-timeset> 15 ali memory> 0,4: if memory> 0,4: pwm. ChangeDutyCycle (2,5) time.sleep (1) za x v območju (0, 1): # GPIO.output (Trig, True) time.sleep (0,01) GPIO.output (Trig, False)

medtem ko je GPIO.input (Echo) == 0 in timetac-timeset <17: timetac = time.time () debutImpulsion = time.time ()

medtem ko je GPIO.input (Echo) == 1:

finImpulsion = time.time () če je timetac-timeset <17: distance1 = round ((finImpulsion-debutImpulsion) * 340 * 100 /2, 1) distance2 = distance if (distance1-distance2) <1 and (distance2-distance1) 0.4: dis = okrogel ((60 razdalj)*5/6, 1) z odprtim ('capteur.csv', 'w') kot csv datoteka: capteurwriter = csv.writer (csvfile) time_str = datetime.datetime.strftime (datetime.datetime.now (), '%Y-%m-%d%H:%M:%S') print ('Čas: {0} Količine: {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), če je razdalja <37,5: GPIO.output (13, True) drugače: GPIO.output (13, False), če je razdalja <30: GPIO.output (19, True) else: GPIO.output (19, False), če je razdalja <22,5: GPIO.output (20, True) else: GPIO.output (20, False) if distance <15: GPIO.output (21, True) else: GPIO.output (21, False) če je razdalja <7,5: izhod GPIO (26, True) drugače: izhod GPIO (26, napačno)

Tukaj je koda csvcontrol.py. Ne pozabite prilepiti ustvarjene datoteke ».json« v isti imenik main.py. Datoteka ".json" je ustvarjena z google API -jem. Posnetek zaslona je na voljo na slikah.

import datetimeimport time import csv import gspread

iz oauth2client.service_account uvoz ServiceAccountCredentials

from time import sleep import import traceback

timec2 = 'lol'

medtem ko je True: time.sleep (5) loc = ('capteur.csv') z odprto (loc) kot datoteko csv: readCSV = csv.reader (csvfile, ločilo = ',') za vrstico v readCSV: print (vrstica [0]) timec = vrstica [0] tiskanje (vrstica [1]) razdalja = vrstica [1] razdalja = float (str (razdalja)), če je časc2! = timec: timec2 = timec print ('Čas: {0} Količina: { 1} '. Format (timec, razdalja))

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

poverilnice = ServiceAccountCredentials.from_json_keyfile_name ('client_secret.json', SCOPES) gc = gspread.authorize (poverilnice) wks = gc.open ("graf"). sheet1 wks = wks.append_row ((timec, razdalja))

Priporočena: