Taula de continguts:

SmartBin: 4 passos
SmartBin: 4 passos

Vídeo: SmartBin: 4 passos

Vídeo: SmartBin: 4 passos
Vídeo: Conheça a Bin Smart 2024, Desembre
Anonim
Image
Image

L’objectiu principal d’aquest projecte és crear un dispositiu electrònic que utilitzi almenys un Raspberry Pi. L’equip està format per 5 futurs enginyers mecànics i un enginyer automatitzat. El nostre projecte consisteix a fer una paperera que s’obri i es tanca automàticament mitjançant un moviment del peu sota el detector de moviment situat al centre a la part frontal de la paperera. Una memòria USB Wifi s’utilitza per enviar dades a un lloc web. Aquest contenidor es diu "El SmartBin". El vídeo divertit que apareix a dalt presenta el nostre innovador SmartBin.

Per dur a terme aquest projecte i aquest notable SmartBin, van ser necessàries diverses eines:

  • Un metre
  • Cola forta
  • Una cinta adhesiva
  • Una serra de fusta
  • Un tornavís
  • Una màquina de perforar
  • Una pinça
  • Un ganivet

Pas 1: equip SmartBin

Equip SmartBin
Equip SmartBin
Equip SmartBin
Equip SmartBin

El SmartBin es compon de llums LED de color verd, taronja i vermell que es col·loquen en un dispositiu a la part esquerra de la paperera que indicarà el seu nivell d’ompliment. Aquests llums seran ben visibles i avisaran l’usuari quan calgui substituir la bossa d’escombraries. El llenguatge de programació utilitzat és Python. El nivell d’ompliment mesurat de la paperera es transmet al lloc web següent:

Aquests són els elements que s’han utilitzat, però podeu trobar fàcilment una solució alternativa:

  • 1 paperera (paperera "tapa basculant")
  • 1 Servomotor per obrir la paperera
  • 1 Raspberry Pi 2
  • 2 fonts d'alimentació (carregador de telèfon mòbil de 5 V i font d'alimentació de 6 V) per subministrar el Raspberry Pi i el servomotor
  • 1 sensor d'ultrasons per mesurar el nivell d'ompliment de la paperera
  • Alguns LEDs per mostrar el nivell d'ompliment (4 verds, 2 taronja i 1 vermell)
  • 1 Detector de moviment per ultrasons per detectar un moviment
  • 1 targeta SD de 16 Gb
  • Resistències elèctriques (10.000 ohms, 2000 ohms i 1000 ohms)
  • 1 llapis USB WiFi per permetre la transmissió sense fils al lloc web.
  • 1 Tauler de pa i alguns cables de gerds

El preu de fabricació estimat és de 80 €.

Pas 2: fabricació del Raspberry Box i de la barra LED

Fabricació de la Raspberry Box i la barra LED
Fabricació de la Raspberry Box i la barra LED
Fabricació de la Raspberry Box i la barra LED
Fabricació de la Raspberry Box i la barra LED
Fabricació de la Raspberry Box i la barra LED
Fabricació de la Raspberry Box i la barra LED

Per fabricar la caixa de gerds, utilitzeu una serra de fusta. Fixeu tots els costats de la caixa amb reblons perquè sembli neta. Com el seu nom indica, aquesta caixa conté no només el Raspberry Pi, sinó que també inclourà el sensor de moviment que col·locareu a la part inferior. Un cop construïda la caixa, pinteu-la del mateix color que la paperera. Es podria utilitzar la tecnologia d’impressió 3D per crear aquesta caixa.

Per a la fabricació de la barra LED, utilitzeu un conducte elèctric en el qual treieu forats per permetre la instal·lació de llums LED. També s’ha de pintar la barra LED. Quan tot estigui a punt, instal·leu els LED al conducte i feu la connexió elèctrica. Presteu atenció a numerar correctament cada cable LED amb cinta adhesiva. Us ajudarà a identificar cada LED durant el cablejat.

Finalment, poseu la caixa i la barra LED a la part frontal de la paperera.

Pas 3: la part de la tapa

La part de la tapa
La part de la tapa
La part de la tapa
La part de la tapa

Pel que fa a la tapa de la paperera, el primer pas és enganxar el servomotor a la tapa. Cal fer prèviament una extensió del palanquejament. La palanca tocarà una parada que anteriorment es feia a mà. Connecteu una caixa de cargols a la tapa i feu-hi un forat per mantenir el sensor d'ultrasons a la posició correcta. Assegureu-vos de connectar correctament els cables a la tapa amb cinta adhesiva.

Pas 4: Adquisició de dades i de part del programari

Adquisició de part i programari de programari
Adquisició de part i programari de programari
Adquisició de part i programari de programari
Adquisició de part i programari de programari
Adquisició de part i programari de programari
Adquisició de part i programari de programari

Pel que fa a la part del programari, hem utilitzat el llenguatge de programació python. El programa es desa a la targeta SD que serà executada pel Raspberry Pi quan s’encengui. L'esquema de cablejat està disponible més amunt. La imatge dels pins Gpio està disponible per a tots els tipus de gerds a l’enllaç següent:

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

És possible utilitzar un sensor d'ultrasons per substituir el detector de moviment, només cal crear un "bucle si" al codi.

Com s’ha esmentat anteriorment, les dades relatives al nivell d’ompliment de la paperera es transmeten a un lloc web creat a wix.com. En aquest lloc web, podeu trobar diferents pestanyes que reuneixen membres de l'equip, presentació de maquinari i programari, … La pestanya interessant és en realitat la pestanya "Base de dades" que recopila la informació sobre la quantitat d'escombraries directament de l'SmartBin i crea un gràfic amb les dades. El gràfic mostra l'evolució del nivell del farciment. És possible veure o descarregar dades del lloc web. L’enllaç següent és el lloc web que hem utilitzat i us mostrarà com llegir i escriure en fulls de google amb python:

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

Quant a la "part d'execució automàtica" del codi, escriviu al terminal: sudo nano / etc / xdg / lxsession / LXDE-pi / autostart

A continuació, al final de l'script que acaba d'obrir, escriviu aquestes dues línies de codi: python /home/pi/main.py & python /home/pi/csvcontrol.py &

Per desar l’aurorun, premeu: C trl + O A continuació, premeu: Enter Aleshores, premeu: C trl + X

Escriviu com a última línia de codi: sudo reboot

També podeu descarregar l’adjunt que és el codi complet de Python utilitzat per al projecte. Tots dos codis s’executen al mateix temps.

Aquí teniu el codi main.py:

importar RPi. GPIO com a GPIO importar importació de temps i hora 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

Ressò = 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 ()

distància = 100 memòria = 0 temps.sleep (2) pwm.start (12.5)

mentre que és cert:

schedulac = time.time () si GPIO.input (capteurP) i schedulac-timeset0.9: pwm. ChangeDutyCycle (2.5) time.sleep (0.2) memòria = -0.5 pwm. ChangeDutyCycle (0) schedulac = time.time () time.sleep (0,5) si horari-temps> 15 o memòria> 0,4: si memòria> 0,4: pwm. ChangeDutyCycle (2,5) time.sleep (1) per a x en el rang (0, 1): # GPIO.output (Trig, True) time.sleep (0,01) GPIO.output (Trig, False)

mentre GPIO.input (Echo) == 0 i schedulac-timeset <17: schedulac = time.time () debutImpulsion = time.time ()

mentre 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 ('Hora: {0} Quantitat: {1}'. format (time_str, dis)) capteurwriter. writerow ([time_str, dis]) memòria = -0,1 si distància <52,5: GPIO.output (5, True) else: GPIO.output (5, False) si distance <45: GPIO.output (6, True) else: GPIO.output (6, False) si la distància <37,5: GPIO.output (13, True) else: GPIO.output (13, False) si la distància <30: GPIO.output (19, True) else: GPIO.output (19, fals) si distància <22,5: sortida GPIO (20, cert) en cas contrari: sortida GPIO (20, fals) si distància <15: sortida GPIO (21, vertader) en cas contrari: sortida GPIO (21, fals) si distància <7,5: GPIO.output (26, True) en cas contrari: GPIO.output (26, False)

Aquí teniu el codi csvcontrol.py. No oblideu enganxar el fitxer ".json" creat al mateix directori de main.py. El fitxer ".json" es crea amb l'API de Google. Hi ha disponible una captura de pantalla a les imatges.

import datetime import time import csv import gspread

de la importació oauth2client.service_account ServiceAccountCredentials

a partir de l'hora d'importació importació de son de retrocés

timec2 = 'jeje'

mentre que True: time.sleep (5) loc = ('capteur.csv') amb open (loc) com a fitxer csv: readCSV = csv.reader (csvfile, delimiter = ',') per a la fila de readCSV: print (fila [0]) timec = fila [0] imprimir (fila [1]) distància = fila [1] distància = flotant (str (distància)) si timec2! = timec: timec2 = timec imprimir ('Temps: {0} Quantitat: { 1} '. Format (timec, distància))

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

credencials = ServiceAccountCredentials.from_json_keyfile_name ('client_secret.json', SCOPES) gc = gspread.authorize (credencials) wks = gc.open ("gràfic"). sheet1 wks = wks.append_row ((timec, distància))

Recomanat: