Введение
Транспортные пробки – один из наиболее негативных факторов современного города. Их отрицательное влияние распространяется на множество аспектов – таких как логистика, производительность туда, экология и многие другие.
Уменьшение негативных факторов автомобильных пробок – задача, которая решается путем построения интегрированной системы: люди — транспортная инфраструктура — транспортные средства, с максимальным использованием новейших информационно-управляющих технологий. Такие "продвинутые" системы и стали называть интеллектуальными.
Управление транспортом в наши дни – это сфера, объединяющая целый комплекс научных дисциплин, таких как: теорию управления, системный анализ, геодезическое обеспечение, теорию транспортных систем, информационное моделирование, топологический анализ, пространственные знания.
Управление транспортной системой – совокупность различных мероприятий направленных на эффективное функционирование данной системы посредством координации, организации, упорядочения элементов данной системы, как между собой, так и с внешней средой. Интеллектуальная транспортная система (ИТС) – система управления, реализующая инновационные разработки для управления автомобильными потоками. В результате использования таких систем, мы получаем так называемые «умные дороги». Рассмотрим одну из составляющих ИТС – систему «умный светофор».
Цель проекта: создание прототипа умного светофора.
Согласно цели проекта были сформулированы следующие задачи:
Изучить теоретические особенности и принцип работы «умного « светофора.
Создать модель контроллера светофора, работающего на основе плотности потока автомобилей, с использованием Arduino и удовлетворяющего следующим требованиям:
- избегать ожидания на перекрестках для участников движения,
- если ожидание неизбежно - существенно снижать время ожидания для участников движения.
Методы исследования: описательные (наблюдение, обобщение), эксперимент, анализ полученных данных, математические расчеты.
Объект исследования: управление транспортной системой.
Предмет исследования: интеллектуальная транспортная система - «умный» светофор.
Теоретическая значимость: обоснование необходимости использования интеллектуальных транспортных систем, выделение положительных и отрицательных сторон при их использовании в современных условиях.
Прикладная ценность полученных результатов: разработанный код программы контроллера светофора, работающего на основе плотности потока автомобилей, с использованием Arduino.
Глава 1. Теоретические особенности и принцип работы интеллектуальных транспортных систем
Обычный светофор работает по простейшей программе, которая не меняется в течение длительного времени (пока его вновь не решат перепрограммировать), - 10 секунд на красный, 20 — на зеленый (к примеру). Решение о том, сколько должен гореть «зеленый», а сколько «красный», принимает человек. В случае с «умным» светофором это за него делает компьютер.
«Умный» светофор следит за трафиком и может подстраиваться под дорожную ситуацию – самостоятельно менять продолжительность красного или зелёного сигналов.
Программа дает возможность нескольким светофорам на одной улице действовать синхронно – «разгонять» движение, организовывать «зеленую волну», «растворять» пробки. Такие светофорные объекты самостоятельно мониторят дорожную ситуацию и адаптируются к ней на основании поступающих к ним данных. Схема принципа работы системы «Умный светофор» представлена на рис.1
Рис. 1 Принцип работы системы «Умный светофор».
Видеокамера или датчики устанавливаются на определенной высоте и над конкретным участком трассы. Далее, сигнал от нее поступает в модуль обработки видеоинформации. Затем в данном модуле происходит выделение подвижных транспортных средств и определение различных интегральных оценок. После этого, на основе этих показаний, центральный сервер дает команду контроллерам светофоров включить красный или зеленый свет и на какое время.
Системы видеоконтроля, ориентированные на транспорт, предоставляют данные трех типов:
Во-первых, это информация о трафике для статистической обработки: общее количество обнаруженных автомобилей, скорость, ускорение транспортного потока, плотность потока, загруженность полос движения, классификация автомобилей.
Во-вторых, информация о происшествиях на дороге: высокая скорость, плотность потока или занятость полос, наличие заторов или движения по встречной полосе, остановившиеся или медленно движущиеся автомобили, наличие на дороге подозрительных предметов .
В-третьих, информация о наличии или отсутствии автомобилей: наличие приближающихся автомобилей, наличие автомобилей, остановившихся на перекрестке, число автомобилей, проехавших через зоны обнаружения, измерение длины очереди.
Система интегрируется в модуль управления светофорами, что позволяет согласовать работу абсолютно всех светофоров перекрестка в каком-либо напряженном транспортном узле.
Например, на перекрестке, где установлен стандартный светофор, пешеходу предоставляется одно и то же время на переход дороги. Время не зависит от того, едет ли по ней в данный момент один автомобиль или несколько десятков. Благодаря системе «умный светофор», данное время контролируется и меняется в зависимости от загруженности. Или предположим, в одном из направлений есть высокая загруженность, то именно там и продлевается зеленый свет, что ведет к сокращению времени пребывания машин на перекрестках.
Другими словами, процессор «умного светофора» получает информацию о потоке машин с видеокамер. После этого, обрабатывает её. Затем в соответствии с этим по установленному алгоритму принимает решение, в каком направлении и насколько открывать движение. Таким образом, вероятность образования большой пробки, в каком либо направлении существенно снижается.
1. Светодиоды более яркие, чем устаревшие лампы, долговечны: гарантированные десять лет экономно расходуют энергию, отличаются даже внешне — они плоские. А главный плюс — в новых светофорах нет так называемого фантом-эффекта, когда при ярком солнечном освещении кажется, что горят все три секции или, напротив, все одновременно потухли.
2. Система способна предсказывать транспортную ситуацию на 15-30 минут вперед и заранее выработать эффективный план управления трафиком. При возникновении ДТП на перекрестках, данный план автоматически корректируется.
3. В зависимости от типов датчиков, система может учитывать приоритет общественного транспорта, экстренных служб и «спецсопровождения» перед остальными участниками движения. В случае сбоя светофоры переключаются в автономный режим работы, и перекрестки начинают регулироваться традиционным способом. Это позволяет избежать транспортного коллапса при возникновении внештатных ситуаций.
4. Неблагоприятные погодные условия тоже не будут являться помехой для их работы.
1. Не смогут полностью решить проблему пробок. Система «Умный светофор» способна лишь максимально увеличить производительность перекрестка. При этом городским властям все равно придется расширять дороги и строить сложные транспортные развязки. По подсчетам аналитиков, одна городская полоса в среднем способна обслужить не более 1800 автомобилей в час. И это при условии, что транспортные средства не останавливаются на перекрестках и не сталкиваются с такими препятствиями, как сужение дороги, неудовлетворительное качество дорожного полотна и др. Поскольку количество автомобилей в нашей стране неуклонно растет, то очевидно, что даже при максимальной производительности перекрестков, пробки в крупных мегаполисах будут расти, если заниматься только внедрением систем «Умный светофор» и не решать остальные дорожные проблемы.
2. Стоимость диодного «умного» светофора в 5 раз дороже обычного лампового.
Глава 2: Разработка собственной модели системы «Умный светофор» на базе микроконтроллера Arduino
2.1 Сборка контроллера светофора.
Составные части.
-плата микроконтроллера Arduino Uno
- два ультразвуковых датчика HC-SR04
- две макетные платы
- по паре красных, жёлтых и зелёных светодиодов
- соединительные провода 14 шт.
- резисторы 12 х 220 Ом
Два ультразвуковых датчика соединены с Arduino. Аrduino считывает данные с этих датчиков и рассчитает расстояние. Этот датчик может измерять расстояние от 2 до 400 см.
Ультразвуковой датчик излучает ультразвуковую волну и отраженное от объекта эхо принимается датчиком. Чтобы генерировать волну, нам нужно будет установить триггер на 10 мкс, который отправит звуковой импульс с 8 циклами на частоте 40 кГц, который посылается в сторону объекта, и после отражения сигнала возникает эхо. Затем эхо скажет нам время, когда волна пришла обратно к датчику (микросекунды). Затем мы преобразуем это время в пройденное расстояние, используя формулу S = V * T.
Светодиоды подключены к Arduino через резисторы 220 Ом. Необходимо использовать резистор со светодиодом. Резистор ограничивает ток, протекающий через светодиод. Если вы не будете использовать его, светодиод сгорит. Вы можете использовать резистор от 100 Ом до 10 кОм со светодиодом. Чем больше значение сопротивления, тем меньше будет проходить ток.
С помощью программы Fritzing была создана электрическая схема контроллера светофора. Fritzing – уникальное программное обеспечение от University of Applied Sciences Potsdam для перевода прототипа в физическую модель. Приложение представляет собой утилиту с открытым исходным кодом, облегчающую процесс работы специалистов разного уровня (художников, инженеров, дизайнеров и т.д.). Программа позволяет создавать модели печатной платы и превращать их в реальные PCB (англ. printed circuit board — печатная плата). Удобные инструменты прототипирования призваны максимально облегчить превращение идеи в цифровой проект. Основное окно Fritzing – это рабочий стол с возможностью проектирования платы. Чтобы создать макет, достаточно выбрать желаемое расположение нужных микросхем и способы их соединения с платой. Итерфейс Fritzing представлен на рис. 2.
Рис. 2 Интерфейс Fritzing
Схема электрической цепи контролера светофора представлена на рис. 3.
Рис.3 Схема электрической цепи светофора
На компьютер была установлена программа Arduino IDE, которая позволяет написать код на языке программирования C++. Плата микроконтроллера Arduino прошивается данным кодом и простые железки становятся способными на многие удивительные вещи.
Используя программную среду Arduino IDE, можно, основываясь лишь на знаниях C++, решать самые разные творческие задачи, связанные с программированием и моделированием.
В Arduino IDEмногие скетчи работают с библиотеками, в которых уже есть большая часть кода, который не нужно будет писать.
Прежде всего, мы включили библиотеку timerone. Эта библиотека используется для повторного измерения периода времени в микросекундах, и в конце каждого периода будет вызываться функция прерывания. Мы использовали эту библиотеку, потому что мы хотим считывать сигналы с датчиков и управлять светодиодами одновременно. Библиотека позволит нам вызывать функцию, в которой мы будем непрерывно считывать данные с датчиков, а в функции цикла мы будем управлять сигналами светофора.
В функции setup мы использовали функцию Timer1.initialize (микросекунды). Эта функция должна быть вызвана, прежде чем использовать любой из других методов библиотеки timerone. «Микросекунды» — это период времени, который занимает таймер. Здесь можно указать период таймера. Период по умолчанию составляет 1 секунду.
Timer1.attachInterrupt (softInterr) вызывает функцию каждый раз, когда заканчивается период таймера. Мы установили период таймера на 100000, поэтому наша функция будет вызываться через 100 миллисекунд.
В функции цикла проверяется, есть ли какие-либо транспортные средства под расстоянием 5 см или нет. Если будет автомобиль, то будет вызвана функция для включения разрешающего сигнала в данном направлении.
Softinterr () — это функция прерывания, которая будет вызываться через каждые 100 миллисекунд. В этой функции мы считали с ультразвуковых датчиков и рассчитали расстояние.
При постоянном наличии трафика система работает в обычном состоянии. Если на одной из полос есть трафик - на другой нет, система переключает приоритетный свет. Код программы представлен в приложении.
Внешний вид собранной системы «Умный светофор» представлен на рис. 4
Рис. 4 Собранная система «Умный светофор»
Рис. 5 Работа светофора в режиме наличия трафика на одном направлении.
Рис. 6. Работа светофора в нормальном режиме
В будущем будет добавлено ещё два светофора на третье и четвёртое направление, будет разработан код, контролирующий одновременно все четыре сигнала. В программе будут более модифицированные функции, позволяющие манипулировать железом как душе угодно. Появилась идея создания быстрого переключения разрешающего сигнала для машин спецслужб; реализовать идею можно при использовании инфразвукового датчика.
Планируется более глубокое погружение в систему «умный город», изучение компонентов и принципов их работы. Будет предпринята попытка создать новый светофор, который будет «умнее» нашего «умного».
Заключение.
Ситуация на дорогах, особенно в крупных мегаполисах, крайне напряжённая: помимо других факторов постоянно возникают пробки. Из-за этого в атмосферу выбрасывается больше химических соединений, люди теряют массу времени на простои, уходит много денежных средств на топливо. Иногда дело доходит до нервных конфликтов.
Используя разные продвинутые технологии, разрабатываются специальные элементы, направленные на улучшение дорог. В результате использования таких элементов, мы получаем так называемые «умные дороги».
Система «умный» светофор может дать некоторые улучшения. Полностью устранить проблемы пробок она не сможет, но сможет достаточно хорошо выполнять свои функции.
Современные системы постоянно улучшаются, создаются новые и новые. В совокупности этих систем можно получить очень удовлетворительный результат.
Значит, можно считать, что нами был создан небесполезный компонент системы «умный город», и вместе с другими элементами он может действительно помочь современным проблемам на дорогах.
1. Принцип действия «умного» светофора: http://www.bolshoyvopros.ru/questions/679414-kak-dejstvuet-umnyj-svetofor.html
2. Умный светофор. Arduino технологии: https://arduino-tech.ru/2018/12/29/umnyj-svetofor/
3. «умные» светофоры: https://roads.ru/forum/topic/20612-umnye-svetofory/page/2/
4. «Умный» светофор будет угадывать намерения пешеходов: https://hightech.plus/2019/05/28/umnii-svetofor-budet-ugadivat-namereniya-peshehodov
5. «Умный» светофор в России: https://trashbox.ru/topics/111337/v-rossii-predstavili-umnyj-svetofor
6. Светофор-телепат: https://pobetony.ru/poleznye-stati/umnyj-svetofor/
7. «Умный светофор» — комфорт и безопасность на дорогах: https://ap-n.com/umnyj-svetofor/
8. "Умные" светофоры, датчики в асфальте: https://tass.ru/obschestvo/7017266
Код программы.
#include<TimerOne.h> // подключение библиотеки
int signal1[] = {10, 9, 8}; // объявление переменных и констант
int signal2[] = {13, 12, 11};
volatile int triggerpin1 = 5;
volatile int echopin1 = 4;
volatile int triggerpin2 = 3;
volatile int echopin2 = 6;
volatile long time;
volatile int S1, S2;
int t = 5;
void setup(){ // постоянная функция
for(int i=0; i<3; i++){ // объявление пинов, как выходов
pinMode(signal1[i], OUTPUT);
pinMode(signal2[i], OUTPUT);
}
pinMode(triggerpin1, OUTPUT);
pinMode(echopin1, INPUT);
pinMode(triggerpin2, OUTPUT);
pinMode(echopin2, INPUT);
Serial.begin(115200); // работатаймера
Timer1.initialize(100000);
Timer1.attachInterrupt(softInterr);
}
void softInterr() { // функция, включающая таймер после его завершения
// 1 датчик
digitalWrite(triggerpin1, LOW);
delayMicroseconds(2);
digitalWrite(triggerpin1, HIGH);
delayMicroseconds(10);
digitalWrite(triggerpin1, LOW);
time = pulseIn(echopin1, HIGH);
S1= time*0.034/2;
// 2 датчик
digitalWrite(triggerpin2, LOW);
delayMicroseconds(2);
digitalWrite(triggerpin2, HIGH);
delayMicroseconds(10);
digitalWrite(triggerpin2, LOW);
time = pulseIn(echopin2, HIGH);
S2= time*0.034/2;
// Печать значений расстояний на последовательном мониторе для отладки
Serial.print("S1: ");
Serial.print(S1);
Serial.print(" S2: ");
Serial.print(S2);
}
void loop() { // циклическаяфункция
if(S1<t) {
signal1Function();
}
if(S2<t) {
signal2Function();
}
}
void signal1Function() { // функция, определяющая работу 1 светофора
Serial.println("1");
low();
digitalWrite(signal1[0], LOW);
digitalWrite(signal1[2], HIGH);
delay(4000);
if(S2<t) {
digitalWrite(signal1[2], LOW);
delay(500);
digitalWrite(signal1[2], HIGH);
delay(500);
digitalWrite(signal1[2], LOW);
delay(500);
digitalWrite(signal1[2], HIGH);
delay(500);
digitalWrite(signal1[2], LOW);
delay(500);
digitalWrite(signal1[2], HIGH);
delay(500);
// 2
digitalWrite(signal1[2], LOW);
digitalWrite(signal2[1], HIGH);
digitalWrite(signal1[1], HIGH);
delay(3000);
}
}
void signal2Function() { // функция, определяющая работу второго светофора
Serial.println("2");
low();
digitalWrite(signal2[0], LOW);
digitalWrite(signal2[2], HIGH);
delay(4000);
if(S1<t) {
digitalWrite(signal2[2], LOW);
delay(500);
digitalWrite(signal2[2], HIGH);
delay(500);
digitalWrite(signal2[2], LOW);
delay(500);
digitalWrite(signal2[2], HIGH);
delay(500);
digitalWrite(signal2[2], LOW);
delay(500);
digitalWrite(signal2[2], HIGH);
delay(500);
// 2
digitalWrite(signal2[2], LOW);
digitalWrite(signal1[1], HIGH);
digitalWrite(signal2[1], HIGH);
delay(3000);
}
}
// Функция, делающая все светодиоды низкими, кроме красного
void low() {
for(int i=1; i<3; i++) {
digitalWrite(signal1[i], LOW);
digitalWrite(signal2[i], LOW);
}
for(int i=0; i<1; i++) {
digitalWrite(signal1[i], HIGH);
digitalWrite(signal2[i], HIGH);
}
}