Taula de continguts:

Analitzador de patrons de trànsit mitjançant la detecció d'objectes en viu: 11 passos (amb imatges)
Analitzador de patrons de trànsit mitjançant la detecció d'objectes en viu: 11 passos (amb imatges)

Vídeo: Analitzador de patrons de trànsit mitjançant la detecció d'objectes en viu: 11 passos (amb imatges)

Vídeo: Analitzador de patrons de trànsit mitjançant la detecció d'objectes en viu: 11 passos (amb imatges)
Vídeo: DJI Mavic Mini Fly More Combo with Hard Shell Travel Case Black BH # DJMAVICMCK 2020 2024, Juliol
Anonim
Image
Image
Analitzador de patrons de trànsit mitjançant la detecció d'objectes en viu
Analitzador de patrons de trànsit mitjançant la detecció d'objectes en viu

Al món actual, els semàfors són essencials per a una carretera segura. Tanmateix, moltes vegades, els semàfors poden ser molestos en situacions en què algú s’acosta al llum tal com es posa vermell. Això perd el temps, sobretot si la llum impedeix que un sol vehicle passi per la intersecció quan no hi ha ningú més a la carretera. La meva innovació és un semàfor intel·ligent que utilitza la detecció d’objectes en directe des d’una càmera per comptar el nombre de cotxes de cada carretera. El maquinari que faré servir per aquest projecte és un Raspberry Pi 3, un mòdul de càmera i diversos maquinaris electrònics per a la pròpia llum. Utilitzant OpenCV al Raspberry Pi, la informació recollida s’executarà mitjançant un codi que controla els LED mitjançant el GPIO. Depenent d’aquestes xifres, el semàfor canviarà i deixarà passar els cotxes en l’ordre més òptim. En aquest cas, es deixaria passar el carril amb més cotxes de manera que el carril amb menys cotxes estaria al ralentí, reduint la contaminació atmosfèrica. D’aquesta manera s’eliminarien les situacions en què s’aturen molts cotxes mentre no hi ha cotxes a la carretera que es creua. Això no només estalvia temps per a tothom, sinó que també estalvia el medi ambient. La quantitat de temps que es deté la gent en un senyal d’aturada amb el motor al ralentí augmenta la quantitat de contaminació atmosfèrica, de manera que, creant un semàfor intel·ligent, puc optimitzar els patrons de llum perquè els cotxes passin el mínim temps possible amb el vehicle aturat. En última instància, aquest sistema de semàfors es podria implementar a ciutats, suburbis o fins i tot àrees rurals per ser més eficient per a la gent, reduiria la contaminació atmosfèrica.

Pas 1: llista de peces

Materials:

Raspberry Pi 3 Model B v1.2

Càmera Raspberry Pi v2.1

Alimentació micro USB de 5V / 1A

Monitor HDMI, teclat, targeta SD del ratolí amb Raspbian Jessie

Cable de ruptura GPIO Raspberry Pi

LEDs vermells, grocs i verds (2 de cada color)

Connectors femenins per a Raspberry Pi (7 colors únics)

Assortiment de filferro de calibre 24 (diferents colors) + tub retràctil

Tauler o plataforma de fusta de 2’x2’

Cargols de fusta

Superfície negra (cartró, tauler d'escuma, cartell, etc.)

Cinta blanca (o de qualsevol color que no sigui el negre) per a marques de carretera

Pintura en aerosol negre (per a PVC)

Tub de PVC de ½ amb juntes de colze de 90 graus (2), endoll en T (1), adaptador femella (2)

Eines

Soldador

Impressora 3D

Trepant amb diverses broques

Taula de pa

Pistola de calor

Pas 2: Configuració del Raspberry Pi

Carregueu la targeta SD al Raspberry Pi i arrenceu.

Seguiu aquesta guia per instal·lar les biblioteques OpenCV necessàries. Assegureu-vos de tenir temps per fer aquest pas, ja que la instal·lació de la biblioteca OpenCV pot trigar un parell d’hores. Assegureu-vos d’instal·lar i configurar la càmera també aquí.

També heu d’instal·lar pip:

picamera

gpiozero

RPi. GPIO

Aquí teniu el codi finalitzat:

des de picamera.array importar PiRGBArray

d'importació de càmeres d'imatges PiCamera

importació picamera.array

importa numpy com a np

temps d'importació

importar cv2

importar RPi. GPIO com a GPIO

temps d'importació

GPIO.setmode (GPIO. BCM)

per a i a (23, 25, 16, 21):

GPIO.setup (i, GPIO. OUT)

cam = PiCamera ()

cam.resolution = (480, 480)

cam.framerate = 30

raw = PiRGBArray (càmera, mida = (480, 480))

time.sleep (0,1)

colorLower = np.array ([0, 100, 100])

colorUpper = np.array ([179, 255, 255])

initvert = 0

inithoriz = 0

comptador = 0

per al marc a cam.capture_continuous (raw, format = "bgr", use_video_port = True):

frame = frame.array

hsv = cv2.cvtColor (marc, cv2. COLOR_BGR2HSV)

mask = cv2.inRange (hsv, colorLower, colorUpper)

màscara = cv2.blur (màscara, (3, 3))

mask = cv2.dilate (màscara, cap, iteracions = 5)

mask = cv2.erode (màscara, Cap, iteracions = 1)

mask = cv2.dilate (màscara, cap, iteracions = 3)

jo, batre = llindar cv2. (màscara, 127, 255, cv2. THRESH_BINARY)

cnts = cv2.findContours (batre, cv2. RETR_TREE, cv2. CHAIN_APPROX_SIMPLE) [- 2]

centre = Cap

vert = 0

horitzó = 0

si len (cnts)> 0:

per a c en cnts:

(x, y), radi = cv2.min Cercle de tancament (c)

centre = (int (x), int (y))

radi = int (radi)

cv2.circle (marc, centre, radi, (0, 255, 0), 2)

x = int (x)

y = int (y)

si 180 <x <300:

si y> 300:

vert = vert +1

elif y <180:

vert = vert +1

en cas contrari:

vert = vert

si 180 <y <300:

si x> 300:

horiz = horiz +1

elif x <180:

horiz = horiz +1

en cas contrari:

horiz = horiz

si vert! = initvert:

imprimir "Cotxes en carril vertical:" + str (vert)

initvert = vert

imprimir "Cotxes en carril horitzontal:" + str (horiz)

inithoriz = horiz

imprimir '----------------------------'

si horiz! = inithoriz:

imprimir "Cotxes en carril vertical:" + str (vert)

initvert = vert

imprimir "Cotxes en carril horitzontal:" + str (horiz)

inithoriz = horiz

imprimir '----------------------------'

si vert <horiz:

Sortida GPIO (23, GPIO. HIGH)

GPIO.output (21, GPIO. HIGH)

GPIO.output (16, GPIO. LOW)

GPIO.output (25, GPIO. LOW)

si horiz <vert:

Sortida GPIO (16, GPIO. HIGH)

Sortida GPIO (25, GPIO. HIGH)

GPIO.output (23, GPIO. LOW)

GPIO.output (21, GPIO. LOW)

cv2.imshow ("Marc", marc)

cv2.imshow ("HSV", hsv)

cv2.imshow ("Thresh", batre)

raw.truncate (0)

si cv2.waitKey (1) & 0xFF == ord ('q'):

trencar

cv2.destroyAllWindows ()

GPIO.cleanup ()

Pas 3: Raspberry Pi i muntatge de la càmera

Raspberry Pi i muntatge de càmera
Raspberry Pi i muntatge de càmera
Raspberry Pi i muntatge de càmera
Raspberry Pi i muntatge de càmera
Raspberry Pi i muntatge de càmera
Raspberry Pi i muntatge de càmera
Raspberry Pi i muntatge de càmera
Raspberry Pi i muntatge de càmera

Imprimeix en 3D la caixa i el muntatge i el muntatge de la càmera.

Pas 4: muntatge del semàfor

Muntatge de semàfors
Muntatge de semàfors
Muntatge de semàfors
Muntatge de semàfors
Muntatge de semàfors
Muntatge de semàfors

Proveu el semàfor amb una taula de tall. Cada conjunt de LEDs oposats comparteixen un ànode i tots comparteixen un càtode comú (terra). Hi hauria d’haver un total de 7 cables d’entrada: 1 per cada parell de LEDS (6) + 1 cable de terra. Soldeu i munteu els semàfors.

Pas 5: cablejat (primera part)

Cablejat (primera part)
Cablejat (primera part)
Cablejat (primera part)
Cablejat (primera part)
Cablejat (primera part)
Cablejat (primera part)
Cablejat (primera part)
Cablejat (primera part)

Soldeu els passadors de capçal femení a uns 5 peus de filferro. Aquests són els costats que aquests cables serpentegaran a través de les canonades de PVC més endavant. Assegureu-vos de distingir els diferents jocs de llums (2 x 3 colors i 1 terra). En aquest cas, he marcat els extrems d’un altre conjunt de cables vermells, grocs i blaus amb punxades, de manera que sé quin és quin.

Pas 6: Construir el medi ambient

Construint el medi ambient
Construint el medi ambient
Construint el medi ambient
Construint el medi ambient
Construint el medi ambient
Construint el medi ambient
Construint el medi ambient
Construint el medi ambient

Construir el medi ambient Feu un palet de fusta quadrat de 2 peus així. La fusta de ferralla està molt bé, ja que quedarà tapada. Practicar un forat que s’adapti perfectament al vostre adaptador. Traieu els cargols pels costats del palet per fixar la canonada de PVC al seu lloc. Talleu el tauler d'escuma negra perquè coincideixi amb el palet de fusta que hi ha a sota. Practicar un forat que s’adapti al voltant de la canonada de PVC. Repetiu a la cantonada oposada. Marqueu les carreteres amb una mica de cinta blanca.

Pas 7: Finalització del marc de PVC

Finalització del marc de PVC
Finalització del marc de PVC
Finalització del marc de PVC
Finalització del marc de PVC
Finalització del marc de PVC
Finalització del marc de PVC

A la canonada superior, foradeu un forat que pugui encabir un paquet de cables. Un forat rugós està bé sempre que es pugui accedir a l’interior de les canonades. Col·loqueu els cables a través de les canonades de PVC i les articulacions del colze per obtenir un ajust adequat. Un cop acabat tot, pinteu el PVC amb una mica de pintura en aerosol negra per netejar l’aspecte del marc principal. Talleu una petita bretxa en una de les canonades de PVC per adaptar-la a una junta en T. Afegiu una canonada de PVC a aquesta junta t perquè el semàfor pengi. El diàmetre podria ser el mateix que el marc principal (1/2 ), tot i que si utilitzeu una canonada més fina, assegureu-vos que els 7 cables puguin serpentejar-los. Feu un forat a través d'aquesta canonada perquè pengi el semàfor.

Pas 8: cablejat (part 2)

Cablatge (part 2)
Cablatge (part 2)
Cablatge (part 2)
Cablatge (part 2)
Cablatge (part 2)
Cablatge (part 2)

Torneu a connectar-ho tot tal com s’ha provat anteriorment. Comproveu de nou el semàfor i el cablejat amb una placa de verificació per confirmar que s'han fet totes les connexions. Soldeu el semàfor als cables que passen pel braç de l’articulació en T. Emboliqueu els cables exposats amb cinta elèctrica per evitar curtmetratges i per obtenir un aspecte més net.

Pas 9: acabat

Acabat!
Acabat!
Acabat!
Acabat!
Acabat!
Acabat!
Acabat!
Acabat!

Per executar el codi, assegureu-vos de configurar la font com a ~ /.profile i cd a la ubicació del projecte.

Pas 10: Extres (fotos)

Recomanat: