Sadržaj:

SmartBin: 4 koraka
SmartBin: 4 koraka

Video: SmartBin: 4 koraka

Video: SmartBin: 4 koraka
Video: 4 koraka do savršenih plodova paradajza | Agromedia Saveti 2024, Studeni
Anonim
Image
Image

Glavna svrha ovog projekta je stvaranje elektroničkog uređaja koji koristi barem jedan Raspberry Pi. Tim čini 5 budućih strojarskih 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
  • Pila za drvo
  • Odvijač
  • Stroj za bušenje
  • Stezaljka
  • Nož

Korak 1: SmartBin oprema

SmartBin oprema
SmartBin oprema
SmartBin oprema
SmartBin oprema

SmartBin se sastoji od zelenih, narančastih i crvenih LED svjetala koja su postavljena na svjetiljku s lijeve strane kante koja pokazuje koliko je napunjena. Ta svjetla bit će jasno vidljiva i upozorit će korisnika kada je potrebno zamijeniti vreću za smeće. Programski jezik koji se koristi je Python. Izmjerena razina 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 kanta (kanta za "ljuljanje poklopca")
  • 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 razine napunjenosti (4 zelene, 2 naranč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 malinovi kabeli

Procijenjena proizvodna cijena je 80 €.

Korak 2: 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
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 ispisa.

Za izradu LED šipke upotrijebite električni kanal u kojem izbušite rupe kako biste omogućili ugradnju LED svjetiljki. LED traka također mora biti obojana. Kad je sve spremno, ugradite LED diode u kanal i napravite električni priključak. Obratite pozornost 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 zalijepiti servomotor na poklopac. Proširenje poluge mora biti prethodno učinjeno. 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. Pazite da kabele pričvrstite trakom na poklopac.

Korak 4: Softverski dio i prikupljanje 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 kad 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 izrađenu na wix.com. Na ovoj web stranici možete pronaći različite kartice koje okupljaju članove tima, prezentaciju hardvera i softvera,… 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 razvoj razine punjenja. Moguće je vidjeti ili preuzeti podatke s 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 &

Za spremanje aurorune pritisnite: C trl + O Zatim pritisnite: Enter Zatim pritisnite: C trl + X

Napiši kao zadnji kodni redak: sudo reboot

Također možete preuzeti privitak koji je cijeli python kôd koji se koristi za projekt. Oba koda se izvode istovremeno!

Evo koda main.py:

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

Način rada GPIO.set (GPIO. BCM)

GPIO.setwarnings (False)

kapitan P = 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, netoč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 istina:

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) if timetac-timeset> 15 ili memory> 0.4: if memory> 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) s 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čina: {1}'. format (time_str, dis)) pisac zapisivač. 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) 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: Izlaz GPIO. (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)

Ovdje je kôd csvcontrol.py. Ne zaboravite zalijepiti stvorenu ".json" datoteku u isti direktorij main.py. Datoteka ".json" izrađena je s google API -jem. Snimka zaslona dostupna je na slikama.

import datetimeimport time import csv import gspread

iz oauth2client.service_account uvoz ServiceAccountCredentials

from time import sleep import import traceback

timec2 = 'lol'

dok je True: time.sleep (5) loc = ('capteur.csv') s otvorenim (loc) kao csv datoteka: readCSV = csv.reader (csvfile, delimiter = ',') za red u readCSV: print (redak [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čeni: