Разработка программного обеспечения для управления системы «Шлагбаум»

№106-1,

физико-математические науки

В статье описан алгоритм работы программы и программный код.

Похожие материалы

Для того чтобы представить систему дистанционного управления на рынке, наиболее перспективным является создание печатной платы, которая бы включала в себя блок питания, GSM модуль, микроконтроллер. За счет массового изготовления цена на такое устройство может быть значительно снижена. Для этого мы используем микроконтроллер Arduino Uno с дополнительными компонентами GPRS модуль и сервопривод, которые представляют макет систему шлагбаума и демонстрируют его работу.

Первоначально происходит инициализация — установка констант, настройка портов ввода/вывода (параметры UART передачи данных (скорости)). Инициализация памяти. Далее производится запуск GSM-модуля, после чего даем модулю запуститься в течение одной секунды.

Микроконтроллер ожидает пока пройдет инициализация GSM, т.е. модуль должен считать SIM карту и подключиться к GSM сети, которую она поддерживает. Для того чтобы убедиться, что SIM-карта подключилась к сети на GSM модуле имеются два информационных выхода — STATUS и NETLIGHT, которые демонстрируют работу модуля и состояние сети. С помощью второго выхода мы можем определить работу SIM-карты, есть несколько состояний сети:

  • 64мс/800мс — сеть не найдена;
  • 64мс/3000мс — сеть найдена;
  • 64мс/300мс — идет обмен по GPRS.

Диалог микроконтроллера с GSM модулем происходит посредством AT команд [1]. После удачной инициализации микроконтроллер посылает AT команду, что позволяет определить номер телефона. Должен быть ответ модуля на эту команду, в противном случае команда посылается еще раз.

Опишем алгоритм работы программы:

1. Перед началом работы происходит настройка GSM-модуля на прием звонков.

2. Включается автоопределитель номера (АОН).

3. При звонке на номер, который закреплен за шлагбаумом, сравнивается входящий номер с номерами в базе данных:

  • если номер хранится в «белом списке», то есть имеет доступ к территории, то шлагбаум открывается;
  • если входящий номер не хранится в базе данных, то шлагбаум не открывается.

4. При получении сообщения на номер, прикрепленный к шлагбауму, ничего не происходит.

5. После выполнения цикла поднятия и опускания шлагбаума, система ждет новый входящий вызов.

Программный код:

#include <softwareserial.h> #include <servo.h> SoftwareSerial GPRS(7, 8); // Подключаем GPRS Servo servo; char buffer[64]; int count = 0; String num[] = {"+79046621322", "+79046603072", "+89586249637"}; // номера имеющие доступvoid setup() { GPRS.begin(19200); Serial.begin(19200);delay(1000); GPRS.println("AT+CLIP=1"); // включаем АОНservo.attach(10); // Подключаем серво к 10 пину } void loop() { String str = ""; // Очищаем строку if (GPRS.available()) { while (GPRS.available()) { buffer[count++] = GPRS.read(); if (count == 64) break; } for (int i = 0 ; i < 64; i++) { str += buffer[i]; // Делаем из массива символов строку } for (int j = 0; j < 3; j++) { int result = str.indexOf(num[j]); // Ищем в строке один из номеров if (result != -1) { // -1 значит нет совпадений, поэтому ищем что-то другое servo.write(0); // Поворачиваем серво на 0 delay(3000); GPRS.println("ATH"); // Сбрасываем звонокservo.write(180); // Поворачиваем серво на 180 delay(3000); break; // Выходим из цикла, если находим номер } } for (int i = 0; i < count; i++) { buffer[i] = NULL; // Очищаем буфер } count = 0; } }

Список литературы

  1. Руководство по работе с GSM/GPRS модемом SIM300. [Электронный ресурс]. Режим доступа: jelezka.ucoz.ru›SIM300_AN_V1.2RUS.pdf (дата обращения 21.06.18)