Cuprins:
Video: Tren de grădină - Arduino Wireless NMRA DCC: 4 pași (cu imagini)
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:44
În urma instrucțiunilor anterioare cu DCC pe un sistem feroviar mort, am dezvoltat ideea în continuare cu o stație de comandă DCC de mână cu tastatură și afișaj LCD. Stația de comandă conține toate codurile necesare pentru instrucțiunile NMRA DCC, cu toate acestea, în loc să se conecteze la șine, datele sunt transferate prin modulul radio RF24L01 + către un receptor montat într-un camion sau sub locomotivă - oriunde permite spațiul.
Desigur, locomotivele dvs. trebuie să fie echipate cu un decodor de capacitate de încărcare adecvat motoarelor motorului.
Pasul 1: Proiectarea sistemului
Arduino Pro Mini se află în centrul designului. Folosind Fritzing pentru a dezvolta circuitul și pentru a produce PCB-uri.
Am putut folosi același PCB atât pentru emițător, cât și pentru receptor, economisind astfel niște costuri.
Transmițătorul are conexiuni pentru tastatură și LCD, în timp ce receptorul nu le necesită și folosește podul H pentru a furniza ieșirea DCC pentru loco.
O dezvoltare ulterioară include conexiuni pentru un pod H mai mare, dacă este necesar pentru loco mai puternice.
PCF8574 poate fi șters dacă utilizați un afișaj LCD care vine cu rucsacul, permițând conexiunilor SCA / SCL de pe Arduino să alimenteze afișajul folosind doar 2 fire Lista pieselor: Total = aproximativ 60 GBP pentru stația de comandă DCC + 1 receptor Cost suplimentar pentru receptoare = 10,00 GBP fiecare aprox. + baterii
Arduino Pro Mini. x 2 = 4,00 GBP
Tastatură cu membrană 4x3 = 3,00 GBP
Afișaj LCD 20 x 4 = 7,00 GBP
PCF5874 = 1,80 GBP
NRF24L01 +. module radio x 2 = 5,80 GBP
Fabricarea PCB pentru 10 off (sau se poate utiliza placa Vero) = 24 £ sau 4,80 £ pentru 2 off
3,3 v Regulator = 0,17 GBP (pachet de 25 de la RS Comp)
Regulator 5v LM7805 = 0,30 GBP
H-pod SN754410ne = 3,00 GBP
Baterii Lloytron reîncărcabile 2700 maH AA x 12 = 22,00 GBP. (bateriile cu o valoare mai mică a maH sunt mai ieftine)
Condensatoare, ghivece, știfturi, conectori etc. = 2,00 GBP aprox
Carcasă 190x110x60 mm = 8,00 GBP
Transmițător - încărcător telefon / baterie = 2,00 GBP
Pasul 2: Transmițător
Schema circuitului este afișată în cazul în care pinii D2 până la D8 de pe Arduino Pro Mini sunt conectați la tastatură. Un potențiometru de 100k ohm este conectat la pinul analogic A0 pentru reglarea vitezei. Pinii SDA și SCL formează cipul PCF8574 sunt conectați la pinii A4 și A5 pe Arduino Pro Mini prin intermediul unor fire lipite la pinii de pe stratul superior al Pro Mini.
Schița Arduino este atașată pentru descărcare.
Am folosit un afișaj LCD de 20 x 4 care permite 4 linii de informații cu 20 de caractere pe linie. Tastatura oferă următorul meniu:
1 la 9 = adresa loco * = direcția 0 = lumini # = Meniul funcțional pentru tastele 1 la 8
Descrierea de bază a schiței Arduino Pro Mini: Această linie a codului aranjează mesajul DCC în format HEX. struct Mesaj mesaj [MAXMSG] = {
{{0xFF, 0, 0xFF, 0, 0, 0, 0}, 3}, // mesaj inactiv
{{locoAdr, 0, 0, 0, 0, 0, 0}, 3} // adresa de 3 octeți
};
Pentru a stoca setările pentru fiecare loco, se configurează o serie de tablouri după cum urmează:
int la [20]; // matrice pentru a conține numere loco
int sa [20]; // matrice pentru a menține valorile vitezei
int fda [20]; // matrice pentru a ține dir
int fla [20]; // tablou pentru a ține luminile
int f1a [20]; // matrice pentru a păstra fun1 …..
int f8a [20]; // matrice pentru a menține fun8
Pentru a permite modificarea instrucțiunilor DCC pe măsură ce mergem:
Pentru instrucțiuni de viteză: void amend_speed (struct Message & x) {
x.data [0] = locoAdr;
x.data [1] = 0x40; // locoMsg cu 28 de pași de viteză}
Pentru instrucțiuni de funcționare:
anula amend_group1 (struct Message & x) {
x.data [0] = locoAdr;
x.data [1] = 0x80; // locoMsg cu instrucțiunea de grup 1 0x80}
Bucla principală a schiței:
bucla void (void) {if (read_locoSpeed ()) {assemble_dcc_msg_speed ();
send_data_1 (); // trimite date prin wireless
întârziere (10);
send_data_3 (); // afișează date pe ecranul LCD
send_data_4 (); // afișează date pe monitorul serial}
if (read_function ()) {
asamblare_dcc_msg_group1 ();
send_data_1 ();
întârziere (10);
send_data_3 (); }}
Actualizați datele când viteza se modifică:
boolean read_locoSpeed () Aceasta detectează o nouă setare de adresă loco, viteză sau direcție și modifică „datele” HEX în consecință. Aici am specificat 28 de pași de viteză și pentru a îndeplini standardul NMRA S 9.2, datele despre viteză trebuie găsite dintr-un tabel de căutare în „speed_step ()”
void speed_step () {switch (locoSpeed) {
caz 1: date | = 0x02; pauză;
caz 2: date | = 0x12; pauză;
caz 3: date | = 0x03; pauză;
………
cazul 28: date | = 0x1F; pauză; }}
Actualizați datele când funcțiile se schimbă:
boolean read_function ()
if (fla [locoAdr] == 0) {date = 0x80;
} // luminile de cap sunt stinse
if (fla [locoAdr] == 1) {
date = 0x90;
} // farurile aprinse
Pentru fiecare funcție:
if (f2a [locoAdr] == 0) {date | = 0; }. // Funcția 2 dezactivată
if (f2a [locoAdr] == 1) {
date | = 0x02; // Funcția 2 pe} „date” este construită prin combinarea ['| =' compus în biți sau] a codurilor HEX pentru fiecare funcție.
Pasul 3: Receptor
Schema circuitului este prezentată în cazul în care pinii 5 și 6 ai Arduino Pro Mini sunt utilizați pentru a furniza semnalul DCC furnizat podului H. Perechile H-pod sunt conectate în paralel pentru a crește capacitatea curentă. În funcție de curentul tras de locomotivă, poate fi necesar să fie atașat un radiator la dispozitivul DIP cu 16 pini, sau o punte H de mare capacitate poate fi conectată extern.
Schița Arduino este atașată pentru descărcare. Semnalul DCC este format dintr-un ceas care rulează la 2 MHz
void SetupTimer2 () face această treabă.
Ceasul include „impulsuri scurte” (58us) pentru „1” în datele DCC și „impulsuri lungi” (116us) pentru „0” în datele DCC.
Bucla nulă, primește date de la radio și dacă se găsește un șir valid, datele sunt convertite în date DCC.
bucla void (void) {if (radio.available ()) {bool done = false; done = radio.read (inmsg, 1); // citiți datele primite
char rc = inmsg [0]; // puneți caracterul citit în această matrice
if (rc! = 0) {. // dacă caracterul nu este egal cu zero
inString.concat (rc); // construi mesajul}
if (rc == '\ 0') {// if character is '/ 0' end of message
Serial.println (inString); // tipăriți mesajul asamblat
şir(); // deconstruiți mesajul șir pentru a obține instrucțiuni DCC
} } }
Pasul 4: Rulați Locos
Pentru a evita întreruperea datelor de la circulația mai multor trenuri pe aceeași cale, trebuie să deconectați contactele dintre roți și cale pentru fiecare locomotivă și camion angajat.
Bucurați-vă de trenuri circulante gratuite, indiferent de condițiile de cale ferată - ce diferență! Fără probleme, fără start-stop și fără curățare necesară.
Bateriile pe care le-am folosit sunt reîncărcabile LLoytron AA x 12. Am construit un încărcător special pentru ele care încarcă câte 6 la un moment dat. (vezi instructiv)
Recomandat:
Ciclul unei lumini solare de grădină pe un RBG: 7 pași (cu imagini)
Sus Ciclarea unei lumini solare de grădină pe un RBG: Există o mulțime de videoclipuri pe Youtube despre repararea luminilor solare de grădină; prelungind durata de viață a bateriei unei lumini solare de grădină, astfel încât acestea să funcționeze mai mult noaptea și o multitudine de alte hack-uri. Acest instructable este puțin diferit de cele pe care le găsiți pe Y
Sistem automat de grădină construit pe Raspberry Pi pentru exterior sau interior - MudPi: 16 pași (cu imagini)
Sistem automat de grădină construit pe Raspberry Pi pentru exterior sau interior - MudPi: Îți place grădinăritul, dar nu găsești timpul pentru a-l întreține? Poate aveți câteva plante de apartament care sunt puțin însetate sau caută o modalitate de a vă automatiza hidroponia? În acest proiect vom rezolva aceste probleme și vom învăța elementele de bază ale
Grădină inteligentă de plante interioare: 6 pași (cu imagini)
Grădină inteligentă de plante interioare: În acest instructiv, vă voi arăta cum am făcut grădina mea inteligentă de plante interioare! Am avut câteva inspirații pentru acest proiect, prima fiind că am avut ceva interes pentru modelele Aerogarden de acasă. În plus, am avut un Arduino Mega w neutilizat
Ghiveci automat pentru plante - Grădina mică: 13 pași (cu imagini)
Ghiveci automat pentru plante - Little Garden: Sunt student la tehnologia multimedia și de comunicare la Howest Kortrijk. Pentru misiunea noastră finală, a trebuit să dezvoltăm un proiect IoT la alegere. Privind în jur după idei, am decis să fac ceva util mamei mele care iubește cultivarea
Grădină IOT alimentată cu Raspberry Pi: 18 pași (cu imagini)
Raspberry Pi Powered IOT Garden: Unul dintre obiectivele principale ale acestui proiect a fost acela de a putea menține bunăstarea unei grădini folosind puterea Internetului obiectelor (IoT). Cu versatilitatea instrumentelor și software-urilor actuale, plantatorul nostru este integrat cu senzori care