Простейший DCC декодер на Arduino
- Василий
- Модератор
- Сообщения: 9441
- Зарегистрирован: Чт мар 06, 2008 9:03 am
- Имя: Василий Васильчиков
- Откуда: Северо-западное Болото
- Благодарил (а): 344 раза
- Поблагодарили: 458 раз
- Контактная информация:
Простейший DCC декодер на Arduino
В процессе эксперименты и изучения всякой электроники применимой к нашему делу, получился у меня простейший DCC декодер. (все зачеркнутое более не актуально)
Код расположен тут https://github.com/YoulDHead/DCC_decoder
Сразу хочу оговориться, это не полноценный декодер, в коде пока не реализована полная (да и частичная тоже ) разборка полученных пакетов. Мало того, я думаю что ресурсов использованной Arduino на полноценную разборку просто не хватит. Но в принципе, реализуя нужные кусочки, в дальнейшем можно получить вполне функциональные декодеры.
В результата получился вполне приличный и совсем даже не простейший декодер. Умеет быть мобильным и акссессуарным. Поддерживает достаточно большую часть возможностей описанных в NMRA.
Мне понадобилось -
Arduino Pro Mini самая дешевая трехвольтовая версия. Примерно 120р.
Опторазвязка 6N137 - 15р
Диод 1N4004 - 1р 10 коп.
Резисторы - 1k 1-шт, 10k 2-шт - примерно по 50 копеек за штуку.
Два регулятора на 3.3 и 5В и конденсаторы для их обвязки.
Монтажный провод, кусок текстолита.
Из остального, адаптер USB-TTL для программирования Arduino и компьютер с установленной средой.
Подключение электронной части - вот по этой схеме:Собственно код
[attachment=0]DCC_decoder.ino[/attachment]
В данный момент, декодер ловит пакеты с адресом 4 и выводит их содержимое в компорт.
Проверял на обычной рокомышке.
По мере каких-то доработок буду выкладывать. Если есть пожелания, вопросы, табуретки - пожалуйста
UPD:
Самое главное забыл. Вся информация по протоколу DCC из первоисточника:
http://www.nmra.org/sites/default/files ... 004-07.pdf
http://www.nmra.org/sites/default/files ... 012_07.pdf
Код расположен тут https://github.com/YoulDHead/DCC_decoder
В результата получился вполне приличный и совсем даже не простейший декодер. Умеет быть мобильным и акссессуарным. Поддерживает достаточно большую часть возможностей описанных в NMRA.
Мне понадобилось -
Arduino Pro Mini самая дешевая трехвольтовая версия. Примерно 120р.
Опторазвязка 6N137 - 15р
Диод 1N4004 - 1р 10 коп.
Резисторы - 1k 1-шт, 10k 2-шт - примерно по 50 копеек за штуку.
Два регулятора на 3.3 и 5В и конденсаторы для их обвязки.
Монтажный провод, кусок текстолита.
Из остального, адаптер USB-TTL для программирования Arduino и компьютер с установленной средой.
Подключение электронной части - вот по этой схеме:
[attachment=0]DCC_decoder.ino[/attachment]
Проверял на обычной рокомышке.
По мере каких-то доработок буду выкладывать. Если есть пожелания, вопросы, табуретки - пожалуйста
UPD:
Самое главное забыл. Вся информация по протоколу DCC из первоисточника:
http://www.nmra.org/sites/default/files ... 004-07.pdf
http://www.nmra.org/sites/default/files ... 012_07.pdf
- Вложения
-
- DCC_decoder.ino
- (4 КБ) 1330 скачиваний
In der Grosse Familie nicht der клювом клац-клац!
--------------------------------------------------------------------------
Не натягивайте сову на глобус!
--------------------------------------------------------------------------
Не натягивайте сову на глобус!
- LABA
- Сообщения: 1616
- Зарегистрирован: Пт мар 20, 2009 9:25 pm
- Откуда: Питер
- Благодарил (а): 32 раза
- Поблагодарили: 7 раз
- Контактная информация:
Re: Простейший DCC декодер на Arduino
Так же стоит сделать возможность считывать значение CV. Для этого надо, чтобы контроллер в нужный момент дёргал какой-нибудь ногой, с длительностью 6мс.
К этой ноге вот такую обвязку приделать:
К этой ноге вот такую обвязку приделать:
- Василий
- Модератор
- Сообщения: 9441
- Зарегистрирован: Чт мар 06, 2008 9:03 am
- Имя: Василий Васильчиков
- Откуда: Северо-западное Болото
- Благодарил (а): 344 раза
- Поблагодарили: 458 раз
- Контактная информация:
Re: Простейший DCC декодер на Arduino
Это следующим этапом Та же схема лежит в запасе.
In der Grosse Familie nicht der клювом клац-клац!
--------------------------------------------------------------------------
Не натягивайте сову на глобус!
--------------------------------------------------------------------------
Не натягивайте сову на глобус!
-
- Сообщения: 1430
- Зарегистрирован: Вс фев 19, 2012 7:18 am
- Имя: Фарид
- Откуда: Узбекистан Ташкент
- Поблагодарили: 1 раз
- Контактная информация:
Re: Простейший DCC декодер на Arduino
Пожелания:
1)вывод на генератор дыма
2)выводы для подключения 2х серв поднятия/отпускания пантографов 2шт.
3)выводы наружнего освешения тележек
4)вывод для подключения светодиода имитации искры/дуги на пантографе
5)возможность записывать и воспроизводить звуки
6) возможность управлять как в цифре так и в аналоге
)))))) можно продолжать ешё ешё и ешё)))
это конешно так к примеру)))
1)вывод на генератор дыма
2)выводы для подключения 2х серв поднятия/отпускания пантографов 2шт.
3)выводы наружнего освешения тележек
4)вывод для подключения светодиода имитации искры/дуги на пантографе
5)возможность записывать и воспроизводить звуки
6) возможность управлять как в цифре так и в аналоге
)))))) можно продолжать ешё ешё и ешё)))
это конешно так к примеру)))
- Василий
- Модератор
- Сообщения: 9441
- Зарегистрирован: Чт мар 06, 2008 9:03 am
- Имя: Василий Васильчиков
- Откуда: Северо-западное Болото
- Благодарил (а): 344 раза
- Поблагодарили: 458 раз
- Контактная информация:
Re: Простейший DCC декодер на Arduino
1, 2, 3, 4 легко.
5 - приедут запчасти, подумаем. Локсаунд не обещаю, но простенькие звуковые схемы я думаю будут. Нашел совсем простой плеер, за 200 рублей, который поддерживает воспроизведение до 512 звуковых фрагментов с SD карточки и рулится через I2C.
6 - это вряд-ли, , так как с мне это не очень интересно, хотя....
Продолжайте
5 - приедут запчасти, подумаем. Локсаунд не обещаю, но простенькие звуковые схемы я думаю будут. Нашел совсем простой плеер, за 200 рублей, который поддерживает воспроизведение до 512 звуковых фрагментов с SD карточки и рулится через I2C.
6 - это вряд-ли, , так как с мне это не очень интересно, хотя....
Продолжайте
In der Grosse Familie nicht der клювом клац-клац!
--------------------------------------------------------------------------
Не натягивайте сову на глобус!
--------------------------------------------------------------------------
Не натягивайте сову на глобус!
- Crown
- Сообщения: 61
- Зарегистрирован: Пт ноя 23, 2012 10:39 am
- Имя: Андрей
- Откуда: Тула
- Контактная информация:
Re: Простейший DCC декодер на Arduino
Надо бы написать, что это все будет для садоводовВасилий писал(а):Продолжайте
- Василий
- Модератор
- Сообщения: 9441
- Зарегистрирован: Чт мар 06, 2008 9:03 am
- Имя: Василий Васильчиков
- Откуда: Северо-западное Болото
- Благодарил (а): 344 раза
- Поблагодарили: 458 раз
- Контактная информация:
Re: Простейший DCC декодер на Arduino
А у садоводов DCC? Если да, то наверное и им подойдет
У меня пока нет всех запчастей, еще едут, рулить двигателями пока что не умею Но думаю что постепенно всему научусь.
У меня пока нет всех запчастей, еще едут, рулить двигателями пока что не умею Но думаю что постепенно всему научусь.
In der Grosse Familie nicht der клювом клац-клац!
--------------------------------------------------------------------------
Не натягивайте сову на глобус!
--------------------------------------------------------------------------
Не натягивайте сову на глобус!
- Василий
- Модератор
- Сообщения: 9441
- Зарегистрирован: Чт мар 06, 2008 9:03 am
- Имя: Василий Васильчиков
- Откуда: Северо-западное Болото
- Благодарил (а): 344 раза
- Поблагодарили: 458 раз
- Контактная информация:
Re: Простейший DCC декодер на Arduino
Да это в общем не оффтопshalex писал(а):Есть небольшой вопрос - почему бы не использовать готовую библиотеку?
p.s. упс, не заметил, что это эксперимент. вопрос снимается
Первая причина - да, эксперимент. У меня так лучше укладывается в голове информация, когда не просто прочитал, а прочитал и сделал.
А вторая причина - Про Мини очень ограничены по ресурсам, поэтому полноценная библиотека там ни к чему. Лучше оставить место для других задач.
Сейчас отладив этот кусочек, я могу сделать любой конкретный функционал выловив лишь нужный пакет еще на уровне получения битов, в теле обработчика прерываний. Для себя вижу следующие возможности:
1. Отсеивать пакеты по типу адресов
2. Отсеивать пакеты по типу сообщений
3. Реализовывать только те обработчики, которые нужны и не тащить вместе с библиотекой все обработчики, универсальный код для всех пакетов и т.п. и т.д. (Хотя это все зависит от реализации библиотеки).
In der Grosse Familie nicht der клювом клац-клац!
--------------------------------------------------------------------------
Не натягивайте сову на глобус!
--------------------------------------------------------------------------
Не натягивайте сову на глобус!
- Василий
- Модератор
- Сообщения: 9441
- Зарегистрирован: Чт мар 06, 2008 9:03 am
- Имя: Василий Васильчиков
- Откуда: Северо-западное Болото
- Благодарил (а): 344 раза
- Поблагодарили: 458 раз
- Контактная информация:
Re: Простейший DCC декодер на Arduino
Продолжаем разговор.
Добавлено - запись в eeprom значений CV в Direct Mode. В коде реализован для CV1, переделать под всю пачку дело двух минут.
Реализованы классы для пакетов, и стэка пакетов.
В принципе сейчас в компорт выдает on-off при нажатии на кнопочку F1 рокомыши
PS: За корявость не пинать
Добавлено - запись в eeprom значений CV в Direct Mode. В коде реализован для CV1, переделать под всю пачку дело двух минут.
Реализованы классы для пакетов, и стэка пакетов.
В принципе сейчас в компорт выдает on-off при нажатии на кнопочку F1 рокомыши
PS: За корявость не пинать
- Вложения
-
- DCC_decoder.ino
- (14.52 КБ) 1233 скачивания
In der Grosse Familie nicht der клювом клац-клац!
--------------------------------------------------------------------------
Не натягивайте сову на глобус!
--------------------------------------------------------------------------
Не натягивайте сову на глобус!