İçindekiler:
- Adım 1: Parça Listesi
- 2. Adım: Ahududu Pi'yi Ayarlama
- 3. Adım: Raspberry Pi ve Kamera Bağlantısı
- Adım 4: Trafik Işığı Montajı
- Adım 5: Kablolama (Bölüm 1)
- Adım 6: Çevreyi İnşa Etmek
- Adım 7: PVC Çerçevenin Sonlandırılması
- Adım 8: Kablolama (Bölüm 2)
- Adım 9: Tamamlandı
- Adım 10: Ekstralar (Fotoğraflar)
Video: Canlı Nesne Algılamayı Kullanan Trafik Modeli Analizörü: 11 Adım (Resimlerle)
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:20
Günümüz dünyasında, trafik ışıkları güvenli bir yol için gereklidir. Bununla birlikte, çoğu zaman, trafik ışıkları, kırmızıya dönerken birinin ışığa yaklaştığı durumlarda can sıkıcı olabilir. Bu, özellikle yolda başka kimse olmadığında ışık tek bir aracın kavşaktan geçmesini engelliyorsa zaman kaybettirir. Yeniliğim, her yoldaki araba sayısını saymak için bir kameradan canlı nesne algılamayı kullanan akıllı bir trafik ışığı. Bu proje için kullanacağım donanım bir Raspberry Pi 3, bir kamera modülü ve ışığın kendisi için çeşitli elektronik donanımlardır. Raspberry Pi'de OpenCV kullanılarak toplanan bilgiler, LED'leri GPIO aracılığıyla kontrol eden kod aracılığıyla çalıştırılacaktır. Bu sayılara bağlı olarak, trafik ışığı değişecek ve arabaların en uygun sırada geçmesine izin verecektir. Bu durumda, en çok arabanın olduğu şerit, daha az arabanın olduğu şerit boşta kalacak ve hava kirliliğini azaltacak şekilde geçilecek. Bu, kesişen yolda hiç araba yokken birçok arabanın durduğu durumları ortadan kaldıracaktır. Bu sadece herkes için zaman kazandırmakla kalmaz, aynı zamanda çevreyi de korur. İnsanların motorları rölantideyken bir dur işaretinde durduruldukları süre hava kirliliği miktarını artırıyor, bu nedenle akıllı bir trafik ışığı oluşturarak, arabaların araçları dururken mümkün olan en az zamanı harcaması için ışık düzenlerini optimize edebiliyorum.. Sonuç olarak, bu trafik ışığı sistemi şehirlerde, banliyölerde ve hatta kırsal alanlarda uygulanarak insanlar için daha verimli olması hava kirliliğini azaltacaktır.
Adım 1: Parça Listesi
Malzemeler:
Raspberry Pi 3 Model B v1.2
Ahududu Pi Kamera v2.1
5V/1A mikro USB güç kaynağı
Raspbian Jessie ile HDMI monitör, klavye, fare SD kartı
Raspberry Pi GPIO koparma kablosu
Kırmızı, sarı, yeşil LED'ler (her renkten 2 adet)
Raspberry Pi için dişi konektörler (7 benzersiz renk)
Çeşitli 24 gauge tel (farklı renkler) + ısıyla daralan makaron
2'x2' ahşap panel veya platform
Tahta çivileri
Siyah yüzey (karton, köpük pano, poster panosu vb.)
Yol işaretleri için beyaz (veya siyah dışında herhangi bir renk) bant
Siyah sprey boya (PVC için)
90 derece dirsek bağlantılı ½” PVC boru(2), T soket (1), dişi adaptör (2)
Aletler
Havya
3 boyutlu yazıcı
Çeşitli matkap uçları ile matkap
ekmek tahtası
Isı tabancası
2. Adım: Ahududu Pi'yi Ayarlama
SD kartı Raspberry Pi'ye yükleyin ve başlatın.
Gerekli OpenCV kitaplıklarını kurmak için bu kılavuzu izleyin. OpenCV kitaplığının yüklenmesi birkaç saat sürebileceğinden, bu adımı yapmak için zamanınız olduğundan emin olun. Ayrıca kameranızı buraya kurduğunuzdan ve ayarladığınızdan emin olun.
Ayrıca pip kurulumunu da yapmalısınız:
fotoğraf makinesi
gpiozero
RPi. GPIO
İşte kesinleşmiş kod:
picamera.array'den PiRGBArray'i içe aktar
picamera'dan içe aktarma PiCamera
picamera.array'i içe aktar
numpy'yi np olarak içe aktar
ithalat zamanı
cv2'yi içe aktar
RPi. GPIO'yu GPIO olarak içe aktar
ithalat zamanı
GPIO.setmode(GPIO. BCM)
i için (23, 25, 16, 21):
GPIO.setup(i, GPIO. OUT)
kamera = PiCamera()
kamera.çözünürlük=(480, 480)
kamera.çerçeve hızı=30
ham=PiRGBArray(kamera, boyut=(480, 480))
zaman.uyku(0.1)
colorLower = np.array([0, 100, 100])
colorUpper = np.array([179, 255, 255])
initvert = 0
başlangıç = 0
sayaç = 0
cam.capture_continuous(raw, format="bgr", use_video_port=True) içindeki çerçeve için:
çerçeve = çerçeve.dizi
hsv = cv2.cvtColor(çerçeve, cv2. COLOR_BGR2HSV)
maske = cv2.inRange(hsv, colorLower, colorUpper)
maske = cv2.blur(maske, (3, 3))
maske= cv2.dilate(maske, Yok, yinelemeler=5)
maske= cv2.erode(maske, Yok, yineleme=1)
maske= cv2.dilate(maske, Yok, yinelemeler=3)
ben, eşik = cv2.threshold(maske, 127, 255, cv2. THRESH_BINARY)
cnts = cv2.findContours(thresh, cv2. RETR_TREE, cv2. CHAIN_APPROX_SIMPLE)[-2]
merkez = Yok
dikey = 0
ufuk = 0
len(cnts) > 0 ise:
cnts'de c için:
(x, y), yarıçap = cv2.minEnclosingCircle(c)
merkez = (int(x), int(y))
yarıçap = int(yarıçap)
cv2.circle(çerçeve, merkez, yarıçap, (0, 255, 0), 2)
x = int(x)
y = int(y)
180 < x < 300 ise:
y > 300 ise:
dikey = dikey +1
elif y < 180:
dikey = dikey +1
Başka:
dikey = dikey
180 < y < 300 ise:
x > 300 ise:
ufuk = yatay +1
elif x < 180:
ufuk = yatay +1
Başka:
ufuk = ufuk
eğer dikey != initvert:
print"Dikey şeritte arabalar: " + str(vert)
initvert = dikey
print"Yatay şeritteki arabalar: " + str(horiz)
inithoriz = ufuk
Yazdır '----------------------------'
eğer ufuk != inthoriz:
print"Dikey şeritte arabalar: " + str(vert)
initvert = dikey
print"Yatay şeritteki arabalar: " + str(horiz)
inithoriz = ufuk
Yazdır '----------------------------'
eğer dikey < yatay ise:
GPIO.output(23, GPIO. HIGH)
GPIO.output(21, GPIO. HIGH)
GPIO.output(16, GPIO. LOW)
GPIO.output(25, GPIO. LOW)
eğer yatay < dikey:
GPIO.output(16, GPIO. HIGH)
GPIO.output(25, GPIO. HIGH)
GPIO.output(23, GPIO. LOW)
GPIO.output(21, GPIO. LOW)
cv2.imshow("Çerçeve", çerçeve)
cv2.imshow("HSV", hsv)
cv2.imshow("Eş", harman)
ham.truncate(0)
eğer cv2.waitKey(1) & 0xFF == ord('q'):
kırmak
cv2.destroyAllWindows()
GPIO.cleanup()
3. Adım: Raspberry Pi ve Kamera Bağlantısı
Kasayı ve kamerayı 3D yazdırın ve monte edin.
Adım 4: Trafik Işığı Montajı
Bir breadboard ile trafik ışıklarını test edin. Her bir karşıt LED seti bir anot paylaşır ve hepsi ortak bir katodu (toprak) paylaşır. Toplam 7 giriş kablosu olmalıdır: Her bir LED (6) çifti için 1 + 1 topraklama kablosu. Trafik ışıklarını lehimleyin ve monte edin.
Adım 5: Kablolama (Bölüm 1)
Dişi başlık pimlerini yaklaşık 5 fit kabloya lehimleyin. Bunlar, bu tellerin daha sonra PVC boruların içinden kıvrılacağı taraflardır. Farklı ışık setlerini (2 x 3 renk ve 1 zemin) ayırt edebildiğinizden emin olun. Bu durumda, hangisinin hangisi olduğunu anlamak için başka bir kırmızı, sarı ve mavi kablo setinin uçlarını şarpi ile işaretledim.
Adım 6: Çevreyi İnşa Etmek
Çevreyi inşa etmek Bunun gibi 2 fit kare ahşap palet yapın. Hurda odun, üstü kapatılacağı için iyidir. Adaptörünüze tam uyan bir delik açın. PVC boruyu yerine sabitlemek için paletin kenarlarından vidaları delin. Altındaki ahşap palete uyacak şekilde siyah köpük levhayı kesin. PVC borunun etrafına uyan bir delik açın. Karşı köşede tekrarlayın. Yolları biraz beyaz bantla işaretleyin.
Adım 7: PVC Çerçevenin Sonlandırılması
Üst boruda, bir demet telin sığabileceği bir delik açın. Boruların iç kısımlarına erişebildiğiniz sürece kaba bir delik iyidir. Bir test uyumu için kabloları PVC borulardan ve dirsek eklemlerinden geçirin. Her şey tamamlandığında, ana çerçevenin görünümünü temizlemek için PVC'yi biraz siyah sprey boya ile boyayın. Bir T-bağlantısı takmak için PVC borulardan birinde küçük bir boşluk kesin. Trafik ışığının sarkması için bu t-bağlantıya bir PVC boru ekleyin. Çap, ana çerçeve (1/2 ) ile aynı olabilir, ancak daha ince bir boru kullanırsanız, 7 telin kıvrılabileceğinden emin olun. Trafik ışığının asılması için bu boruya bir delik açın.
Adım 8: Kablolama (Bölüm 2)
Her şeyi daha önce test edildiği gibi yeniden bağlayın. Tüm bağlantıların yapıldığını doğrulamak için trafik ışığını ve devre tahtası ile kabloları iki kez kontrol edin. Trafik ışıklarını T-eklem kolundan gelen tellere lehimleyin. Kısa devre olmasını önlemek ve daha temiz bir görünüm için açıkta kalan kabloları elektrik bandıyla sarın.
Adım 9: Tamamlandı
Kodu çalıştırmak için kaynağınızı ~/.profile ve proje konumunuza cd olarak ayarladığınızdan emin olun.
Adım 10: Ekstralar (Fotoğraflar)
Önerilen:
Arduino Kullanan Uzak Nesne Sensörü: 7 Adım
Arduino Kullanan Uzak Nesne Sensörü: Günümüzde, Yapımcılar, Geliştiriciler, projelerin prototiplerinin hızlı bir şekilde geliştirilmesi için Arduino'yu tercih ediyor. Arduino, kullanımı kolay donanım ve yazılıma dayalı açık kaynaklı bir elektronik platformdur. Arduino'nun çok iyi bir kullanıcı topluluğu var. Bunda
Nesne Yönelimli Programlama: Nesne Oluşturma Şekil Delgeç Kullanarak Öğrenme/Öğretme Yöntemi/Tekniği: 5 Adım
Nesneye Yönelik Programlama: Nesneler Oluşturma Shape Punch Kullanarak Öğrenme/Öğretme Yöntemi/Tekniği: Nesne yönelimli programlamaya yeni başlayan öğrenciler için öğrenme/öğretme yöntemi. Bu, sınıflardan nesne oluşturma sürecini görselleştirmelerine ve görmelerine izin vermenin bir yoludur. Parçalar:1. EkTools 2 inç büyük zımba; katı şekiller en iyisidir.2. Kağıt parçası veya c
ESP8266 ve OLED Kullanan Canlı Covid19 İzleyici - Gerçek Zamanlı Covid19 Panosu: 4 Adım
ESP8266 ve OLED Kullanan Canlı Covid19 İzleyici | Gerçek Zamanlı Covid19 Panosu: Techtronic Harsh Web Sitesini Ziyaret Edin: http://techtronicharsh.comHer yerde büyük bir Roman Corona Virüsü (COVID19) salgını var. Dünyadaki mevcut COVID-19 senaryosunu takip etmek gerekli hale geldi.Yani evde olmak p
Atmega1284 Kullanan 1024 Örnek FFT Spektrum Analizörü: 9 Adım
Bir Atmega1284 Kullanarak 1024 Örnek FFT Spektrum Analizörü: Bu nispeten kolay öğretici (bu konunun karmaşıklığı göz önüne alındığında), bir Arduino tipi kart (1284 Narrow) ve seri çizici kullanarak çok basit bir 1024 örnek spektrum analizörünü nasıl yapabileceğinizi gösterecektir. Her türlü Arduino yazılımı
Nesne Yönelimli Programlama: Nesne Oluşturma Makas Kullanarak Öğrenme/Öğretme Yöntemi/Tekniği: 5 Adım
Nesne Yönelimli Programlama: Nesne Oluşturma Öğrenme/Öğretme Yöntemi/Teknik Makas Kullanarak: Nesne yönelimli programlamaya yeni başlayan öğrenciler için öğrenme/öğretme yöntemi. Bu onların sınıflardan nesne yaratma sürecini görselleştirmelerine ve görmelerine izin vermenin bir yoludur. Parçalar: 1. Makas (her türlü olur). 2. Kağıt veya karton parçası. 3. İşaretleyici.