INHOUDSOPGAWE:

Tuintrein - Arduino Wireless NMRA DCC: 4 stappe (met foto's)
Tuintrein - Arduino Wireless NMRA DCC: 4 stappe (met foto's)

Video: Tuintrein - Arduino Wireless NMRA DCC: 4 stappe (met foto's)

Video: Tuintrein - Arduino Wireless NMRA DCC: 4 stappe (met foto's)
Video: #4.c - Adding Wi-Fi to DCC-EX 2024, November
Anonim
Image
Image
Ontwerp van stelsel
Ontwerp van stelsel

Na aanleiding van die vorige instruksies met DCC op 'n dooie spoorstelsel, het ek die idee verder ontwikkel met 'n handbediende DCC -bevelstasie met bedieningspaneel en LCD -skerm. Die Command Station bevat al die kodering wat nodig is vir NMRA DCC -instruksies, maar in plaas van om aan die relings te koppel, word die data deur die radiomodule RF24L01+ oorgedra na 'n ontvanger wat in 'n vragmotor of onder die loko gemonteer is - waar kamer dit ook al toelaat.

U lokomotiewe moet natuurlik toegerus wees met 'n dekodeerder van lasvermoë wat geskik is vir die enjins.

Stap 1: Ontwerp van stelsel

Ontwerp van stelsel
Ontwerp van stelsel

Die Arduino Pro Mini is die kern van die ontwerp. Gebruik Fritzing om die stroombaan te ontwikkel en om PCB's te vervaardig.

Ek kon dieselfde PCB vir beide sender en ontvanger gebruik, en bespaar dus 'n paar koste.

Die sender het aansluitings vir klavier en LCD, terwyl die ontvanger dit nie benodig nie en gebruik die H-brug om die DCC-uitset vir die loko te voorsien.

'N Verdere ontwikkeling bevat aansluitings vir 'n groter H-brug indien nodig vir kragtiger lokos.

Die PCF8574 kan verwyder word as u 'n LCD -skerm saam met die rugsak gebruik, sodat SCA / SCL -verbindings op die Arduino die skerm slegs met 2 drade kan voed. Onderdele: totaal = ongeveer £ 60 vir DCC Command Station + 1 ontvanger = Ongeveer £ 10,00 elk. + batterye

Arduino Pro Mini. x 2 = £ 4,00

4x3 membraan -toetsbord = £ 3,00

20 x 4 LCD -skerm = £ 7,00

PCF5874 = £ 1,80

NRF24L01+. radiomodules x 2 = £ 5,80

PCB -vervaardiging vir 10 afslag (of Vero -bord kan gebruik word) = £ 24 of £ 4,80 vir 2off

3.3 v Reguleerder = £ 0.17 (25 stuks van RS Comp)

5v Reguleerder LM7805 = £ 0,30

H-brug SN754410ne = £ 3,00

Lloytron herlaaibare 2700 maH AA-batterye x 12 = £ 22,00. (laer maH -gegradeerde batterye is goedkoper)

Kondensators, potte, penne, verbindings, ens = ongeveer £ 2,00

Omhulsel 190x110x60 mm = £ 8,00

Sender - telefoonlaaier / battery = £ 2,00

Stap 2: Sender

Sender
Sender

Die kringdiagram word getoon waar D2 tot D8 penne op die Arduino Pro Mini aan die bedieningspaneel gekoppel is. 'N Potensiometer van 100k ohm is gekoppel aan analoog pen A0 vir spoedaanpassing. A5 op die Arduino Pro Mini deur middel van gesoldeerde drade aan die penne op die boonste laag van die Pro Mini.

Die Arduino -skets word aangeheg om af te laai.

Ek het 'n 20 x 4 LCD -skerm gebruik wat 4 reëls inligting met 20 karakters per reël moontlik maak. Die sleutelbord bied die volgende spyskaart:

1 tot 9 = loko -adres * = rigting 0 = ligte # = funksie -kieslys vir sleutels 1 tot 8

Basiese beskrywing van Arduino Pro Mini -skets: Hierdie reël van die kode rangskik die DCC -boodskap in HEX -formaat. struct Boodskap boodskap [MAXMSG] = {

{{0xFF, 0, 0xFF, 0, 0, 0, 0}, 3}, // ledig boodskap

{{locoAdr, 0, 0, 0, 0, 0, 0}, 3} // 3 grepe adres

};

Om die instellings vir elke loko op te slaan, word 'n reeks skikkings soos volg opgestel:

int la [20]; // skikking om loco -nommers te hou

int sa [20]; // skikking om spoedwaardes te hou

int fda [20]; // skikking om dir

int fla [20]; // skikking om ligte te hou

int f1a [20]; // skikking om pret te hou1 …..

int f8a [20]; // skikking om pret te hou8

Om die DCC -instruksies te verander terwyl ons gaan:

Vir spoedinstruksies: void amend_speed (struct Message & x) {

x.data [0] = locoAdr;

x.data [1] = 0x40; // locoMsg met 28 spoedstappe}

Vir funksie instruksies:

ongeldig amend_group1 (struct Message & x) {

x.data [0] = locoAdr;

x.data [1] = 0x80; // locoMsg met groep een instruksie 0x80}

Die hooflus van die skets:

leemte -lus (leegte) {if (read_locoSpeed ()) {assemble_dcc_msg_speed ();

send_data_1 (); // stuur data per draadloos

vertraging (10);

stuur_data_3 (); // vertoon data op LCD -skerm

stuur_data_4 (); // vertoon data op seriële monitor}

as (leesfunksie ()) {

assemble_dcc_msg_group1 ();

send_data_1 ();

vertraging (10);

stuur_data_3 (); }}

Dateer data op as die spoed verander:

boolean read_locoSpeed () Dit ontdek 'n nuwe loko -adres, spoed of rigtinginstelling en verander die HEX 'data' dienooreenkomstig. in 'speed_step ()'

void speed_step () {switch (locoSpeed) {

geval 1: data | = 0x02; breek;

geval 2: data | = 0x12; breek;

geval 3: data | = 0x03; breek;

………

geval 28: data | = 0x1F; breek; }}

Dateer data op wanneer die funksies verander:

boolese leesfunksie ()

as (fla [locoAdr] == 0) {data = 0x80;

} // kopligte af

as (fla [locoAdr] == 1) {

data = 0x90;

} // kopligte aangeskakel

Vir elke funksie:

as (f2a [locoAdr] == 0) {data | = 0; }. // Funksie 2 af

as (f2a [locoAdr] == 1) {

data | = 0x02; // Funksie 2 op} 'data' word opgebou deur ['| =' samestelling bitwise of] die HEX -kodes vir elke funksie te kombineer.

Stap 3: Ontvanger

Ontvanger
Ontvanger

Die kringdiagram word getoon waar penne 5 en 6 van die Arduino Pro Mini gebruik word om die DCC-sein wat aan die H-brug verskaf word, te verskaf. Die H-brugpare word parallel gekoppel om die huidige kapasiteit te verhoog. Afhangende van die stroom wat deur die loko getrek word, kan dit nodig wees dat 'n heatsink aan die 16-pins DIP-toestel gekoppel word, of dat 'n swaar H-brug ekstern verbind kan word.

Die Arduino -skets word aangeheg om af te laai. Die DCC -sein bestaan uit 'n klok wat op 2MHZ loop

void SetupTimer2 () doen hierdie taak.

Die klok bevat 'kort pulse' (58us) vir '1' in DCC -data en 'lang pulse' (116us) vir '0' in DCC -data.

Die lusleegte kry data van die radio af en as 'n geldige string gevind word, word die data omgeskakel na DCC -data.

leemte -lus (leegte) {if (radio.available ()) {bool done = false; done = radio.read (inmsg, 1); // lees die ontvangde data

char rc = inmsg [0]; // plaas karakter gelees in hierdie skikking

as (rc! = 0) {. // as karakter nie gelyk is aan nul nie

inString.concat (rc); // bou die boodskap op}

if (rc == '\ 0') {// as karakter '/0' einde van die boodskap is

Serial.println (inString); // druk die saamgestelde boodskap af

string (); // de-konstrueer die string boodskap om DCC instruksies te kry

} } }

Stap 4: Begin die Locos

Begin die Locos
Begin die Locos

Om te voorkom dat data onderbreek word om meer as een trein op dieselfde spoor te laat ry, moet u die kontak tussen die wiele en die spoor vir elke loko en vragmotor ontkoppel.

Geniet gratis treine, ongeag die spooromstandighede - wat 'n verskil! Geen moeite, geen begin-stop en geen skoonmaak nodig nie.

Die batterye wat ek gebruik het, is herlaaibare LLoytron AA x 12. Ek het spesiaal vir hulle 'n laaier gebou wat 6 op 'n slag laai. (sien instruksies)

Aanbeveel: