Sadržaj:

SmartBin: 4 koraka
SmartBin: 4 koraka

Video: SmartBin: 4 koraka

Video: SmartBin: 4 koraka
Video: Делай хоть каждый день! НАПОЛЕОН ЗА 5 МИНУТ! Ленивый ТОРТ из ЛАВАША... 2024, Novembar
Anonim
Image
Image

Glavna svrha ovog projekta je stvaranje elektroničkog uređaja koji koristi barem jedan Raspberry Pi. Tim čini 5 budućih mašinskih inženjera i jedan inženjer automatizacije. Naš projekt sastoji se u izradi kante za smeće koja se otvara i zatvara automatski pokrenuta pokretom stopala ispod detektora pokreta koji se nalazi u sredini na prednjoj strani kante za smeće. Wifi USB stick koristi se za slanje podataka na web stranicu. Ova kanta se zove "SmartBin". Gornji humoristični video predstavlja naš inovativni SmartBin.

Za izvođenje ovog projekta i ovog izuzetnog SmartBina bilo je potrebno nekoliko alata:

  • Metar
  • Snažno ljepilo
  • Ljepljiva traka
  • Testera za drvo
  • Odvijač
  • Mašina za bušenje
  • Stezaljka
  • Nož

Korak 1: SmartBin oprema

SmartBin oprema
SmartBin oprema
SmartBin oprema
SmartBin oprema

SmartBin se sastoji od zelenih, narandžastih i crvenih LED svjetala koja su postavljena na svjetiljku s lijeve strane kante koja pokazuje koliko je napunjena. Ova svjetla će biti jasno vidljiva i upozorit će korisnika kada je potrebno zamijeniti vreću za smeće. Programski jezik koji se koristi je Python. Izmjereni nivo napunjenosti kante prenosi se na sljedeću web stranicu:

Evo elemenata koji su korišteni, ali lako možete pronaći alternativno rješenje:

  • 1 korpa (kanta sa "okretnim poklopcem")
  • 1 Servomotor za otvaranje kante
  • 1 Malina Pi 2
  • 2 napajanja (5V punjač za mobilne telefone i 6V napajanje) za napajanje Raspberry Pi i servomotora
  • 1 Ultrazvučni senzor za mjerenje napunjenosti kante
  • Neke LED diode za prikaz nivoa punjenja (4 zelene, 2 narandžaste i 1 crvena)
  • 1 Ultrazvučni detektor pokreta za detekciju pokreta
  • 1 SD kartica od 16 GB
  • Električni otpornici (10.000 Ohma, 2000 Ohma i 1000 Ohma)
  • 1 WiFi USB štapić za bežični prijenos na web stranicu.
  • 1 Breadboard i neki kablovi od maline

Procijenjena proizvodna cijena je 80 €.

Korak 2: Proizvodnja kutije za maline i LED trake

Proizvodnja kutije od malina i LED trake
Proizvodnja kutije od malina i LED trake
Proizvodnja kutije od malina i LED trake
Proizvodnja kutije od malina i LED trake
Proizvodnja kutije od malina i LED trake
Proizvodnja kutije od malina i LED trake

Za proizvodnju kutije od malina upotrijebite pilu za drvo. Pričvrstite svaku stranu kutije zakovicama kako bi izgledala čisto. Kao što mu ime govori, ovaj okvir neće sadržavati samo Raspberry Pi, već će uključivati i senzor pokreta koji ćete postaviti na dno. Nakon što je kutija izgrađena, obojite je u istu boju kao kantu. Za izradu ove kutije mogla bi se koristiti tehnologija 3D štampanja.

Za izradu LED šipki upotrijebite električni kanal u kojem izbušite rupe kako biste omogućili ugradnju LED svjetala. LED traka se takođe mora ofarbati. Kad je sve spremno, instalirajte LED diode u kanal i napravite električnu vezu. Obratite pažnju na pravilno numeriranje svakog LED kabela ljepljivom trakom. Pomoći će vam pri prepoznavanju svake LED diode tijekom ožičenja.

Na kraju, pričvrstite kutiju i LED traku na prednju stranu kante.

Korak 3: Poklopac

Poklopac
Poklopac
Poklopac
Poklopac

Što se tiče poklopca kante, prvi korak je lijepljenje servomotora na poklopac. Proširenje poluge mora biti prethodno napravljeno. Poluga će udariti u graničnik koji je prethodno bio ručno izrađen. Pričvrstite kutiju s vijcima na poklopac i napravite rupu u njemu kako bi ultrazvučni senzor držao u pravom položaju. Provjerite jeste li pravilno pričvrstili kabele na poklopac trakom.

Korak 4: Softverski dio i akvizicija podataka

Softverski dio i akvizicija podataka
Softverski dio i akvizicija podataka
Softverski dio i akvizicija podataka
Softverski dio i akvizicija podataka
Softverski dio i akvizicija podataka
Softverski dio i akvizicija podataka

Što se tiče programskog dijela, koristili smo programski jezik python. Program se sprema na SD karticu koju će Raspberry Pi pokrenuti kada je uključena. Shema ožičenja dostupna je gore. Slika Gpio pinova dostupna je za sve vrste malina na donjoj poveznici:

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

Moguće je koristiti ultrazvučni senzor za zamjenu detektora pokreta, samo trebate stvoriti "if petlju" u kodu.

Kao što je gore spomenuto, podaci o razini napunjenosti kante prenose se na web stranicu napravljenu na wix.com. Na ovoj web stranici možete pronaći različite kartice koje okupljaju članove tima, hardversku i softversku prezentaciju … Zanimljiva kartica je zapravo kartica "Baza podataka" koja prikuplja podatke o količini smeća izravno iz SmartBina i stvara grafikon s podacima. Grafikon prikazuje evoluciju nivoa punjenja. Moguće je vidjeti ili preuzeti podatke sa web stranice. Donja veza je web stranica koju smo koristili i pokazat će vam kako čitati i pisati na google tablicama s pythonom:

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

Što se tiče "autorun dijela" koda, upišite u terminal: sudo nano/etc/xdg/lxsession/LXDE-pi/autostart

Zatim, na kraju skripte koja se upravo otvorila, napišite ove dvije linije koda: python /home/pi/main.py & python /home/pi/csvcontrol.py &

Da biste sačuvali aurorunu, pritisnite: C trl + O Zatim pritisnite: Enter Zatim pritisnite: C trl + X

Zapišite kao posljednju liniju koda: sudo reboot

Takođe ste u mogućnosti da preuzmete privitak koji predstavlja potpuni python kôd koji se koristi za projekat. Oba koda se izvode istovremeno!

Evo koda main.py:

uvoz RPi. GPIO kao GPIOimport datum -vreme uvoz vreme uvoza csv

Način rada 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)

Trig = 23

Odjek = 24

GPIO.setup (Trig, GPIO. OUT)

GPIO.setup (Echo, GPIO. IN)

GPIO.setwarnings (False)

GPIO.output (5, Netač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 ()

udaljenost = 100 memorija = 0 vrijeme.spavanje (2) pwm.start (12.5)

dok je True:

timetac = time.time () ako je GPIO.input (capteurP) i timetac-timeset0.9: pwm. ChangeDutyCycle (2.5) time.sleep (0.2) memorija = -0.5 pwm. ChangeDutyCycle (0) timetac = time.time () time.sleep (0.5) ako je timetac-timeset> 15 ili memorija> 0.4: ako je memorija> 0.4: pwm. ChangeDutyCycle (2.5) time.sleep (1) za x u rasponu (0, 1): # GPIO.output (Trig, Tačno) time.sleep (0.01) GPIO.output (Trig, False)

dok je GPIO.input (Echo) == 0 i timetac-timeset <17: timetac = time.time () debutImpulsion = time.time ()

dok je GPIO.input (Echo) == 1:

finImpulsion = time.time () ako je timetac-timeset <17: distance1 = round ((finImpulsion-debutImpulsion) * 340 * 100 /2, 1) distance2 = distance if (distance1-distance2) <1 and (distance2-distance1) 0.4: dis = okruglo ((60 udaljenosti)*5/6, 1) sa otvorenim ('capteur.csv', 'w') kao csv datoteka: capteurwriter = csv.writer (csvfile) time_str = datetime.datetime.strftime (datetime.datetime.now (), '%Y-%m-%d%H:%M:%S') print ('Vrijeme: {0} Količine: {1}'. format (time_str, dis)) capteurwriter. writerow ([time_str, dis]) memorija = -0,1 ako je udaljenost <52,5: GPIO.izlaz (5, Tačno) drugo: GPIO.izlaz (5, Netačno) ako je udaljenost <45: GPIO.izlaz (6, Tačno) drugo: GPIO.output (6, False) ako je udaljenost <37,5: GPIO.output (13, True) inače: GPIO.output (13, False) if distance <30: GPIO.output (19, True) else: GPIO.output (19, Netačno) ako je udaljenost <22,5: GPIO.izlaz (20, Tačno) drugo: GPIO.izlaz (20, Netačno) ako je udaljenost <15: GPIO.izlaz (21, Tačno) inače: GPIO.izlaz (21, Netačno) ako je udaljenost <7,5: GPIO.izlaz (26, Tačno) drugo: GPIO.izlaz (26, Netačno)

Evo koda csvcontrol.py. Ne zaboravite zalijepiti kreiranu ".json" datoteku u isti direktorij main.py. Datoteka ".json" kreirana je s google API -jem. Snimak ekrana je dostupan na slikama.

import datetimeimport time import csv import gspread

iz oauth2client.service_account unesite ServiceAccountCredentials

from time import sleep import traceback

timec2 = 'lol'

dok je True: time.sleep (5) loc = ('capteur.csv') sa otvorenim (loc) kao csvfile: readCSV = csv.reader (csvfile, delimiter = ',') za red u readCSV: print (red [0]) timec = row [0] print (row [1]) distance = row [1] distance = float (str (distance)) if timec2! = timec: timec2 = timec print ('Vrijeme: {0} Količina: { 1} '. Format (timec, udaljenost))

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

vjerodajnice = ServiceAccountCredentials.from_json_keyfile_name ('client_secret.json', SCOPES) gc = gspread.authorize (vjerodajnice) wks = gc.open ("grafikon"). sheet1 wks = wks.append_row ((timec, udaljenost))

Preporučuje se: