Сборка DCC-командной станции для модельной железной дороги на Arduino с бесплатным приложением
Компоненты и материалы
| SparkFun Arduino Pro Mini 328 - 5V/16MHz | 1 |
| LMD18200T (H-мост 3А) | 1 |
| Печатная плата (PCB) | 1 |
| Линейный стабилизатор 7805 (5В) | 1 |
| Зенерный диод 3.6В 0.5Вт (1N4732A) | 1 |
| Bluetooth-модуль HC-06 | 1 |
| Резистор 0.1 Ом 2 Вт (токовый шунт) | 1 |
| Конденсатор 220 мкФ 16В | 1 |
| Конденсатор 10 мкФ 16В | 1 |
| Керамический конденсатор 0.1 мкФ | 3 |
| Резистор 10 кОм | 2 |
| Резистор 4.7 кОм | 1 |
| Клеммник 2-позиционный 3.5 мм | 1 |
| Клеммник 6-позиционный 2.54 мм | 1 |
| Гнездо 4-пин 2.54 мм | 1 |
| Гнездо 12-пин 2.54 мм | 2 |
Приложения и онлайн-сервисы
- LocoMotive — бесплатная версия приложения (Google Play)
- LocoMotive DCC — полная версия (платная, £5 + налог) с чтением/записью CV 1–255
О проекте
В чем уникальность этой системы? Очень простая электронная схема формирует DCC-сигнал и питание путей, но основную работу выполняет приложение на смартфоне! Мощность процессора телефона используется для формирования пакетов команд DCC, что сильно упрощает задачу Arduino.
Обновления:
- 16 авг 2019: Выпуск улучшенного приложения с чтением/записью CV 1–255 (платная версия).
- 18 мая 2019: Новая версия приложения (£3 + налог): до 28 функций с редактируемыми названиями, видимостью и режимом «мгновенное» (momentary). Одновременное управление до 4 локомотивами с полосками скорости.
- 17 фев 2019: Рекомендуется удлинить антенну HC-06 медным проводом длиной 31.2 мм (1/4 волны для 2.4 ГГц) для увеличения дальности.
- 29 янв 2019: Добавлен режим momentary для F2/F3 (звуки гудка), пресет максимальной скорости для каждого локомотива.





Это самая эффективная DCC-командная станция: минимум компонентов, максимальные возможности. Сборка на готовой плате (доступна на eBay) и нескольких деталях. Приложение LocoMotive (бесплатно) работает на Android 4.1+. Совместимо с NMRA-декодерами. Система формирует DCC-пакеты в приложении, отправляет их на Arduino, который комбинирует их с тактовыми сигналами DCC.
Общая стоимость деталей ~£20 (покупка на eBay).
Возможности:
- Управление 1–20 локомотивами
- Идеально для малых/средних макетов
- 2А нагрузка (до 16 локомотивов OO/HO), можно поставить более мощный H-мост
- Защита от короткого замыкания, настраиваемое отключение по перегрузке
- Свет и направление движения
- Функции F1–F8 с редактированием имен, видимостью, режимом momentary
- Стрелки/аксессуары — до 8 пар выходов с редактированием имен
- Свои имена локомотивов, пресет макс. скорости
- Программирование CV1 (адрес), чтение/запись CV 1–255
- Добавление адресов аксессуаров
- Выбор питания 12–20В под масштаб (Z/N/OO/HO/O/G)
Разработано на базе предыдущих работ по беспроводному DCC. Bluetooth-командная станция связана с приемником на Arduino + HC-06 + LMD18200 (2А).
Шаг 1: Скетч Arduino
Полный скетч во вложении. Основной цикл принимает данные по Bluetooth, декодирует текстовые строки в массивы байтов для формирования DCC-пакетов (3 или 4 байта).
void loop() {
if (bluetooth.available() > 0) {
inString = bluetooth.readStringUntil('\n');
}
if (inString.substring(0,1) == "D") {
string(); // парсинг и формирование пакета
}
delay(20);
}
Функция string() разбирает строку и заполняет структуру сообщения DCC.
Примеры протокола:
- Строка
DD, 3, 63, 12, 48→ 4-байтовый пакет скорости: [Loco 3] [speed steps] [loco speed] [XOR] - Строка
DD, 1, 129, 128→ 3-байтовый пакет функций: [Loco 1] [F1 on] [XOR]
Стандарт NMRA: S-9.2.1
LMD18200 требует DCC-сигнал на 핀 DIR, а PWM зажатым в HIGH.
Шаг 2: Схема Fritzing
Arduino Pro Mini получает данные через HC-06, генерирует NMRA-стандартные тактовые циклы. Прием новых данных прерывает последовательность и обновляет пакет.
Список деталей (помимо платы):
- Arduino Pro Mini Atmega328P 5V/16M (eBay)
- LMD18200T H-мост (eBay)
- HC-06 Bluetooth (eBay)
- Резистор 0.1 Ом 2Вт (eBay)
- 3× Конденсатор 0.1 мкФ (eBay)
- 2× Резистор 10 кОм (eBay)
- Конденсатор 10 мкФ 25В (eBay)
- Конденсатор 220 мкФ 16В (eBay)
- Клеммник Phoenix Contact MKDS 1/2-3,5 (eBay)
- Резистор 4.7 кОм (eBay)
- Стабилизатор L7805CV (eBay)
- Разъемы: 4-pin, 2×12-pin, 6-pin клеммник (eBay)
- Зенер 3.6В 0.5Вт 1N4732A (eBay)
- Провода
- Блок питания: для OO/HO — 14В DC (например, зарядка от ноутбука 2.5А). Подберите панельный разъем под штекер.
Удлинение антенны HC-06: припаяйте твердый медный провод (от заземления сети) длиной 31.2 мм к антенне модуля. Изолируйте катушкой!
Важно: На плате Rx подключен к Rx модуля, Tx к Tx (не перекресто).
Добавлена защита по току через шунт 0.1 Ом. Arduino измеряет ток на A0 (внутренний опорный 1.1В). При превышении 2А подается HIGH на пин 13 (Brake LMD18200). Ток передается в приложение каждую секунду.
if (C > 2000) { // 2 А
Serial.println("Over Current");
digitalWrite(13, HIGH); // Brake
}
void send_c() {
t = millis() - lastmillis;
if (t >= interval) {
bluetooth.write(sensorValue);
bluetooth.write('c');
lastmillis = millis();
}
}
Шаг 3: Android-приложение
- Бесплатная версия: LocoMotive (Google Play)
- Полная версия (£5.99): LocoMotive DCC (чтение/запись CV 1–255)
Инструкции к полной версии во вложении.
Исходный код (Arduino)
Скетч locomotive_dcc_sep19.ino с поддержкой CV read/write, контроля тока, Bluetooth-протоколом.
// 1 Sep 2019 // sketch for Android App 'Locomotive DCC' using LMD18200 h-bridge
// CV read/write facility added
#include <SoftwareSerial.h>
SoftwareSerial bluetooth(8,9); // RX TX
// ... (полный код во вложении, см. исходный XML)
Код включает: генерацию DCC-сигнала через Timer2 (прерывания), машину состояний для преамбулы/сепаратора/байтов данных, парсинг Bluetooth-команд (D, C, G, A, get, add, V, E), функции программирования CV (reset, page preset, write, verify), измерение тока с усреднением.
Корпус и сборка

Схемы
- Bluetooth receiver / H-Bridge amplifier circuit (Fritzing):
bluetooth_android_dcc_lmd18200_S8NTVsI4LY.fzz - Инструкции к приложению
Производственный процесс
- MrRobot: Ubuntu Mobile-приложение для управления роботом Rapiro голосом, касанием и встряхиванием
- Автоматизированная барная станция «6-Сhooter» на Arduino — Собираем коктейльный робот своими руками
- Цифровые кости на Arduino: генератор случайных чисел с LCD-дисплеем и кнопкой
- DIY USB-геймпад на Arduino: собственный высокопроизводительный контроллер
- Создание анимации и игр на LCD 16×2 с Arduino UNO
- Умные самозавязывающиеся туфли с встроенной сборкой энергии
- Измерение расстояния в реальном времени: Ардуино-сонар с визуализацией в Processing
- Pixel Chaser: игра на один тап с NeoPixel Ring и Arduino Nano
- Бесшовное управление яркостью светодиодов с помощью Bolt IoT и Arduino UNO
- Портативная метеостанция на Arduino Nano за $10: DHT22, BMP180 и LCD