Índice:

SmartBin: 4 etapas
SmartBin: 4 etapas

Vídeo: SmartBin: 4 etapas

Vídeo: SmartBin: 4 etapas
Vídeo: KUKA.SmartBinPicking Webinar 2024, Novembro
Anonim
Image
Image

O objetivo principal deste projeto é criar um dispositivo eletrônico que utilize pelo menos um Raspberry Pi. A equipe é composta por 5 futuros engenheiros mecânicos e um engenheiro de automação. Nosso projeto consiste em fazer uma lixeira que abre e fecha automaticamente acionada por um movimento do pé sob o detector de movimento localizado no centro na frente da lata de lixo. Um stick USB Wifi é usado para enviar dados para um site. Este bin é denominado "O SmartBin". O vídeo humorístico acima apresenta nosso SmartBin inovador.

Para realizar este projeto e este notável SmartBin, várias ferramentas foram necessárias:

  • Um metro
  • Cola forte
  • Uma fita adesiva
  • Uma serra de madeira
  • Uma chave de fenda
  • Uma máquina de perfuração
  • Uma braçadeira
  • Uma faca

Etapa 1: Equipamento SmartBin

Equipamento SmartBin
Equipamento SmartBin
Equipamento SmartBin
Equipamento SmartBin

O SmartBin é composto por luzes LED verdes, laranja e vermelhas que são colocadas em um acessório no lado esquerdo da lixeira que indicam o quão preenchido está. Essas luzes ficarão claramente visíveis e alertarão o usuário quando for necessário substituir o saco de lixo. A linguagem de programação usada é Python. O nível de enchimento medido do compartimento é transmitido para o seguinte site:

Aqui estão os elementos que foram usados, mas você pode facilmente encontrar uma solução alternativa:

  • 1 caixa (caixa "tampa giratória")
  • 1 servomotor para abrir o silo
  • 1 Raspberry Pi 2
  • 2 fontes de alimentação (carregador de celular de 5 V e fonte de alimentação de 6 V) para alimentar o Raspberry Pi e o servomotor
  • 1 sensor ultrassônico para medir o nível de enchimento da caixa
  • Alguns LEDs para exibir o nível de enchimento (4 verdes, 2 laranja e 1 vermelho)
  • 1 detector de movimento ultrassônico para detectar um movimento
  • 1 cartão SD de 16 Gb
  • Resistores elétricos (10.000 Ohms, 2.000 Ohms e 1000 Ohms)
  • 1 stick USB WiFi para permitir a transmissão sem fio para o site.
  • 1 placa de ensaio e alguns cabos Raspberry

O preço estimado de fabricação é de 80 €.

Etapa 2: Fabricação da caixa de framboesa e da barra de LED

Fabricação da Caixa de Framboesa e Barra LED
Fabricação da Caixa de Framboesa e Barra LED
Fabricação da Caixa de Framboesa e Barra LED
Fabricação da Caixa de Framboesa e Barra LED
Fabricação da Caixa de Framboesa e Barra LED
Fabricação da Caixa de Framboesa e Barra LED

Para fabricar a caixa de framboesa, use serra para madeira. Prenda todos os lados da caixa com rebites para que pareça limpa. Como o próprio nome sugere, esta caixa conterá não apenas o Raspberry Pi, mas também incluirá o sensor de movimento que você colocará na parte inferior. Assim que a caixa estiver construída, pinte-a da mesma cor da lixeira. A tecnologia de impressão 3D pode ser usada para criar esta caixa.

Para a fabricação da barra de LED, use um duto elétrico no qual você faz furos para permitir que as luzes de LED sejam instaladas. A barra de LED também deve ser pintada. Quando tudo estiver pronto, instale os LEDs no duto e faça a ligação elétrica. Preste atenção para numerar corretamente cada cabo de LED com fita adesiva. Isso o ajudará a identificar cada LED durante a fiação.

Por fim, coloque a caixa e a barra de LED na parte frontal da lixeira.

Etapa 3: a parte da tampa

A Parte da Tampa
A Parte da Tampa
A Parte da Tampa
A Parte da Tampa

Em relação à tampa da caixa, o primeiro passo é colar o servomotor na tampa. Uma extensão da alavancagem deve ser feita previamente. A alavanca vai bater em um batente que antes era feito à mão. Fixe uma caixa de rosca na tampa e faça um orifício para segurar o sensor ultrassônico na posição correta. Certifique-se de conectar corretamente os cabos na tampa com fita adesiva.

Etapa 4: peça de software e aquisição de dados

Parte de software e aquisição de dados
Parte de software e aquisição de dados
Parte de software e aquisição de dados
Parte de software e aquisição de dados
Parte de software e aquisição de dados
Parte de software e aquisição de dados

Em relação à parte de software, utilizamos a linguagem de programação python. O programa é salvo no cartão SD que será executado pelo Raspberry Pi quando for ligado. O esquema de fiação está disponível acima. A imagem dos pinos Gpio está disponível para todos os tipos de framboesa no link abaixo:

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

É possível usar um sensor ultrassônico para substituir o detector de movimento, basta criar um "loop if" no código.

Conforme mencionado acima, os dados relativos ao nível em que a lixeira é preenchida são transmitidos para um site criado em wix.com. Neste site, você pode encontrar diferentes guias que reúnem membros da equipe, apresentação de hardware e software,… A guia interessante é na verdade a guia "Banco de dados" que coleta as informações sobre a quantidade de lixo diretamente do SmartBin e cria um gráfico com os dados. O gráfico mostra a evolução do nível de enchimento. É possível ver ou baixar os dados do site. O link abaixo é o site que usamos e mostrará como ler e escrever em planilhas do google com python:

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

Com relação à "parte autorun" do código, escreva no terminal: sudo nano / etc / xdg / lxsession / LXDE-pi / autostart

Então, no final do script que acabou de abrir, escreva estas duas linhas de código: python /home/pi/main.py & python /home/pi/csvcontrol.py &

Para salvar a aurorun, pressione: C trl + O Então, pressione: Enter Então, pressione: C trl + X

Escreva como última linha de código: sudo reboot

Você também pode baixar o anexo, que é o código Python completo usado para o projeto. Ambos os códigos são executados ao mesmo tempo!

Aqui está o código main.py:

import RPi. GPIO as GPIOimport datetime import time import csv

GPIO.setmode (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

Eco = 24

GPIO.setup (Trig, GPIO. OUT)

GPIO.setup (Echo, GPIO. IN)

GPIO.setwarnings (False)

GPIO.output (5, False)

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 ()

distance = 100 memory = 0 time.sleep (2) pwm.start (12.5)

enquanto verdadeiro:

horaac = time.time () if GPIO.input (capteurP) andhoraac-timeset0.9: pwm. ChangeDutyCycle (2.5) time.sleep (0.2) memory = -0.5 pwm. ChangeDutyCycle (0) scheduleac = time.time () time.sleep (0,5) se cronômetroac-timeset> 15 ou memória> 0,4: se memória> 0,4: pwm. ChangeDutyCycle (2,5) time.sleep (1) para x no intervalo (0, 1): # GPIO.output (Trig, True) time.sleep (0.01) GPIO.output (Trig, False)

enquanto GPIO.input (Echo) == 0 e scheduleac-timeset <17: scheduleac = time.time () debutImpulsion = time.time ()

enquanto GPIO.input (Echo) == 1:

finImpulsion = time.time () se timingac-timeset <17: distance1 = round ((finImpulsion - debutImpulsion) * 340 * 100/2, 1) distance2 = distance if (distance1-distance2) <1 e (distance2-distance1) 0,4: dis = round ((60-distance) * 5/6, 1) with 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 ('Hora: {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) se a distância <37,5: GPIO.output (13, True) else: GPIO.output (13, False) se a distância <30: GPIO.output (19, True) else: 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) se a distância for <7,5: GPIO.output (26, verdadeiro) else: GPIO.output (26, falso)

Aqui está o código csvcontrol.py. Não se esqueça de colar o arquivo ".json" criado no mesmo diretório do main.py. O arquivo ".json" é criado com a API do Google. Uma captura de tela está disponível nas fotos.

import datetimeimport time import csv import gspread

de oauth2client.service_account import ServiceAccountCredentials

do tempo import sleep import traceback

timec2 = 'lol'

enquanto True: time.sleep (5) loc = ('capteur.csv') com open (loc) como csvfile: readCSV = csv.reader (csvfile, delimiter = ',') para linha em readCSV: print (row [0]) timec = linha [0] print (row [1]) distance = row [1] distance = float (str (distance)) if timec2! = timec: timec2 = timec print ('Time: {0} Quantitee: { Formato 1} '. (Tempo, distância))

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

credentials = ServiceAccountCredentials.from_json_keyfile_name ('client_secret.json', SCOPES) gc = gspread.authorize (credentials) wks = gc.open ("gráfico"). sheet1 wks = wks.append_row ((tempo, distância))

Recomendado: