Sim800l настройка на gprs
Компания SIMCom Wireless Solutions, ведущий разработчик и производитель GSM/GPRS, 3G, LTE и GPS/ГЛОНАСС- решений для М2М-отрасли, предлагает новую линейку GSM/GPRS-модулей серии SIM800 на замену хорошо известной в мире серии SIM900. В новых модулях улучшен ряд ключевых качеств, таких как массо-габаритные параметры, скорости передачи данных, цена. Кроме того, в новой линейке реализована поддержка Bluetooth и множества сетевых протоколов передачи данных, включая SSL.
Серия GSM/GPRS-модулей SIM800
В России линейка SIM800 (табл. 1) представлена модулями SIM800C, SIM800C-DS, SIM800H, SIM800, SIM800F [1]. Все они покрывают подавляющее большинство потребностей рынка М2М. Так, SIM800C в популярном корпусе LCC является фокусным и базовым решением для широкого спектра приложений. SIM800C-DS самый малогабаритный в мире GSM/GPRS-модуль с поддержкой двух SIM-карт (Dual SIM Dual Standby). Этот модуль нашел применение в охранном секторе и приложениях, где необходимо мгновенное переключение между сетями сотовой связи и требуется разделить балансы конечного потребителя и интегратора. Модуль SIM800H аналогичен модулю SIM800C по техническим характеристикам, но его основные потребители те, кому нужна поддержка передачи данных CSD и кого не смущает корпус LGA, подразумевающий пайку в печи. Модули SIM800F и SIM800 (24×24 мм) не выделяются какими-либо особенными качествами, их основная задача замена модулей SIM900R или SIM900 в текущих проектах и упрощение освоения серии SIM800 для новых разработок. Генеральное отличие между SIM800 и SIM800F заключается лишь в том, что первый поддерживает CSD, а второй, как SIM800С и SIM800C-SD, нет.
Модуль
SIM800C
SIM800C-DS
SIM800H
SIM800
SIM800F
3.0 (кроме SIM800C-DS)
Voice Call, USSD, SMS, CSD (только SIM800H и SIM800), DTMF, Jamming Detection, MMS, Audio R/F, Embedded AT (опционально)
Поддерживаемые протоколы передачи данных
2×UART, USB, I 2 C, SPI
PCM, MIC, 2×SPK 8/32 Ом
PCM, 2×MIC, 2xSPK 8/32 Ом
PCM, MIC, SPK 32 Ом
Внутренняя, SD-карта (<32 Гбайт)
Рабочее напряжение, В
Диапазон рабочих температур, °С
Следует подчеркнуть, что GSM/GPRS-модули серии SIM800 поддерживают беспроводную технологию связи Bluetooth 3.0 Classic (профили SPP, HFP и проч.) на аппаратном уровне. Поддержка Bluetooth требует соответствующего программного обеспечения (ПО). Данная функция, нисколько не увеличивая стоимость изделия, дает пользователю уникальные возможности: голосовые вызовы посредством стандартной беспроводной гарнитуры, обмен произвольными данными на расстояниях в десятки метров, файлами и контактами из записной книжки все то, для чего предназначен Bluetooth, но в разрезе задач IoT. Также разработчику следует знать, что модули серии SIM800 поддерживают технологию Embedded AT. Она позволяет интегрировать пользовательский Си-код в операционную систему (ОС) модуля и управлять всеми его ресурсами: SMS, голосовые вызовы, выход в Интернет, управление интерфейсами UART, SPI, I 2 C, GPIO и проч. Это весьма полезная технология, широко применяемая, когда остро стоит вопрос о стоимости и/или размере конечного изделия. Подробней о работе Bluetooth и Embedded AT в модулях серии SIM800 можно узнать отдельно из руководств по применению или у инженеров технической поддержки компании и дистрибьюторов. В данной же статье речь пойдет о работе со встроенным TCP/IP-стеком.
Протокол TCP/IP в М2М
Рис. 1. Обобщенная схема системы сбора данных посредством сети GSM
Обобщенная схема любой системы сбора данных построена на принципах клиент-серверного подключения (рис. 1). То есть где-то в сети есть сервер, который ждет подключения М2М-устройств и принимает от них полезные данные (расход топлива, координаты перемещения объекта, температура, тревожный сигнал, количество потребленной электроэнергии и т. п.) в зависимости от приложения и задач, выполняемых системой. В качестве клиентов в такой схеме выступают устройства на базе GSM/GPRS-модуля и управляющий контроллер (хост): модуль предоставляет доступ в Интернет, а хост управляет этим процессом. Такие клиент-серверные соединения для передачи данных, как правило, используют протокол TCP/IP.
Опытные разработчики знают, что посредством GSM/GPRS-модуля можно выйти в Интернет и подключиться к серверу двумя способами при помощи протокола канального уровня PPP или встроенного протокола TCP/IP. Оба варианта доступны в GSM/GPRS-модулях серии SIM800.
Когда в распоряжении клиентской части имеются продвинутые аппаратные ресурсы хоста и ОС типа Linux или Android, для выхода в Интернет часто применяют протокол PPP. Протоколы до уровня приложений при этом реализованы в самой ОС хоста. Но это относится к небольшому числу случаев. В подавляющем большинстве М2М-приложений ставятся жесткие требования к стоимости проекта, который подразумевает недорогой хост с небольшой памятью и простейшей ОС (без особых изысков). Реализация собственного стека протоколов (надстройка над PPP) в таком случае часто выводит проект за временные рамки сдачи работ и рамки бюджета единицы изделия.
Рис. 2. Граф процессов и состояний стека протоколов TCP/IP
В таких случаях более оправданным является применение встроенного стека TCP/IP-модуля, т. к. значительно упрощается процесс отладки и удешевляется стоимость конечного изделия. Разработчику не нужно знать/помнить принципы сетевых протоколов, тайминги, инкапсуляцию и т. д. (рис. 2), не нужно обрабатывать кадры, пакеты и сегменты данных. При работе со встроенным TCP/IP-стеком модуля хост имеет дело лишь с потоком полезных данных (рис. 3), обмениваясь ими с сервером на прикладном уровне стека протоколов.
Рис. 3. Стек протоколов TCP/IP
GSM/GPRS-модуль, управляемый хостом через последовательный порт UART, берет на себя общение с сетью сотовой связи и работу в IP-сети. Хосту для этого предоставляется командный интерфейс, т. е. доступ к сетевым функциям происходит посредством простой и понятной системы AT-команд [4]. При этом все сложные сетевые процессы, такие как активация контекста, открытие сессии, передача данных, закрытие сессии и т. д., скрыты от хоста.
Кстати, надо сказать, что протокол TCP/IP, наряду с другими протоколами, к примеру UDP/IP, очень удобен для систем, требующих надежности передачи данных, т. к. в его основе заложены принципы подтверждения и повтора посылок в случае потери пакетов. Прикладному уровню не нужно заботиться об организации повторного запроса данных.
Возможности встроенного стека протоколов TCP/IP в GSM/GPRS-модулях серии SIM800
Встроенный стек модуля гибок и может быть настроен на различные режимы работы в зависимости от пожеланий и фантазии разработчика. На рис. 4 схематически указаны режимы работы встроенного стека. Они определяют роль модуля по отношению к удаленной стороне (клиент/сервер), способ передачи данных и количество одновременно открытых соединений.
Рис. 4. Режимы работы встроенного стека TCP/IP-модулей серии SIM800
Режимы работы встроенного стека настраиваются в момент инициализации, до активации контекста и установления соединения, при помощи следующих АТ-команд:
Так, в режиме мультисокета модуль может открыть и поддерживать до шести одновременных соединений или работать только с одним соединением (моносокет).
Как видно, есть два способа обмена данными с удаленной стороной: прозрачный и командный режимы. В прозрачном режиме данные, находящиеся на стороне клиента, во время открытой сессии передаются и принимаются в последовательный порт UART модуля в том же виде, в каком их видит на удаленной стороне сервер. В некоторых случаях предпочтительней командный режим, при котором GSM/GPRS-модуль настроен на прием только АТ-команд, и, чтобы осуществить отправку данных на сервер или принять их, потребуется подавать данные вкупе с АТ-командами. Кстати, мультисокет исключает работу модуля в прозрачном режиме передачи данных.
На рис. 4 показано, что GSM/GPRS-модуль может быть настроен на выполнение роли клиента или сервера. Роль модуля не задается АТ-командой, как количество соединений или режим обмена данными, а определяется способом открытия соединения. В дальнейшем мы будем рассматривать вариант открытия одного соединения (моносокет) с удаленным сервером (роль модуля клиент). Передачу данных рассмотрим как в командном, так и в прозрачном режиме. Но перед тем как перейти к практическим примерам, надо разобраться с механизмом работы встроенного стека TCP/IP.
Механизм работы встроенного стека TCP/IP описывается диаграммой состояний, показанной на рис. 5. Это диаграмма состояний для односокетного соединения. Как видно, всего состояний 10. Все они, от IP INITIAL до PDP DEACT, замыкают цикл от активации контекста и открытия соединения до закрытия соединения и деактивации контекста именно в таком порядке, в нормальном случае. Состояние стека можно контролировать командой AT+CIPSTATUS (без параметров).
Рис. 5. Диаграмма состояний встроенного TCP/IP-стека модулей серии SIM800
Начальное состояние стека после инициализации AT+CIPMUXи AT+CIPMODE IP INITIAL, оно означает, что GPRS-контекст не настроен. Во время активации контекста информация направляется в сеть GPRS и может служить условием доступа к услугам пакетной передачи данных. Сегодня многие операторы сотовой связи дают доступ в GPRS независимо от того, какой контекст был задан. Однако этап настройки контекста пропускать не следует.
Настройка контекста осуществляется по команде AT+CSTT=<APN>,<USR>,<PASS>, где <APN> точка доступа, <USR> логин, <PASS> пароль. Эти параметры можно получить от поставщика мобильной связи. После этой команды встроенный стек принимает состояние IP START. Кстати, если говорить о повторном открытии сессии (питание не отключалось), то команду AT+CSTT можно подавать без параметров. Модуль примет в исполнение ранее заданные параметры и приведет встроенный стек в верное состояние.
После успешной настройки контекста его следует активировать командой AT+CIICR (без параметров). С момента активации контекста модуль получает доступ в сеть GPRS и на стороне оператора сотовой связи начинается отсчет трафика. За этим этапом следует переход встроенного стека в состояние IP STATUS посредством запроса своего IP-адреса в сети командой AT+CIFSR (без параметров).
Когда соединение с сервером установлено, состояние стека приобретает статус CONNECT OK. Теперь между сервером и хостом установлен канал передачи данных уровня приложений. После того как обмен данными будет завершен, соединение с сервером можно будет закрыть командой AT+CIPCLOSE. При этом есть варианты закрытия:
- Штатное закрытие соединения при помощи команды AT+CIPCLOSE(без параметров) или AT+CIPCLOSE=0, которое проходит с отправкой командных пакетов в адрес сервера и ожиданием от сервера подтверждения закрытия (рис. 6). Это согласованное закрытие сокета.
- Быстрое закрытие при помощи команды AT+CIPCLOSE=1, которое подразумевает перевод состояния стека в состояние TCP CLOSED без уведомления сервера. Этот случай актуален при потере связи с сервером или с GPRS-сетью. Этот способ нужен, чтобы вернуть стек в предсказуемое состояние, не тратя время на ожидание подтверждения, которое может и не прийти.
После закрытия соединения с сервером GPRS-контекст все еще активен. Его следует закрыть командой AT+CIPSHUT (без параметров). После этого стек модуля переходит в начальное состояние IP INITIAL, и он готов к новой сессии.
Обработка исключительных случаев
Все команды GSM/GPRS-модулей серии SIM800 имеют время исполнения. Разработчику ПО хоста важно знать время исполнения отдельно для каждой команды, чтобы исключить бесконечное ожидание реакции на команду (открытие соединения, к примеру). Значения максимального времени исполнения задокументированы, их можно найти в системе команд GSM/GPRS-модуля [4]. В таблице 2 указаны значения максимального времени исполнения основных команд встроенного TCP/IP-стека. Как видно, некоторые команды исполняются десятки секунд. Это объясняется зависимостью этих команд от быстродействия сети и сервера.
Настройки GPRS подключения и само подключение к интернету производиться через одну команду AT+SAPBR с множеством параметров.
Количество входных параметров может доходить до 4-х:
1 параметр — тип выполняемой операции
0 – закрыть соединение
1 – открыть соединение
2 – запросить сведения о соединение
3 – передать параметры соединения
4 – запросить параметры соединения
5 – сохранить настройки в энергонезависимую память модуля
2 параметр – CID или идентификатор профиля
Оставшиеся 2 параметра могут применять различные значения в зависимости от запроса.
Настройки GPRS автоматически не сохраняются в памяти модуля, но текущие настройки можно сохранить командой – AT+SAPBR=5,1.
Модуль позволяет использовать не только GPRS соединение для выхода в интернет, но и осуществлять передачу данных напрямую между модулями.
AT + SAPBR = 3 , 1 , "CONTYPE" , "GPRS"
OK
AT + SAPBR = 3 , 1 , "APN" , "internet.mts.ru"
OK
AT + SAPBR = 3 , 1 , "USER" , "mts"
OK
AT + SAPBR = 3 , 1 , "PWD" , "mts"
OK
AT + SAPBR = 1 , 1
OK
В первой строке указываем, что используем GPRS соединение, далее точку доступа оператора, далее пользователя и пароль, для соединения. Завершаем запрос установлением подключения.
Во время нахождения в Интернете можно производить следующие операции: читать страницы (осуществлять html запросы), посещать ftp, со всеми вытекающими последствиями, обмениваться TCP и UDP пакетами, проверять электронную почту (требуется специальная прошивка, читайте в следующих статьях) и возможно многое другое. Начнём по порядку.
Технические параметры
► Напряжение питания: 3.7 В
4.4 В
► Потребляемый ток режима ожидания: 0,7 мА
► Пиковый ток: 2 А
► Скорость UART: 1200 – 115200 бод
► Формат SIM карты: microSIM
► Рабочий диапазон: EGSM900, DCS1800, GSM850, PCS1900
► Мощность передачи DCS1800, PCS1900: 1 Вт
► Мощность передачи GSM850, EGSM900: 2 Вт
► Режим сети: 2G
► Габариты: 25 мм х 24 мм х 4 мм
Общие сведения
В основе модуля лежит чип SIM800L от SimCom. Рабочее напряжение чипа составляет от 3.4 В до 4.4 В, что делает его идеальным, для прямого питания от литиевой батареи, но
Контакты чипа SIM800L выведены по бокам модуля. Включая контакты необходимые для связи с микроконтроллером интерфейс UART, поддерживаемая скорость от 1200 бит / с до 115200 бит / с с автоматическим определением скорости. Для подключения к сотовой сети, нужна внешняя антенна, которая идет в комплекте с модулем. Так-же, на плате имеется разъем U.FL, если необходимо подключить выносную антенну.
На задней панели расположено гнездо для установки SIM-карты (подойдет любая SIM карта, главное чтобы была активированная). Устанавливать SIM карту необхоимо контактами к чипу SIM800L, а ключ должен располагаться сверху.
Распиновка GSM-модуля SIM800L
На модуле SIM800L расположено 12 контактов, которые необходимы для связи с микроконтроллером и подключении динамика и микрофона. Соединения следующие:
Помните, что подключение модуля к 5 В, приведет к его выходу из строя, он так же не работает и от 3.3 В. Для его работы необходим внешний источник питания, Li-ion аккумулятор или понижающие преобразователи постоянного тока на 3,7 В, 2A.
Питание для модуля SIM800L
Для стабильной работы модуля SIM800L необходим источник питания с выходным напряжением от 3,4 до 4,4 В (в идеале 4,1 В) с максимальным рабочим током 2А. В качестве источника питания можно использовать Li-ion аккумулятор (1200mAh и выше) или стабилизатор напряжения на LM2596.
Подключение
модуля SIM800L к Arduino
Необходимые детали:
► Arduino UNO R3 x 1 шт.
► Макетная плата 400 контактов, breadboard x 1 шт.
► Резисторы 0,128 Вт, 10 кОм x 2 шт.
► Модуль GSM, GPRS на чипе SIM800L x 1 шт.
► Провод DuPont, 2,54 мм, 20 см, F-M (Female — Male) x 1 шт.
► Кабель USB 2.0 A-B x 1 шт.
Подключение:
Первое делом необходимо припаять антенну или установить выносную, далее установите SIM карту в разъем. Теперь подключаем вывод Tx на модуле к выводу 3 на Arduino. Вывод Rx нельзя подключать напрямую, так как цифровой вывод Arduino Uno использует 5В, а модуль SIM800L использует 3,3В. Необходимо сигнал Tx, поступающий от Arduino UNO, понизить до 3,3В, чтобы не спалить модуль SIM800L. Самый простой способ, это воспользоватся делителем напряжения на резисторах. Подключаем резистор на 10 кОм между выводом Rx (SIM800L) и выводом 2 (Arduino) и второй резистор на 10 кОм между выводом Rx (SIM800L) и GND. Теперь осталось подключить питание модуля, в примере используется стабилизатор напряжения на LM2596.
Современные беспроводные технологии позволяют разрабатывать функциональные и доступные устройства. Подобные приборы взаимодействуют с широким спектром систем общего назначения. В этой статье пойдет речь об организации двухсторонней передачи данных между GSM модулем SIM800L (Рисунок 1) и полноценным веб-сервером.
Рисунок 1. | GSM модуль SIM800L. |
В сети есть много примеров использования этого модуля. Как правило, его применяют в различных системах сигнализации и удаленного управления объектами. При этом данные передаются по SMS протоколу, что совершенно неудобно с пользовательской точки зрения.
Для организации работы такой системы нам понадобятся GSM модуль SIM800L, плата Arduino Nano (Рисунок 2) и веб-сервер с доменом.
Рисунок 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.
Рисунок 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().
Рисунок 6. | Процесс выполнения подпрограммы init_GPRS(). |
На этом этапе работу с модулем можно завершить. Для последующей работы необходимо настроить сервер и создать соответствующие файлы для обмена данными.
Создание файлов и работа с веб-сервером
Чтобы принять данные с GSM модуля, нужно приобрести услугу хостинга с минимальными требованиями, главное, чтобы была поддержка PHP. PHP – это популярный язык программирования, который исполняется на стороне сервера, в то время как JavaScript исполняется в браузере на стороне пользователя.
В качестве примера сделаем удаленное управление поливом теплицы.
Распишем основные задачи для веб-сервера и GSM модуля.
Задачи веб-сервера:
- Принимать и отображать на веб-странице данные температуры, времени работы и статус насоса;
- Предоставлять данные GSM модулю о статусе вкл/выкл насоса.
Задачи 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. | Законченный интерфейс управления. |
Вопросы безопасности, в случае атаки на веб сервер, выходят за рамки данного повествования, поэтому опустим их.
Считываем данные с сервера в 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). Устройство не требует настроек, после сборки и прошивки сразу готово к работе.
Есть Мега 2560 и SIM800L, с помощью модуля хочу научиться отправлять логи в на свой сайт и там их хранить, считывать с сайта файл с данными.
Научился с помощью данного модуля принимать/отправлять СМС с помощью библиотечных функций. А вот как работать с GPRS соединением через функции библиотеки не нашел - описано очень мало, нашел только пример из библиотеке, а вот куда дальше копать не знаю. Все примеры в интеренете почему-то с AT командами(ну если с ними проще работать, я не против).
для GPRS использую следующую библиотеку
1. Могу я используя данный код, получить файл со своего сайта или данные из файла?
Если у кого есть примеры, с АТ командами или с помощью функций библиотек, пожалуйста дайте примеры.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Добрый день, смог побороть только отправку данных на сайт, а вот скачивание файла, или данных из файла ну ни как найти не могу, есть у кого наработки помогите пожайлуста.
Загрузка данных на сайт
String www = "www.site.ru", www_patch = "/log.php?data forum-post-footer clear-block">
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Вчера нашел время поковыряться в получении данных с сайта, выяснил следующее:
получить данные можно таким же запросом что и отправка данных, например
Но данные которые возвращаются ограничены 255 символами (msg- char переменная), из которых около 200 только сервисная информация сервера. Пришла идея, а что если вместо библиотеки попробывать АТ-команды для получения данных, ограничения в 255 символов будет наложено или нет?
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Проблему решил - в
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Проблему решил - в
Это вы временно купировали попоболь ;) Проблема не в размере буфера, а в том, что вы не успеваете оттуда вычитывать, видимо.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Вычитытать как раз успеваю, но не все что возвращает сервер. Причем что через SIM800L, что через ESP8266-01.
Так как в конце получаю Done.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Вычитытать как раз успеваю, но не все что возвращает сервер.
Перечитайте то, что написали, и поймёте, что ваше высказывание полностью эквивалентно утверждению "вы не успеваете вычитывать данные".
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Вычитытать как раз успеваю, но не все что возвращает сервер.
Перечитайте то, что написали, и поймёте, что ваше высказывание полностью эквивалентно утверждению "вы не успеваете вычитывать данные".
А что тогда поможет в данном случае, просто delay? или нечто иное?
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
А что тогда поможет в данном случае, просто delay? или нечто иное?
Delay тут точно не поможет, только усугубит :) У вас данные в приёмном буфере успевают протухать между вызовами вашего куска кода, который вычитывает эти данные. Следовательно, где-то у вас тупилово в скетче, раз не успеваете вычитывать. Может, библиотека какая тупит.
И кстати вспомнилось: отцы ардуины для нерадивых горе-писателей библиотек придумали механизм, который позволяет во время долгоиграющих операций (ну не может если библиотека вернуться из функции вот прям щас, ей надо позарез до таймаута пооткисать) - чудную функцию yield. И если бы авторы библиотек хоть иногда читали документацию - они бы использовали эту возможность, тем самым избавив от многих головняков. Однако, сколько я этих библиотек пересмотрел - хрен вам, а не yield.
Как это относится к вашему вопросу? Да очень просто: достаточно написать
где-нибудь в скетче - и всё заработает как надо, если в сторонних кусках кода учитывается эта особенность. Да и в своих кусках кода можно применять примерно такой же механизм, например, если ждём 100 мс до таймаута, то писать так, раз уж без delay никуда:
Особенность функции yield - она объявлена так, что если её нигде в скетче не написано - всё равно всё скомпилируется. Инструмент довольно мощный в разрезе кооперативной работы. У меня, например, одновременно выдаётся файл с SD по UART, работает Wi-Fi, гоняя туда/сюда данные, GSM-модуль чего-то там в порт сыпет - и это всё успевает вычитываться без протухания буфера. Это не считая разных датчиков и кучи всякой шелухи - чего там только нету: ресурсов хватает на всё, ттт. Именно потому, что почти нигде нет delay и юзается yield.
Читайте также: