Índice:
- Etapa 1: Lista de peças
- Etapa 2: Configurando o Raspberry Pi
- Etapa 3: Raspberry Pi e suporte para câmera
- Etapa 4: Montagem do semáforo
- Etapa 5: Fiação (Parte 1)
- Etapa 6: Construindo o Meio Ambiente
- Etapa 7: finalizando a estrutura de PVC
- Etapa 8: Fiação (Parte 2)
- Etapa 9: Concluído
- Etapa 10: extras (fotos)
Vídeo: Analisador de padrões de tráfego usando detecção de objetos ao vivo: 11 etapas (com imagens)
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:38
No mundo de hoje, os semáforos são essenciais para uma estrada segura. No entanto, muitas vezes, os semáforos podem ser irritantes em situações em que alguém está se aproximando do semáforo no momento em que ele está ficando vermelho. Isso é uma perda de tempo, especialmente se o semáforo está impedindo um único veículo de passar pelo cruzamento quando não há mais ninguém na estrada. Minha inovação é um semáforo inteligente que usa a detecção de objetos ao vivo de uma câmera para contar o número de carros em cada estrada. O hardware que usarei para este projeto é um Raspberry Pi 3, um módulo de câmera e vários hardwares eletrônicos para a própria luz. Usando o OpenCV no Raspberry Pi, as informações coletadas serão executadas por meio de código que controla os LEDs por meio do GPIO. Dependendo desses números, o semáforo mudará, permitindo a passagem dos carros na ordem mais adequada. Nesse caso, a pista com mais carros seria deixada passar para que a pista com menos carros ficasse ociosa, reduzindo a poluição do ar. Isso eliminaria situações em que muitos carros estão parados enquanto não há carros na estrada de interseção. Isso não só economiza tempo para todos, mas também para o meio ambiente. A quantidade de tempo que as pessoas ficam paradas em um sinal de pare com o motor em marcha lenta aumenta a quantidade de poluição do ar, portanto, ao criar um semáforo inteligente, posso otimizar os padrões de luz para que os carros passem o mínimo de tempo possível com o veículo parado. Em última análise, este sistema de semáforos poderia ser implementado em cidades, subúrbios ou mesmo áreas rurais para ser mais eficiente para as pessoas, reduziria a poluição do ar.
Etapa 1: Lista de peças
Materiais:
Raspberry Pi 3 Modelo B v1.2
Câmera Raspberry Pi v2.1
Fonte de alimentação micro USB 5V / 1A
Monitor HDMI, teclado, mouse e cartão SD com Raspbian Jessie
Cabo breakout Raspberry Pi GPIO
LEDs vermelhos, amarelos e verdes (2 de cada cor)
Conectores fêmeas para Raspberry Pi (7 cores exclusivas)
Fio de bitola 24 sortido (cores diferentes) + tubo termorretrátil
Painel ou plataforma de madeira 2’x2’
Parafusos de madeira
Superfície preta (papelão, placa de espuma, cartolina, etc.)
Fita branca (ou qualquer outra cor que não seja preta) para marcações rodoviárias
Tinta spray preta (para PVC)
Tubo de PVC de ½”com juntas de cotovelo de 90 graus (2), soquete T (1), adaptador fêmea (2)
Ferramentas
Ferro de solda
impressora 3d
Perfure com várias brocas
Tábua de pão
Pistola de calor
Etapa 2: Configurando o Raspberry Pi
Carregue o cartão SD no Raspberry Pi e inicialize.
Siga este guia para instalar as bibliotecas OpenCV necessárias. Certifique-se de ter tempo para realizar esta etapa, pois a instalação da biblioteca OpenCV pode levar algumas horas. Certifique-se de instalar e configurar sua câmera aqui.
Você também deve instalar o pip:
picamera
gpiozero
RPi. GPIO
Aqui está o código finalizado:
de picamera.array import PiRGBArray
de picamera import PiCamera
import picamera.array
importar numpy como np
tempo de importação
import cv2
importar RPi. GPIO como GPIO
tempo de importação
GPIO.setmode (GPIO. BCM)
para i em (23, 25, 16, 21):
GPIO.setup (i, GPIO. OUT)
cam = PiCamera ()
cam.resolution = (480, 480)
cam.framerate = 30
raw = PiRGBArray (cam, tamanho = (480, 480))
tempo.sono (0,1)
colorLower = np.array ([0, 100, 100])
colorUpper = np.array ([179, 255, 255])
initvert = 0
inithoriz = 0
contador = 0
para quadro em cam.capture_continuous (raw, format = "bgr", use_video_port = True):
frame = frame.array
hsv = cv2.cvtColor (frame, cv2. COLOR_BGR2HSV)
mask = cv2.inRange (hsv, colorLower, colorUpper)
máscara = cv2.blur (máscara, (3, 3))
máscara = cv2.dilate (máscara, nenhum, iterações = 5)
máscara = cv2.erode (máscara, nenhum, iterações = 1)
máscara = cv2.dilate (máscara, nenhum, iterações = 3)
me, thresh = cv2.threshold (máscara, 127, 255, cv2. THRESH_BINARY)
cnts = cv2.findContours (thresh, cv2. RETR_TREE, cv2. CHAIN_APPROX_SIMPLE) [- 2]
center = Nenhum
vert = 0
horiz = 0
se len (cnts)> 0:
para c em cnts:
(x, y), raio = cv2.minEnclosingCircle (c)
centro = (int (x), int (y))
raio = int (raio)
cv2.circle (quadro, centro, raio, (0, 255, 0), 2)
x = int (x)
y = int (y)
se 180 <x <300:
se y> 300:
vert = vert +1
elif y <180:
vert = vert +1
outro:
vert = vert
se 180 <y <300:
se x> 300:
horiz = horiz +1
elif x <180:
horiz = horiz +1
outro:
horiz = horiz
if vert! = initvert:
imprimir "Carros na via vertical:" + str (vert)
initvert = vert
imprimir "Carros na pista horizontal:" + str (horiz)
inithoriz = horiz
imprimir '----------------------------'
if horiz! = inithoriz:
imprimir "Carros na via vertical:" + str (vert)
initvert = vert
imprimir "Carros na pista horizontal:" + str (horiz)
inithoriz = horiz
imprimir '----------------------------'
se vert <horiz:
GPIO.output (23, GPIO. HIGH)
GPIO.output (21, GPIO. HIGH)
GPIO.output (16, GPIO. LOW)
GPIO.output (25, GPIO. LOW)
se horiz <vert:
GPIO.output (16, GPIO. HIGH)
GPIO.output (25, GPIO. HIGH)
GPIO.output (23, GPIO. LOW)
GPIO.output (21, GPIO. LOW)
cv2.imshow ("Frame", frame)
cv2.imshow ("HSV", hsv)
cv2.imshow ("Thresh", thresh)
raw.truncate (0)
se cv2.waitKey (1) & 0xFF == ord ('q'):
pausa
cv2.destroyAllWindows ()
GPIO.cleanup ()
Etapa 3: Raspberry Pi e suporte para câmera
Imprima a caixa em 3D e monte e monte a câmera.
Etapa 4: Montagem do semáforo
Teste o semáforo com uma placa de ensaio. Cada conjunto oposto de LEDs compartilha um ânodo e todos eles compartilham um cátodo comum (terra). Deve haver um total de 7 fios de entrada: 1 para cada par de LEDS (6) + 1 fio terra. Solde e monte os semáforos.
Etapa 5: Fiação (Parte 1)
Solde os pinos fêmeas do coletor a cerca de 1,5 m de fio. Esses são os lados que esses fios passarão pelos canos de PVC mais tarde. Certifique-se de ser capaz de distinguir os diferentes conjuntos de luzes (2 x 3 cores e 1 terra). Neste caso, marquei as pontas de outro conjunto de fios vermelho, amarelo e azul com um Sharpie para saber qual é qual.
Etapa 6: Construindo o Meio Ambiente
Construindo o ambiente Faça uma palete de madeira de 2 pés quadrados como esta. Sucata de madeira é boa, pois será coberta. Faça um furo que caiba exatamente no seu adaptador. Perfure parafusos nas laterais da palete para prender o tubo de PVC no lugar. Corte a placa de espuma preta para combinar com a palete de madeira embaixo. Faça um furo que se encaixe ao redor do tubo de PVC. Repita no canto oposto. Marque as estradas com uma fita branca.
Etapa 7: finalizando a estrutura de PVC
No tubo superior, faça um orifício que possa acomodar um feixe de fios. Um buraco áspero é bom, desde que você possa acessar o interior dos canos. Passe os fios pelos tubos de PVC e pelas juntas dos cotovelos para um ajuste de teste. Depois que tudo estiver finalizado, pinte o PVC com um pouco de tinta spray preta para limpar a aparência do quadro principal. Corte um pequeno espaço em um dos tubos de PVC para encaixar uma junta em T. Adicione um tubo de PVC a esta junta em T para o semáforo pendurar. O diâmetro pode ser igual ao da estrutura principal (1/2 ), mas se você usar um tubo mais fino, certifique-se de que os 7 fios possam atravessar. Faça um orifício no tubo para que o semáforo fique pendurado.
Etapa 8: Fiação (Parte 2)
Reconecte tudo conforme testado anteriormente. Verifique novamente o semáforo e a fiação com um breadboard para confirmar que todas as conexões foram feitas. Solde o semáforo aos fios que passam pelo braço da junta em T. Enrole os fios expostos com fita isolante para evitar curtos e para obter uma aparência mais limpa.
Etapa 9: Concluído
Para executar o código, certifique-se de definir seu código-fonte como ~ /.profile e cd para o local do projeto.
Etapa 10: extras (fotos)
Recomendado:
Detecção de objetos com placas Sipeed MaiX (Kendryte K210): 6 etapas
Detecção de objetos com placas Sipeed MaiX (Kendryte K210): Como continuação do meu artigo anterior sobre reconhecimento de imagem com placas Sipeed MaiX, decidi escrever outro tutorial, com foco na detecção de objetos. Houve algum hardware interessante surgindo recentemente com o chip Kendryte K210, incluindo S
Programação Orientada a Objetos: Criando Objetos Aprendizado / Método / Técnica de Ensino Usando o Perfurador de Formas: 5 Passos
Programação Orientada a Objetos: Criando Objetos de Aprendizagem / Método / Técnica de Ensino Usando Shape Puncher: Método de aprendizagem / ensino para alunos iniciantes em programação orientada a objetos. Esta é uma forma de permitir que eles visualizem e vejam o processo de criação de objetos a partir de classes.Parte: 1. EkTools soco grande de 2 polegadas; formas sólidas são as melhores. Pedaço de papel ou c
Padrões de LED (diferentes padrões de luz): 3 etapas
Padrões de LED (diferentes padrões de luz): A ideia: Meu projeto é um padrão de cor de LED. O projeto contém 6 LEDs que são todos alimentados e se comunicam com o Arduino. Existem 4 padrões diferentes que percorrerão e serão reproduzidos em um loop. Quando um padrão termina, outro tak
Detecção visual de objetos com uma câmera (TfCD): 15 etapas (com imagens)
Detecção visual de objetos com uma câmera (TfCD): os serviços cognitivos que podem reconhecer emoções, rostos de pessoas ou objetos simples ainda estão em um estágio inicial de desenvolvimento, mas com o aprendizado de máquina, essa tecnologia está se desenvolvendo cada vez mais. Podemos esperar ver mais dessa magia em
Tráfego aéreo ao vivo no SEU computador !!!!!: 3 etapas
Tráfego aéreo ao vivo no SEU computador !!!!!: Este instrutível irá ensiná-lo a observar o tráfego aéreo de vários aeroportos (inclui apenas os principais aeroportos internacionais). ** ISENÇÃO DE RESPONSABILIDADE ** Não sou responsável pelo uso das informações contidas neste instrutível.Se você está planejando qualquer terrorista