Spisu treści:
Wideo: Pociąg ogrodowy - Arduino Wireless NMRA DCC: 4 kroki (ze zdjęciami)
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:30
W nawiązaniu do wcześniejszej instrukcji z DCC na systemie martwej szyny, rozwinąłem ten pomysł za pomocą ręcznej stacji sterowania DCC z klawiaturą i wyświetlaczem LCD. Command Station zawiera całe kodowanie wymagane dla instrukcji NMRA DCC, jednak zamiast łączenia się z szynami, dane są przesyłane przez moduł radiowy RF24L01+ do odbiornika zamontowanego w ciężarówce lub pod lokomotywą – wszędzie tam, gdzie pozwala na to pomieszczenie.
Oczywiście lokomotywy muszą być wyposażone w dekoder nośności dostosowany do silników silników.
Krok 1: Projekt systemu
Sercem projektu jest Arduino Pro Mini. Wykorzystanie Fritzing do opracowania obwodu i produkcji płytek drukowanych.
Udało mi się użyć tej samej płytki drukowanej zarówno dla nadajnika, jak i odbiornika, co pozwoliło mi zaoszczędzić trochę kosztów.
Nadajnik ma złącza dla klawiatury i wyświetlacza LCD, podczas gdy odbiornik ich nie wymaga i wykorzystuje mostek H do zasilania wyjścia DCC dla lokomotywy.
Dalszy rozwój obejmuje połączenia dla większego mostka H, jeśli jest to wymagane dla silniejszych lokomotyw.
PCF8574 można usunąć, jeśli używasz wyświetlacza LCD dołączonego do plecaka, który umożliwia połączenia SCA / SCL na Arduino do zasilania wyświetlacza za pomocą tylko 2 przewodów. Lista części: Razem = około 60 GBP za DCC Command Station + 1 odbiornik Koszt dodatkowych odbiorników = ok. 10,00 GBP za każdy. + baterie
Arduino Pro Mini. x 2 = 4,00 GBP
Klawiatura membranowa 4x3 = £3.00
Wyświetlacz LCD 20 x 4 = 7,00 £
PCF5874 = 1,80 GBP
NRF24L01+. moduły radiowe x 2 = 5,80 £
Produkcja PCB za 10 obniżek (lub można użyć płytki Vero) = 24 GBP lub 4,80 GBP za 2 obniżki
Regulator 3,3 v = 0,17 GBP (opakowanie 25 sztuk od RS Comp)
Regulator 5v LM7805 = 0,30 £
Mostek H SN754410ne = 3,00 £
Akumulatory Lloytron 2700 mAh AA x 12 = 22,00 GBP. (baterie o niższej wartości maH są tańsze)
Kondensatory, garnki, szpilki, złącza itp = około 2,00 £
Obudowa 190x110x60 mm = 8,00 £
Nadajnik - ładowarka telefonu / bateria = 2,00 £
Krok 2: Nadajnik
Schemat obwodu pokazano, gdzie piny D2 do D8 na Arduino Pro Mini są podłączone do klawiatury. Potencjometr 100 kΩ jest podłączony do pinu analogowego A0 w celu regulacji prędkości. Piny SDA i SCL z układu PCF8574 są podłączone do pinów A4 i A5 na Arduino Pro Mini za pomocą przylutowanych przewodów do pinów na górnej warstwie Pro Mini.
Szkic Arduino jest załączony do pobrania.
Użyłem wyświetlacza LCD 20 x 4, który pozwala na 4 linie informacji po 20 znaków w linii. Manipulator udostępnia następujące menu:
1 do 9 = adres lokomotywy * = kierunek 0 = światła # = menu funkcji dla klawiszy od 1 do 8
Podstawowy opis szkicu Arduino Pro Mini: Ta linia kodu porządkuje komunikat DCC w formacie HEX. struct Wiadomość msg[MAXMSG] = {
{ { 0xFF, 0, 0xFF, 0, 0, 0, 0}, 3}, // komunikat bezczynności
{ { locoAdr, 0, 0, 0, 0, 0, 0}, 3} // 3 bajtowy adres
};
Aby zapisać ustawienia dla każdej lokomotywy, szereg tablic ustawia się w następujący sposób:
int la[20];// tablica do przechowywania numerów lokomotyw
int sa[20];// tablica do przechowywania wartości prędkości
int fda[20];// tablica do przechowywania katalogu
int fla[20];// tablica do przechowywania świateł
int f1a[20];// tablica do przechowywania fun1…..
int f8a[20];// tablica do przechowywania fun8
Aby umożliwić zmianę instrukcji DCC na bieżąco:
Instrukcje dotyczące szybkości: void amend_speed (struct Message & x) {
x.data[0] = adres_lokal;
x.dane [1] = 0x40; // locoMsg z 28 krokami prędkości }
Instrukcje dotyczące funkcji:
void amend_group1 (wiadomość struktury i x) {
x.data[0] = adres_lokal;
x.dane [1] = 0x80; // locoMsg z instrukcją grupy 1 0x80 }
Główna pętla szkicu:
void loop(void) { if (read_locoSpeed()) { assemble_dcc_msg_speed();
wyślij_dane_1(); // wyślij dane bezprzewodowo
opóźnienie(10);
wyślij_dane_3(); // wyświetl dane na wyświetlaczu LCD
wyślij_dane_4(); // wyświetl dane na monitorze szeregowym }
jeśli (odczytaj_funkcję()) {
assemble_dcc_msg_group1();
wyślij_dane_1();
opóźnienie(10);
wyślij_dane_3(); } }
Zaktualizuj dane, gdy prędkość się zmieni:
boolean read_locoSpeed() Wykrywa nowy adres lokomotywy, ustawienie prędkości lub kierunku i odpowiednio zmienia „dane” HEX. Tutaj określiłem 28 kroków prędkości i aby spełnić standard NMRA S 9.2, dane prędkości muszą być znalezione w tabeli wyszukiwania w 'speed_step()'
void speed_step(){ przełącznik (locoSpeed){
przypadek 1: dane |= 0x02; przerwa;
przypadek 2: dane |= 0x12; przerwa;
przypadek 3: dane |= 0x03; przerwa;
………
przypadek 28: dane |= 0x1F; przerwa; }}
Zaktualizuj dane po zmianie funkcji:
wartość logiczna read_function()
if (fla[locoAdr] == 0) { dane = 0x80;
} //światła wyłączone
if (fla[locoAdr] == 1) {
dane = 0x90;
} //światła przednie włączone
Dla każdej funkcji:
if (f2a[locoAdr] == 0) { dane |= 0; }. // Funkcja 2 wyłączona
if (f2a[locoAdr] == 1) {
dane |= 0x02; // Funkcja 2 na }'data' jest tworzona przez połączenie ['|=' złożonego bitowego lub] kodów szesnastkowych dla każdej funkcji.
Krok 3: Odbiornik
Na schemacie obwodu pokazano, gdzie piny 5 i 6 Arduino Pro Mini są używane do dostarczania sygnału DCC dostarczanego do mostka H. Pary mostków H są połączone równolegle, aby zwiększyć wydajność prądową. W zależności od prądu pobieranego przez lokomotywę, może być wymagane podłączenie radiatora do 16-stykowego urządzenia DIP lub podłączenie zewnętrznego mostka H o dużej wytrzymałości.
Szkic Arduino jest załączony do pobrania. Sygnał DCC składa się z zegara pracującego z częstotliwością 2 MHz
void SetupTimer2() wykonuje to zadanie.
Zegar zawiera „krótkie impulsy” (58us) dla „1” w danych DCC i „długie impulsy” (116us) dla „0” w danych DCC.
Pętla jest nieważna, pobiera dane z radia i jeśli zostanie znaleziony prawidłowy ciąg, dane są konwertowane na dane DCC.
void loop(void){ if (radio.available()){ bool done = false; gotowe = radio.odczyt(inmsg, 1); // odczytaj otrzymane dane
char rc = inmsg[0]; // umieść odczytany znak w tej tablicy
jeśli (rc != 0){. // jeśli znak nie jest równy zero
inString.concat(rc); // zbuduj wiadomość }
if (rc == '\0') { // jeśli znak to '/0' koniec wiadomości
Serial.println(inString); // drukuj zmontowaną wiadomość
strunowy(); // dekonstruuj wiadomość tekstową, aby uzyskać instrukcje DCC
} } }
Krok 4: Uruchom lokomotywę
Aby uniknąć przerw w przesyłaniu danych spowodowanych jazdą wielu pociągów na tym samym torze, należy odłączyć styki między kołami a torem dla każdej używanej lokomotywy i ciężarówki.
Ciesz się darmowymi pociągami niezależnie od warunków na torze - co za różnica! Bez kłopotów, bez start-stop i bez konieczności czyszczenia.
Użyte przeze mnie akumulatory to akumulatory LLoytron AA x 12. Specjalnie dla nich zbudowałem ładowarkę, która ładuje po 6 sztuk na raz. (patrz instrukcja)
Zalecana:
Pociąg Steampunk: 5 kroków (ze zdjęciami)
Pociąg Steampunk: Miałem szczęście, że otrzymałem od znajomego bazę używanego wózka inwalidzkiego. Musiałem wymienić obie baterie, aby działał, ale była to niewielka cena za tak wszechstronną platformę do budowania rekwizytów. Postanowiłem, że
Zautomatyzowany system ogrodowy zbudowany na Raspberry Pi do użytku na zewnątrz lub wewnątrz - MudPi: 16 kroków (ze zdjęciami)
Zautomatyzowany system ogrodowy Zbudowany na Raspberry Pi do użytku na zewnątrz lub wewnątrz - MudPi: Lubisz ogrodnictwo, ale nie możesz znaleźć czasu na jego pielęgnację? Być może masz jakieś rośliny doniczkowe, które wyglądają na trochę spragnione lub szukają sposobu na zautomatyzowanie hydroponiki? W tym projekcie rozwiążemy te problemy i poznamy podstawy
Monitor ogrodowy: 3 kroki
Monitor ogrodowy: Jest to najnowsza i kompletna wersja moich monitorów ogrodowych. Wcześniej stworzyłem wersje z różnymi zastosowaniami, na przykład jedną z wyświetlaczem LCD, a drugą z ESP8266. Jednak lepiej udokumentowałem tę wersję, więc zdecydowałem się ją przesłać.Kiedy c
Bezprzewodowy system ogrodowy: 7 kroków
Wireless Garden System: Ten projekt jest oparty na Arduino i wykorzystuje „moduły”; aby pomóc Ci podlewać rośliny i zalogować się na temperaturę, glebę i deszcz. System działa bezprzewodowo przez 2,4 GHz i wykorzystuje moduły NRF24L01 do wysyłania i odbierania danych. Pozwolę sobie wyjaśnić, jak
Sklep Świętego Mikołaja 2017, Pociąg: 4 kroki (ze zdjęciami)
Sklep Świętego Mikołaja 2017, Pociąg: Sklep Świętego Mikołaja 2017 to ulepszona wersja Sklepu Świętego Mikołaja 2016. Chciałem dodać kolejny pociąg, ale pozostało tylko pomieszczenie na suficie. Aby pociąg jechał do góry nogami, wystarczy użyć magnesów. Dobrze? Oczywiście jest kilka małych szczegółów