Бухлопоезд из FixPrice

Dr.Slusarew

✩✩✩✩✩✩✩
23 Янв 2020
5
1
Прямо напротив дома открылся новый магазин фиксированных цен и, изучая ассортимент, была обнаружена интересная и очень дешевая железная дорога. Плюс в том, что рельсы и составы продают отдельно и за смешные 99-199 рублей. Следовательно, можно соорудить любой трек по всей квартире. Решено. Надо брать. Наборов рельс несколько в зависимости от длины трека. Лично встречал три. В больших есть перекрестки и стрелки. Поезда и вагоны тоже встречаются разные, но все на одной базе.
Через время пришла мысль - что, если эта дорога стала бы чуть умней? Идея возить баночку холодного пива сока от станции "Кухня" до станции "Диван". Зачем? Да чтоб было).

Итак, функционал:
Перевозка жестяной банки от станции к станции. Станции могут быть установлены в любой точке ж/д пути в любом количестве.

Внутренности
Вся электронная начинка находится внутри первого вагона (в моем случае был вагон с углем, но от набора к набору могут быть варианты). Там же, на дне, висит геркон, необходимый для распознавания станции.

Компоненты
  • Arduino nano
  • Аккумулятор Li-Ion 1200 мАh
  • Плата зарядки Li-Ion TP4056
  • MOS модуль
  • Геркон KY-021
  • Сенсорная кнопка TTP223
  • Поезд из FixPrice
Принцип работы
При подаче питания контроллер ждет сигнала с кнопки к отправке поезда. Нажали - поехали до момента, когда геркон войдет в действие магнитного поля на следующей станции. Локомотив питается стандартным способом (две ААА батареи), при помощи MOS модуля подаем питание на мотор. Контроллер питается от Li-ion батареи из первого вагона.

Вагон под банку
Вагон напечатан на 3Д принтере. Тележки, сцепка взяты с разобранного второго вагона из набора. При транспорте 0.5 банки редуктор паровоза проскальзывает. С 0.33 справляется хорошо. На всякий приложу обе модели. Вагон 0.33 и вагон 0.5
RiXyVVlqQQM.jpg

Станция
Также напечатана на 3Д принтере и имеет в себе маленький неодимовый магнит, на который, собственно, геркон и реагирует. Модель тут.
IMG_9706.jpg

Схема подключения
Без имени-2.jpg

Код простой и незамысловатый.
Сравнивает состояние кнопки, геркона и в зависимости от этого решает что делать.
1.Ждет разрешения на отправку, не опираясь на геркон, т.е. поезду надо единожды уловить поле магнита для остановки. В первых тестах этого не было и мог проскочить остановку, потеряв магнитное поле из виду.
2.Ждет сигнала остановки

C++:
void setup()
{
  Serial.begin(9600);

  pinMode (2, OUTPUT); // реле
  pinMode (3, INPUT); // кнопка
  pinMode (4, INPUT_PULLUP); // геркон
  pinMode (5, OUTPUT); //пищалка
 
  tone(5, 2000, 500);
}

void loop()
{
  Serial.print("d3\t\t");
  Serial.println(digitalRead(3));
  Serial.print("d4\t\t");
  Serial.println(digitalRead(4));
  Serial.print("d5\t\t");
  Serial.println(digitalRead(5));
  Serial.println("--------");

  if (digitalRead(3) == LOW && digitalRead(4) == HIGH)
  {
    digitalWrite (2, HIGH);
  }

  else if (digitalRead(3) == LOW && digitalRead(4) == LOW)
  {
    digitalWrite (2, LOW);
  }
  else
  {
   delay (1000), tone(5, 2000, 500),  delay (1000),
  
   digitalWrite (2, HIGH), delay (1000);
  }

}
14wXA3a7gdk.jpg1Ci1VrqXavw.jpglTU2W76EuJI.jpg

В планах переход на Wemos для реализации запуска с отдаленной станции без использования физической кнопки.
Хорошо бы научить поезд определять конкретные станции (с двумя станциями решается довольно просто - по геркону с каждой стороны, а вот с 3+ станциями идей пока нет).
Проект открыт для доработки и усовершенствований.
Спасибо за внимание!
 
  • Лойс +1
Реакции: Mike_Levin_

leshko

✩✩✩✩✩✩✩
15 Дек 2019
6
0
Гораздо интереснее разбить весь путь на участки и присвоить им адреса. И управлять поездом, в зависимости на каком из участков он находится...
Например используя принцип светодиодной адресной ленты.
 

Dr.Slusarew

✩✩✩✩✩✩✩
23 Янв 2020
5
1
@ASM, идея огонь. заказал плату и метки. Обновлю, когда все приедет)