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

№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); // Подключаем GPRSServo 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)