IPB

Здравствуйте, гость ( Вход | Регистрация )

3 страниц V  < 1 2 3  
Reply to this topicStart new topic
> Arduino +, Автоматика DCC
comanche
сообщение 8.4.2017, 9:44
Сообщение #41


Новичок
*

Группа: Пользователи
Сообщений: 9
Регистрация: 9.12.2010
Из: Львов
Пользователь №: 4857
Спасибо сказали: 5 раз(а)




Є тут ще хтось з живих? :-D
Нещодавно відкопав проект https://github.com/DccPlusPlus/BaseStation/...-DCC--Plus-Plus
Чуваки написали повноцінну командну станцію на базі Arduino Uno/Mega + Motor Shield. Дуже рекомендую глянути :) єдина проблема - я не бачу підтримки мережі Ethernet у них. Якщо використовувати Mega - то в проекті залишається достатньо місця для Ethernet Shield також. А там уже справа техніки, підняти mqtt брокер і побудувати легко масштабовану event-driven модель - простіше простого.


--------------------
тільки h0, тільки хардкор
Go to the top of the page
 
+Quote Post
Antonio
сообщение 27.4.2017, 14:53
Сообщение #42


Рассказчик про модели
***

Группа: Пользователи
Сообщений: 420
Регистрация: 12.3.2010
Из: Киев
Пользователь №: 2673
Спасибо сказали: 56 раз(а)





По логике Ethernet нужен чтобы на TCP/IP перейти.
А зачем это вообще нужно?


--------------------
HO, Цифра:NCE+Digitrax, покатушки на полу по GeoLine.
Go to the top of the page
 
+Quote Post
comanche
сообщение 10.5.2017, 13:55
Сообщение #43


Новичок
*

Группа: Пользователи
Сообщений: 9
Регистрация: 9.12.2010
Из: Львов
Пользователь №: 4857
Спасибо сказали: 5 раз(а)





Масштабованість та дешевизна.
Хоча я трохи відійшов від канону DCC+ і почав ковиряти свій:

Моя архітектура зараз виглядає наступним чином:

Command Controll:
Raspberry Pi + JMRI Server (50$)
NCE PowerCAB + NCE USB (200$)

Proxy:
MQTT Server (Free)
NodeJS JMRI Client + MQTT Broker (Free)

Clients:
Arduino Mega + Ethernet Shield (12$ за комплект)

Command Controll - пояснювати немає потреби. Підключено до рейок, а NCE PC через USB до Raspberry та JMRI. Єдиний нюанс - NCE керує виключно потягами. Тобто ними керує JMRI але в мережі NCE катаються лише потяги.

Уся решту автоматика як: Датчики зайнятості, стрілки, світло та все інше що не підпадає під категорію потяг - внесено в JMRI віртуальний інтерфейс і працює напряму з Proxy.
Proxy - NodeJS сервер, який:
1. Під час старту сервера через JMRI JSON Server вигрібає список усіх віртуальних пристроїв створених в JMRI (http://jmri.org/help/en/html/web/JsonServlet.shtml)
2. Після того як список сформований Proxy підключається по WebSocket до JMRI WEB Server та починає слухати івенти які приходять на віртуальні пристрої. При цьому цей звязок двонаправлений. Proxy в даному випадку не лише слухає, а і знає як сказати JMRI що стан якогось пристрою змінився.
3. Proxy підписується на MQTT канал: BOARDS та кидає команду REGISTER.
4. Усі Arduino плати, які підключені до Ethernet, отримують цю команду та відправляють назад повідомлення формату: REGISTER::BOARD_ID::DEVICE_ID_1::DEVICE_ID_2::...::DEVICE_ID_N
5. Proxy реєструє усі ці плати у внутрішній пам'яті, а також на кожну плату створює свій MQTT канал, щоб надалі вести діалог з кожною платою окремо в її каналі.
6. Після створення каналу під конкретну плату, Proxy кидає в канал цієї плати початковий стан усіх пристроїв які підключені до неї, базуючись на ID пристроїв взятих з JMRI (тобто Arduino, під час програмування, має список пристроїв які будуть до неї підключені. По суті це те ж саме програмування адреси в декодері)
7. Proxy раз в N секунд посилає в загальний канал всіх плат команду PING, на яку всі плати мають відповісти PONG::BOARD_ID.
8. Якщо якась плата не відповідає більше аніж M секунд, вона вважається завислою та перезавантажується (Поки що це лише програмне перезавантаження, я працюю над розробкою хардварного варіанту з відключенням живлення на кілька секунд, воно точно гарантує успішний перезапуск Arduino та периферії)
9. У разі отримання повідомлення від плати, в каналі цієї плати, повідомлення розбирається та передається через JMRI WEB Server як оновлення статусу пристрою.
10. У разі отримання повідомлення від JMRI WEB Server про зміну статусу пристрою, Proxy знаходить на якій платі зареєстрований цей пристрій та кидає повідомлення про те, що у пристрої треба оновити стан в канал плати.

Clients:
Клієнти - це кінцеві Arduino плати з Ethernet shield які підключаються в звичайний Ethernet.
1. Плата(Arduino) містить інформацію про підключені до неї пристрої (їх ID з JMRI), та яким чином з ними працювати.
2. Плата при увімкнені: реєструється в Ethernet отримуючи IP АДресу, та підписується на два канали на MQTT сервері: BOARDS, та канал SENSORS/BOARD_ID в цей канал і будуть попадати всі повідомлення які стосуються змін стану пристроїв.
3. Після підписування плата кидає повідомлення в BOARDS, що вона увімкнулась: REGISTER::BOARD_ID::DEVICE_ID_1::DEVICE_ID_2::...::DEVICE_ID_N
4. Proxy отримавши таке повідомлення відправляє в канал SENSORS/BOARD_ID актуальні стани усіх підключених пристроїв до цієї плати.
5. Плата переходить в режим очікування зміни станів зі сторони Proxy, а також зі сторони пристроїв.
6. Отримуючи повідомлення PING в каналі BOARDS плата відповідає повідомленням: PONG::BOARD_ID, для того щоб сказати що вона все ще жива.


Підсумок
Таким чином отримуємо дуже легко масштабовану систему, в яку можна підключити необмежену кількість плат (Arduino). Точніше обмеження є лише по кількості IP адрес. У випадку якщо Arduino перестає запускатись - Провести заміну дуже просто, оскільки потрібно лише залити прошивку цієї ардуіни на нову, та підключити потрібні девайси до неї. При тому, що заміну можна робити на льоту, без необхідності перезапуску усієї системи. Точно так само можна додавати нові плати. Система їх прийме без перезапуску, та почне з ними працювати одразу.
А найголовніше - це дешевизна підходу. Вартість 1 сервомотору для переведення стрілки: 2$. До однієї плати MEGA можна підключити 45 Сервомоторів, таким чином вартість такої кількості стрілок коливається в діапазоні 2.5$ на одну стрілку (вартість Arduino + Ethernet Shield + Розбивкова Вартість Switch комутатора). Те ж саме стосується світлофорів, датчиків світла та інших пристроїв на макеті.

З детекторами зайнятості ситуація трохи цікавіша: зараз я симулюю присутність потяга зчитуючи мітки під вагонами RFID. тобто на вході та виході з блоку стоять зчитувачі RFID. На кожному вагоні та локомотиві є своя мітка. Таким чином вїхавши на блок, я зчитую усі мітки які туди потрапили. Виїжджаючи з блоку - я мітки віднімаю. Тобто віднімаючи мітки які виїхали з блоку від міток які на нього вїхали - я отримую результуючу Різницю яка каже: є ще хтось на блок участку чи немає. Наступним кроком буде подружити JMRI з номерами потягів, щоб JMRI точно знав, де знаходиться зараз потяг, а не лише Зайнятий/Вільний блок.
Вартість такого підходу ~4$ на блок (1.8$ за RFID рідер + 0.4$ за RFID мітку)

Сообщение отредактировал Виктор - 11.5.2017, 14:09


--------------------
тільки h0, тільки хардкор


Спасибо сказали:
Go to the top of the page
 
+Quote Post
pand
сообщение 11.5.2017, 1:07
Сообщение #44


Изучаю стендовый моделизм
**

Группа: Член клуба Модельный Бункер
Сообщений: 56
Регистрация: 5.6.2014
Пользователь №: 15761
Спасибо сказали: 48 раз(а)





good.gif
Круто !!
Навіть не можу уявити масштаби вашої залізниці .

Go to the top of the page
 
+Quote Post
comanche
сообщение 12.5.2017, 1:50
Сообщение #45


Новичок
*

Группа: Пользователи
Сообщений: 9
Регистрация: 9.12.2010
Из: Львов
Пользователь №: 4857
Спасибо сказали: 5 раз(а)




Закинув проект на гітхаб

Proxy & Client:
https://github.com/xcomanche/jmri-blackhawk
Arduino Library:
https://github.com/xcomanche/jmri-blackhawk-arduino-lib


--------------------
тільки h0, тільки хардкор
Go to the top of the page
 
+Quote Post
Antonio
сообщение 12.5.2017, 11:48
Сообщение #46


Рассказчик про модели
***

Группа: Пользователи
Сообщений: 420
Регистрация: 12.3.2010
Из: Киев
Пользователь №: 2673
Спасибо сказали: 56 раз(а)




Предлагаю вернуться к основам: ради чего так все у Вас получается.
Если не сложно, сбросьте схемку своего макета (можно в отдельной теме). я понимаю, что макет может быть и виртуальный.
Как мне кажется, указанное <Масштабованість та дешевизна> "немножко" не совместимо.

Тема RFID очень интесна, но она больше относится к идентификации.
К сожалению, у меня не получилось подключить RFID ридер к МЕГА. На этом все и закончилось.


--------------------
HO, Цифра:NCE+Digitrax, покатушки на полу по GeoLine.
Go to the top of the page
 
+Quote Post
comanche
сообщение 16.5.2017, 9:14
Сообщение #47


Новичок
*

Группа: Пользователи
Сообщений: 9
Регистрация: 9.12.2010
Из: Львов
Пользователь №: 4857
Спасибо сказали: 5 раз(а)




QUOTE (Antonio @ 12.5.2017, 11:48) *
Предлагаю вернуться к основам: ради чего так все у Вас получается.
Если не сложно, сбросьте схемку своего макета (можно в отдельной теме). я понимаю, что макет может быть и виртуальный.
Как мне кажется, указанное <Масштабованість та дешевизна> "немножко" не совместимо.

Тема RFID очень интесна, но она больше относится к идентификации.
К сожалению, у меня не получилось подключить RFID ридер к МЕГА. На этом все и закончилось.

Скетч макету, нажаль, я скинути не можу. Та я скину як тільки доберусь до домашнього компа - певні блок схеми.
Можу привідкрили лише деталі самого макету:
Довжина шляху: ~2км 200м
блок участків: ~150
стрілок: ~360
Світлофорів: >500(враховуючи маневрові)
Кількість потягів: 35(на даний момент) і з тенденцією на розширення
Вагонів: >200
Кількість секцій: 3(по суті секція - це самодостатній макет зі своєю темою і тд), але всі вони з'єднані між собою.


--------------------
тільки h0, тільки хардкор
Go to the top of the page
 
+Quote Post
Antonio
сообщение 17.5.2017, 15:46
Сообщение #48


Рассказчик про модели
***

Группа: Пользователи
Сообщений: 420
Регистрация: 12.3.2010
Из: Киев
Пользователь №: 2673
Спасибо сказали: 56 раз(а)




Цитата(comanche @ 16.5.2017, 9:14) *
Скетч макету, нажаль, я скинути не можу. Та я скину як тільки доберусь до домашнього компа - певні блок схеми.
Можу привідкрили лише деталі самого макету:
Довжина шляху: ~2км 200м
блок участків: ~150
стрілок: ~360
Світлофорів: >500(враховуючи маневрові)
Кількість потягів: 35(на даний момент) і з тенденцією на розширення
Вагонів: >200
Кількість секцій: 3(по суті секція - це самодостатній макет зі своєю темою і тд), але всі вони з'єднані між собою.

Предполагаю, что я чего-то не помимаю, но
на 2,2 км - 150 блоков - выходит средняя длина блока 14 м (!)
про кол-во стрелок, светофоров тоже у меня арифметика "не складывается".
:)

Сообщение отредактировал Antonio - 17.5.2017, 15:47


--------------------
HO, Цифра:NCE+Digitrax, покатушки на полу по GeoLine.
Go to the top of the page
 
+Quote Post
comanche
сообщение 19.5.2017, 19:38
Сообщение #49


Новичок
*

Группа: Пользователи
Сообщений: 9
Регистрация: 9.12.2010
Из: Львов
Пользователь №: 4857
Спасибо сказали: 5 раз(а)




QUOTE (Antonio @ 17.5.2017, 15:46) *
Предполагаю, что я чего-то не помимаю, но
на 2,2 км - 150 блоков - выходит средняя длина блока 14 м (!)
про кол-во стрелок, светофоров тоже у меня арифметика "не складывается".
:)


Тут ще багато невідомих у рівнянні :) Але суть така. 3 секції знаходяться на доволі великій відстані одна від одної ~10м. Подвійний трек усюди, що по суті дає нам 1100метрів шляху + 6 переходів між секціями (кожна секція зв'язана з кожною).
Основна довжина шляху тратиться саме на технічні нюанси в організації зв'язку. кількість стрілок та світлофорів я прикинув базуючись на 1-му з блок-участків: 2 вхідних, 2 вихідних, 6 маневрових і 8 стрілок :)


Дуже багато деталей зараз в розробці, тому цифри будуть змінюватись :)

Сообщение отредактировал comanche - 19.5.2017, 19:42


--------------------
тільки h0, тільки хардкор
Go to the top of the page
 
+Quote Post
comanche
сообщение 31.8.2017, 22:33
Сообщение #50


Новичок
*

Группа: Пользователи
Сообщений: 9
Регистрация: 9.12.2010
Из: Львов
Пользователь №: 4857
Спасибо сказали: 5 раз(а)




От вам прототип залізниці на голосовому управлінні з використанням Amazon Echo Dot, Amazon Alexa, AWS Lambda, AWS IoT, Raspberry Pi, JMRI, JMRI-Blackhawk

https://www.youtube.com/watch?v=njee-FgX1GA


--------------------
тільки h0, тільки хардкор
Go to the top of the page
 
+Quote Post

3 страниц V  < 1 2 3
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




Текстовая версия Сейчас: 17.10.2017, 12:27
Яндекс.Метрика