Spisu treści:
- Krok 1: Lista części
- Krok 2: Konfiguracja Raspberry Pi
- Krok 3: Raspberry Pi i uchwyt kamery
- Krok 4: Montaż sygnalizacji świetlnej
- Krok 5: Okablowanie (Część 1)
- Krok 6: Budowanie środowiska
- Krok 7: Finalizacja ramy PCV
- Krok 8: Okablowanie (Część 2)
- Krok 9: Gotowe
- Krok 10: Dodatki (zdjęcia)
Wideo: Analizator wzorców ruchu wykorzystujący wykrywanie obiektów na żywo: 11 kroków (ze zdjęciami)
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:31
W dzisiejszym świecie sygnalizacja świetlna jest niezbędna dla bezpiecznej drogi. Jednak wiele razy sygnalizacja świetlna może być denerwująca w sytuacjach, gdy ktoś zbliża się do światła, gdy zmienia ono kolor na czerwony. To marnuje czas, zwłaszcza jeśli światło uniemożliwia przejazd jednemu pojazdowi przez skrzyżowanie, gdy na drodze nie ma nikogo. Moją innowacją jest inteligentna sygnalizacja świetlna, która wykorzystuje wykrywanie obiektów na żywo z kamery do zliczania samochodów na każdej drodze. Sprzęt, którego użyję do tego projektu, to Raspberry Pi 3, moduł kamery i różne elementy elektroniczne do samego światła. Korzystając z OpenCV na Raspberry Pi, zebrane informacje zostaną przepuszczone przez kod kontrolujący diody LED za pośrednictwem GPIO. W zależności od tych liczb zmieni się sygnalizacja świetlna, przepuszczając samochody w najbardziej optymalnej kolejności. W takim przypadku pas z największą liczbą samochodów zostanie przepuszczony, tak że pas z mniejszą liczbą samochodów będzie na biegu jałowym, zmniejszając zanieczyszczenie powietrza. Wyeliminowałoby to sytuacje, w których wiele samochodów zatrzymuje się, gdy na przecinającej się drodze nie ma samochodów. To nie tylko oszczędza czas dla wszystkich, ale także chroni środowisko. Czas, przez jaki ludzie są zatrzymywani na znaku stop z silnikiem na biegu jałowym, zwiększa zanieczyszczenie powietrza, więc tworząc inteligentne światła drogowe, jestem w stanie zoptymalizować wzorce świetlne, aby samochody spędzały jak najmniej czasu z zatrzymanym pojazdem. Ostatecznie ten system sygnalizacji świetlnej mógłby zostać wdrożony w miastach, na przedmieściach, a nawet na obszarach wiejskich, aby był bardziej wydajny dla ludzi i zmniejszyłby zanieczyszczenie powietrza.
Krok 1: Lista części
Materiały:
Raspberry Pi 3 Model B v1.2
Kamera Raspberry Pi v2.1
Zasilacz micro USB 5V/1A
Monitor HDMI, klawiatura, mysz karta SD z Raspbian Jessie
Kabel breakout GPIO Raspberry Pi
Czerwone, żółte, zielone diody LED (po 2 z każdego koloru)
Złącza żeńskie dla Raspberry Pi (7 unikalnych kolorów)
Różne przewody o grubości 24 (różne kolory) + rurki termokurczliwe
Drewniany panel lub platforma 2'x2'
Wkręty do drewna
Czarna powierzchnia (karton, płyta piankowa, tablica plakatowa itp.)
Biała (lub w innym kolorze niż czarna) taśma do znakowania dróg
Czarna farba w sprayu (do PCV)
Rura PVC ½” z kolankami 90 stopni (2), kielich T (1), adapter żeński (2)
Narzędzia
Lutownica
drukarka 3d
Wiertarka z różnymi wiertłami
Deska do krojenia chleba
Opalarka
Krok 2: Konfiguracja Raspberry Pi
Włóż kartę SD do Raspberry Pi i uruchom.
Postępuj zgodnie z tym przewodnikiem, aby zainstalować wymagane biblioteki OpenCV. Upewnij się, że masz czas na wykonanie tego kroku, ponieważ instalacja biblioteki OpenCV może zająć kilka godzin. Pamiętaj, aby również zainstalować i skonfigurować tutaj kamerę.
Powinieneś również zainstalować pip:
pikamera
gpiozero
RPi. GPIO
Oto sfinalizowany kod:
z picamera.array importuj PiRGBArray
z picamera importuj PiCamera
import picamera.array
importuj numer jako np
czas importu
importuj cv2
importuj RPi. GPIO jako GPIO
czas importu
GPIO.setmode(GPIO. BCM)
dla mnie w (23, 25, 16, 21):
GPIO.setup(i, GPIO. OUT)
kamera = PiCamera()
krzywka.rozdzielczość=(480, 480)
cam.framerate=30
raw=PiRGBArray(kamera, rozmiar=(480, 480))
czas.sen(0.1)
colorLower = np.array([0, 100, 100])
colorUpper = np.array([179, 255, 255])
odwrócenie = 0
inicjalizacja = 0
licznik = 0
dla ramki w cam.capture_continuous(raw, format="bgr", use_video_port=True):
ramka = ramka.tablica
hsv = cv2.cvtColor(ramka, cv2. COLOR_BGR2HSV)
maska = cv2.inRange(hsv, colorLower, colorUpper)
maska = cv2.blur(maska, (3, 3))
maska= cv2.dilate(maska, brak, iteracje=5)
maska= cv2.erode(maska, brak, iteracje=1)
maska= cv2.dilate(maska, brak, iteracje=3)
ja, próg = cv2.próg(maska, 127, 255, cv2. THRESH_BINARY)
cnts = cv2.findContours(thresh, cv2. RETR_TREE, cv2. CHAIN_APPROX_SIMPLE)[-2]
środek = Brak
wierzchołek = 0
poziomo = 0
jeśli dł.(cnts) > 0:
dla c w cnts:
(x, y), promień = cv2.minEnclosingCircle(c)
środek = (int(x), int(y))
promień = int(promień)
cv2.circle(ramka, środek, promień, (0, 255, 0), 2)
x = int(x)
y = int(y)
jeśli 180 < x < 300:
jeśli y > 300:
wierzchołek = wierzchołek +1
elif y < 180:
wierzchołek = wierzchołek +1
w przeciwnym razie:
wierzchołek = wierzchołek
jeśli 180 < r < 300:
jeśli x > 300:
poziom = poziom +1
elif x < 180:
poziom = poziom +1
w przeciwnym razie:
poziomo = poziomo
jeśli vert != initvert:
print"Samochody na pasie pionowym: " + str(vert)
initvert = vert
print"Samochody na pasie poziomym: " + str(horiz)
inithoriz = poziomo
wypisz '-----------------------------'
jeśli poziomo != inithoriz:
print"Samochody na pasie pionowym: " + str(vert)
initvert = vert
print"Samochody na pasie poziomym: " + str(horiz)
inithoriz = poziomo
wypisz '-----------------------------'
jeśli pion < poziom:
GPIO.wyjście(23, GPIO. HIGH)
GPIO.wyjście(21, GPIO. HIGH)
GPIO.wyjście(16, GPIO. LOW)
GPIO.wyjście(25, GPIO. LOW)
jeśli poziomo < pionowe:
GPIO.wyjście(16, GPIO. HIGH)
GPIO.wyjście(25, GPIO. HIGH)
GPIO.output(23, GPIO. LOW)
GPIO.wyjście(21, GPIO. LOW)
cv2.imshow("Ramka", ramka)
cv2.imshow("HSV", hsv)
cv2.imshow("Tresh", thresh)
surowe.obcinanie(0)
if cv2.waitKey(1) i 0xFF == ord('q'):
przerwa
cv2.zniszczWszystkieOkna()
GPIO.oczyszczanie()
Krok 3: Raspberry Pi i uchwyt kamery
Wydrukuj w 3D obudowę i uchwyt kamery oraz zmontuj.
Krok 4: Montaż sygnalizacji świetlnej
Przetestuj sygnalizację świetlną za pomocą płytki stykowej. Każdy przeciwny zestaw diod LED ma wspólną anodę, a wszystkie mają wspólną katodę (masę). Łącznie powinno być 7 przewodów wejściowych: 1 na każdą parę diod LED (6) + 1 przewód uziemiający. Przylutuj i zmontuj sygnalizację świetlną.
Krok 5: Okablowanie (Część 1)
Przylutuj żeńskie styki nagłówka do około 5 stóp drutu. To są strony, po których te przewody będą później wiły się przez rury PCV. Upewnij się, że potrafisz rozróżnić różne zestawy świateł (2 x 3 kolory i 1 podstawa). W tym przypadku zaznaczyłem końcówkę innego zestawu przewodów czerwonego, żółtego i niebieskiego sharpie więc wiem który jest który.
Krok 6: Budowanie środowiska
Budowanie środowiska Zrób taką drewnianą paletę o powierzchni 2 stóp kwadratowych. Złom drewna jest w porządku, ponieważ zostanie zakryty. Wywierć otwór pasujący do adaptera. Wywiercić śruby po bokach palety, aby zamocować rurę PVC na miejscu. Wytnij czarną płytę piankową, aby pasowała do drewnianej palety pod spodem. Wywierć otwór pasujący do rury PVC. Powtórz w przeciwległym rogu. Oznacz drogi białą taśmą.
Krok 7: Finalizacja ramy PCV
Na górnej rurze wywierć otwór, w którym zmieści się wiązka przewodów. Szorstka dziura jest w porządku, o ile masz dostęp do wnętrza rur. Przeprowadź przewody przez rury PVC i złącza kolankowe w celu sprawdzenia dopasowania. Gdy wszystko jest gotowe, pomaluj PCV czarną farbą w sprayu, aby oczyścić wygląd ramy głównej. Wytnij niewielką szczelinę w jednej z rur PVC, aby pasowała do trójnika. Dodaj rurę PVC do tego trójnika, aby sygnalizacja świetlna zwisała. Średnica może być taka sama jak ramy głównej (1/2 cala), ale jeśli używasz cieńszej rury, upewnij się, że 7 przewodów może się przewlec. Wywierć otwór w tej rurze, aby zwisała z niej sygnalizacja świetlna.
Krok 8: Okablowanie (Część 2)
Ponownie podłącz wszystko zgodnie z wcześniejszymi testami. Dokładnie sprawdź sygnalizację świetlną i okablowanie za pomocą płytki stykowej, aby potwierdzić, że wszystkie połączenia zostały wykonane. Przylutuj sygnalizację świetlną do przewodów przechodzących przez ramię przegubu T. Owiń odsłonięte przewody taśmą elektryczną, aby uniknąć spodenek i uzyskać czystszy wygląd.
Krok 9: Gotowe
Aby uruchomić kod, upewnij się, że ustawiłeś źródło jako ~/.profile i cd na lokalizację projektu.
Krok 10: Dodatki (zdjęcia)
Zalecana:
Wykrywanie obiektów za pomocą płyt Sipeed MaiX (Kendryte K210): 6 kroków
Wykrywanie obiektów za pomocą płyt Sipeed MaiX (Kendryte K210): Kontynuując mój poprzedni artykuł o rozpoznawaniu obrazów za pomocą płyt Sipeed MaiX, postanowiłem napisać kolejny samouczek, skupiając się na wykrywaniu obiektów. Ostatnio pojawiło się trochę interesującego sprzętu z chipem Kendryte K210, w tym S
DIY Automatyczne wykrywanie ruchu Łóżko LED Lampka nocna: 6 kroków (ze zdjęciami)
DIY Automatyczna lampka nocna z czujnikiem ruchu LED: Cześć, chłopaki, witamy w kolejnej instrukcji, która zawsze pomoże ci w codziennym życiu i doda wygody, aby ułatwić ci życie. To może być czasem ratunkiem dla osób w podeszłym wieku, które muszą zmagać się z wstawaniem z łóżka
Monitorowanie terrarium jaszczurki za pomocą kontrolera Adosia IoT WiFi + wykrywanie ruchu: 17 kroków (ze zdjęciami)
Monitorowanie terrarium jaszczurek za pomocą kontrolera Adosia IoT WiFi + wykrywanie ruchu: W tym samouczku pokażemy, jak zbudować proste terrarium dla jaszczurek dla garstki jaj scynków, które przypadkowo znaleźliśmy i naruszyliśmy podczas pracy w ogrodzie. Chcemy, aby jaja wykluwały się bezpiecznie, więc wszystko, co zrobimy, to stworzyć bezpieczną przestrzeń za pomocą plastiku
Wizualne wykrywanie obiektów za pomocą kamery (TfCD): 15 kroków (ze zdjęciami)
Wykrywanie obiektów wizualnych za pomocą kamery (TfCD): Usługi kognitywne, które mogą rozpoznawać emocje, twarze ludzi lub proste przedmioty, są obecnie wciąż na wczesnym etapie rozwoju, ale wraz z uczeniem maszynowym ta technologia jest coraz bardziej rozwijana. Możemy spodziewać się, że więcej tej magii zobaczymy w
Śledzenie ruchu Tfcd 3D poprzez wykrywanie pojemnościowe i wyjście LED: 6 kroków (ze zdjęciami)
Śledzenie ruchu Tfcd 3D poprzez wykrywanie pojemnościowe i wyjście LED: W tej instrukcji wyjaśniono, w jaki sposób można śledzić ruch ręki w przestrzeni 3D przy użyciu zasady wykrywania pojemnościowego. Zmieniając odległość między naładowaną folią aluminiową a ręką, pojemność kondensatora będzie się zmieniać