Mündəricat:
Video: Garden Train - Arduino Wireless NMRA DCC: 4 Addım (Şəkillərlə birlikdə)
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:46
Ölü dəmir yolu sistemi ilə bağlı DCC ilə əvvəlki təlimatlara əlavə olaraq, fikri klaviatura və LCD displeyə malik DCC Komanda Stansiyası ilə daha da inkişaf etdirdim. Komandarlıq Stansiyası NMRA DCC təlimatları üçün lazım olan bütün kodlamaları ehtiva edir, lakin relslərə qoşulmaq əvəzinə məlumatlar RF24L01+ radio modulu ilə yük maşınının içərisində və ya lokotun altına quraşdırılmış alıcıya ötürülür - otaq icazə verdiyi yerdə.
Əlbəttə ki, lokotlarınızda mühərrik mühərriklərinə uyğun yükləmə qabiliyyəti olan bir dekoder quraşdırılmalıdır.
Addım 1: Sistemin dizaynı
Arduino Pro Mini dizaynın mərkəzindədir. Dövrəni inkişaf etdirmək və PCB istehsal etmək üçün Fritzing -dən istifadə etmək.
Eyni PCB -ni həm ötürücü, həm də alıcı üçün istifadə edə bildim, beləliklə bəzi xərclərə qənaət etdim.
Vericinin klaviatura və LCD üçün əlaqələri var, qəbuledici isə bunları tələb etmir və lokot üçün DCC çıxışını təmin etmək üçün H körpüsündən istifadə edir.
Əlavə bir inkişaf, daha güclü lokoslar üçün tələb olunarsa daha böyük bir H körpüsü üçün əlaqələri əhatə edir.
PCF8574, Arduino üzərindəki SCA / SCL bağlantılarının ekranı yalnız 2 teldən istifadə edərək qidalandırmasına imkan verən sırt çantası ilə təchiz edilmiş bir LCD displey istifadə etsəniz silinə bilər. = Hər biri təxminən 10.00 funt sterlinq. + batareyalar
Arduino Pro Mini. x 2 = 4,00 funt sterlinq
4x3 membran klaviatura = 3,00 funt
20 x 4 LCD ekran = 7.00 funt sterlinq
PCF5874 = 1,80 funt
NRF24L01+. radio modulları x 2 = 5,80 funt
10 endirim üçün PCB istehsalı (və ya Vero lövhəsi istifadə edilə bilər) = 2 off üçün 24 funt sterlinq və ya 4.80 funt sterlinq
3.3 v Regulator = 0.17 funt (RS Comp -dən 25 paket)
5v tənzimləyici LM7805 = 0.30 funt
H körpüsü SN754410ne = 3,00 funt
Lloytron təkrar doldurulan 2700 maH AA batareyaları x 12 = 22.00 funt sterlinq. (aşağı maH nominal batareyalar daha ucuzdur)
Kondansatörler, qablar, sancaqlar, bağlayıcılar və s. = Təxminən £ 2.00
Kassa 190x110x60 mm = 8.00 funt sterlinq
Verici - telefon şarj cihazı / batareya = 2,00 funt
Addım 2: ötürücü
Arduino Pro Mini -dəki D2 -dən D8 sancaqlarının klaviatura ilə birləşdirildiyi dövrə diaqramı göstərilir. Sürət tənzimlənməsi üçün Analog pin A0 -a 100k ohm potansiyometr, PCF8574 çipini təşkil edən SDA və SCL pinləri A4 sancaqlarına və A5, Arduino Pro Mini -də Pro Mini -nin üst qatındakı pinlərə lehimli tellər vasitəsilə.
Yükləmək üçün Arduino eskizi əlavə edilmişdir.
Hər sətirdə 20 simvoldan ibarət 4 sətir məlumatı təmin edən 20 x 4 LCD displeydən istifadə etmişəm. Klaviatura aşağıdakı menyunu təqdim edir:
1 - 9 = loko ünvanı * = istiqamət 0 = işıqlar # = 1 - 8 düymələri üçün funksiya menyusu
Arduino Pro Mini eskizinin əsas təsviri: Bu kod xətti DCC mesajını HEX formatında təşkil edir. struktur Mesajı msg [MAXMSG] = {
{{0xFF, 0, 0xFF, 0, 0, 0, 0}, 3}, // boş mesaj
{{locoAdr, 0, 0, 0, 0, 0, 0}, 3} // 3 baytlı ünvan
};
Hər bir lokonun parametrlərini saxlamaq üçün bir sıra seriallar aşağıdakı kimi qurulur:
int la [20]; // loco nömrələrini tutmaq üçün bir sıra
int sa [20]; // sürət dəyərlərini saxlamaq üçün bir sıra
int fda [20]; // dir tutmaq üçün bir sıra
int fla [20]; // işıqları saxlamaq üçün bir sıra
int f1a [20]; // əylənmək üçün bir sıra1 …..
int f8a [20]; // əylənmək üçün dizi8
Gedərkən DCC təlimatlarının dəyişdirilməsini təmin etmək üçün:
Sürət təlimatları üçün: void editor_speed (struct Message & x) {
x.data [0] = locoAdr;
x.data [1] = 0x40; // 28 sürətli addım ilə locoMsg}
Funksiya təlimatları üçün:
void editor_group1 (struct Message & x) {
x.data [0] = locoAdr;
x.data [1] = 0x80; // qrup 1 təlimatı ilə locoMsg 0x80}
Eskizin əsas döngəsi:
void loop (void) {if (read_locoSpeed ()) {assemble_dcc_msg_speed ();
send_data_1 (); // məlumatları simsiz göndərin
gecikmə (10);
send_data_3 (); // məlumatları LCD ekranda göstərin
send_data_4 (); // məlumatları serial monitorda göstərin}
if (read_function ()) {
assemble_dcc_msg_group1 ();
send_data_1 ();
gecikmə (10);
send_data_3 (); }}
Sürət dəyişdikdə məlumatları yeniləyin:
boolean read_locoSpeed () Bu, yeni bir lokos ünvanı, sürət və ya istiqamət ayarını algılar və buna uyğun olaraq HEX 'məlumatlarını' düzəldir. Burada 28 sürət addımını təyin etdim və NMRA standartı S 9.2 -ə cavab vermək üçün sürət məlumatları bir axtarış masasından tapılmalıdır. 'speed_step ()' daxilində
void speed_step () {keçid (locoSpeed) {
hal 1: məlumatlar | = 0x02; fasilə;
hal 2: data | = 0x12; fasilə;
hal 3: data | = 0x03; fasilə;
………
hal 28: data | = 0x1F; fasilə; }}
Funksiyalar dəyişdikdə məlumatları yeniləyin:
boolean oxu funksiyası ()
if (fla [locoAdr] == 0) {data = 0x80;
} // faralar söndü
əgər (fla [locoAdr] == 1) {
məlumat = 0x90;
} // faralar yanır
Hər bir funksiya üçün:
if (f2a [locoAdr] == 0) {data | = 0; }. // Funksiya 2 deaktivdir
əgər (f2a [locoAdr] == 1) {
məlumatlar | = 0x02; // "data" üzrə 2 -ci funksiya, hər bir funksiya üçün ['| =' mürəkkəb bit və ya] HEX kodlarını birləşdirərək qurulur.
Addım 3: Alıcı
H-körpüsünə verilən DCC siqnalını təmin etmək üçün Arduino Pro Mini 5 və 6 sancaqlarının istifadə edildiyi dövrə diaqramı göstərilmişdir. H-körpü cütləri cari tutumu artırmaq üçün paralel olaraq bağlanır. Lokonun çəkdiyi cərəyandan asılı olaraq, 16 pinli DIP cihazına bir qızdırıcının bağlanması tələb oluna bilər və ya xaricdən ağır bir H körpüsü bağlana bilər.
Arduino eskizi yükləmək üçün əlavə edilmişdir. DCC siqnalı 2MHz -də işləyən bir saatdan ibarətdir.
void SetupTimer2 () bu işi görür.
Saata DCC məlumatlarında '1' üçün 'qısa darbeler' (58us) və DCC məlumatlarında '0' üçün 'uzun pulslar' (116us) daxildir.
Döngü boşluğu radiodan məlumat alır və etibarlı bir sim tapılarsa, məlumatlar DCC məlumatlarına çevrilir.
void loop (void) {if (radio.available ()) {bool done = false; tamamlandı = radio.read (inmsg, 1); // alınan məlumatları oxuyun
char rc = inmsg [0]; // oxunan xarakteri bu cərgəyə qoyun
əgər (rc! = 0) {. // xarakter sıfıra bərabər deyilsə
inString.concat (rc); // mesajı qurun}
if (rc == '\ 0') {// əgər xarakter '/0' mesajın sonudursa
Serial.println (inString); // yığılmış mesajı çap edin
simli (); // DCC təlimatlarını almaq üçün simli mesajı qurun
} } }
Addım 4: Locoları işə salın
Eyni yolda birdən çox qatarın hərəkət etməsinə dair məlumatların kəsilməməsi üçün, işləyən hər bir lokomotiv və yük maşını üçün təkərlər və yol arasındakı kontaktları ayırmaq lazımdır.
Yol şəraitindən asılı olmayaraq pulsuz işləyən qatarlardan zövq alın - nə fərq! Heç bir çətinlik, start-stop və təmizliyə ehtiyac yoxdur.
İstifadə etdiyim batareyalar yenidən şarj edilə bilən LLoytron AA x 12-dir. Xüsusilə bir anda 6 şarj edən bir şarj cihazı qurmuşam. (bax təlimatlı)
Tövsiyə:
Smart IoT Garden: 10 addım (şəkillərlə birlikdə)
Smart IoT Garden: Mənim kimi bir şey varsa, boşqabınızdakı təzə meyvə və tərəvəzləri sevirsiniz, ancaq layiqli bir bağ saxlamaq üçün kifayət qədər vaxtınız yoxdur. Bu öyrədici, ağıllı bir IoT bağçasının necə qurulacağını sizə göstərəcəkdir (buna Yaşıl Qvardiya deyilir)
Raspberry Pi Powered IOT Garden: 18 Addım (Şəkillərlə birlikdə)
Raspberry Pi Powered IOT Garden: Bu layihənin əsas məqsədlərindən biri Əşyalar İnterneti (IoT) gücündən istifadə edərək bir bağın rifahını qorumaq idi. Mövcud alət və proqramların çox yönlülüyü ilə əkinçimiz sensorlar ilə birləşdirilmişdir
Train Crossing Monitor Sistemi: 5 Addım (Şəkillərlə)
Train Crossing Monitor Sistemi: Bu təlimat, bir dəmir yolu sisteminin bir hissəsini idarə etmək üçün bir Arduino kodlaşdırmaq üçün MatLab -dan istifadə etməyi öyrədəcək
USB Batareyalı Wireless WiFi Genişləndiricisi: 7 Adım (Şəkillərlə birlikdə)
USB Battery Powered Wireless WiFi Extender: Bir oteldə qaldığınız zaman nə qədər qıcıqlandırıcı deyil və WiFi sadəcə pisdir. WiFi genişləndiricisi ilə şərtləri yaxşılaşdıra bilərsiniz, amma gördüklərim həmişə mövcud olmayan bir elektrik prizinə ehtiyac duyur. Ucuz qiymətə yenidən qurmağa qərar verdim
DIY Rotary Garden (TfCD): 12 addım (şəkillərlə)
DIY Rotary Garden (TfCD): Salam! Fikrimizcə, gələcəyin bağçılığını təmsil edə biləcək kiçik bir fırlanan bağçanın öz versiyasını necə hazırlayacağınıza dair kiçik bir dərs hazırladıq. Azalan elektrik və yer istifadə edərək, bu texnologiya sürətli