Cuprins:

SmartBin: 4 pași
SmartBin: 4 pași

Video: SmartBin: 4 pași

Video: SmartBin: 4 pași
Video: Smartbin Remote Monitoring 2024, Noiembrie
Anonim
Image
Image

Scopul principal al acestui proiect este de a crea un dispozitiv electronic care utilizează cel puțin un Raspberry Pi. Echipa este formată din 5 viitori ingineri mecanici și un inginer automatizat. Proiectul nostru constă în realizarea unui coș de gunoi care se deschide și se închide automat declanșat de o mișcare a piciorului sub detectorul de mișcare situat în centru pe partea din față a coșului de gunoi. Un stick USB Wifi este utilizat pentru a trimite date pe un site web. Acest coș se numește „SmartBin”. Videoclipul plin de umor de mai sus prezintă inovatorul nostru SmartBin.

Pentru a realiza acest proiect și acest remarcabil SmartBin, au fost necesare mai multe instrumente:

  • Un metru
  • Adeziv puternic
  • O bandă adezivă
  • Un ferăstrău pentru lemne
  • O șurubelniță
  • O mașină de găurit
  • O clemă
  • Un cuțit

Pasul 1: Echipament SmartBin

Echipamente SmartBin
Echipamente SmartBin
Echipamente SmartBin
Echipamente SmartBin

SmartBin-ul este compus din lumini LED verzi, portocalii și roșii, care sunt plasate pe un dispozitiv din partea stângă a coșului, care va indica cât de umplut este. Aceste lumini vor fi vizibile în mod clar și vor avertiza utilizatorul atunci când este necesar să înlocuiți geanta de gunoi. Limbajul de programare folosit este Python. Nivelul de umplere măsurat al coșului este transmis la următorul site web:

Iată elementele care au fost utilizate, dar puteți găsi cu ușurință o soluție alternativă:

  • 1 coș (coșul "capacul oscilant")
  • 1 Servomotor pentru a deschide coșul
  • 1 Raspberry Pi 2
  • 2 surse de alimentare (încărcător de telefon mobil 5V și sursă de alimentare 6V) pentru alimentarea Raspberry Pi și servomotor
  • 1 Senzor cu ultrasunete pentru a măsura nivelul de umplere al coșului
  • Unele LED-uri pentru a afișa nivelul de umplere (4 verzi, 2 portocalii și 1 roșu)
  • 1 Detector de mișcare cu ultrasunete pentru a detecta o mișcare
  • 1 card SD de 16 GB
  • Rezistoare electrice (10.000 Ohmi, 2000 Ohmi și 1000 Ohmi)
  • 1 stick USB WiFi pentru a permite transmisia wireless către site.
  • 1 Breadboard și câteva cabluri Raspberry

Prețul de fabricație estimat este de 80 €.

Pasul 2: Fabricarea cutiei cu zmeură și a barei LED

Fabricarea Raspberry Box și a barei LED
Fabricarea Raspberry Box și a barei LED
Fabricarea Raspberry Box și a barei LED
Fabricarea Raspberry Box și a barei LED
Fabricarea cutiei cu zmeură și a barei LED
Fabricarea cutiei cu zmeură și a barei LED

Pentru a fabrica cutia cu zmeură, utilizați ferăstrău pentru lemn. Fixați fiecare parte a cutiei cu nituri pentru a face să arate curat. După cum sugerează și numele, această cutie va conține nu numai Raspberry Pi, ci va include și senzorul de mișcare pe care îl veți plasa în partea de jos. Odată ce cutia este construită, vopsiți-o în aceeași culoare cu coșul. Tehnologia de imprimare 3D ar putea fi utilizată pentru a crea această cutie.

Pentru fabricarea barei cu LED-uri, utilizați o conductă electrică în care faceți găuri pentru a permite instalarea luminilor LED. Bara LED trebuie, de asemenea, vopsită. Când totul este gata, instalați LED-urile în conductă și efectuați conexiunea electrică. Acordați atenție numerotării corespunzătoare a fiecărui cablu LED cu bandă adezivă. Vă va ajuta să identificați fiecare LED în timpul cablării.

În cele din urmă, atașați cutia și bara LED la partea din față a coșului de gunoi.

Pasul 3: partea capacului

Partea capacului
Partea capacului
Partea capacului
Partea capacului

În ceea ce privește capacul coșului, primul pas este lipirea servomotorului de capac. O prelungire a pârghiei trebuie făcută anterior. Pârghia va atinge o oprire care a fost realizată anterior manual. Atașați o cutie cu șurub la capac și faceți o gaură în el pentru a menține senzorul cu ultrasunete în poziția corectă. Asigurați-vă că atașați corect cablurile pe capac cu bandă.

Pasul 4: Partea software și achiziția de date

Părți software și achiziție de date
Părți software și achiziție de date
Părți software și achiziție de date
Părți software și achiziție de date
Părți software și achiziție de date
Părți software și achiziție de date

În ceea ce privește partea software, am folosit limbajul de programare python. Programul este salvat în cardul SD, care va fi rulat de Raspberry Pi când este pornit. Schema de cablare este disponibilă mai sus. Imaginea pinilor Gpio este disponibilă pentru toate tipurile de zmeură pe linkul de mai jos:

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

Este posibil să utilizați un senzor cu ultrasunete pentru a înlocui detectorul de mișcare, trebuie doar să creați un cod „if loop” în cod.

După cum sa menționat mai sus, datele referitoare la nivelul la care este umplut coșul sunt transmise către un site web creat pe wix.com. Pe acest site, puteți găsi diferite file care adună membrii echipei, prezentare hardware și software, … fila interesantă este de fapt fila „Baza de date” care colectează informațiile referitoare la cantitatea de gunoi direct de pe SmartBin și creează un grafic cu datele. Graficul afișează evoluția nivelului de umplere. Este posibil să vedeți sau să descărcați date de pe site. Link-ul de mai jos este site-ul web pe care l-am folosit și vă va arăta cum să citiți și să scrieți pe foi Google cu python:

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

În ceea ce privește „partea de execuție automată” a codului, scrieți în terminal: sudo nano / etc / xdg / lxsession / LXDE-pi / autostart

Apoi, la sfârșitul scriptului care tocmai a fost deschis, scrieți aceste două linii de cod: python /home/pi/main.py & python /home/pi/csvcontrol.py &

Pentru a salva aurorun, apăsați: C trl + O Apoi, apăsați: Enter Apoi, apăsați: C trl + X

Scrieți ca ultimă linie de cod: reporniți sudo

De asemenea, puteți descărca atașamentul care este codul complet Python utilizat pentru proiect. Ambele coduri sunt rulate în același timp!

Iată codul main.py:

import RPi. GPIO ca GPIOimport datetime import timp import csv

GPIO.setmode (GPIO. BCM)

GPIO.setwarnings (Fals)

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

Ecoul = 24

GPIO.setup (Trig, GPIO. OUT)

GPIO.setup (Echo, GPIO. IN)

GPIO.setwarnings (Fals)

GPIO.output (5, fals)

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

GPIO.output (Trig, Fals)

timeset = time.time ()

distanță = 100 memorie = 0 timp.sleep (2) pwm.start (12.5)

în timp ce este adevărat:

schedulac = time.time () if GPIO.input (capteurP) și schedulac-timeset0.9: pwm. ChangeDutyCycle (2.5) time.sleep (0.2) memory = -0.5 pwm. ChangeDutyCycle (0) schedulac = time.time () time.sleep (0,5) dacă orar-timp> 15 sau memorie> 0,4: dacă memorie> 0,4: pwm. ChangeDutyCycle (2.5) time.sleep (1) pentru x în intervalul (0, 1): # GPIO.output (Trig, Adevărat) time.sleep (0,01) GPIO.output (Trig, False)

în timp ce GPIO.input (Echo) == 0 și schedulac-timeset <17: schedulac = time.time () debutImpulsion = time.time ()

în timp ce GPIO.input (Echo) == 1:

finImpulsion = time.time () if schedulac-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) with open ('capteur.csv', 'w') as 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) dacă distanța <37,5: GPIO.output (13, True) altceva: GPIO.output (13, False) dacă distanța <30: GPIO.output (19, True) altceva: GPIO.output (19, False) if distance <22,5: GPIO.output (20, True) else: GPIO.output (20, False) if distance <15: GPIO.output (21, True) else: GPIO.output (21, False) dacă distanța <7,5: ieșire GPIO (26, adevărat) altceva: ieșire GPIO (26, fals)

Iată codul csvcontrol.py. Nu uitați să lipiți fișierul „.json” creat în același director al main.py. Fișierul „.json” este creat cu Google API. O captură de ecran este disponibilă în imagini.

import datetime import timp import csv import gspread

din oauth2client.service_account import ServiceAccountCredentials

din timp import somn import traceback

timec2 = 'lol'

în timp ce True: time.sleep (5) loc = ('capteur.csv') cu open (loc) ca csvfile: readCSV = csv.reader (csvfile, delimiter = ',') pentru rând în readCSV: print (rând [0]) timec = rând [0] print (rând [1]) distance = rând [1] distance = float (str (distanță)) if timec2! = timec: timec2 = timec print ('Time: {0} Quantitee: { 1} '. Format (timec, distanță))

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

acreditări = ServiceAccountCredentials.from_json_keyfile_name ('client_secret.json', SCOPES) gc = gspread.authorize (acreditări) wks = gc.open ("grafic"). sheet1 wks = wks.append_row ((timec, distanță))

Recomandat: