Table des matières:
- Étape 1: Liste des pièces
- Étape 2: Configuration du Raspberry Pi
- Étape 3: Raspberry Pi et support de caméra
- Étape 4: Assemblage des feux de circulation
- Étape 5: Câblage (Partie 1)
- Étape 6: Construire l'environnement
- Étape 7: Finalisation du cadre en PVC
- Étape 8: Câblage (Partie 2)
- Étape 9: Terminé
- Étape 10: Extras (Photos)
Vidéo: Analyseur de modèle de trafic utilisant la détection d'objets en direct : 11 étapes (avec images)
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:09
Dans le monde d'aujourd'hui, les feux de circulation sont essentiels pour une route sûre. Cependant, souvent, les feux de circulation peuvent être ennuyeux dans des situations où quelqu'un s'approche du feu au moment où il devient rouge. Cela fait perdre du temps, surtout si le feu empêche un seul véhicule de traverser l'intersection alors qu'il n'y a personne d'autre sur la route. Mon innovation est un feu de circulation intelligent qui utilise la détection d'objets en direct à partir d'une caméra pour compter le nombre de voitures sur chaque route. Le matériel que j'utiliserai pour ce projet est un Raspberry Pi 3, un module de caméra et divers matériels électroniques pour la lumière elle-même. En utilisant OpenCV sur le Raspberry Pi, les informations recueillies seront exécutées via un code qui contrôle les LED via le GPIO. En fonction de ces chiffres, le feu de circulation changera, laissant passer les voitures dans l'ordre le plus optimal. Dans ce cas, la voie avec le plus de voitures serait laissée passer de sorte que la voie avec moins de voitures tournerait au ralenti, réduisant ainsi la pollution de l'air. Cela éliminerait les situations où de nombreuses voitures sont arrêtées alors qu'il n'y a pas de voitures sur la route qui se croise. Non seulement cela fait gagner du temps à tout le monde, mais cela préserve également l'environnement. La durée pendant laquelle les gens sont arrêtés à un panneau d'arrêt avec leur moteur au ralenti augmente la quantité de pollution de l'air, donc en créant un feu de circulation intelligent, je suis en mesure d'optimiser les modèles d'éclairage afin que les voitures passent le moins de temps possible avec leur véhicule arrêté. À terme, ce système de feux tricolores pourrait être mis en place dans les villes, les banlieues ou même les zones rurales pour être plus efficace pour les personnes et permettrait de réduire la pollution de l'air.
Étape 1: Liste des pièces
Matériaux:
Raspberry Pi 3 modèle B v1.2
Caméra Raspberry Pi v2.1
Alimentation micro USB 5V/1A
Moniteur HDMI, clavier, souris Carte SD avec Raspbian Jessie
Câble de dérivation GPIO Raspberry Pi
LED rouge, jaune, verte (2 de chaque couleur)
Connecteurs femelles pour Raspberry Pi (7 couleurs uniques)
Fil de calibre 24 assorti (différentes couleurs) + gaine thermorétractable
Panneau ou plateforme de bois 2'x2'
Les vis à bois
Surface noire (carton, carton mousse, panneau d'affichage, etc.)
Ruban blanc (ou de toute autre couleur que le noir) pour les marquages routiers
Peinture noire en aérosol (pour PVC)
Tuyau PVC ½ avec joints coudés à 90 degrés(2), douille en T (1), adaptateur femelle (2)
Outils
Fer à souder
Imprimante 3D
Perceuse avec divers forets
Planche à pain
Pistolet thermique
Étape 2: Configuration du Raspberry Pi
Chargez la carte SD dans le Raspberry Pi et démarrez.
Suivez ce guide pour installer les bibliothèques OpenCV requises. Assurez-vous d'avoir le temps de faire cette étape, car l'installation de la bibliothèque OpenCV peut prendre quelques heures. Assurez-vous également d'installer et de configurer votre caméra ici.
Vous devez également pip installer:
pic-camera
gpiozero
RPi. GPIO
Voici le code finalisé:
depuis picamera.array importer PiRGBArray
depuis picamera importer PiCamera
importer picamera.array
importer numpy en tant que np
heure d'importation
importer cv2
importer RPi. GPIO en tant que GPIO
heure d'importation
GPIO.setmode(GPIO. BCM)
pour i dans (23, 25, 16, 21):
GPIO.setup(i, GPIO. OUT)
cam = PiCamera()
cam.résolution=(480, 480)
cam.framerate=30
raw=PiRGBArray(came, taille=(480, 480))
temps.sommeil(0.1)
colorLower = np.array([0, 100, 100])
colorUpper = np.array([179, 255, 255])
initvert = 0
initialiser = 0
compteur = 0
pour l'image dans cam.capture_continuous(raw, format="bgr", use_video_port=True):
frame = frame.array
hsv = cv2.cvtColor(cadre, cv2. COLOR_BGR2HSV)
mask = cv2.inRange(hsv, colorLower, colorUpper)
masque = cv2.blur(masque, (3, 3))
mask= cv2.dilate(masque, Aucun, itérations=5)
mask= cv2.erode(masque, Aucun, itérations=1)
mask= cv2.dilate(masque, Aucun, itérations=3)
moi, seuil = cv2.threshold(mask, 127, 255, cv2. THRESH_BINARY)
cnts = cv2.findContours(seuil, cv2. RETR_TREE, cv2. CHAIN_APPROX_SIMPLE)[-2]
centre = aucun
vert = 0
horiz = 0
si longueur(cnts) > 0:
pour c en cnts:
(x, y), rayon = cv2.minEnclosingCircle(c)
centre = (int(x), int(y))
rayon = int(rayon)
cv2.circle(cadre, centre, rayon, (0, 255, 0), 2)
x = entier(x)
y = entier(y)
si 180 < x < 300:
si y > 300:
vert = vert +1
elif y < 180:
vert = vert +1
autre:
vert = vert
si 180 < y < 300:
si x > 300:
horiz = horiz +1
elif x < 180:
horiz = horiz +1
autre:
horiz = horiz
si vert != initvert:
print"Voitures en voie verticale: " + str(vert)
initvert = vert
print"Voitures en voie horizontale: " + str(horiz)
inithoriz = horiz
imprimer '----------------------------'
si horiz != inithoriz:
print"Voitures en voie verticale: " + str(vert)
initvert = vert
print"Voitures en voie horizontale: " + str(horiz)
inithoriz = horiz
imprimer '----------------------------'
si vert < horiz:
GPIO.sortie(23, GPIO. HIGH)
GPIO.sortie(21, GPIO. HIGH)
GPIO.sortie (16, GPIO. LOW)
GPIO.sortie (25, GPIO. LOW)
si horiz < vert:
GPIO.sortie (16, GPIO. HIGH)
GPIO.sortie (25, GPIO. HIGH)
GPIO.sortie(23, GPIO. LOW)
GPIO.sortie(21, GPIO. LOW)
cv2.imshow("Cadre", cadre)
cv2.imshow("HSV", hsv)
cv2.imshow("Seuil", seuil)
raw.truncate(0)
si cv2.waitKey(1) & 0xFF == ord('q'):
Pause
cv2.destroyAllWindows()
GPIO.cleanup()
Étape 3: Raspberry Pi et support de caméra
Imprimez en 3D le boîtier et le support de caméra et assemblez.
Étape 4: Assemblage des feux de circulation
Testez le feu de circulation avec une planche à pain. Chaque ensemble opposé de LED partage une anode et tous partagent une cathode commune (masse). Il doit y avoir un total de 7 fils d'entrée: 1 pour chaque paire de LEDS (6) + 1 fil de terre. Souder et assembler les feux de circulation.
Étape 5: Câblage (Partie 1)
Soudez les broches femelles d'en-tête à environ 5 pieds de fil. Ce sont les côtés que ces fils serpenteront à travers les tuyaux en PVC plus tard. Assurez-vous de pouvoir distinguer les différents jeux de lumières (2 x 3 couleurs et 1 sol). Dans ce cas, j'ai marqué les extrémités d'un autre ensemble de fils rouges, jaunes et bleus avec un sharpie pour que je sache lequel est lequel.
Étape 6: Construire l'environnement
Construire l'environnement Fabriquez une palette en bois de 2 pieds carrés comme celle-ci. Le bois de rebut est très bien car il sera recouvert. Percez un trou qui correspond juste à votre adaptateur. Percez des vis à travers les côtés de la palette pour fixer le tuyau en PVC en place. Coupez le panneau de mousse noir pour qu'il corresponde à la palette en bois en dessous. Percez un trou qui s'adapte autour du tuyau en PVC. Répétez sur le coin opposé. Marquez les routes avec du ruban blanc.
Étape 7: Finalisation du cadre en PVC
Sur le tuyau supérieur, percez un trou pouvant contenir un faisceau de fils. Un trou rugueux est très bien tant que vous pouvez accéder à l'intérieur des tuyaux. Faites passer les fils à travers les tuyaux en PVC et les joints coudés pour un essai d'ajustement. Une fois que tout est finalisé, peignez le PVC avec de la peinture en aérosol noire pour nettoyer l'apparence du cadre principal. Coupez un petit espace dans l'un des tuyaux en PVC pour s'adapter à un joint en T. Ajoutez un tuyau en PVC à ce joint en T pour que le feu de circulation pende. Le diamètre peut être le même que celui du cadre principal (1/2 ), mais si vous utilisez un tuyau plus fin, assurez-vous que les 7 fils peuvent passer à travers. Percez un trou dans ce tuyau pour y suspendre le feu de circulation.
Étape 8: Câblage (Partie 2)
Re-câblez tout comme testé précédemment. Vérifiez le feu de circulation et le câblage avec une planche à pain pour confirmer que toutes les connexions ont été effectuées. Soudez le feu de circulation aux fils passant par le bras en T. Enveloppez les fils exposés avec du ruban électrique pour éviter tout court-circuit et pour un look plus propre.
Étape 9: Terminé
Pour exécuter le code, assurez-vous de définir votre source en tant que ~/.profile et cd à l'emplacement de votre projet.
Étape 10: Extras (Photos)
Conseillé:
Détection d'objets avec les cartes Sipeed MaiX (Kendryte K210): 6 étapes
Détection d'objets avec les cartes Sipeed MaiX (Kendryte K210): Dans la continuité de mon article précédent sur la reconnaissance d'images avec les cartes Sipeed MaiX, j'ai décidé d'écrire un autre tutoriel, axé sur la détection d'objets. Il y a eu récemment du matériel intéressant avec la puce Kendryte K210, y compris S
Compteur d'objets utilisant l'IR : 9 étapes (avec images)
Compteur d'objets utilisant l'IR : Dans ce petit projet, nous allons créer un compteur d'objets entièrement automatique avec un simple affichage par segment. Ce projet est assez simple et n'intègre que de l'électronique simple. Ce circuit est basé sur l'Infrarouge pour détecter des objets, pour en savoir plus
Gesture Hawk : Robot contrôlé par gestes manuels utilisant une interface basée sur le traitement d'images : 13 étapes (avec images)
Gesture Hawk : Robot contrôlé par les gestes de la main utilisant une interface basée sur le traitement d'images : Gesture Hawk a été présenté dans TechEvince 4.0 comme une simple interface homme-machine basée sur le traitement d'images. Son utilité réside dans le fait qu'aucun capteur supplémentaire ou portable, à l'exception d'un gant, n'est requis pour contrôler la voiture robotique qui fonctionne sur différents
Scannez des objets à proximité pour créer un modèle 3D à l'aide d'ARDUINO : 5 étapes (avec des images)
Scannez des objets à proximité pour créer un modèle 3D à l'aide d'ARDUINO : ce projet est spécifique en utilisant le capteur à ultrasons HC-SR04 pour rechercher des objets à proximité. Pour créer un modèle 3D, vous devez balayer le capteur dans la direction perpendiculaire. Vous pouvez programmer l'Arduino pour déclencher une alarme lorsque le capteur détecte un objet avec
Détection visuelle d'objets avec une caméra (TfCD) : 15 étapes (avec photos)
Détection visuelle d'objets avec une caméra (TfCD) : Les services cognitifs capables de reconnaître des émotions, des visages de personnes ou des objets simples sont actuellement encore à un stade précoce de développement, mais avec l'apprentissage automatique, cette technologie se développe de plus en plus. Nous pouvons nous attendre à voir plus de cette magie dans