Sadržaj:
Video: Vrtni vlak - Arduino bežični NMRA DCC: 4 koraka (sa slikama)
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:07
Uz prethodna uputstva sa DCC -om na mrtvom koloseku, ideju sam dodatno razvio ručnom DCC komandnom stanicom sa tastaturom i LCD ekranom. Komandna stanica sadrži sve kodiranje koje je potrebno za NMRA DCC upute, međutim umjesto povezivanja na tračnice, podaci se putem radio modula RF24L01+ prenose na prijemnik montiran u kamionu ili ispod lokomata - gdje god to prostorija dopušta.
Naravno, vaši lokomotivi moraju biti opremljeni dekoderom nosivosti prilagođenim motorima motora.
Korak 1: Projektovanje sistema
Arduino Pro Mini je srce dizajna. Korištenje Fritzinga za razvoj sklopa i proizvodnju PCB -a.
Uspio sam koristiti istu PCB i za predajnik i za prijemnik, čime sam uštedio neke troškove.
Predajnik ima priključke za tastaturu i LCD dok prijemnik to ne zahtijeva i koristi H-most za napajanje DCC izlaza za loko.
Daljnji razvoj uključuje veze za veći H-most ako je potrebno za snažnije lokomotive.
PCF8574 se može izbrisati ako koristite LCD zaslon koji dolazi s ruksakom koji omogućava SCA / SCL veze na Arduinu za napajanje ekrana pomoću samo 2 žice. Lista dijelova: Ukupno = približno 60 funti za DCC komandnu stanicu + 1 prijemnik Dodatni troškovi prijemnika = Otprilike 10,00 £ svaki. + baterije
Arduino Pro Mini. x 2 = 4,00 £
4x3 membranska tastatura = 3,00 £
20 x 4 LCD ekran = £ 7.00
PCF5874 = 1,80 £
NRF24L01+. radio moduli x 2 = 5,80 £
Proizvodnja PCB -a za 10 popusta (ili se može koristiti Vero ploča) = 24 £ ili 4,80 £ za 2 off
3.3 v Regulator = 0,17 £ (pakovanje od 25 iz RS Comp -a)
5v regulator LM7805 = 0,30 £
H-most SN754410ne = 3,00 £
Lloytron punjive AA baterije od 2700 maH x 12 = 22,00 £. (baterije s nižim maH vrijednostima su jeftinije)
Kondenzatori, lonci, igle, konektori itd. = £ 2,00 pribl
Kućište 190x110x60 mm = 8,00 £
Odašiljač - punjač telefona / baterija = 2,00 £
Korak 2: Odašiljač
Dijagram kruga je prikazan gdje su pinovi D2 do D8 na Arduino Pro Mini spojeni na tipkovnicu. Potenciometar od 100 k ohma spojen je na analogni pin A0 za podešavanje brzine. SDA i SCL pinovi iz čipa PCF8574 spojeni su na pinove A4 i A5 na Arduino Pro Mini pomoću lemljenih žica za pinove na gornjem sloju Pro Mini.
Arduino skica je priložena za preuzimanje.
Koristio sam LCD ekran veličine 20 x 4 koji omogućava 4 reda informacija sa 20 znakova po redu. Tastatura nudi sljedeći meni:
1 do 9 = loko adresa * = smer 0 = svetla # = Meni funkcija za tastere od 1 do 8
Osnovni opis skice Arduino Pro Mini: Ova linija koda raspoređuje DCC poruku u HEX formatu. struct poruka poruke [MAXMSG] = {
{{0xFF, 0, 0xFF, 0, 0, 0, 0}, 3}, // poruka u mirovanju
{{locoAdr, 0, 0, 0, 0, 0, 0}, 3} // adresa od 3 bajta
};
Za spremanje postavki za svaki loko, niz polja se postavlja na sljedeći način:
int la [20]; // niz za držanje loko brojeva
int sa [20]; // niz za držanje vrijednosti brzine
int fda [20]; // niz za držanje red
int fla [20]; // niz za držanje svjetla
int f1a [20]; // niz za držanje fun1…..
int f8a [20]; // niz za držanje fun8
Da biste omogućili izmjene i dopune DCC uputstava:
Za upute o brzini: void replace_speed (struct Message & x) {
x.data [0] = locoAdr;
x.podaci [1] = 0x40; // locoMsg sa 28 brzinskih koraka}
Za upute o funkciji:
void submit_group1 (struct poruka & x) {
x.data [0] = locoAdr;
x.podaci [1] = 0x80; // locoMsg s grupnom instrukcijom 0x80}
Glavna petlja skice:
void loop (void) {if (read_locoSpeed ()) {assemble_dcc_msg_speed ();
send_data_1 (); // šalje podatke putem bežične veze
kašnjenje (10);
send_data_3 (); // prikaz podataka na LCD ekranu
send_data_4 (); // prikaz podataka na serijskom monitoru}
if (read_function ()) {{100} {101}
assemble_dcc_msg_group1 ();
send_data_1 ();
kašnjenje (10);
send_data_3 (); }}
Ažurirajte podatke kada se promijeni brzina:
boolean read_locoSpeed () Ovo otkriva novu loko adresu, postavku brzine ili smjera i shodno tome mijenja HEX 'podatke'. Ovdje sam naveo 28 koraka brzine i da bih zadovoljio NMRA standard S 9.2, podaci o brzini moraju se pronaći iz tabele za pretraživanje u 'speed_step ()'
void speed_step () {switch (locoSpeed) {
slučaj 1: podaci | = 0x02; break;
slučaj 2: podaci | = 0x12; break;
slučaj 3: podaci | = 0x03; break;
………
slučaj 28: podaci | = 0x1F; break; }}
Ažurirajte podatke kada se promijene funkcije:
boolean read_function ()
if (fla [locoAdr] == 0) {data = 0x80;
} // prednja svjetla isključena
if (fla [locoAdr] == 1) {
podatak = 0x90;
} // uključena glavna svjetla
Za svaku funkciju:
if (f2a [locoAdr] == 0) {podaci | = 0; }. // Isključena funkcija 2
if (f2a [locoAdr] == 1) {
podatak | = 0x02; // Funkcija 2 na} 'data' je izgrađena kombiniranjem ['| =' složeno bitova ili] HEX kodova za svaku funkciju.
Korak 3: Prijemnik
Shema kola je prikazana gdje se pinovi 5 i 6 Arduino Pro Mini koriste za davanje DCC signala koji se dovodi na H-most. Parovi H-mosta povezani su paralelno radi povećanja trenutnog kapaciteta. U zavisnosti od struje koju crpi loko, možda će biti potrebno da se na 16-polni DIP uređaj priključi hladnjak ili da se H-most za teške uslove spolja spoji.
Arduino skica je priložena za preuzimanje. DCC signal se sastoji od takta koji radi na 2MHZ
void SetupTimer2 () radi ovaj posao.
Sat uključuje 'kratke impulse' (58us) za '1' u DCC podacima i 'duge impulse' (116us) za '0' u DCC podacima.
Petlja void, prima podatke s radija i ako se pronađe valjani niz, podaci se pretvaraju u DCC podatke.
void loop (void) {if (radio.available ()) {bool done = false; done = radio.read (inmsg, 1); // čitanje primljenih podataka
char rc = inmsg [0]; // stavlja znak koji se čita u ovaj niz
if (rc! = 0) {. // ako znak nije jednak nuli
inString.concat (rc); // sastavljanje poruke}
if (rc == '\ 0') {// ako je znak '/0' kraj poruke
Serial.println (inString); // ispisuje sastavljenu poruku
string (); // dekonstruiramo niz poruku da bismo dobili DCC upute
} } }
Korak 4: Pokrenite Locos
Da biste izbjegli prekid podataka pri voženju više vlakova na istoj pruzi, morate odspojiti kontakte između kotača i kolosijeka za svaki zaposleni loko i kamion.
Uživajte u besplatnim vozovima bez obzira na uslove kolosijeka - kakva je razlika! Bez muke, bez start-stop i nije potrebno čišćenje.
Baterije koje sam koristio su LLoytron AA x 12. koje se mogu ponovo puniti. Posebno sam za njih napravio punjač koji puni 6 u isto vrijeme. (vidi uputstva)
Preporučuje se:
Automatizirani vrtni sistem izgrađen na Raspberry Pi za vanjsku ili unutrašnju upotrebu - MudPi: 16 koraka (sa slikama)
Automatizirani vrtni sistem izgrađen na Raspberry Pi za vanjske ili unutrašnje prostore - MudPi: Volite li vrtlarstvo, ali ne možete pronaći vremena za njegovo održavanje? Možda imate neke sobne biljke koje izgledaju pomalo žedno ili traže način da automatiziraju vašu hidroponiku? U ovom projektu ćemo riješiti te probleme i naučiti osnove
Drveni Bluetooth daljinski upravljač za Lego Duplo vlak: 3 koraka (sa slikama)
Drveni Bluetooth daljinski upravljač za Lego Duplo vlak: Moja djeca su voljela ovaj mali Lego Duplo vlak, posebno moj najmlađi koji se bori da komunicira riječima pa sam joj želio izgraditi nešto što bi joj pomoglo da se igra s vlakom neovisno o odraslima ili telefonima/tabletima. Nešto što
Vrtni monitor: 3 koraka
Vrtni monitor: Ovo je najnovija i potpuna verzija mojih vrtnih monitora. Napravio sam prethodne verzije s različitim namjenama, poput jedne s LCD -om i druge s ESP8266. Međutim, bolje sam dokumentirao ovu verziju pa sam odlučio učitati je. Kada c
Bežični vrtni sistem: 7 koraka
Bežični vrtni sistem: Ovaj projekt je zasnovan na Arduinu i koristi " module " da vam pomogne u zalijevanju biljaka i da se prijavite na temp, tlo i kišu. Sustav je bežičan preko 2,4 GHz i koristi NRF24L01 module za slanje i primanje podataka. Dopustite mi da vam malo objasnim kako
Pretvorite bežični usmjerivač u bežični proširivač 2x pristupna točka: 5 koraka
Pretvorite bežični usmjerivač u bežični proširivač 2x pristupna točka: Imao sam lošu bežičnu internetsku vezu u svojoj kući zbog RSJ -a (metalni nosač u stropu) i želio sam pojačati signal ili dodati dodatni produživač za ostatak kuće. Vidio sam produživače za oko 50 funti u elektro