Программа для прошивки sim800l

Обновлено: 07.07.2024


Последние изменения в прошивке:

добавлен аглоритм активациии и деактивации автопрогрева

добавлен аглоритм активациии и деактивации отправки данных на сервер

добавлена функция перезагрузки модема если оператор блокирует трафик (бывает при отрицательном балансе), при новой регистрации в сети передача данных возобновляется

номер телефона хозяина для входящих вызовов call_phone= "+375290000000";

номер телефона куда отправляем СМС отчет SMS_phone= "+375290000000";

адрес устройства на сервере MAC = "80-01-AA-00-00-00"; - нули заменить на свои придуманные цифры

имя устройства на сервере народмон SENS = "VasjaPupkin"; - аналогично

точка доступа для выхода в интернет APN = "internet.mts.by"; вашего сотового оператора

имя USER = "mts"; и пароль PASS = "mts"; для выхода в интернет вашего сотового оператора

n_send = true; если вы хотите, или n_send = false; если не хотите отправлять данные на сервер

sms_report = true; - разрешить отправку SMS отчета, или sms_report = false; если жалко денег на SMS

Vstart = 13.50 - порог детектирования по которому будем считать что авто зарежает АКБ

m = 69.91; - делитель, для точной калебровки напряжения АКБ


Для подключения к авто c класическим замком на 4 провода, если у вас япошка с замком на 6 проводов, то там все веселее.


выход на реле иммобилайзера и первого положения замка зажигания FIRST_P_Pin 8 , на плате OUT1

выход на реле зажигания ON_Pin 9 , на плате OUT2

выход на реле стартера STARTER_Pin 12 , на плате OUT3

выход на включение обогрева сидений или вебасто WEBASTO_pin 11 , на плате OUT4 (опция)

выход на реле управления подогревом сидений, на плате OUT5 (опция)

выход на сигнальный светодиод ACTIV_Pin 13 на плате OUT6 (опция)

вход Feedback_Pin A1 - для проверки на момент включенного зажигания с ключа, на плате FB

вход STOP_Pin A2 - на концевик педали тормоза (АКПП) или на датчик нейтрали в МКПП, на плате IN2

вход PSO_Pin A3 - на датчик давления масла, если кому горит (опция), на плате IN3

вход D3 - для датчиков объема или вибрации (аппаратное прерываение), на плате IN1 (опция)

вход D2 - для подключения к датчику распредвала через оптопару, если кому горит IN0 (опция)

линия L - на пин 15 K-line шины в OBDII разъёме, если такова имеется (опция)

линия K - на пин 7 K-line шины в OBDII разъёме, если такова имеется (опция)

масса GND - она же минус, для шины датчиков температуры DS18B20

провод DS18 - на линию опроса вышеупомянутых датчиков, приходит на 4й пин ардуино с подтяжкой к 3.3V

клемма 3.3V - напряжение питания датчиков температуры

клемма 12V - питание платы через предохранитель на 2А от "постоянного плюса"

клеммы REL , NO и NC - входы и выходы реле для коммутации антенны обходчика иммбилайзера

После получения команды на запуск, ардуино;

1 Обнуляет счётчик попыток запуска, в зависимости от температуры двигателя на датчике Temp0 автоматически подбирается:

Время работы стартера StTime от 1 до 6 сек

Таймер обратного отсчета Timer от 5 до 30 минут

Число повторов прогрева свечей накала (для дизелистов) о 0 до 5

в соответствии с таблицей

3 Проверяем что бы напряжение АКБ было больше 10 вольт, зажигание с ключа не включено (гарантия что двигатель не работает), температура Temp[0] выше -25, и число попыток запуска не достигло максимальных (5-ти попыток).

4 Если предыдущие условие выполненной то включаем реле первого положения замка зажигания , ожидаем 1 сек.

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

5.1 Eсли их было 2 и более то дополнительно выключаем/включаем зажигание на 2/8сек

5.2 Если предыдущих неудачных попыток запуска было 4 и более то дополнительно выключаем/включаем зажигание на 10/8сек

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

7 Выжидаем 6 сек. на набор аккумулятором напряжения заряда от генератора.

8 Заменяем напряжение АКБ, и если измеренное напряжение выше установленного порога в 13.5 то считаем старт успешным;

включаем реле подогрева сидений подключенное к OUT5 , но только при успешном старте

отправляем смс если попыток зпуска было 2 и более

иначе возвращаемся к пункту 4, и так оставшихся 4 раза.


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

Какие функции поддерживает прошивка

При входящем звонке с номера call_phone "снимает трубку" и проигрывает DTMF-гудок, ожидая ввода команды с клавиатуры телефона;

2. Исходящий звонок.

Звоним на номер на номер хозяина call_phone при смене потенциала 0V на +12V на клемме IN1 , к которому подключен какой нибудь тревожный датчик объема или др., жду по этому пункту идей.

123 можно заменить на свой секретный трёхзначные пароль в скетче

каждый раз когда авто завелось не с первой попытки, или вобще не завелось уходит СМС на номер SMS_phone

за 2 минуты до окончания прогрева, если до истечении времени не была нажата педаль СТОП, отправляется СМС


Privet Vasja Pupkin - имея сенсора задаваемого в шапке скетча

Temp0: 42.05 - температура датчика DS18B20 расположенного на трубках отопителя салона

Temp1: 24.01 - температура датчика DS18B20 расположенного в ногах водителя

Temp2: 15.03 - температура датчика DS18B20 расположенного снаружи автомобиля

Voltage Now: 14.23V - напряжение АКБ автомобиля в этот момент времени (заряжается)

Voltage Min: 7.81V - напряжение АКБ автомобиля в этот момент времени

Voltage for Start: 12.75V - напряжение АКБ автомобиля перед включением стартера

Timer 1 - состояние таймера обратного отсчета в минутах

Attempts 1 - Число включения стартера с последнего удачного или неудачного запуска

Uptime: 10H - время непрерывной работы ардуино в часах

И ссылка на расположение автомобиля на картах гугл если разкоментировать соответствующие строки в скетче


Расход трафика до 20 Мб в месяц c ПОБАЙТНЫМ округлением сессии, которая к слову длится 20 сек, и открывается каждых 5 минут.


6. Прием команд из приложения Народмон 2017

Команды такие же как и при входящем СМС, отличие в том что команда доходит только в момент связи с сервером от 0 до 5 минут, как повезет.

В приложении Народный мониторинг, залогинившись, перейти в УПРАВЛЕНИЕ > + > ПРОИЗВОЛЬНАЯ КОМАНДА > выбрать устройство, заполнить КОМАНДА: 123start , 123stop , или autoH .


Каждых 3 часа происходит проверка на низкую температуру:

Если температура упала ниже -18 градусов выполняем запуск двигателя на 20 минут тремя попытками.

Активация 456 и дезактивация 789 , либо нажанием педали STOP

8. Отключение зажигания по таймеру, при низком напряжении и превышении температуры выше 86 градусов

Отключение зажигания при просадке напряжения АКБ ниже 11.0V, возникает при внезапно заглохшем двигателе, за это отвечает строка

if (heating == true && Vbat < 11.0 ) heatingstop(); // остановка прогрева если напряжение просело ниже 11 вольт

За отключение при достижении температуры в 86 градусов строка

if (heating == true && TempDS[0] > 86) heatingstop(); // остановка прогрева если температура достигла 70 град

За отключение прогрева при оконсчании осчета таймера

if (heating == true && Timer <1) heatingstop(); // остановка прогрева если закончился отсчет таймера

9. Моргалка светодиодом

Каждых 10 секунд на 50 милисекунд вспихивает светодиод подключенный между out6 и +12 с последовательно подключенным резистором в 1кОм

if (heating == false) digitalWrite(ACTIV_Pin, HIGH), delay (50), digitalWrite(ACTIV_Pin, LOW); // моргнем светодиодом в режиме прогрева светодиод горит постоянно

10. Голосовое информирование о событиях в "трубку"

"Привет, жду команду" - сразу после "снятия трубки"

"Все поняла, завожу" - после ввода 123 в DTMF формате

"Включаю зажигание" - если если зажигание выключено и напряжение выше 11 вольт

"Прогреваю свечи" - в случае дополнительного прогрева свечей

"Кручу стартером" - в момент включения стартера

"Подожди" - после выключения стартера

"Двигатель заведен" - в случае успешного старта

"Упс, повторный запуск" - в случае не запуска уходя на следующую попытку

"Я на передаче" - если нажата педаль тормоза или МКПП на передаче

"Стоп" - в случае неудачного запуска при выходе из цикла

11. Геолокация по LBS. и микрофон

На основании УК РФ Статья 138.1. "Незаконный оборот специальных технических средств, предназначенных для негласного получения информации" и ч.1 ст.376 УК Беларуси "Незаконное изготовление, приобретение либо сбыт средств для негласного получения информации" запрещается вносить конструктивные изменения в устройство, а именно подпаивать микрофон и вносить изменения в прошивку, что может превратить ваше устройство в спейц средство и у вас будут проблемы с законом.

Запрещается заливать скетч с раскоментированной строками:

SIM800.print("\n https://www.google.com/maps/place/"), SIM800.print(LAT), SIM800.print(","), SIM800.print(LNG);

Хотя это не GPS треккер, но в теории модем может определять свое расположение по информации базовых станциий сотового оператора, аналогично как и в смартфонах без GPS, точность при этом составляет от 100 до 800 м, в зависимосте от местности, в городе обычно 100-200 м.

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

Возможные проблемы и их устраниение:

Модем постоянно отваливается от сети - подать стабильное питание 3.5-4.4V c пиковым током в 3A !

После подачи питания модем не возвращает +CPIN: READY , Call Ready и SMS Ready , модем не определил скрость, решение - швырнуть в модем команду AT+IPR=9600;E1+DDET=1;+CMGF=1;+CSCS="gsm";+CNMI=2,1,0,0,0;+VTD=1;+CMEE=1;&W которая настроит в модеме скорость порта 9600, режим ЭХО, детектирование DTMF сигналов, тип кодировки СМС, автоизвещение о входящем смс, длительность тоновых сигналов, отображение ошибок и сохранит все настройки в энергонезависимую память.

если ардуино постоянно перезагружется (не снимает трубку), то навешиваем дополнительных керамических конденсаторов на 0,1мкф на шину питания 3.3V Ардуино как можно ближе к микросхеме, и заменяем спиральную антенну на выносную, вся проблема из-за ВЧ наводок от переотражения в машине


если устройство включает стартер на рабртающем двигателе то не подключен провод обратной связи FB - подключите его

если машина заводится и потом сама себе глошнет, то устройство не корректно замеряет напряжение заряда, необходима калибровка. Если напряжение в мониторе порта не соответствует действительности, то необходимо экспериментально подобрать m = 65. 72; , пока напряжение на мультиметре и в мониторе порта не окажутся приблизительно одинаковыми.

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

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

если модуль ревизии ниже Revision:1418B04SIM800L24 то скорее всего AT+CREC работать не будет

Ссылки на мои предыдущие проекты на эту тему:

Подделка на подделку ELM327, или как еще читать температуру ДВС опыт работы с K-line шиной по протоколу ISO 14230-4 kwp связкой Arduino + L9637D


«Мне надо дистанционно открывать дверь. Вернее, отключать магнит, который держит дверь. » Вот такая неожиданная просьба, причем речь изначально шла о gsm модеме, не то чтобы я знал все подробности, но на вопрос как сделать простейший выключатель решил ответить обзором. Буквально 5-7 строчек кода и все дела.

Как и где модуль покупался я уже не помню, но специально нашел самую низкую цену при высоком рейтинге продавца.












Чем примечательна именно данная версия модема:
1. В отличие от первой версии питается от 5В и не требует никаких dc-dc преобразователей, которые, между прочим тоже стоят денег — все выполнено непосредственно на плате. А как результат меньше устройств, меньше проводов, меньше соединений.
2. Отличная внешняя антенна
3. Маленькие размеры 40х28 мм
4. Отверстия под крепление. Не всегда и не везде их делают
5. Антенну будет очень удобно крепить в корпус, судите сами, разъем крепим на корпусе, на него навинчиваем антенну, не обязательно штатную, и проводом подключаем модем.

По конструктиву все, дальше я это чудо загуглил на предмет кто-что с ним делал и скачал библиотеку SIM908IDE100, которая мне понравилась, но справедливости ради должен отметить, что она единственная которую я смотрел.
Подключение:
5В модуля на 5В ардуино
GND на GND
TXD на 2 вывод ардуино
RXD на 3 вывод ардуино
VDD не задействован
RST не задействован

Не спешите кидать тапки, потом я спросил у программиста КАК?! сделать лучше.

Принципиальная разница между первым и вторым вариантом в том, что после консультации со знающим человеком наступает просветление))) А если по нормальному, то смс заканчивается символом /r, я этого естественно не знал, поэтому сравнивал только 2 или 3 символа массива, остальная часть не учитывалась. Т.е. если послать Onnnn и On — результат будет идентичный, в последней версии этого недостатка нет.

В данном руководстве рассмотрим, как загружать данные в облако с платы TTGO T-Call ESP32 SIM800L через мобильный интернет.

title

Плата TTGO T-Call ESP32 SIM800L

Данная плата является модификацией платы ESP32 с модулем SIM800L GSM/GPRS.

sim800L

Взаимодействовать с данной платой возможно не только по Wi-Fi и Bluetooth, но также с помощью СМС и мобильных звонков. Также возможно использовать мобильный интернет, что может быть очень удобным для IoT-проектов.

Важно: SIM800L работает в сети 2G, а она, в свою очередь, работает не везде. Проверьте покрытие вашего мобильного оператора.

Для использования данной платы вам потребуется nano-SIM карта и кабель USB Type-C для загрузки скетча.

connectors

В комплекте с платой идут несколько штыревых разъемов, коннектор питания и внешняя антенна, которую надо присоединить к плате.

board+wires

Однако, антенна из комплекта плохо работала и мы заменили ее другой.

antenna

Обзор

Суть проекта заключается в загрузке данных датчика в облако используя мобильный интернет, а не Wi-Fi.

project_scheme

В предыдущем проекте мы создали сервер с базой данных для хранения показаний датчика.
В данном проекте мы будем загружать данные на этот сервер, хотя вы можете использовать любой другой сервис: ThingSpeak, IFTTT и др.

Если вы хотите в точности повторять наши действия, то вам следует сначала ознакомиться с предыдущим проектом.

Вот, непосредственно, суть проекта:

  1. Плата находится в спящем режиме;
  2. Затем она подключается к мобильному интернету;
  3. Плата выкладывает показания датчика на сервер и уходит в спящий режим.

В нашем случае время нахождения в спящем режиме – 60 секунд.

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

Что нам потребуется?

Скетч для платы ESP32 мы будем писать в среде Arduino, поэтому необходимо, чтобы плата была установлена.

В данном проекте мы покажем, как загружать данные в облако. Мы используем свой домен с базой данных.

Если вы хотите в точности следовать данному руководству, то сначала нужно ознакомиться с этим руководством.

Для использования платы TTGO T-Call ESP32 SIM800L вам потребуется nano-SIM.

Ваша SIM-карта должна поддерживать подключение к мобильному интернету, поэтому нужно выставить правильные настройки APN. Обычно, оператор сотовой связи сам их предоставляет, но если нет, то найдите их на веб-сайте вашего мобильного оператора.

Для работы с проектом вам потребуется установить библиотеки Adafruit_BME280, Adafruit_Sensor и TinyGSM. Выполните следующие шаги, чтобы установить библиотеки:

Чтобы получить показания от модуля датчика BME280, мы будем использовать библиотеку Adafruit_BME280. Вам также необходимо установить библиотеку Выполните следующие шаги, чтобы установить библиотеки в вашу Arduino IDE:

  1. Откройте IDE Arduino и выберите Скетч> Подключить библиотеку> Управлять библиотеками. Должен открыться менеджер библиотек.
  2. Найдите adafruit bme280 в поле поиска и установите библиотеку.

adafruit_bme280

Чтобы использовать библиотеку BME280, также необходимо установить Adafruit Unified Sensor. Выполните следующие шаги, чтобы установить библиотеку в вашу среду разработки Arduino:

Найдите Adafruit Unified Sensor в поле поиска. Прокрутите до конца, найдите библиотеку и установите ее.

adafruit_unified_sensor

В менеджере библиотек найдите библиотеку TinyGSM и установите её:

tiny_gsm

После установки всех библиотек перезапустите Arduino IDE.

Какие компоненты потребуются?

Нам потребуются следующие компоненты:

Схема

Соедините датчик BME280 с платой согласно следующей схеме:

scheme

Мы подключаем пин SDA к выходу GPIO18 и SCL к GPIO19. Мы не используем выход I2C потому, что они используются регулятором батареи платы.

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

Современные беспроводные технологии позволяют разрабатывать функциональные и доступные устройства. Подобные приборы взаимодействуют с широким спектром систем общего назначения. В этой статье пойдет речь об организации двухсторонней передачи данных между GSM модулем SIM800L (Рисунок 1) и полноценным веб-сервером.

Вебинар «Новые решения STMicroelectronics в области спутниковой навигации» (17.11.2021)

GSM модуль SIM800L.
Рисунок 1. GSM модуль SIM800L.

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

Для организации работы такой системы нам понадобятся GSM модуль SIM800L, плата Arduino Nano (Рисунок 2) и веб-сервер с доменом.

Плата Arduino Nano.
Рисунок 2. Плата Arduino Nano.

Принципиальная схема устройства показана на Рисунке 3.

Принципиальная схема устройства.
Рисунок 3. Принципиальная схема устройства.

Настройка GSM модуля SIM800L

В моем случае используется оператор связи «Киевстар». Для работы с подобными устройствами был подключен тарифный план «Киевстар датчик» (Рисунок 4), ежедневная плата за который составляет 1 грн (примерно 0.04USD). При этом предоставляется 10 Мб Интернета в сутки. Для наших задач этого трафика будет достаточно.

Тарифный план «Киевстар датчик».
Рисунок 4. Тарифный план «Киевстар датчик».

Для удобного программирования микроконтроллера платы Arduino Nano обмен данных с GSM модулем организован по программному UART с помощью стандартной библиотеки . Выводы D2-D3 назначены как Rx и Tx, соответственно.

Инициализация

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

Разберем назначение каждой команды:

На Рисунке 5 показан процесс выполнения подпрограммы init_GSM.

Процесс выполнения подпрограммы init_GSM.
Рисунок 5. Процесс выполнения подпрограммы init_GSM.

На Листинге 1 показан пример обработки команды AT+CPAS.

Листинг 1. Программа обработки команды AT+CPAS.

Во время ответа от модуля в cycle_for() происходит сравнение и установка значения в bit_ok. Если значение равняется 1, то модуль вернул «ОК», при ответе 2 – модуль возвращает «Error». Если положительно ответа нет, то через 1 секунду повторяем отправку i раз.

Настройка GPRS соединения

После того как основная настройка модуля прошла успешно, можно начинать инициализировать GPRS соединение.

Для этого вызываем функцию init_GPRS(), которая отправляет в модуль следующие строки:

Аналогично подпрограмме init_GSM(), во всех необходимых местах проверяем положительный ответ «ОК» от модуля.

На Рисунке 6 показан процесс выполнения подпрограммы init_GPRS().

Процесс выполнения подпрограммы init_GPRS().
Рисунок 6. Процесс выполнения подпрограммы init_GPRS().

На этом этапе работу с модулем можно завершить. Для последующей работы необходимо настроить сервер и создать соответствующие файлы для обмена данными.

Создание файлов и работа с веб-сервером

Чтобы принять данные с GSM модуля, нужно приобрести услугу хостинга с минимальными требованиями, главное, чтобы была поддержка PHP. PHP – это популярный язык программирования, который исполняется на стороне сервера, в то время как JavaScript исполняется в браузере на стороне пользователя.

В качестве примера сделаем удаленное управление поливом теплицы.

Распишем основные задачи для веб-сервера и GSM модуля.

Задачи веб-сервера:

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

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

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

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

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

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

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

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

Результат открытого в браузере файла index.php.
Рисунок 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. Законченный интерфейс управления.

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

Считываем данные с сервера в Arduino

После завершения процесс отладки записи статуса вкл/выкл насоса в файл pomidor.txt можно считывать данные в Arduino. Напишем функцию чтения данных с сервера (Листинг 7).

Листинг 7. Функция чтения данных с сервера.

Прочитаем статус вкл/выкл насоса из файла txt/pomidor.txt, отобразим значение на терминале и на выводе D5 платы Arduino (Листинг 8).

Листинг 8. Программа формирования логического уровня вывода D5 в зависимости от статуса насоса.

Пример отображения при нажатии кнопки включении насоса показан на Рисунке 12.

Пример отображения при нажатии кнопки «Вкл» насоса.
Рисунок 12. Пример отображения при нажатии кнопки «Вкл» насоса.

Передача данных из Arduino на веб-сервер

Для передачи данных на веб-сервер напишем функцию SEND_GPRS с указанием адреса "adress_php", в который будет записываться значение int типа "out_messeng_Server". Для записи значения типа String нужно вызывать функцию SEND_string_GPRS. В Листинге 9 показана функция отправки данных на сервер.

Листинг 9. Функция отправки данных на сервер.

В корневом каталоге веб-сервера создаем папку in, внутри ее располагаем другие папки со скриптами для обработки приема данных GSM модуля. Внутренние папки содержат файл index.php и log.txt.

На Листинге 10 показано содержание файла index.php.

Листинг 10. PHP листинг файла index.php.

Как видно, с приходом новых данных происходит перезапись файла log.txt.

Собранная схема на макетной плате.
Рисунок 13. Собранная схема на макетной плате.

Все компоненты собраны на макетной плате (Рисунок 13). Устройство не требует настроек, после сборки и прошивки сразу готово к работе.

Читайте также: