Tabla de contenido:

SmartBin: 4 pasos
SmartBin: 4 pasos

Video: SmartBin: 4 pasos

Video: SmartBin: 4 pasos
Video: Guardforce's Smart Waste Bin 2024, Noviembre
Anonim
Image
Image

El objetivo principal de este proyecto es crear un dispositivo electrónico que utilice al menos una Raspberry Pi. El equipo está formado por 5 futuros ingenieros mecánicos y un ingeniero de automatización. Nuestro proyecto consiste en hacer un bote de basura que se abre y se cierra automáticamente accionado por un movimiento de pie debajo del detector de movimiento ubicado en el centro al frente del bote de basura. Se utiliza una memoria USB Wifi para enviar datos a un sitio web. Este contenedor se llama "El SmartBin". El video humorístico de arriba presenta nuestro innovador SmartBin.

Para llevar a cabo este proyecto y este notable SmartBin fueron necesarias varias herramientas:

  • Un metro
  • Pegamento fuerte
  • Una cinta adhesiva
  • Una sierra para madera
  • Un destornillador
  • Una maquina perforadora
  • Una abrazadera
  • Un cuchillo

Paso 1: Equipo SmartBin

Equipo SmartBin
Equipo SmartBin
Equipo SmartBin
Equipo SmartBin

El SmartBin está compuesto por luces LED de color verde, naranja y rojo que se colocan en un dispositivo en el lado izquierdo del contenedor que indicará qué tan lleno está. Estas luces serán claramente visibles y alertarán al usuario cuando sea necesario reemplazar la bolsa de basura. El lenguaje de programación utilizado es Python. El nivel de llenado medido del contenedor se transmite al siguiente sitio web:

Estos son los elementos que se han utilizado, pero puede encontrar fácilmente una solución alternativa:

  • 1 contenedor (contenedor de "tapa abatible")
  • 1 servomotor para abrir la papelera
  • 1 frambuesa Pi 2
  • 2 fuentes de alimentación (cargador de teléfono móvil de 5 V y fuente de alimentación de 6 V) para alimentar la Raspberry Pi y el servomotor
  • 1 sensor ultrasónico para medir el nivel de llenado de la papelera
  • Algunos LED para mostrar el nivel de llenado (4 verdes, 2 naranjas y 1 rojo)
  • 1 detector de movimiento ultrasónico para detectar un movimiento
  • 1 tarjeta SD de 16 Gb
  • Resistencias eléctricas (10.000 Ohms, 2000 Ohms y 1000 Ohms)
  • 1 memoria USB WiFi para permitir la transmisión inalámbrica al sitio web.
  • 1 protoboard y algunos cables Raspberry

El precio de fabricación estimado es de 80 €.

Paso 2: Fabricación de la Raspberry Box y la barra LED

Fabricación de la Raspberry Box y la barra LED
Fabricación de la Raspberry Box y la barra LED
Fabricación de la Raspberry Box y la barra LED
Fabricación de la Raspberry Box y la barra LED
Fabricación de la Raspberry Box y la barra LED
Fabricación de la Raspberry Box y la barra LED

Para fabricar la caja Raspberry, use una sierra para madera. Fija todos los lados de la caja con remaches para que luzca limpia. Como su nombre indica, esta caja contendrá no solo la Raspberry Pi sino que también incluirá el sensor de movimiento que colocarás en la parte inferior. Una vez que la caja esté construida, píntela del mismo color que el contenedor. La tecnología de impresión 3D podría usarse para crear esta caja.

Para la fabricación de la barra LED, utilice un conducto eléctrico en el que taladre agujeros para permitir la instalación de las luces LED. La barra de LED también debe pintarse. Cuando todo esté listo, instale los LED en el conducto y realice la conexión eléctrica. Preste atención a numerar correctamente cada cable LED con cinta adhesiva. Le ayudará a identificar cada LED durante el cableado.

Finalmente, coloque la caja y la barra LED en la parte frontal de su contenedor.

Paso 3: la parte de la tapa

La parte de la tapa
La parte de la tapa
La parte de la tapa
La parte de la tapa

En cuanto a la tapa del cubo, el primer paso es pegar el servomotor a la tapa. Se debe realizar una extensión del apalancamiento previamente. La palanca llegará a un tope que anteriormente se hizo a mano. Coloque una caja de tornillos en la tapa y haga un agujero en ella para mantener el sensor ultrasónico en la posición correcta. Asegúrese de conectar correctamente los cables a la tapa con cinta adhesiva.

Paso 4: Adquisición de datos y parte del software

Adquisición de datos y piezas de software
Adquisición de datos y piezas de software
Adquisición de datos y piezas de software
Adquisición de datos y piezas de software
Adquisición de datos y piezas de software
Adquisición de datos y piezas de software

En cuanto a la parte del software, utilizamos el lenguaje de programación Python. El programa se guarda en la tarjeta SD que será ejecutada por la Raspberry Pi cuando se encienda. El esquema de cableado está disponible arriba. La imagen de los pines de Gpio está disponible para todos los tipos de frambuesa en el siguiente enlace:

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

Es posible usar un sensor ultrasónico para reemplazar el detector de movimiento, solo necesita crear un "bucle si" en el código.

Como se mencionó anteriormente, los datos relacionados con el nivel de llenado del contenedor se transmiten a un sitio web creado en wix.com. En este sitio web, puede encontrar diferentes pestañas que recopilan a los miembros del equipo, presentación de hardware y software, … La pestaña interesante es en realidad la pestaña "Base de datos" que recopila la información sobre la cantidad de basura directamente desde el SmartBin y crea un gráfico con los datos. El gráfico muestra la evolución del nivel de llenado. Es posible ver o descargar datos desde el sitio web. El siguiente enlace es el sitio web que usamos y le mostrará cómo leer y escribir en las hojas de Google con Python:

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

Con respecto a la "parte de ejecución automática" del código, escriba en la terminal: sudo nano / etc / xdg / lxsession / LXDE-pi / autostart

Luego, al final del script que acaba de abrirse, escriba estas dos líneas de código: python /home/pi/main.py & python /home/pi/csvcontrol.py &

Para guardar el aurorun, presione: C trl + O Luego, presione: Enter Luego, presione: C trl + X

Escriba como última línea de código: sudo reboot

También puede descargar el archivo adjunto, que es el código Python completo utilizado para el proyecto. ¡Ambos códigos se ejecutan al mismo tiempo!

Aquí está el código main.py:

importar RPi. GPIO como GPIOimportar fecha y hora importar hora importar csv

GPIO.setmode (GPIO. BCM)

GPIO.setwarnings (falso)

capteurP = 7

servo = 17

Configuración de GPIO (servo, GPIO. OUT)

Configuración de GPIO (capteurP, GPIO. IN)

pwm = GPIO. PWM (17, 50)

Configuración de GPIO (5, GPIO. OUT)

Configuración de GPIO (6, GPIO. OUT) Configuración de GPIO (13, GPIO. OUT) Configuración de GPIO (19, GPIO. OUT) Configuración de GPIO (20, GPIO. OUT) Configuración de GPIO (21, GPIO. OUT) Configuración de GPIO (26, GPIO. OUT)

Trig = 23

Eco = 24

Configuración de GPIO (Trig, GPIO. OUT)

Configuración de GPIO (Echo, GPIO. IN)

GPIO.setwarnings (falso)

Salida GPIO (5, falso)

Salida GPIO (6, Falso) Salida GPIO (13, Falso) Salida GPIO (19, Falso) Salida GPIO (20, Falso) Salida GPIO (21, Falso) Salida GPIO (26, Falso)

Salida GPIO (Trig, False)

timeset = time.time ()

distancia = 100 memoria = 0 tiempo.sueño (2) pwm.start (12.5)

mientras que es cierto:

timetac = time.time () si GPIO.input (capteurP) y timetac-timeset0.9: pwm. ChangeDutyCycle (2.5) time.sleep (0.2) memory = -0.5 pwm. ChangeDutyCycle (0) timetac = time.time () time.sleep (0.5) si timetac-timeset> 15 o memory> 0.4: si memoria> 0.4: pwm. ChangeDutyCycle (2.5) time.sleep (1) para x en el rango (0, 1): # GPIO.output (Trig, True) time.sleep (0.01) GPIO.output (Trig, False)

while GPIO.input (Echo) == 0 y timetac-timeset <17: timetac = time.time () debutImpulsion = time.time ()

mientras GPIO.input (Echo) == 1:

finImpulsion = time.time () si timetac-timeset <17: distancia1 = ronda ((finImpulsion - debutImpulsion) * 340 * 100/2, 1) distancia2 = distancia si (distancia1-distancia2) <1 y (distancia2-distancia1) 0.4: dis = round ((60-distancia) * 5/6, 1) con open ('capteur.csv', 'w') como 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 si distancia <52.5: GPIO.output (5, True) else: GPIO.output (5, False) si distancia <45: GPIO.output (6, True) else: GPIO.output (6, False) si distancia <37.5: GPIO.output (13, True) else: GPIO.output (13, False) si distancia <30: GPIO.output (19, True) else: GPIO.output (19, False) si distancia <22.5: GPIO.output (20, True) else: GPIO.output (20, False) si distancia <15: GPIO.output (21, True) else: GPIO.output (21, False) si la distancia <7.5: GPIO.output (26, True) else: GPIO.output (26, False)

Aquí está el código csvcontrol.py. No olvide pegar el archivo ".json" creado en el mismo directorio de main.py. El archivo ".json" se crea con la API de Google. Una captura de pantalla está disponible en las imágenes.

import datetimeimport time import csv import gspread

de oauth2client.service_account import ServiceAccountCredentials

desde el tiempo de importación de sueño de seguimiento de importación

timec2 = 'lol'

while True: time.sleep (5) loc = ('capteur.csv') con open (loc) como csvfile: readCSV = csv.reader (csvfile, delimiter = ',') para la fila en readCSV: print (fila [0]) tiempoc = fila [0] imprimir (fila [1]) distancia = fila [1] distancia = flotar (str (distancia)) si tiempoc2! = tiempoc: tiempoc2 = tiempoc imprimir ('Tiempo: {0} Quantitee: { 1} '. Formato (tiempoc, distancia))

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

credentials = ServiceAccountCredentials.from_json_keyfile_name ('client_secret.json', SCOPES) gc = gspread.authorize (credentials) wks = gc.open ("gráfico"). sheet1 wks = wks.append_row ((tiempoc, distancia))

Recomendado: