Índice:
- Etapa 1: Equipamento SmartBin
- Etapa 2: Fabricação da caixa de framboesa e da barra de LED
- Etapa 3: a parte da tampa
- Etapa 4: peça de software e aquisição de dados
Vídeo: SmartBin: 4 etapas
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:37
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
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
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
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
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:
Como fazer uma antena dupla BiQuade 4G LTE Etapas fáceis: 3 etapas
Como Fazer Antena Dupla BiQuade 4G LTE Etapas fáceis: Na maioria das vezes que enfrentei, não tenho uma boa intensidade de sinal para meus trabalhos do dia-a-dia. Então. Procuro e tento diferentes tipos de antena, mas não funciona. Depois de perder tempo, encontrei uma antena que espero fazer e testar, porque não é um princípio de construção
Design de jogo no Flick em 5 etapas: 5 etapas
Design de jogos no Flick em 5 etapas: o Flick é uma maneira realmente simples de fazer um jogo, especialmente algo como um quebra-cabeça, romance visual ou jogo de aventura
Detecção de rosto no Raspberry Pi 4B em 3 etapas: 3 etapas
Detecção de rosto no Raspberry Pi 4B em 3 etapas: Neste Instructable, vamos realizar a detecção de rosto no Raspberry Pi 4 com Shunya O / S usando a Biblioteca Shunyaface. Shunyaface é uma biblioteca de reconhecimento / detecção de rosto. O projeto visa alcançar a detecção mais rápida e velocidade de reconhecimento com
Espelho de cortesia DIY em etapas fáceis (usando luzes de tira LED): 4 etapas
Espelho de toucador DIY em etapas fáceis (usando tiras de LED): Neste post, fiz um espelho de toucador DIY com a ajuda de tiras de LED. É muito legal e você deve experimentá-los também
SmartBin: 8 etapas
SmartBin: Este é um projeto para um sistema inteligente de coletas, sem qual os caminhões õ es de lixo fornecer dados das lixeiras, identificando a quantidade de lixo presente em cada uma delas, e uma rota de coleta tra ç ada, com base nas informa