Sommario:
- Passaggio 1: elenco delle parti
- Passaggio 2: configurazione del Raspberry Pi
- Passaggio 3: Raspberry Pi e supporto per fotocamera
- Passaggio 4: montaggio del semaforo
- Passaggio 5: cablaggio (parte 1)
- Passaggio 6: costruire l'ambiente
- Passaggio 7: finalizzazione del telaio in PVC
- Passaggio 8: cablaggio (parte 2)
- Passaggio 9: finito
- Passaggio 10: extra (foto)
Video: Analizzatore di modelli di traffico che utilizza il rilevamento di oggetti in tempo reale: 11 passaggi (con immagini)
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:04
Nel mondo di oggi, i semafori sono essenziali per una strada sicura. Tuttavia, molte volte, i semafori possono essere fastidiosi in situazioni in cui qualcuno si avvicina al semaforo proprio mentre sta diventando rosso. Questo fa perdere tempo, soprattutto se la luce impedisce a un singolo veicolo di attraversare l'incrocio quando non c'è nessun altro sulla strada. La mia innovazione è un semaforo intelligente che utilizza il rilevamento di oggetti in tempo reale da una telecamera per contare il numero di auto su ogni strada. L'hardware che utilizzerò per questo progetto è un Raspberry Pi 3, un modulo fotocamera e vari hardware elettronici per la luce stessa. Utilizzando OpenCV sul Raspberry Pi, le informazioni raccolte verranno eseguite tramite il codice che controlla i LED tramite il GPIO. A seconda di questi numeri, il semaforo cambierà, lasciando passare le auto nell'ordine più ottimale. In questo caso, la corsia con il maggior numero di auto verrebbe lasciata passare in modo che la corsia con meno auto rimarrebbe al minimo, riducendo l'inquinamento atmosferico. Ciò eliminerebbe le situazioni in cui molte auto vengono fermate mentre non ci sono auto sulla strada che si interseca. Questo non solo fa risparmiare tempo a tutti, ma salva anche l'ambiente. La quantità di tempo in cui le persone vengono fermate a un segnale di stop con il motore al minimo aumenta la quantità di inquinamento atmosferico, quindi creando un semaforo intelligente, sono in grado di ottimizzare i modelli di illuminazione in modo che le auto trascorrano il minor tempo possibile con il loro veicolo fermo. In definitiva, questo sistema di semafori potrebbe essere implementato nelle città, nei sobborghi o persino nelle aree rurali per essere più efficiente per le persone e ridurre l'inquinamento atmosferico.
Passaggio 1: elenco delle parti
Materiali:
Raspberry Pi 3 Modello B v1.2
Fotocamera Raspberry Pi v2.1
Alimentatore micro USB 5V/1A
Monitor HDMI, tastiera, mouse Scheda SD con Raspbian Jessie
Cavo breakout GPIO Raspberry Pi
LED rosso, giallo, verde (2 di ogni colore)
Connettori femmina per Raspberry Pi (7 colori unici)
Filo assortito da 24 gauge (diversi colori) + guaina termorestringente
Pannello o piattaforma in legno 2'x2'
Viti per legno
Superficie nera (cartone, cartone espanso, cartoncino, ecc.)
Nastro bianco (o di qualsiasi colore diverso dal nero) per segnaletica orizzontale
Vernice spray nera (per PVC)
Tubo in PVC da ½” con giunti a gomito a 90 gradi (2), presa a T (1), adattatore femmina (2)
Utensili
Saldatore
stampante 3d
Trapano con varie punte da trapano
tagliere
Pistola termica
Passaggio 2: configurazione del Raspberry Pi
Carica la scheda SD nel Raspberry Pi e avvia.
Segui questa guida per installare le librerie OpenCV richieste. Assicurati di avere tempo per eseguire questo passaggio, poiché l'installazione della libreria OpenCV può richiedere un paio d'ore. Assicurati di installare e configurare anche la videocamera qui.
Dovresti anche installare pip:
picamera
gpiozero
RPi. GPIO
Ecco il codice definitivo:
da picamera.array import PiRGBArray
da picamera import PiCamera
import picamera.array
importa numpy come np
tempo di importazione
importa cv2
importa RPi. GPIO come GPIO
tempo di importazione
GPIO.setmode(GPIO. BCM)
per io in (23, 25, 16, 21):
GPIO.setup(i, GPIO. OUT)
cam = PiCamera()
cam.risoluzione=(480, 480)
cam.framerate=30
raw=PiRGBArray(cam, size=(480, 480))
tempo.sonno(0.1)
colorLower = np.array([0, 100, 100])
colorUpper = np.array([179, 255, 255])
initvert = 0
initoriz = 0
contatore = 0
per il frame in 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)
maschera = cv2.blur(maschera, (3, 3))
mask= cv2.dilate(maschera, Nessuna, iterazioni=5)
mask= cv2.erode(mask, Nessuno, iterazioni=1)
mask= cv2.dilate(maschera, Nessuna, iterazioni=3)
me, soglia = cv2.threshold(maschera, 127, 255, cv2. THRESH_BINARY)
cnts = cv2.findContours(thresh, cv2. RETR_TREE, cv2. CHAIN_APPROX_SIMPLE)[-2]
centro = Nessuno
vert = 0
orizzonte = 0
se len(cnts) > 0:
per c in cnt:
(x, y), raggio = cv2.minEnclosingCircle(c)
centro = (int(x), int(y))
raggio = int(raggio)
cv2.circle(cornice, centro, raggio, (0, 255, 0), 2)
x = intero(x)
y = int(y)
se 180 < x < 300:
se y > 300:
vert = vert +1
elif y < 180:
vert = vert +1
altro:
vert = vert
se 180 < y < 300:
se x > 300:
orizzonte = orizzonte +1
elif x < 180:
orizzonte = orizzonte +1
altro:
horiz = horiz
se vert != initvert:
print"Auto in corsia verticale: " + str(vert)
initvert = vert
print"Auto in corsia orizzontale: " + str(horiz)
inithoriz = horiz
stampa '----------------------------'
if horiz != inithoriz:
print"Auto in corsia verticale: " + str(vert)
initvert = vert
print"Auto in corsia orizzontale: " + str(horiz)
inithoriz = horiz
stampa '----------------------------'
se vert < horiz:
GPIO.output(23, GPIO. HIGH)
GPIO.output(21, GPIO. HIGH)
GPIO.output(16, GPIO. LOW)
GPIO.output(25, GPIO. LOW)
se orizzontale < verticale:
GPIO.output(16, GPIO. HIGH)
GPIO.output(25, GPIO. HIGH)
GPIO.output(23, GPIO. LOW)
GPIO.output(21, GPIO. LOW)
cv2.imshow("Cornice", cornice)
cv2.imshow("HSV", hsv)
cv2.imshow("Soglia", Soglia)
raw.truncate(0)
if cv2.waitKey(1) & 0xFF == ord('q'):
rottura
cv2.destroyAllWindows()
GPIO.cleanup()
Passaggio 3: Raspberry Pi e supporto per fotocamera
Stampa in 3D la custodia e il supporto della fotocamera e assembla.
Passaggio 4: montaggio del semaforo
Prova il semaforo con una breadboard. Ogni serie opposta di LED condivide un anodo e tutti condividono un catodo comune (terra). Dovrebbero esserci un totale di 7 fili di ingresso: 1 per ogni coppia di LED (6) + 1 filo di terra. Saldare e montare i semafori.
Passaggio 5: cablaggio (parte 1)
Saldare i pin dell'intestazione femmina a circa 5 piedi di filo. Questi sono i lati che questi fili serperanno attraverso i tubi in PVC in seguito. Assicurati di essere in grado di distinguere i diversi set di luci (2 x 3 colori e 1 terreno). In questo caso, ho contrassegnato le estremità di un'altra serie di fili rossi, gialli e blu con un pennarello in modo da sapere quale è quale.
Passaggio 6: costruire l'ambiente
Costruire l'ambiente Crea un pallet di legno quadrato di 2 piedi come questo. Il legno di scarto va bene perché sarà coperto. Pratica un foro che si adatti perfettamente al tuo adattatore. Forare le viti attraverso i lati del pallet per fissare il tubo in PVC in posizione. Taglia il pannello di schiuma nera in modo che corrisponda al pallet di legno sottostante. Praticare un foro che si adatti al tubo in PVC. Ripetere sull'angolo opposto. Segna le strade con del nastro adesivo bianco.
Passaggio 7: finalizzazione del telaio in PVC
Sul tubo superiore, praticare un foro che possa contenere un fascio di fili. Un foro grezzo va bene fintanto che è possibile accedere all'interno dei tubi. Infilare i fili attraverso i tubi in PVC e i giunti a gomito per una prova di adattamento. Una volta che tutto è stato finalizzato, dipingi il PVC con della vernice spray nera per ripulire l'aspetto del telaio principale. Taglia un piccolo spazio in uno dei tubi in PVC per adattarlo a un giunto a T. Aggiungi un tubo in PVC a questo giunto a T per far pendere il semaforo. Il diametro potrebbe essere lo stesso del telaio principale (1/2 ), ma se usi un tubo più sottile, assicurati che i 7 fili possano passare attraverso. Pratica un foro attraverso questo tubo per far penzolare il semaforo.
Passaggio 8: cablaggio (parte 2)
Ricollegare tutto come testato in precedenza. Ricontrolla il semaforo e il cablaggio con una breadboard per confermare che tutti i collegamenti siano stati effettuati. Saldare il semaforo ai fili che passano attraverso il braccio del giunto a T. Avvolgi i fili scoperti con del nastro isolante per evitare cortocircuiti e per un aspetto più pulito.
Passaggio 9: finito
Per eseguire il codice, assicurati di impostare la tua fonte come ~/.profile e cd nella posizione del tuo progetto.
Passaggio 10: extra (foto)
Consigliato:
Tracker Covid19 in tempo reale che utilizza ESP8266 e OLED - Dashboard Covid19 in tempo reale: 4 passaggi
Tracker Covid19 in tempo reale che utilizza ESP8266 e OLED | Dashboard Covid19 in tempo reale: visita il sito Web Techtronic Harsh: http://techtronicharsh.com Ovunque c'è un enorme focolaio del Novel Corona Virus (COVID19). È diventato necessario tenere d'occhio l'attuale scenario di COVID-19 nel mondo. Quindi, essendo a casa, questo è stato il p
Cursore della telecamera di rilevamento degli oggetti con asse di rotazione. Stampato in 3D e costruito su RoboClaw DC Motor Controller e Arduino: 5 passaggi (con immagini)
Cursore della telecamera di rilevamento degli oggetti con asse di rotazione. Stampato in 3D e costruito sul RoboClaw DC Motor Controller e Arduino: questo progetto è stato uno dei miei progetti preferiti da quando ho avuto modo di combinare il mio interesse per la creazione di video con il fai-da-te. Ho sempre guardato e voluto emulare quegli scatti cinematografici nei film in cui una telecamera si muove su uno schermo mentre fa una panoramica per tracciare
Telefono cellulare di base che utilizza il kit di rilevamento STM32F407 e il modulo GSM A6: 14 passaggi (con immagini)
Telefono cellulare di base che utilizza il kit di rilevamento STM32F407 e il modulo GSM A6: hai mai desiderato creare un fantastico progetto integrato?. Se sì, che ne dici di costruire uno dei gadget più popolari e preferiti da tutti, ad esempio il cellulare!!!. In questo Instructable, ti guiderò su come costruire un telefono cellulare di base utilizzando l'STM
Modelli LED (diversi modelli di luce): 3 passaggi
Motivi LED (diversi motivi di luce): l'idea: il mio progetto è un motivo a colori LED. Il progetto contiene 6 LED che sono tutti alimentati e comunicano con Arduino. Ci sono 4 pattern diversi che scorreranno e verranno riprodotti in loop. Quando uno schema finisce, un altro tak
Rilevamento dei volti in tempo reale sul RaspberryPi-4: 6 passaggi (con immagini)
Rilevamento del volto in tempo reale su RaspberryPi-4: In questo Instructable eseguiremo il rilevamento del volto in tempo reale su Raspberry Pi 4 con Shunya O/S utilizzando la libreria Shunyaface. Puoi ottenere un frame rate di rilevamento di 15-17 sul RaspberryPi-4 seguendo questo tutorial