Как настроить дорожный светофор по таймеру

Светофор с дополнительными секциями (автоматический режим)

Светофор — это специальное устройство предназначенное для регулирования движения транспорта и пешеходов.

Назначение сигналов и секций светофора в ПДД:

Сигналы светофора:

Назначение круглых сигналов светофора определено в ст. 6.2 ПДД:

  • ЗЕЛЕНЫЙ — разрешает движение (если мигает, значит время его действия истекает).
  • ЖЕЛТЫЙ — запрещает движение (да! да! это запрещающий сигнал светофора).
  • КРАСНЫЙ — запрещает движение (даже если он мигает или горит вместе с жёлтым).
  • КРАСНЫЙ и ЖЁЛТЫЙ — запрещает движение, информируя о скором включении зеленого.
  • ЖЕЛТЫЙ МИГАЮЩИЙ — информирует о нерегулируемом перекрестке или переходе.

Дополнительные секции поворота:

Назначение дополнительных секций поворота (стрелок поворота) определено в ст. 6.3 ПДД:

  • ЗЕЛЁНАЯ СТРЕЛКА (дополнительная секция поворота) — разрешает движение в указанном направлении если она светится или мигает.
  • Сигналы светофора, выполненные в виде стрелок, имеют то же значение, что и круглые сигналы соответствующего цвета, но их действие распространяется только на направлении, указываемом стрелкой.

Поведение на светофоре:

  • Если светофор состоит только из трёх основных секций (красной, желтой и зеленой, без стрелок), то его сигналы распространяются на все направления. Например, при включении зелёного сигнала, можно ехать прямо, влево и вправо, если это не запрещено знаками ПДД. При манёврах влево и вправо необходимо убедиться, что Вы не создаёте помех иным участникам движения.
  • Если светофор имеет дополнительную секцию поворота (влево и/или вправо) — значит движение в указанном направлении разрешено только при включении зелёного сигнала секции поворота. Например, если у светофора есть секция левого поворота, а светится только зелёный сигнал основного направления, значит разрешено движение только прямо и вправо.
  • Дополнительно о светофорах: При наличии дополнительных секций поворота, на зелёные сигналы светофора наносятся стрелки определяющие направления в которых разрешено движение. Сигнал светофора разрешающий движение влево, разрешает и разворот, если это не запрещено знаками ПДД.

Последовательность переключения сигналов светофора:

Сигналы основных секций:

  • Переключение сигналов основных секций от зелёного к красному:
    • Светится только зелёный.
    • Зелёный мигает.
    • Гаснет зелёный и включается только жёлтый.
    • Гаснет жёлтый и включается только красный.
  • Переключение сигналов основных секций от красного к зелёному:
    • Светится только красный.
    • Включается жёлтый при этом красный не гаснет (светятся жёлтый и красный).
    • Гаснут красный и жёлтый, включается только зелёный.

Сигналы дополнительных секций поворота:

  • Отключение секции поворота:
    • Светится зелёный сигнал секции поворота.
    • Зелёный мигает (информируя о скором отключении).
    • Секция отключается (не светится).
  • Включение секции поворота:
    • Секция отключена (не светится).
    • Включается зелёный сигнал секции поворота (без предупреждения).

Обратите внимание на то, что запрет движения (переключение от зелёного к красному, или отключение секций поворота) выполняется дольше чем разрешение движения (переключение от красного к зелёному, или включение секции поворота).

Инструкция по сборке светофора

  1. Установите блок светофора на стойку-основание
Читайте также:  Не работает сигнализация шерхан аллигатор

2. В случае, если Вы используете светофор без модуля питания, соедините детали при помощи крепежа, винтов и гаек — как с правой, так и с левой стороны.

Если же Вы используете модуль питания, используйте отдельный крепёж только слева. Правая часть соединится посредством крепления модуля питания.

3. Соедините крестовину как показано на рисунке

4. Закрепите светофор на крестовине при помощи винтов и гаек

5. Вы также можете вставить дополнительные секции

6. Собранный светофор должен выглядеть следующим образом:

Видео пояснение:

       Тег video не поддерживается вашим браузером.

Схема установки светофора на трассе:

Центр светофора должен находиться в 15см от линий, образующих перекрёсток, а сам светофор располагаться под углом 45° относительно линии движения автомобиля.

Угол распространения ИК данных составляет около 80°, а дальность передачи ИК данных настраивается поворотом крестовины резистора на обратной стороне платы основания.

Первое включение и настройка светофора:

После сборки светофора, его требуется подключить к Piranha UNO по шине I2C как указано ниже:

Сверху изображено подключение к Piranha UNO напрямую, а ниже через Trema Shield.

После подключения модуля к шине I2C, светофор необходимо настроить на автономную работу с постоянной отправкой данных о его состоянии по ИК-каналу.

Данные отправляемые светофором по ИК-каналу содержат не только информацию о текущих цветах, но и о типе регулируемого им перекрёстка, наличии дополнительных секций поворота, и наличии шлагбаума. Эта информация указывается при инициализации светофора обращением к функции begin() которая может принимать до 3 параметров:

Параметры функции begin():

Назначение: Возможные значения:
1 параметр
определяет
тип модуля
MODUL_TLIGHT — модуль является светофором.
MODUL_TLIGHT_AUTO — светофор с автопереключением цветов.
2 параметр
определяет
тип перекрёстка
TRACK_F — на светофоре есть дорога только прямо.
TRACK_FL — на светофоре есть дорога прямо и налево.
TRACK_FR — на светофоре есть дорога прямо и направо.
TRACK_LR — на светофоре есть дорога налево и направо.
TRACK_LRF — на светофоре есть дорога прямо, налево и направо.
Буквы L (left), R (right), F (forward) можно указывать в любом порядке.
3 параметр
определяет
наличие секций

если нет секций
и нет шлагбаума,
то параметр
не указывается SECTION_L — у светофора есть секция левого поворота. SECTION_R — у светофора есть секция правого поворота. SECTION_G — у светофора есть шлагбаум. SECTION_LR — есть секции левого и правого поворота. SECTION_LG — есть секция левого поворота и шлагбаум. SECTION_RG — есть секция правого поворота и шлагбаум. SECTIONT_LRG — есть обе секции поворота и шлагбаум. Буквы L (left), R (right), G (gate) можно указывать в любом порядке. Пример
инициализации begin( MODUL_TLIGHT_AUTO , TRACK_FL , SECTION_L );
модуль инициирован как светофор автоматически переключающий цвета,
регулирующий перекрёсток с дорогами прямо и налево,
светофор оснащён дополнительной секцией левого поворота.

Пример настройки светофора:

Ниже представлены два примера в которых светофор работает автономно и самостоятельно регулирует движение на перекрёстке. Зелёный сигнал основного направления и стрелок поворота будет светиться в течении 5 секунд. Жёлтый сигнал и мигающий зелёный будет длиться 3 секунды, а красный сигнал будет светиться 10 секунд.

Светофор не имеет секций поворота и регулирует движение на переходе или переезде с дорогой только прямо:
Светофор имеет дополнительные секции левого и правого поворота, и регулирует движение на перекрёстке с дорогами прямо, налево, и направо:

Скетчи отличаются только параметрами функции begin() .

Любой из двух скетчей можно запустить всего один раз, при наличии модуля светофор на шине I2C. Далее светофор будет постоянно и самостоятельно переключать свои цвета и передавать информацию о их состоянии при наличии питания. Для дальнейшей работы светофора не требуется его подключение к Piranha UNO, кроме случаев, когда Вы пожелаете изменить алгоритм работы модуля. Питание модуля без подключения к Piranha UNO удобно организовать используя батарейный отсек.

Весь код обоих скетчей находится в теле функции setup() :

  • Первой строкой кода мы обращаемся к функции begin() указывая что модуль является светофором который должен автоматически переключать цвета MODUL_TLIGHT_AUTO .
    • В первом скетче указано, что светофор регулирует движение через переход или переезд с дорогой только прямо TRACK_F (Forward).
    • Во втором скетче указано, что светофор регулирует движение через перекрёсток с дорогами прямо, налево и направо TRACK_LRF (Left Right Forward), и у светофора есть дополнительные секции левого и правого поворота SECTION_LR (Left Right).
  • Обращением к функции timing() задаются временные интервалы свечения зелёного, жёлтого (и мигающего зелёного) и красного цветов светофора в секундах.
  • Функция irProtocol() позволяет назначить протокол для передачи данных по ИК-каналу. В скетче используется протокол IR_IARDUINO .
  • Функция indicator() позволяет управлять светодиодом информирующем о передаче данных. В скетче функция вызвана с параметром true разрешая работу индикаторного светодиода. Если вместо true указать false , то индикаторный светодиод будет выключен. Индикаторный светодиод позволяет видеть когда модуль отправляет данные, отключение этого светодиода не отключает передачу данных.
  • Функция irAutoSend() указывает модулю начать постоянную отправку пакетов данных с информацией о текущем состоянии светофора. Если в качестве параметра указать число от 15 до 255 мс, то средняя пауза между отправляемыми по ИК-каналу пакетами будет равна указанному числу миллисекунд. В скетче функция вызвана без параметра, значит средняя пауза между пакетами будет установлена в значение по умолчанию для выбранного протокола. Реальная пауза между отправляемыми пакетами устанавливается хаотично в диапазоне ±50% от указанного числа, что позволяет поставить знаки дорожного движения рядом со светофором, в одном направлении.
  • Функция offline() с параметром true указывает модулю запомнить полученные настройки, сохранив их в энергонезависимую память. После этого модуль будет работать автономно (сразу после подачи питания), даже если он не подключён к Piranha UNO по шине I2C, так, как будто он вновь получил все команды кода setup() . Для отключения автономного режима достаточно однократного обращения к функции offline() с параметром false .

Питание

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

1 способ: питание с помощью модуля

В модуль питания установите аккумулятор формата 14500 (Li-ion, 3,7V), соблюдая полярность.

Внимание!
Несоблюдение полярности при установке аккумулятора может привести к выходу светофора из стоя. Будьте внимательны!

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

Вы можете почитать подробнее про работу с модулем.

Для того, чтобы зарядить аккумулятор, подключите провод к разъёму type C на обратной стороне модуля, или используйте специальные зарядные устройства.

2 способ: питание через колодку I2C

Напряжение питания знака через колодку I2C должно составлять от 3,5 до 5В. Также можно использовать питание от платы Arduino или USB.

На рисунке слева питание подаётся через колодку I2C, а на рисунке справа — через металлизированные отверстия крепления основания со стороны с надписью «Аккумулятор».

Допускается использовать три батарейки типа АА или ААА.

Настройка расстояния передачи ИК-сигнала

Расстояние передачи информации настраивается подстроечным резистором и варьируется в диапазоне от 20-30см до нескольких метров.

При настройке добиваются уверенного приёма сигнала ИК-приёмником на необходимом расстоянии.

Порядок настройки мощности передачи:

  1. Установите светофор на трассу, выкрутив движок переменного резистора на минимум.
  2. Установите машинку на трассу в место, где она должна зафиксировать светофор (поймать ИК-сигнал)
  3. Включите машинку и светофор. Приёмник ИК сигнала, установленный на машинке, имеет синий светодиод, подписанный как «IN». Он вспыхивает в момент регистрации сигнала. Отрегулируйте мощность знака до появления вспышек светодиода «IN».

Пример получения данных от светофора на стороне приёмника:

Получение данных отправленных светофором по ИК-каналу осуществляется при помощи Trema модуля ИК-приёмник/передатчик, Flash-I2C.

Действия выполняемые в коде Setup() :

  • Первой строкой выполняется инициализация передачи данных в монитор последовательного порта Serial.begin() на скорости 9600 бит/сек.
  • Далее выполняется инициализация работы с модулем ИК-приёмник/передатчик begin() .
  • Последняя строка указывает ИК протокол приёма/передачи данных setProtocol() . Протоколы светофора и приёмника должны совпадать. В скетче используется протокол IR_IARDUINO .

Действия выполняемые в коде loop() :

  • В первой строке выполняется проверка наличия принятых по ИК-каналу данных. Для проверки наличия данных полученных от модулей трассы, обращение к функции check() должно выполняться с параметром true (в этом случае функция реагирует на пакеты повторов).
  • Второй строкой кода выполняется проверка принятых данных на принадлежность к модулям светофоров. Если ИК-данные приняты от модулей светофоров, то переменная device содержит константу MODUL_TLIGHT .
  • Если обе проверки успешно пройдены, то информацию о состоянии светофора можно получить из переменных:
    • bool track_F — флаг указывающий о наличии дороги прямо (0-нет, 1-есть).
    • bool track_R — флаг указывающий о наличии поворота вправо (0-нет, 1-есть).
    • bool track_L — флаг указывающий о наличии поворота влево (0-нет, 1-есть).
    • uint8_t forvard — разрешает движения прямо (0-нельзя, 1-можно, 2-если нет помех).
    • uint8_t right — разрешает движения вправо (0-нельзя, 1-можно, 2-если нет помех).
    • uint8_t left — разрешает движения влево (0-нельзя, 1-можно, 2-если нет помех).
    • uint8_t gate — флаг состояния шлагбаума (0-закрыт, 1-открыт).
    • Биты состояний всех цветов светофора и состояния шлагбаума можно прочитать из байта команды ИК-устройства command .
    • Если переменные forvard , right или left имеют значение 2 (если нет помех), значит светофор «сломан» (постоянно мигает жёлтый) или разрешается поворот налево по основному зелёному сигналу светофора у которого нет секции поворота налево.
  • В данном скетче сначала выводятся все возможные направления движения на перекрёстке: track_F , track_R , track_L . Знание дорог перекрёстка позволяет выбрать направление движения автомобиля и включить поворотники до въезда на перекрёсток.
  • А затем выводятся направления в которых светофор разрешает движение: forvard , right , left . Знание состояния светофора позволяет остановиться до появления сигнала разрешающего движение в выбранном направлении.
  • В скетче не проверяется состояние шлагбаума gate , так как в автономном режиме работы светофора, шлагбаум самостоятельно поднимается до включении разрешающих сигналов светофора.

Источник

Оцените статью