Мазмуну:
Video: Garden Train - Arduino Wireless NMRA DCC: 4 кадам (Сүрөттөр менен)
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:41
Өлгөн темир жол системасы боюнча DCC менен мурунку көрсөтмөлөргө ылайык, мен идеяны кол менен өткөрүлгөн DCC Command Station менен баскычтоп жана ЖК дисплейи менен иштеп чыктым. Командалык станция NMRA DCC көрсөтмөлөрү үчүн талап кылынган бардык коддорду камтыйт, бирок рельстерге туташуунун ордуна, маалыматтар RF24L01+ радио модулу аркылуу жүк ташуучу унаага же локонун астына орнотулган кабыл алгычка - бөлмө уруксат берген жерде берилет.
Албетте, сиздин локосторуңузга мотордун кыймылдаткычтарына ылайыктуу жүк жөндөмүнүн декодери орнотулушу керек.
1 -кадам: системанын дизайны
Arduino Pro Mini дизайндын өзөгүн түзөт. Фритзингди схеманы өнүктүрүү жана ПХБ чыгаруу үчүн колдонуу.
Мен ошол эле ПКБны өткөргүчкө да, кабыл алуучуга да колдоно алдым, ошону менен кээ бир чыгымдарды үнөмдөп калдык.
Бергич баскычтоп жана ЖК үчүн туташууларга ээ, ал эми кабыл алуучу буларды талап кылбайт жана локо үчүн DCC чыгарууну камсыз кылуу үчүн H-көпүрөсүн колдонот.
Дагы бир өнүгүү, чоңураак H көпүрөсү үчүн байланыштарды камтыйт, эгерде күчтүү локостор үчүн керек болсо.
Эгерде сиз рюкзак менен келген LCD дисплейди колдонсоңуз, PCF8574 жок кылынышы мүмкүн, ал Arduinoдогу SCA / SCL туташууларын дисплейди 2 зым менен гана камсыздайт. = £ 10.00 болжол менен ар бири. + батареялар
Arduino Pro Mini. x 2 = £ 4.00
4х3 мембраналык баскычтоп = 3,00 фунт
20 х 4 ЖК дисплей = 7,00 фунт
PCF5874 = £ 1.80
NRF24L01+. радио модулдары x 2 = £ 5.80
10 өчүрүү үчүн PCB өндүрүшү (же Vero тактасы колдонулушу мүмкүн) = 2 фунт үчүн 24 фунт же 4,80 фунт
3.3 v Регулятор = £ 0.17 (RS пакетинен 25 пакети)
5v Regulator LM7805 = £ 0.30
H-көпүрө SN754410ne = 3,00 фунт
Lloytron кайра заряддалуучу 2700 maH AA батареялары x 12 = £ 22.00. (төмөнкү maH бааланган батареялар арзаныраак)
Конденсаторлор, казандар, казыктар, туташтыргычтар ж.б. = £ 2.00 болжол менен
Корпус 190x110x60 мм = £ 8.00
Бергич - телефон заряддагыч / батарея = 2,00 фунт
2 -кадам: өткөргүч
Электр схемасы D2ден D8ге чейинки Arduino Pro Mini'дин клавиатурага туташтырылгандыгын көрсөтөт. 100k ohm потенциометр ылдамдыкты жөнгө салуу үчүн Analog pin A0 менен туташкан. A5 Arduino Pro Miniде Pro Miniдин үстүңкү катмарындагы казыктарга туташтырылган зымдар аркылуу.
Arduino эскизи жүктөө үчүн тиркелген.
Мен 20 х 4 ЖК дисплейин колдонуп, сапта 20 белгиден турган 4 сап маалыматка ээ болчумун. Баскычтобу төмөнкү менюну камсыз кылат:
1ден 9га чейин = локо дареги * = багыты 0 = жарыктар # = 1ден 8ге чейинки баскычтар үчүн функция менюсу
Arduino Pro Mini эскизинин негизги сүрөттөлүшү: Коддун бул сабы DCEX билдирүүсүн HEX форматында уюштурат. структура Билдирүү msg [MAXMSG] = {
{{0xFF, 0, 0xFF, 0, 0, 0, 0}, 3}, // бош турган билдирүү
{{locoAdr, 0, 0, 0, 0, 0, 0}, 3} // 3 байт дареги
};
Ар бир локонун орнотууларын сактоо үчүн бир катар массивдер төмөнкүдөй орнотулат:
int la [20]; // локо номерлерди кармоо үчүн массив
int sa [20]; // массив ылдамдык маанилерин кармоо үчүн
int fda [20]; // dir кармоо үчүн массив
int fla [20]; // жарыктарды кармоо үчүн массив
int f1a [20]; // көңүл ачуу үчүн массив1 …..
int f8a [20]; // fun8 өткөрүү үчүн массив
Биз бара жатканда DCC көрсөтмөлөрүн өзгөртүү үчүн иштетүү үчүн:
Ылдамдык көрсөтмөлөрү үчүн: void o'zgarishlar_speed (struct Message & x) {
x.data [0] = locoAdr;
x.data [1] = 0x40; // 28 ылдамдык менен locoMsg}
Функция боюнча көрсөтмөлөр үчүн:
void түзөтүү_группасы1 (структуралык билдирүү & x) {
x.data [0] = locoAdr;
x.data [1] = 0x80; // locoMsg 0x80 тобунун көрсөтмөсү менен
Эскиздин негизги цикли:
void loop (void) {if (read_locoSpeed ()) {assemble_dcc_msg_speed ();
send_data_1 (); // маалыматты зымсыз жөнөтүү
кечигүү (10);
send_data_3 (); // маалыматтарды дисплейде көрсөтүү
send_data_4 (); // сериялык монитордо маалыматтарды көрсөтүү}
if (read_function ()) {
assemble_dcc_msg_group1 ();
send_data_1 ();
кечигүү (10);
send_data_3 (); }}
Ылдамдык өзгөргөндө маалыматты жаңыртыңыз:
boolean read_locoSpeed () Бул жаңы локо дарегин, ылдамдыкты же багытты аныктоону аныктайт жана ошого жараша HEX "маалыматын" түзөтөт. Бул жерде мен 28 ылдамдык кадамын белгилеп, NMRA S 9.2 стандартына жооп берүү үчүн ылдамдык маалыматы таблицадан табылышы керек 'speed_step ()' ичинде
void speed_step () {switch (locoSpeed) {
case 1: data | = 0x02; тыныгуу;
case 2: data | = 0x12; тыныгуу;
3 -жагдай: маалыматтар | = 0x03; тыныгуу;
………
case 28: data | = 0x1F; тыныгуу; }}
Функциялар өзгөргөндө маалыматтарды жаңыртуу:
логикалык read_function ()
if (fla [locoAdr] == 0) {data = 0x80;
} // баштын жарыгы өчөт
if (fla [locoAdr] == 1) {
маалыматтар = 0x90;
} // фаралар күйгүзүлгөн
Ар бир функция үчүн:
if (f2a [locoAdr] == 0) {data | = 0; }. // Функция 2 өчүк
эгер (f2a [locoAdr] == 1) {
маалыматтар | = 0x02; // "маалыматтар" боюнча 2 -функция ар бир Функция үчүн ['| =' татаал же] HEX коддорун бириктирүү менен курулат.
3 -кадам: Алуучу
Электр схемасы H-көпүрөсүнө жеткирилген DCC сигналын камсыз кылуу үчүн Arduino Pro Mini 5 жана 6-пиндери колдонулат. H-көпүрө жуптары учурдагы кубаттуулукту жогорулатуу үчүн параллель туташкан. Локо тарткан токко жараша, жылыткычты 16 пин DIP түзмөгүнө тиркөө талап кылынышы мүмкүн же оор H-көпүрөсү сырттан туташтырылышы мүмкүн.
Arduino эскизи жүктөө үчүн тиркелген. DCC сигналы 2MHZ чуркаган сааттан турат
void SetupTimer2 () бул ишти аткарат.
Саатка DCC маалыматында '1' үчүн 'кыска импульстар' (58us) жана DCC маалыматында '0' үчүн 'узак импульстар' (116us) кирет.
Цикл жараксыз, радиодон маалыматтарды алат жана эгерде жарактуу сап табылса, маалыматтар DCC маалыматтарына айландырылат.
void loop (void) {if (radio.available ()) {bool done = false; жасалган = radio.read (inmsg, 1); // алынган маалыматтарды окуу
char rc = inmsg [0]; // коюлган белгини бул массивге коюңуз
if (rc! = 0) {. // эгер символ нөлгө барабар болбосо
inString.concat (rc); // билдирүүнү түзүү}
if (rc == '\ 0') {// if тамга '/0' билдирүүнүн аягы болсо
Serial.println (inString); // чогулган кабарды басып чыгаруу
сап (); // DCC көрсөтмөлөрүн алуу үчүн сап билдирүүсүн куруңуз
} } }
4 -кадам: Локосторду иштетүү
Бир эле жолдо бир нече поездди иштетүүдөн маалымат үзгүлтүккө учурабашы үчүн, дөңгөлөктөр менен тректин ортосундагы байланыштарды ар бир локо жана жүк ташуучу унаа үчүн ажыратышыңыз керек.
Жолдун шартына карабастан бекер жүргөн поезддерден ырахат алыңыз - бул кандай айырмачылык! Эч кандай кыйынчылык, баштоо-токтотуу жана тазалоо талап кылынбайт.
Мен колдонгон батареялар кайра заряддалуучу LLoytron AA x 12. Мен өзгөчө бир убакта 6 заряддоочу заряддагыч кургам. (көрсөтмөлөрдү караңыз)
Сунушталууда:
Switch-Adapt Toys: Steam Train Toy жеткиликтүү !: 7 кадам (Сүрөттөр менен)
Switch-Adapt Toys: Steam Train Toy Toy жеткиликтүү!: Оюнчуктардын адаптациясы кыймыл мүмкүнчүлүктөрү чектелген же өнүгүү мүмкүнчүлүгү чектелген балдарга оюнчуктар менен өз алдынча аракеттенүүгө мүмкүнчүлүк берүү үчүн жаңы жолдорду жана ыңгайлаштырылган чечимдерди ачат. Көпчүлүк учурларда, ылайыкташтырылган оюнчуктарды талап кылган балдар кире алышпайт
Steampunk Train: 5 кадам (Сүрөттөр менен)
Steampunk Train: Мен досумдан колдонулган коляска базасын алуу бактысына ээ болдум. Мен аны иштетүү үчүн эки батарейканы тең алмаштырышым керек болчу, бирок мындай ар тараптуу рекорддук курулуш платформасын төлөө үчүн бул аз эле баа болчу. Мен чечтим
Smart IoT Garden: 10 кадам (Сүрөттөр менен)
Smart IoT Garden: Эгерде сиз мага окшош болсоңуз, табагыңыздагы жаңы жашылча -жемиштерди жакшы көрөсүз, бирок татыктуу бакчаны күтүүгө убактыңыз жок. Бул көрсөтмө сизге акылдуу IoT бакчасын кантип курууну көрсөтөт (мен аны: Жашыл Гвардия)
Smart Indoor Herb Garden: 6 кадам (Сүрөттөр менен)
Smart Indoor Herb Garden: Бул Нускамада мен сизге акылдуу жабык чөп бакчамды кантип жасаганымды көрсөтөм! Мен бул долбоорго бир нече илхам алдым, биринчиден, мен үйдөгү аэрогарден моделдерине кызыгуум бар эле. Андан тышкары, менде колдонулбаган Arduino Mega w болчу
Lego Duplo Train үчүн жыгач Bluetooth Remote: 3 кадам (Сүрөттөр менен)
Lego Duplo Train үчүн жыгачтан жасалган Bluetooth пульту: Менин балдарым бул кичинекей Lego Duplo поездин жакшы көрүштү, айрыкча менин сөзүм менен баарлашуу үчүн күрөшүп жаткан, ошондуктан мен ага чоңдорго же телефондорго/планшеттерге карабай поезд менен ойноого жардам бере турган нерсени кургум келди. Бир нерсе