4-kierunkowy system sygnalizacji świetlnej wykorzystujący 5 Arduino i 5 modułów bezprzewodowych NRF24L01: 7 kroków (ze zdjęciami)
4-kierunkowy system sygnalizacji świetlnej wykorzystujący 5 Arduino i 5 modułów bezprzewodowych NRF24L01: 7 kroków (ze zdjęciami)
Anonim
Image
Image
Ambitny? Być może!
Ambitny? Być może!

Jakiś czas temu stworzyłem Instruktaż opisujący pojedynczą parę sygnalizacji świetlnej na płytce prototypowej.

Stworzyłem również inny Instructable pokazujący podstawowe ramy korzystania z modułu bezprzewodowego NRF24L01.

To dało mi do myślenia!

Na całym świecie jest sporo hobbystów, którzy budują modele miast i kolei, i prawie zawsze mają sygnalizację świetlną jakiegoś opisu.

Niektóre są modelami roboczymi, a inne służą wyłącznie celom estetycznym.

Czy mogę stworzyć działający model czterokierunkowego systemu sygnalizacji świetlnej i podłączyć je bezprzewodowo?

Usiadłem i pomyślałem o mojej liście możliwych wymagań. Co poszło trochę tak.

Kontroluj 4 kierunki ruchu, takie jak skrzyżowanie.

Każdy kierunek ma dwa światła; a każda para otrzymuje instrukcje bezprzewodowo z jakiejś jednostki sterującej.

być w stanie zdefiniować i zmodyfikować kolejność działania świateł,

  • 1, 2, 3, 4 - zgodnie z ruchem wskazówek zegara
  • 1, 3, 4, 2
  • 1, 4, 2, 3
  • 1, 4, 3, 2 – przeciwnie do ruchu wskazówek zegara
  • 1, 2, 4, 3
  • 1, 3, 2, 4
  • 1 + 3, 2 + 4 – 2 wł. 2 wył.
  • 1 + 3, 2, 4
  • 1, 3, 2 + 4

Cała sekwencja ma być kontrolowana przez jedną jednostkę sterującą, a jednostki odbiorcze wyłącznie włączają i wyłączają światła.

Kiedy powiedziałem „zrób model”, miałem na myśli „zrób prawdziwy model”, nic nadzwyczajnego, ale coś, co faktycznie wyglądałoby jak prawdziwy, być może, może ish.

Krok 1: Ambitny? Być może

Główne wymagania dotyczące części:

Jednostka sterująca i cztery komplety świateł = pięć Arduino i pięć modułów bezprzewodowych. AliExpress na ratunek (ponownie).

Osiem stojaków na sygnalizację świetlną. Mam kiepską imitację drukarki 3D, która zwykle dostarcza więcej paszy śmietnikowej niż produktów użytkowych, ale pomyślałem, że i tak spróbuję. Znalazłem trochę na Thingiverse, www.thingiverse.com/thing:2157324

Ten model wyglądał jak najmniej skomplikowany dla mojej drukarki. Chciałem osiem, więc wciąż starałem się forsować swoje szczęście. Jak się okazało, stwierdziłem, że po kilku nieudanych próbach, jeśli zorientowałem model w określonym kierunku (od przodu do tyłu), uzyskiwałem rozsądne wyniki. W sumie wydrukowałem trzynaście i dostałem osiem użytecznych.

To była posortowana lista głównych części. Pozostałe części już miałem.

Pełna lista części to

  • 5 x Arduino UNO
  • 5 kart bezprzewodowych NRF24L01
  • 5 x tabliczki zaciskowe YL-105 (lub podobne) dla NRF24L0s
  • 8 x czerwone diody LED
  • 8 x żółte diody LED (nie mam żadnych pomarańczowych diod LED)
  • 8 x zielone diody LED
  • 4 diody LED RGB
  • Rezystory 28 x 220 Ohm
  • Płytki do krojenia chleba / PCB??
  • 8 x modelowe światła drogowe
  • 6 x 8 długich listew pinowych (szósty służył do rozstawu na płycie sterującej, zobacz wideo)
  • Rurki termokurczliwe
  • Przewody połączeniowe
  • Kawałek płyty pilśniowej lub coś płaskiego
  • Inne kawałki drewna ??
  • Farba ??
  • Gorący klej
  • Czas, cierpliwość i alkohol do wyboru

Krok 2: Pisanie kodu jednostki sterującej

To jest część, którą musiałem zrobić najpierw, na wszelki wypadek, gdybym nie mógł tego zrobić, co byłoby spektakularne.

To była zdecydowanie najbardziej złożona część projektu, ale też dla mnie najbardziej interesująca.

Musiałem usiąść i zdefiniować wszystkie możliwe kombinacje zmian światła i to, jak będą ze sobą współpracować synchronicznie.

Jak każdy dobry projekt, zaczął się na papierze od bardzo długiej listy liczb, a ponieważ chciałem mieć wiele możliwych sekwencji operacyjnych, lista stała się jeszcze dłuższa.

Ale kiedy byłem szczęśliwy, że mam wszystko, co uważałem za wymagane i po chwili wpatrywania się w strony z liczbami, moje OCD włączyło i zacząłem widzieć wzorce.

Organizując wzorce, udało mi się zebrać całe sekwencjonowanie w jedną tablicę trójwymiarową i dwie tablice dwuwymiarowe.

Wszystko, co musiałem teraz zrobić, to znaleźć sposób na manipulowanie tymi tablicami w celu stworzenia prawidłowego sekwencjonowania i lekkich kroków.

Zajęło to trochę czasu, ale udało mi się to osiągnąć w mniej niż pięćdziesięciu linijkach kodu, w tym komentarzach itp.

Kod do tego nie jest przeznaczony dla osób o słabych nerwach, ale jeśli rozumiesz wielowymiarowe tablice, nie powinno być zbyt trudne do naśladowania. Lub krzywa uczenia się dla reszty.

Chodzi o to, że wierzę, że to działa i i tak nie powinno wymagać zmian. Ale…………

Krok 3: Mod płytki zaciskowej NRF24L01

Modyfikacja tablicy zacisków NRF24L01
Modyfikacja tablicy zacisków NRF24L01
Modyfikacja tablicy zacisków NRF24L01
Modyfikacja tablicy zacisków NRF24L01
Modyfikacja tablicy zacisków NRF24L01
Modyfikacja tablicy zacisków NRF24L01
Modyfikacja tablicy zacisków NRF24L01
Modyfikacja tablicy zacisków NRF24L01

Moduł NRF24L01 i tabliczka zaciskowa YL-105 niestety nie są zbyt przyjazne dla płytki prototypowej.

Płytka zaciskowa częściowo rozwiązuje problem i, co ważniejsze, sprawia, że jest tolerancyjna na 5 V, ale nadal nie jest przyjazna dla płytek prototypowych.

Więc mam trochę pomysłowości.

W mojej kolekcji „rzeczy” mam kilka 6-pinowych nagłówków z długimi pinami. Rodzaj, który jest wymagany do tworzenia Arduino Shields.

Wziąłem jeden z nich i wygiąłem kołki pod kątem 90 stopni.

Wyjąłem jedną z szyn zasilających z płytki stykowej i podłączyłem nagłówek do krawędzi płytki stykowej.

To pozostawiło piny zasilania na tablicy zaciskowej. Teraz przeszkadzają.

Więc je usunąłem i umieściłem po drugiej stronie tablicy zaciskowej tak, że teraz wystają z tyłu tablicy.

Na potrzeby tej instrukcji potrzebuję pięciu modułów NRF24L01, więc zamontowałem je na całej płytce stykowej, a następnie przymocowałem szynę zasilającą wzdłuż wszystkich pinów zasilania na płytce zaciskowej.

Wyglądało to dość schludnie, dopóki nie podłączyłem Arduino i zrobiło się trochę tłoczno.

Plus, co jest ważne, po podłączeniu szyny zasilającej wszystkie Arduino będą podłączone do tego samego źródła i tego właśnie starałem się uniknąć, więc większość z nich ponownie rozebrałem.

Zachowam płytkę z kilkoma modułami NRF24L01 do prototypowania w przyszłości, więc nie jest to całkowita strata czasu.

Krok 4: Jednostki sygnalizacji świetlnej

Jednostki sygnalizacji świetlnej
Jednostki sygnalizacji świetlnej
Jednostki sygnalizacji świetlnej
Jednostki sygnalizacji świetlnej
Jednostki sygnalizacji świetlnej
Jednostki sygnalizacji świetlnej

Znalazłem kilka małych płyt stykowych 170 punktów wiązania. Nie mają one szyny zasilającej, więc moja zmodyfikowana tabliczka zaciskowa nadal będzie pasować. Choć pod niewielkim kątem ze względu na wysokość deski do załamywania.

Zbudowałem cztery kontrolki sygnalizacji świetlnej takie same, te same kolorowe przewody, pozycjonowanie itp. Teraz są one naprawdę samodzielne.

Do jednostki sterującej umieściłem moduł NRF24L01 na płytce drukowanej z diodami RGB. Użyłem RGB, ponieważ chociaż nie musiałem widzieć wszystkich świateł, tylko czerwone i zielone, zajmują mniej miejsca.

Podłączyłem diody LED do Arduino w normalny sposób i dodałem trochę kodu, aby wyświetlić czerwony lub zielony status każdego zestawu sygnalizacji świetlnej.

Starałem się być spójny z kolorami okablowania, aby móc łatwo zobaczyć, czy zrobiłem coś innego na jednej z płyt.

Mam kilka krótkich zestawów przewodów Dupont, a ponieważ przewody są ze sobą sklejone, ta część jest dość łatwa.

NRF24L01:

  • CE Orange To Arduino pin 10 (zdefiniowany w kodzie)
  • CSN Yellow To Arduino pin 9 (zdefiniowany w kodzie)
  • SCK Green To Arduino pin 13 (obowiązkowe)
  • MOSI Blue To Arduino pin 11 (obowiązkowe)
  • MISO Purple To Arduino pin 12 (obowiązkowe)
  • Vcc czerwony do 5v. Jeśli nie używasz tablic zaciskowych, musi to być 3,3 V.
  • GND Brązowy do Arduino GND

Jednostki świetlne i piny Arduino do diod LED:

  • Czerwony dla czerwonej diody LED
  • Pomarańczowy dla żółtej diody LED (nie mam pomarańczowych diod LED)
  • Zielony dla zielonej diody LED
  • Czarny dla GND

Moje jedyne odstępstwo od tego było wtedy, gdy podłączyłem Control Arduino do diod LED RGB. Użyłem białych i szarych przewodów, ponieważ zabrakło mi czerwonych.

Krok 5: Sygnalizacja świetlna i testowanie

Image
Image
Sygnalizacja świetlna i testowanie
Sygnalizacja świetlna i testowanie
Sygnalizacja świetlna i testowanie
Sygnalizacja świetlna i testowanie

To jest kod ukończony i każda samodzielna kontrolka również zakończona. Wszystko, czego teraz potrzebuję, to sama sygnalizacja świetlna.

Jak wspomniałem wcześniej, znalazłem nieskomplikowany model na Thingiverse i udało mi się wydrukować osiem, które nie wyglądały tak źle.

Zainstalowałem diody LED z wymaganym rezystorem 200 Ohm oraz łączem i przewodem uziemiającym.

Obkurczać przewody rurowe i skleić wszystko na gorąco.

Po zamontowaniu wszystkich diod zdecydowałem się pomalować je na czarno. Zły pomysł, powinienem był to zrobić pierwszy.

Podłączyłem wszystko do testu, zanim przejdę dalej.

Krok 6: Rozdroża

Skrzyżowania
Skrzyżowania
Skrzyżowania
Skrzyżowania
Skrzyżowania
Skrzyżowania
Skrzyżowania
Skrzyżowania

Postanowiłem zamontować je wszystkie na desce, więc teraz musiałem stworzyć coś w rodzaju podobnego do skrzyżowania.

Mieszkam w Wielkiej Brytanii, więc jedziemy tutaj po złej stronie drogi, dlatego uczyniłem moje skrzyżowanie tak przyjaznym w Wielkiej Brytanii, jak pozwalały na to moje słabe umiejętności artystyczne.

To było całkiem proste, po prostu czasochłonne; i jestem pewien, że nie ma skrzyżowań, które faktycznie tak wyglądają, ale moje nie mają dziur.

Nie chciałem na stałe poświęcać moich Arduino dla tego projektu, więc poszedłem na kompromis, wypełniając każdy z nich 10 mm dystansami i przyklejając na gorąco dystanse do podstawy płyty.

To, co zrobiłem, to przyklejenie na gorąco mini płytki stykowej z boku Arduino.

Po pierwsze, trzymała NRF24L01 i tablicę zaciskową u podstawy skrzyżowania, po drugie, i tak rzadko używam Arduino bez jakiejś płytki stykowej, więc nadal będą przydatne.

Krok 7: Gotowe

Wszystko gotowe
Wszystko gotowe
Wszystko gotowe
Wszystko gotowe

Wszystkie pliki kodu zostały dołączone.

Nie przejrzałem tutaj kodu, ponieważ ten Instruktaż jest wystarczająco długi bez niego.

Mam nadzieję, że był to przydatny instruktaż, nawet jeśli pokazuje tylko, jak bezprzewodowo kontrolować wiele innych płyt Arduino za pomocą bardzo przystępnej ceny NRF24L01.

Jeśli masz jakieś pytania, nie wahaj się skomentować, a postaram się pomóc.