Gsm модули для ардуино: описание

Зависание SIM900

Иногда при обмене по GPRS возникают ситуации, после которых модуль может зависнуть. Этому виной могут быть некорректные данные, пришедшие по сети и загнавшие в ступор SIM900, или помехи на линии обмена модуля и контроллера, при которых SIM900 получил «не то, что ждал», или ещё какие-то неведомые проблемы. Производитель чипа предупреждает о том, что это может происходить и предлагает в таких случаях перезагружать модуль с помощью специальной последовательности импульсов, подаваемых на вход PWRKEY.

Однако, как выяснилось, это не всегда помогает — после такой перезагрузки модуль может «проснуться» всё ещё «глюкнутым». И об этом тоже нас предупреждает производитель, если внимательно читать DataSheet на модуль. Вот что рекомендуется в документации:

Поэтому самым правильным способом перезагрузки модуля является полное снятие с него питания (с ножки VBAT), выдержка некоторой паузы (хотя бы секунду на всякий случай) и повторная подача питания. Для перезагрузки модуля на плате лучше предусмотреть реле или транзисторный ключ, управляемый контроллером.

Зачем это нужно

Аббревиатура GSM расшифровывается как Global System for Mobile (Communications). Технология эксплуатирует сети связи сотовых операторов, обеспечивая трансляцию голосовой, текстовой и служебной информации между подключенными устройствами.

Через сеть GSM передаются не только данные, но и СМС-сообщения, и голос. С подключенной к Arduino GSM платой компьютер способен:

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

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

Простейший пример применения Ардуино с GSM — автономная сигнализация. Периферийные датчики фиксируют свое состояние и передают на центральную плату, которая через модуль отправляет данные на смартфон владельца. Такое решение можно считать базой для «умного дома»: если добавить дополнительные подключаемые блоки, датчики и программные оболочки, Arduino превращается в полноценный комплекс Smart Home.

Любой GSM/GPRS блок соединяется с основной платой. Для реализации простых проектов, как правило, используют Arduino Uno, но есть возможность построения и на базе минималистичного Nano, и более богато оснащенного Mega. Соединенный с Arduino GSM модуль обеспечивает все возможности технологии передачи данных по сотовой сети.

Модулей связи на рынке представлено достаточно много. Далее мы рассмотрим характеристики наиболее популярных и приведем пример типового проекта.

Jamming Detection

Данная функция может быть полезна для охранно-поисковых систем в целях противодействия преднамеренному глушению GSM-канала. Ее работа достаточно проста: в зависимости от настройки модуль сообщит о факте глушения посредством сообщения через UART-порт
и/или посредством изменения состояния вывода GPIO-модуля.

Ниже приведен пример того, как включить и настроить режим определения глушения:

AT+SJDR=1,1 // Включить Jamming Detection
OK
+SJDR: NO JAMMING // Периодическое сообщение о состоянии
+SJDR: NO JAMMING
…
+SJDR: NO JAMMING
+SJDR: NO JAMMING
AT+SJDR=0 // Отключить Jamming Detection
OK

Preliminary steps

Before getting started with your SIM900 GSM GPRS module, you need to consider some aspects about the SIM card and the shield power supply.

Prepaid SIM Card

We recommend that you use a prepaid plan or a plan with unlimited SMS for testing purposes. Otherwise, if something goes wrong, you may need to pay a huge bill for hundreds of SMS text messages sent by mistake. In this tutorial we’re using a prepaid plan with unlimited SMS.

The shield uses the original SIM card size, not micro or nano. If you have micro or nano you may consider getting a SIM card size adapter.

Turn off the PIN lock

To use the SIM card with the shield, you need to turn off the pin lock. The easiest way to do this, is to insert the SIM card in your smartphone and turn off the pin lock in the phone security settings.

In my case, I needed to go through: Settings > Advanced Settings > Security > SIM lock and turn off the lock sim card with pin.

Getting the right power supply

The shield has a DC socket for power as shown in figure below.

Next to the power jack there is a toggle switch to select the power source. Next to the toggle switch on the board, there is an arrow indicating the toggle position to use an external power supply – move the toggle switch to use the external power supply as shown above.

To power up the shield, it is advisable to use a 5V power supply that can provide 2A as the one shown below. It can also be powered with 9V 1A, or 12V 1A.

You can find the right power adapter for this shield here. Make sure you select the model with 5V and 2A.

PING

Часто при работе с TCP/IP-сервером требуется определить скорость прохождения пакетов данных, чтобы судить о качестве текущего соединения. В обычных IP-сетях это делается стандартной утилитой PING, посылающей запрос «эха» ICMP. При подключении к серверу посредством стандартного GSM-модуля многие реализуют аналогичную функцию на верхнем уровне протокола TCP/IP, посылая некие фиктивные запросы на сервер и ожидая ответ от него. Это не самый элегантный способ.

В программном обеспечении All-In-One функция PING была добавлена в виде простых АТ-команд. Она позволяет узнать время отклика, а также может применяться для поддержания открытой сессии в активном состоянии, что полезно, учитывая, что операторы сотовой связи освобождают занятые слоты, если по ним не наблюдается никакой активности. Кроме того, расширенные АТ-команды позволяют настроить реакцию модуля на входящие IP-пакеты — отвечать на PING-запросы или нет.

Ниже приведен пример запроса времени отклика:

AT+CGATT? // Проверить подключение к сервису GPRS
+CGATT: 1
OK
AT+CSTT="internet" // Настроить точку доступа
OK
AT+CIICR // Установить GPRS-соединение
OK
AT+CIFSR // Получить локальный IP-адрес
10.129.58.139
AT+CIPPING="www.mt-system.ru" // Запросить время отклика от сайта МТ-Систем
+CIPPING: 1,"77.221.155.92",6,51 // 600 мс
+CIPPING: 2,"77.221.155.92",4,51 // 400 мс
+CIPPING: 3,"77.221.155.92",4,51 // 400 мс
+CIPPING: 4,"77.221.155.92",5,51 // 500 мс
OK

DTMF Decoder

Функция декодирования DTMF-тонов (Dual-Tone Multi-Frequency) применяется для удаленного управления GSM-устройством — например, для запуска двигателя автомобиля с мобильного телефона при установлении голосового соединения. Обычно декодирование тонов реализуется при помощи внешнего кодека, подключаемого к аналоговому выходу GSM-модуля, однако встроенная в SIM900 функция DTMF Decoder избавляет от необходимости устанавливать в схему дорогостоящий дополнительный элемент.

Работа этой функции регулируется при помощи простой AT-команды:

AT+DDET=1 // Включить функцию DTMF-декодирования
OK
ATDXXXXXXXXXXX; // Установить голосовое соединение
OK
+DTMF:2 // Удаленная сторона жмет на клавиши мобильного телефона
+DTMF:8
+DTMF:8
+DTMF:4
+DTMF:5
+DTMF:2
NO CARRIER // Голосовое соединение завершено

Возможно, вам также будет интересно

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

В статье рассматривается новое направление в радиосвязи — передача цифровой информации в диапазоне миллиметровых электромагнитных волн. Раскрываются физические особенности этого вида электромагнитного излучения, влияние различных деструктивных факторов на процесс передачи информации в этом диапазоне. Рассматриваются особенности построения каналов передачи информации, приводятся примеры конкретн…

Mетод непосредственной модуляции с использованием комплексных сигналов все чаще применяется при реализации сигнальных трактов передатчиков в базовых станциях систем сотовой связи, системах WiMAX, беспроводных системах «точка-точка» и т. п.

Getting started

1) Insert the SIM card into the SIM card holder – make sure you’ve read the preliminary steps in the previous section.2) Make sure the antenna is well connected.

3) On the serial port select, make sure the jumper cap is connected as shown in figure below to use software serial.

4) Power the shield using an external 5V power supply. Make sure you select the external power source with the toggle switch next to the DC jack.

5) To power up/down the shield press the power key for about 2 seconds.

6) Then, the Status LED will light up and the NetLight LED will blink every 800 ms until it finds the network. When it finds the network, the NetLight LED will start blinking every three seconds.

Note: you can automatically turn on the shield via software. See how to do that in the Automatically turn on the shield section, after the code examples.

7) You can test if the shield is working properly by sending AT commands from the Arduino IDE using an FTDI programmer – as we’ll shown later in this guide.

Взаимодействие с микроконтроллерами

Вообще, чтобы управлять внешними устройствами вовсе не обязательно спаривать модуль GSM900 с другим микроконтроллером. В этот модуль можно зашить свою программу, которая будет делать всё что угодно со свободными GPIO выводами. Однако, в большинстве готовых плат GPIO не разведены, поэтому для создания прототипа задуманного устройства воспользуемся самой простой Arduino Uno/Nano.

Общаться Arduino и GSM900 будут всё по тому же UART интерфейсу. Для этого соединим эти два устройства по следующей схеме:

GSM900 GND VCC_MCU SIMT SIMR
Ардуино Уно GND +5V RX TX

Теперь составим программу, которая будет ловить СМС-ки, и зажигать светодиод на ноге №13 на пару секунд. Этим мы имитируем управление неким внешним устройством.

Обработка исключительных случаев

Все команды GSM/GPRS-модулей серии SIM800 имеют время исполнения

Разработчику ПО хоста важно знать время исполнения отдельно для каждой команды, чтобы исключить бесконечное ожидание реакции на команду (открытие соединения, к примеру). Значения максимального времени исполнения задокументированы, их можно найти в системе команд GSM/GPRS-модуля

В таблице 2 указаны значения максимального времени исполнения основных команд встроенного TCP/IP-стека. Как видно, некоторые команды исполняются десятки секунд. Это объясняется зависимостью этих команд от быстродействия сети и сервера.

Таблица 2. Максимальное время исполнения команд встроенного стека TCP/IP

Команда

Максимальное время исполнения, с

CIICR

85

CIPSTART

160

CIPSEND

645

CIPCLOSE

120

CIPSHUT

65

Рис. 6. Нормальная процедура закрытия соединения с сервером

Получается, некоторые команды могут исполняться несколько минут, прежде чем можно будет понять, что что-то пошло не так. В М2М такие задержки, конечно, недопустимы. Как же обрабатывать случаи, когда время исполнения команды затянулось, а реакции так и не последовало? Все зависит от того, на каком этапе установления соединения произошел сбой (ошибка или вышел таймаут) и в каком состоянии находится стек (рис. 6). Причин сбоя может быть несколько, и реакция может быть разная, но главное вернуть встроенный стек в исходное состояние IP INITIAL или IP STATUS. Рассмотрим на примере несколько случаев:

  1. Сервер вышел из строя или доступ в Интернет ограничен (потеря пакетов, высокий пинг и проч.). В этом случае все команды из таблицы 1 приведут к длительному времени исполнения. Чтобы повторить попытку соединения с этим или другим сервером, следует перед этим закрыть сокет командой AT+CIPCLOSE=1. При этом деактивировать контекст командой AT+CIPSHUT не обязательно.
  2. Потеря связи с GSM-сетью. Такое возможно в местах плохого покрытия сети, из-за ухудшения условий приема сигнала или внезапной выемки SIM-карты из прибора. Здесь следует проверить готовность SIM-карты (AT+CPIN? или чтение ячейки памяти командой AT+CMGR), уровень сигнала (AT+CSQ), наличие регистрации в сети (AT+CREG?) и доступ к услугам GPRS (AT+CGATT?). Если физический доступ к GSM-сети пропадет после или во время открытия сессии командой AT+CIPSTART, то придется закрыть соединение (AT+CIPCLOSE=1), деактивировать контекст и восстанавливать соединение с начала, сразу после того как будут успешно проверены SIM-карта, уровень сигнала, регистрация в сети и доступ к услугам GPRS.
  3. Истек срок жизни контекста. Когда открывается контекст, сеть выделяет определенные ресурсы на его поддержание. Операторы сотовой связи не допускают мертвые контексты, когда ресурс занят, а обмена данными в этом контексте нет. Если обмена данных нет, то через некоторое время оператор деактивирует контекст. У разных операторов это время разное примерно от трех до семи минут. Модуль при этом в порт UART выдаст уведомление: +PDP DEACT. Его нужно обработать и сбросить встроенный стек в исходное состояние командой CIPSHUT. Однако иногда в некоторых приложениях требуется поддерживать контекст в активном состоянии. Для этого можно периодически обмениваться с сервером пустыми данными, типа эха. Но это неудобно в реализации. Взамен можно воспользоваться функцией поддержания соединения командой AT+CIPTKA .
  4. Нагрузка на сеть GSM. Всем известно, что GPRS-услуги и голосовая связь делят общие ресурсы. GPRS всегда выделяется оператором по остаточному принципу, а у голосовых соединений наивысший приоритет. Контекст может быть деактивирован оператором принудительно. Внешне данный случай выглядит как предыдущий (п. 3), и обрабатывать его следует аналогично.

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

EMAIL

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

Ниже приведен пример простого АТ-лога для посылки электронного письма без вложения:

AT+SAPBR=3,1,"Contype","GPRS" // Настроить контекст
OK
AT+SAPBR=3,1,"APN","Internet" // Точка доступа
OK
AT+SAPBR=1,1 // Активировать контекст
OK
AT+SAPBR=2,1
+SAPBR: 1,1,"10.234.209.14"
OK
AT+EMAILCID=1 // Использовать контекст #1
OK
AT+EMAILTO=30 // Установить тайм-аут 30 секунд
OK
AT+SMTPSRV="MAIL.XXX.RU",25 // Почтовый сервер
OK
AT+SMTPAUTH=1,"YYY","ZZZ" // Имя и пароль
OK
AT+SMTPFROM="FromName@somemail.ru","FromName" // Указать отправителя
OK
AT+SMTPRCPT=0,0,"batuev.b@mt-system.ru","Bator" // Указать получателя
OK
AT+SMTPRCPT=1,0,"sulimov.c@mt-system.ru","Kirill" // Указать получателя копии
OK
AT+SMTPRCPT=2,0,"anikin.a@mt-system.ru","Alex" // Указать скрытого получателя
OK
AT+SMTPSUB="Test" // Тема письма
OK
AT+SMTPBODY // Текст письма
> Hi, this is the test!
OK
AT+SMTPSEND // Отправить письмо
OK
+SMTPSEND: 1 // Письмо доставлено
AT+SAPBR=0,1 // Деактивировать контекст
OK

Зависание SIM900

Иногда при обмене по GPRS возникают ситуации, после которых модуль может зависнуть. Этому виной могут быть некорректные данные, пришедшие по сети и загнавшие в ступор SIM900, или помехи на линии обмена модуля и контроллера, при которых SIM900 получил «не то, что ждал», или ещё какие-то неведомые проблемы. Производитель чипа предупреждает о том, что это может происходить и предлагает в таких случаях перезагружать модуль с помощью специальной последовательности импульсов, подаваемых на вход PWRKEY.

Однако, как выяснилось, это не всегда помогает — после такой перезагрузки модуль может «проснуться» всё ещё «глюкнутым». И об этом тоже нас предупреждает производитель, если внимательно читать DataSheet на модуль. Вот что рекомендуется в документации:

Поэтому самым правильным способом перезагрузки модуля является полное снятие с него питания (с ножки VBAT), выдержка некоторой паузы (хотя бы секунду на всякий случай) и повторная подача питания. Для перезагрузки модуля на плате лучше предусмотреть реле или транзисторный ключ, управляемый контроллером.

Таймеры EAT

Многие программы имеют нелинейный алгоритм исполнения последовательности действий, и для реализации такого поведения программ применяют таймеры, встроенные в MCU. В EAT также реализованы два типа таймеров — программный (eat_timer_start) и аппаратный (eat_gpt_start) (рис. 4).

Рис. 4. Пояснение разницы между программным и аппаратным таймерами

Когда программный таймер переполняется, ядро пошлет пользовательскому ПО сообщение «EAT_EVENT_TIMER». Пользовательское ПО должно его «отловить» в цикле главной функции app_main. А когда переполнится аппаратный таймер, ядро вызовет callback-функцию

При этом важно, чтобы код внутри callback-функции имел короткий цикл исполнения. Недопустимо, чтобы в ней были заключены блокирующие события, такие как режим сна, ожидание освобождения семафора, работа с памятью и т

п.

Документация на серию SIM900R

SIM900R_Hardware Design_V1.00

PDF

sim900r_hardware_design_v1_00_2.pdf

Author: cheng.shi

Дата модификации: 03.08.2012

Размер: 2.91 Мб

48 стр.

SIM900R AT Commands_V1.01

PDF

sim900r_at_command_manual_v1.01.pdf

Дата модификации: 24.06.2011

Размер: 1.13 Мб

216 стр.

Version:1102

SIM900R
SIMCom presents an ultra compact and reliable wireless module. The SIM900R is a complete Dual-band
GSM/GPRS module in a SMT type, allowing you to benefit from small dimensions and cost-effective solutions.
Featuring an industry-standard interface, the SIM900R delivers GSM/GPRS 900/1800MHz performance for voice, SMS,
Data, and Fax in a small form factor and with low power consumption. With a tiny configuration of 24mm x 24mm x 3 mm,
SIM900R can fit almost all the space requirements in your applications, especially for slim and compact demand
of design.

Smart Machine Smart Decision
General features

Specifications for Voice

• Dual-Band 900/ 1800 MHz
• GPRS multi-slot class 10/8
• GPRS mobile station class B
• Compliant to GSM phase 2/2+
– Class 4 (2 W @900 MHz)
– Class 1 (1 W @ 1800MHz)
• SAIC (Single Antenna Interference Cancellation)
• Dimensions: 24* 24 * 3 mm
• Weight: 3.4g
• Control via AT commands (GSM 07.07 ,07.05 and
SIMCOM enhanced AT Commands)
• SIM application toolkit
• Supply voltage range : 3.2 … 4.8V
• Low power consumption: 1.0mA(sleep mode&BS-PAMFRMS=9 )
• Operation temperature: -40°C to +85 °C

• Tricodec
– Half rate (HR)
– Full rate (FR)
– Enhanced Full rate (EFR)
• AMR
– Half rate (HR)
– Full rate (FR)
• Hands-free operation
(Echo suppression)

Specifications for Fax
• Group 3, class 1

Specifications for GPRS Data
• GPRS class 10: max. 85.6 kbps (downlink)
• PBCCH support
• Coding schemes CS 1, 2, 3, 4
• PPP-stack

Interfaces
• Interface to external SIM 3V/ 1.8V
• Analog audio interface
• RTC backup
• SPI interface
• Serial interface
• Antenna pad
• I2C
• GPIO
• PWM
• ADC

Compatibility
• AT cellular command interface

Specifications for CSD Data
• CSD up to 14.4 kbps
• USSD
• Non transparent mode

Certifications:
• ROHS
• CE

Specifications for SMS via GSM/GPRS
• Point to point MO and MT
• SMS cell broadcast
• Text and PDU mode

PDF

sim900r spec_0622.pdf

Microsoft PowerPoint — SIM900R SPEC_0621.ppt

Дата модификации: 22.06.2011

Размер: 116.3 Кб

1 стр.

Version:1102

Main Differences between SIM900 and SIM900R

From Hardware Side
P/N

Memory (bits)

Working Frequency (MHz)

SIM900

64M

Quad-Band (850/900/1800/1900)

SIM900R

32M

Dual-Band (900/1800)

From Software Side
P/N

MMS

FTP/HTTP/
FOTA

Embedded
AT

SIM900

SIM900R

×

×

×

Jamming
Detection

DTMF
Detection

Ping
Function

E-Call
Function

TBD

TBD

PDF

sim900r sim900_comparison(0620).pdf

Microsoft PowerPoint — SIM900R SIM900_Comparision.ppt

Дата модификации: 21.06.2011

Размер: 57.2 Кб

1 стр.

найти SIM900R.pdf

Как получить данные о текущей версии ПО модуля?

Текущую ревизию программного обеспечения GSM/GPRS-модуля можно получить по ответу на команды AT+GMR, AT+CGMR и AT+GSV.

Запрос — AT+GMR

Ответ — Revision:1137B02SIM900R64_ST_ENHANCE_EAT

Ответ включает в себя:

  • 1137 — идентификатор семейства модулей; в данном случае модуль относится к серии 900.
  • B02 — номер текущей прошивки в данной ветке прошивок.
  • SIM900R64 — аппаратную модификацию модуля; это модуль SIM900R с 64-Мбит flash-памятью.
  • ST — производителя flash-памяти, использованной в данном модуле.
  • ENHANCE — прошивку с поддержкой расширенной функциональности.
  • EAT — прошивку с поддержкой технологии Embedded AT.

Как получить и поддерживать данные о текущем времени с помощью GSM/GPRS-модуля?

Существует несколько способов получить данные о времени:

Обновление времени RTC при регистрации в сети можно включить командой AT+CLTS=1.

Далее нужно перезагрузить модуль либо перерегистрироваться в сети, подав последовательность команд AT+CFUN=0 и AT+CFUN=1. При регистрации в сети появится новое URC-сообщение вида

*PSUTTZ:<year>,<month>,<day>,<hour>,<min>,<sec>,"<time zone>",<dst>.

Затем значение текущей даты и времени можно запросить у модуля командой AT+CCLK.

Чтобы получить время по протоколу NTP, можно воспользоваться командами:

AT+SAPBR=3,1,»CONTYPE»,»GPRS»;+SAPBR=3,1,»APN»,»internet.ru»;+SAPBR=3,1,»USER»,»usr»;+SAPBR=3,1,»PWD»,»pwd»;+SAPBR=1,1 // задаем точку доступа, указываем имя пользователя и пароль, поднимаем GPRS-соединение и дожидаемся OK как признака успешного получения IP.

AT+CNTP=»pool.ntp.org»,4,1 // указываем адрес NTP-сервера, текущий часовой пояс и номер профиля, который будет использоваться при запросе.

AT+CNTP // запрашиваем время с сервера. Если в команде AT+CNTP добавить четвертый параметр =2, то при запросе также будут обновлены данные часов реального времени.

Можно получить информацию о времени с собственного сервера, например по каналу GPRS, и установить текущие показания часов реального времени с помощью команды AT+CCLK=»yy/MM/dd,hh:mm:ss+zz».

Чтобы поддерживать работу часов реального времени, нужно поддерживать питание RTC-домена, когда с модуля будет снято основное питание. Для этого можно обеспечить подачу питания на вход VRTC от конденсатора достаточной емкости либо от батареи/аккумулятора.

Troubleshooting

Shield doesn’t respond with OK

Check your TX and RX connections to the Arduino. Try repeating the process by changing the TX with the RX pins.

Also check if you have selected the software serial by placing the jumper cap on the appropriate place on the serial selector.

Cannot see messages in the serial monitor

To see the messages in the serial monitor, the shield and the Arduino’s serial port baud rate should be the same. The SIM900 GSM GPRS shield default baud rate is 19200. So, select the Arduino’s baud rate to 19200.

However, if you need to change the shield baud rate, you can send the following AT command to change it to 19200 or other appropriate baud rate.

AT+IPR=19200

Задачи GSM модуля:

  • Отправлять данные о времени работы насоса полива;
  • Отправлять температуру насоса и воды;
  • Принимать данные с веб-сервера о статусе вкл/выкл насоса.

Первым делом в корневом каталоге сервера создаем файл index.php.

На Листинге 2 показан начальный код разметки HTML страницы.

Листинг 2. Начальный код разметки HTML страницы.

В моем случае веб-страница будет открываться только в телефоне, поэтому выберем самый простой дизайн для нее. При желании можно сделать страницу более удобной и информативной.

Результат открытого в браузере файла index.php показан на Рисунке 7.

Рисунок 7. Результат открытого в
браузере файла index.php.

Добавим пару кнопок на включение насоса и создадим txt файл на сервере для сохранения данных о статусе работы насоса. Кнопки выполним в виде картинок, а их обработку сделаем с помощью AJAX (технология взаимодействия с сервером без полной перезагрузки html-страницы, использует JavaScript). Для этого перед тегом вставляем код, показанный в Листинге 3.

Листинг 3. AJAX обработчик.

Определение картинок кнопок включим в форму. При нажатии на картинку будет записываться значение статуса в файл pomidor.txt. Код обработки кнопок показан в Листинге 4.

Листинг 4. HTML код обработки кнопок.

В коневом каталоге создаем папку transfer и файл pomidor.php, код из которого приведен в Листинге 5.

Листинг 5. PHP скрипт записи статуса кнопки.

Рисунок 8. Основной интерфейс управления.

Для полученных значений создаем еще одну папку txt и файл pomidor.txt. Добавляем картинку насоса и получаем минимальный интерфейс управления, который показан на Рисунке 8. На Рисунке 9 показан результат нажатия на кнопку «Выкл». Соответственно, если нажмем на кнопку «Вкл», то будет результат «ON».

Рисунок 9. Запись данных на сервер в результате
нажатия на кнопку «Выкл».

Сделаем так, чтобы при переключении статуса, менялась картинка насоса. Для этого в поле расположения картинки насоса добавим код (Листинг 6).

Листинг 6. PHP скрипт изменения картинки статуса работы насоса.

Создаем функцию «Nasos», которая каждую секунду читает и сравнивает значение с файла pomidor.txt. В зависимости от результата меняется картинка визуализации насоса. На Рисунке 10 показан пример визуализации насоса при нажатии на кнопку «Вкл».

Рисунок 10. Визуализация статуса включенного насоса.

По аналогии добавим вывод температур и времени полива (Рисунок 11).

Рисунок 11. Законченный интерфейс управления.

Вопросы безопасности, в случае атаки на веб сервер, выходят за рамки данного повествования, поэтому опустим их.

Оцените статью
Рейтинг автора
5
Материал подготовил
Илья Коршунов
Наш эксперт
Написано статей
134
Добавить комментарий