Embedded at: начало работы с технологией интеграции пользовательского по в gsm/gprs-модуль sim800/sim800h
Содержание:
- Возможно, вам также будет интересно
- GSM GPRS в Arduino
- Схема подключения sim800l к esp8266
- Powering Up/Down SIM900 Chip
- Назначение и принцип работы
- АТ-команды
- SIM800L GSM Module Pinout
- Минимальный код EAT
- Supported modems
- Arduino Code – Testing AT Commands
- Все таки как подключать к Arduino:
- Основные особенности
- Передача данных с подтверждением в командном режиме
- Код Arduino – тестирование AT команд
- Как работает устройство?
- Заключение
Возможно, вам также будет интересно
В статье подробно описаны шаги, которые необходимо предпринять для освоения технологии Embedded AT в GSM/GPRS-модулях SIM800H и SIM800 производства SIMCom Wireless Solutions.
Авторы статьи предлагают ответ на вопрос, как быстро и с минимальными трудозатратами произвести переход на более совершенную и бюджетную серию 2G-модулей — SIM800, а именно SIM800/SIM800F/SIM800C, предлагаемую дистрибьютором МТ-Систем в качестве фокусной замены модемов SIM900R. Материал будет полезен специалистам, следящим за тенденциями рынка беспроводных технологий для M2M-решений, разработчи…
На прошедшей 29 сентября 2016 г. в Москве международной конференции «Интернет вещей» Aurora Mobile Technologies представила доклад «Интеграция в экосистему LoRaWAN. Практические шаги», став первым игроком российского рынка IoT, который доступно и предельно открыто говорит о преимуществах технологии LoRa и примерах ее использования.
GSM GPRS в Arduino
Модули GSM GPRS
GSM модуль используется для расширения возможностей обычных плат Ардуино – отправка смс, совершение звонков, обмен данными по GPRS. Существуют различные виды модулей, наиболее часто используемые – SIM900, SIM800L, A6, A7.
Описание модуля SIM900
Модуль SIM900 используется в различных автоматизированных системах. С помощью интерфейса UART осуществляется обмен данными с другими устройствами. Модуль обеспечивает возможность совершения звонков, обмен текстовыми сообщениями. Работа модуля релизуется на компоненте SIM900, созданным фирмой SIMCom Wireless Solution.
Технические характеристики:
- Диапазон напряжений 4,8-5,2В;
- В обычном режиме ток достигает 450 мА, максимальный ток в импульсном режиме 2 А;
- Поддержка 2G;
- Мощность передачи: 1 Вт 1800 и 1900 МГц, 2 Вт 850 и 900 МГц;
- Имеются встроенные протоколы TCP и UDP;
- GPRS multi-slot class 10/8;
- Рабочая температура от -30С до 75С.
С помощью устройства можно отслеживать маршрут транспорта совместно с ГЛОНАСС или GPS устройством. Возможность отправки смс-сообщений используется в беспроводной сигнализации и различных охранных системах.
Описание модуля SIM800L
Модуль выполнен на основе компонента SIM800L и используется для отправки смс, реализации звонков и обмена данными по GPRS. В модуль устанавливается микро сим карта. Устройство обладает встроенной антенной и разъемом, к которому можно подключать внешнюю антенну. Питание к модулю поступает от внешнего источника либо через DC-DC преобразователь. Управление осуществляется с помощью компьютера через UART, Ардуино, Raspberry Pi или аналогичные устройства.
Технические характеристики:
- Диапазон напряжений 3,7В – 4,2В;
- Поддержка 4х диапазонной сети 900/1800/1900 МГц;
- GPRS class 12 (85.6 кБ/с);
- Максимальный ток 500 мА;
- Поддержка 2G;
- Автоматический поиск в четырех частотных диапазонах;
- Рабочая температура от –30С до 75С.
Описание модуля A6
Модуль A6 разработан фирмой AI-THINKER в 2016 году. Устройство используется для обмена смс-сообщениями и обмена данными по GPRS. Плата отличается низким потреблением энергии и малыми размерами. Устройство полностью совместимо с российскими мобильными операторами.
Технические характеристики:
- Диапазон напряжений 4,5 – 5,5В;
- Питание 5В;
- Диапазон рабочих температур от -30С до 80С;
- Максимальное потребление тока 900мА;
- GPRS Class 10;
- Поддержка протоколов PPP, TCP, UDP, MUX.
Модуль поддерживает карты формата микросим.
Описание модуля A7
A7 является новейшим модулем от фирмы AI-THINKER. По сравнению со своим предшественником A6 имеет встроенный GPS, позволяющий упрощать конструкцию устройства.
Технические характеристики:
- Диапазон рабочих напряжений 3,3В-4,6В;
- Напряжение питания 5В;
- Частоты 850/900/1800/1900 МГц;
- GPRS Class 10: Макс. 85.6 кбит;
- Подавление эха и шумов.
Устройство поддерживает микросим карты. Модуль поддерживает обмен звонками, обмен смс-сообщениями, передачу данных по GPRS, прием сигналов по GPS.
Схема подключения sim800l к esp8266
Распиновка более чем стандартная. Пин с питанием подключаете к источнику, способному выдавать напряжение в пределах 3.7-4.2 Вольт, или же к трансформатору. TX идёт к RX пину и наоборот. Как только вы выполните спайку и решите протестировать работу модуля, подключив источник питания, о правильности подключения просигнализируют диоды. Далее остаётся активировать модуль по описанному выше методу, и вы сможете использовать АТ-команды для управления. Если захотите подгрузить вспомогательную библиотеку или какие-то весомые медиа, стоит ознакомиться с подключением карты памяти к системе Ардуино.
Для начала давайте протестируем скорость работы порта и информацию о модуле, для этого воспользуемся «AT+IPR?» и «AT+CPAS» соответственно. Если всё в порядке и информация выводится без ошибок, то можно продолжить проверку и протестировать уровень сигнала, а также операторов, которых может увидеть модуль.
Самое главное – Sim800i позволяет звонить на указанные номера и принимать звонки, притом с помощью базовых библиотек.
Это также открывает простор для применения систем с его участием. Если вы захотите написать определённый скрипт, запускающий что-либо по входящему звонку, то учитывайте, что модуль реагирует на него фразой «RING» в командной строке.
Подобный функционал позволяет создавать сотни автономных систем управления, вплоть до того, что вместо отпечатков пальцев или ключ-карт, вы можете открывать дверь по звонку на определённый номер. Но, естественно, для хорошего уровня защиты, стоит прописать вайт-лист номеров.
Powering Up/Down SIM900 Chip
Even if you power the shield up, you need to turn on the SIM900 chip to get it working.
As per datasheet, pulling the PWRKEY pin on the chip LOW for at least 1 second will power up/down the chip. There are two ways to do this with our shield.
Hardware Trigger
The shield comes with a right angle tactile switch situated near the PWR LED indicator. You need to press that switch for about 2 seconds to power the shield up/down.
Software trigger
Instead of manually pressing the PWRKEY every time, you can turn the SIM900 up/down programmatically.
First, you need to solder the SMD jumper named R13 on the shield as highlighted in the image.
Next, you need to connect D9 pin on the shield to the D9 pin on Arduino.
Finally, you need to add following custom function in your program.
Назначение и принцип работы
GSM-модуль (Global System for Mobile Communications) использует сеть телефонной связи оператора, для получения и передачи сигнала на удаленный объект управления. Например, с помощью СМС команд можно:
- получать оповещение о состоянии объекта через используемые датчики;
- узнавать о срабатывании сигнализации;
- включать и выключать охранную систему.
С помощью GPRS, который также поддерживают GSM-модули, можно аналогичные команды обрабатывать через Internet.
С помощью такого функционала можно организовать автономную сигнализацию на удаленном объекте. Датчики будут фиксировать изменение состояния, а по каналам связи будет транслироваться информация об этом на ваш смартфон. По сути, можно организовать Smart Home самостоятельно, постепенно добавляя в схему дополнительное комплектующее.
Работает такое устройство на базе платы Arduino Uno. Никто не запрещает использовать платы Nano (mini-схема) или Mega если необходимо, но для удобства монтажа устройства минимальной комплектации, достаточно материнской платы Uno.
За передачу GSM или GPRS отвечает модуль, который соединяется с основной платой. Он расширяет возможности Arduino UNO, позволяя принимать и совершать звонки, отправлять SMS, обмениваться данными через GPRS. На рынке представлены несколько версий отличных GSM-плат, которые можно сопоставлять и программировать через AT-команды на необходимый функционал.
АТ-команды
Для работы с Bluetooth в модулях SIM800x используются специализированные для этого функционала АТ-команды. Для всей этой серии они являются унифицированными. Ниже приведены основные из них:
- AT+BTPOWER — включение/выключение Bluetooth;
- AT+BTPAIRCFG — конфигурирование настроек подключения;
- AT+BTSCAN — сканирование доступных для соединения устройств;
- AT+BTVIS — включение/выключение обнаружения модуля серии SIM800x;
- AT+BTPAIR — управление сопряжением устройств, оснащенных Bluetooth;
- AT+BTGETPROF — просмотр доступных профилей подключенного устройства;
- AT+BTACPT — подтверждение запроса на подключение;
- AT+BTCONNECT — установление соединения с устройством;
- AT+BTSPPCFG — конфигурирование профиля SPP.
SIM800L GSM Module Pinout
The SIM800L module has total 12 pins that interface it to the outside world. The connections are as follows:
NET is a pin where you can solder Helical Antenna provided along with the module.
VCC supplies power for the module. This can be anywhere from 3.4V to 4.4 volts. Remember connecting it to 5V pin will likely destroy your module! It doesn’t even run on 3.3 V! An external power source like Li-Po battery or DC-DC buck converters rated 3.7V 2A would work.
RST (Reset) is a hard reset pin. If you absolutely got the module in a bad space, pull this pin low for 100ms to perform a hard reset.
RxD (Receiver) pin is used for serial communication.
TxD (Transmitter) pin is used for serial communication.
GND is the Ground Pin and needs to be connected to GND pin on the Arduino.
RING pin acts as a Ring Indicator. It is basically the ‘interrupt’ out pin from the module. It is by default high and will pulse low for 120ms when a call is received. It can also be configured to pulse when an SMS is received.
DTR pin activates/deactivates sleep mode. Pulling it HIGH will put module in sleep mode, disabling serial communication. Pulling it LOW will wake the module up.
MIC± is a differential microphone input. The two microphone pins can be connected directly to these pins.
SPK± is a differential speaker interface. The two pins of a speaker can be tied directly to these two pins.
Минимальный код EAT
Рассмотрим пример минимального пользовательского Си-кода:
{ EatEvent_st event; while(1) { eat_get_event(&event); switch(event.event) { ... } } }
Здесь app_main — это точка входа, с которой начинается пользовательская программа, а eat_get_event — интерфейс для получения событий от ядра ПО модуля. Пользовательский код выполняется в цикле while и должен вызывать API-функции, параллельно отслеживая события, которые посылает ядро.
Обычно программисту приходится работать с платой, на которой отдельно стоят GSM-модуль и микроконтроллер (MCU), управляющий GSM-модулем при помощи АТ-команд . А в случае с EAT у него возникнет вопрос, как слать GSM-модулю команды и как обрабатывать его ответы. На рис. 3 показан пример, поясняющий, как это можно реализовать в EAT по аналогии с классической архитектурой (раздельный MCU и GSM-модуль).
Рис. 3. Принцип работы классической архитектуры (слева) и EAT (справа)
Видно, что пользовательское ПО по отношению к ядру EAT следует рассматривать как ПО внешнего MCU. Все, что изменится при миграции ПО из внешнего MCU в GSM-модуль, — это синтаксис обращения к ядру EAT и интерпретация результатов. Для пояснения принципа обработки АТ-команды ядром приведен пример простейшего кода:
void app_main(void) { … Eat_modem_write(“AT+CSQ\r”,strlen(“AT+CSQ\r”)); // Шлем АТ-команду while(TRUE) { eat_get_event(&event); switch (event.event) { case EAT_EVENT_MDM_READY_RD: // При получении ответа от модуля получим индикатор события EAT_EVENT_MDM_READY_RD { Progress(); // обрабатываем ответ модуля } case … } } }
Supported modems
- SIMCom SIM800 series (SIM800A, SIM800C, SIM800L, SIM800H, SIM808, SIM868)
- SIMCom SIM900 series (SIM900A, SIM900D, SIM908, SIM968)
- SIMCom WCDMA/HSPA/HSPA+ Modules (SIM5360, SIM5320, SIM5300E, SIM5300E/A)
- SIMCom LTE Modules (SIM7100E, SIM7500E, SIM7500A, SIM7600C, SIM7600E)
- SIMCom SIM7000E/A/G CAT-M1/NB-IoT Module
- SIMCom SIM7070/SIM7080/SIM7090 CAT-M1/NB-IoT Module
- AI-Thinker A6, A6C, A7, A20
- ESP8266/ESP32 (AT commands interface, similar to GSM modems)
- Digi XBee WiFi and Cellular (using XBee command mode)
- Neoway M590
- u-blox 2G, 3G, 4G, and LTE Cat1 Cellular Modems (many modules including LEON-G100, LISA-U2xx, SARA-G3xx, SARA-U2xx, TOBY-L2xx, LARA-R2xx, MPCI-L2xx)
- u-blox LTE-M/NB-IoT Modems (SARA-R4xx, SARA-N4xx, but NOT SARA-N2xx)
- Sequans Monarch LTE Cat M1/NB1 (VZM20Q)
- Quectel BG96
- Quectel M95
- Quectel MC60 (alpha)
Supported boards/modules
- Arduino MKR GSM 1400
- GPRSbee
- Microduino GSM
- Adafruit FONA (Mini Cellular GSM Breakout)
- Adafruit FONA 800/808 Shield
- Industruino GSM
- RAK WisLTE (alpha)
- … other modules, based on supported modems. Some boards require special configuration.
More modems may be supported later:
- Quectel M10, UG95
- SIMCom SIM7020
- Telit GL865
- ZTE MG2639
- Hi-Link HLK-RM04
Watch this repo for new updates! And of course, contributions are welcome 😉
Arduino Code – Testing AT Commands
For sending AT commands and communicating with the SIM800L module, we will use the serial monitor. The sketch below will enable the Arduino to communicate with the SIM800L module on serial monitor. Before we proceed with detailed breakdown of code, connect your Arduino to PC, compile below code and upload it to the Arduino.
Once you open a serial monitor, make sure that ‘Both NL & CR’ option is selected!
The sketch starts by including a SoftwareSerial.h library and initializing it with the Arduino pins to which Tx and Rx of SIM800L module is connected.
In setup function: we initialize a serial communication link between Arduino, Arduino IDE and SIM800L module at a baud rate of 9600.
Now that we have established a basic connection, we will try to communicate with the SIM800L module by sending AT commands.
AT – It is the most basic AT command. It also initializes Auto-baud’er. If it works you should see the AT characters echo and then OK, telling you it’s OK and it’s understanding you correctly! You can then send some commands to query the module and get information about it such as
AT+CSQ – Check the ‘signal strength’ – the first # is dB strength, it should be higher than around 5. Higher is better. Of course it depends on your antenna and location!
AT+CCID – get the SIM card number – this tests that the SIM card is found OK and you can verify the number is written on the card.
AT+CREG? Check that you’re registered on the network. The second # should be 1 or 5. 1 indicates you are registered to home network and 5 indicates roaming network. Other than these two numbers indicate you are not registered to any network.
In the looping part of the code, we call custom function called updateSerial() which continuously waits for any inputs from the serial monitor and send it to the SIM800L module through the D2 pin (Rx of module). It also continuously reads the D3 pin (Tx of module) if the SIM800L module has any responses.
You should see below output on serial monitor.
Basic AT Commands on SIM800L GSM Module
You are now free to send any commands through serial monitor like below which gives more information about network connection & battery status:
ATI – Get the module name and revision
AT+COPS? – Check that you’re connected to the network, in this case BSNL
AT+COPS=? – Return the list of operators present in the network.
AT+CBC – will return the lipo battery state. The second number is the % full (in this case its 93%) and the third number is the actual voltage in mV (in this case, 3.877 V)
Network Connection AT Commands on SIM800L GSM Module
Все таки как подключать к Arduino:
А что подключать и к чему? разновидностей модулей десятки, версий ардуино плат тоже. Я не рекомендую использовать плату Arduino UNO, как и любую другую с ATmega328, совместно с библиотекой SoftwareSerial для работы с модемом, возможно данная связка подойдет для проверки работы модема и отладки, но в устройствах стабильной работы добиться практически не возможно.
Модем общается с микроконтроллерам по средствам UART интерфейса, на UNO единственный аппаратный UART отдан для перепрошивки платы и «монитор порта», это принуждает использовать библиотеку SoftwareSerial.h которая не может нормально переварить поток с модема. Правильным решением будет использовать плату с несколькими аппаратными UART интерфейсами, например Arduino Leonardo, Arduino Mega.
В случаи с Arduino Leonardo и аппаратным UART:
Не простой случай с дешевым модулем на SIM800L, тут нужен отдельный стабилизатор напряжения питания на 4,0 В, нужно согласовывать логические уровни с ардуино при помощи резистивного делителя напряжения, ибо по другому согласовать не получится.
Чуть проще с подобными модулями, где конвертер уровней установлен на плате. Только не забываем дать питание и для конвертера.
Управление модемом:
Общение с модемом происходит при помощи АТ команд, в модем отправляется команда в текстовом виде, а после выполнения команды модем возвращает ответ, самая простая команда «AT» ответ на нее «OK«, служит для проверки соединения с модемом. Список всех доступных команд и возможных ответов можно посмотреть в документации на модем.
Для управления модемом через «монитор порта» в ардуинку нужно залить пример, который транслирует данные из «монитора порта» в UART к которому подключен модем. Убедитесь в правильной скорости UART интерфейса, в настройках модема, скорость порта может отличатся от 9600.
Основные особенности
На текущий день уже представлена масса аппаратных платформ, а также есть большое разнообразие микроконтроллеров, они получают информацию от внешних датчиков, далее происходит обработка данных и сигнал передается исполнительному механизму. Платформа Arduino во многом упрощает выполнение многочисленных задач и отличается действительно большим перечнем преимуществ, в сравнении с другими подобными устройствами. К основным преимуществам стоит отнести:
- Доступную цену. Платформа отличается своей небольшой стоимостью в сравнении с другими аналогичными системами. Но при этом тут есть весь необходимый набор функций для обеспечения полной безопасности.
- Кросс-платформенность. Программное обеспечение Arduino может эффективно взаимодействовать с Linux, Windows, Macintosh-OSX.
- Простой процесс программирования. Для того чтобы настроить микроконтроллер применяется среда программирования Processing. Данный вариант отлично подходит не только для профессионала, но и также для пользователя, который еще не имеет навыков работы с подобными устройствами.
- Всегда можно модернизировать систему. Благодаря специальному программному обеспечению и открытому коду, можно адаптировать охранную систему по собственным требованиям, но в таком случае нужно иметь некоторые навыки. Arduino отличается высокой надежностью, и даже наиболее старые модели соответствуют всем современным требованиям и обеспечивают надежную защиту. Что касается новых разработок, то тут имеется обширный перечень функций и гарантирует полная безопасность.
Передача данных с подтверждением в командном режиме
AT+CIPSEND? // Проверяем максимальный размер данных, которые можно послать в сторону удаленной стороны. Этот размер зависит от сети. +CIPSEND: 1460 OK AT+CIPQSEND? // Нормальный режим передачи данных. В этом режиме каждая порция высланных данных подтверждается сообщением SEND OK, что означает, что сервер данные принял и подтвердил их получение. +CIPQSEND: 0 OK AT+CIPSEND=100 // Передача 100 байт данных. > // Приглашение. hellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohello // Размер данных не должен быть больше 1460 байт, и в конце блока данных следует байт 0x1A. SEND OK // Данные успешно переданы. AT+CIPSEND // Передача данных произвольного размера. > hellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohello // Размер данных не должен быть больше 1460 байт, и в конце блока данных следует байт 0x1A. SEND OK
Быстрая передача данных в командном режиме
AT+CIPQSEND=1 // Режим быстрой передачи данных. Этот режим подразумевает передачу данных без ожидания от сервера подтверждения о получении. OK AT+CIPSEND=100 // Передача 100 байт данных. > hellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohello DATA ACCEPT:100 // Модуль принял данные в свой буфер и вышлет их в сторону сервера в фоновом режиме. AT+CIPACK // Проверка: 300 байт передано на сервер, из них 300 байт сервером приняты и подтверждены. +CIPACK: 300,300,0 OK AT+CIPSEND // Передача данных произвольного размера происходит аналогичным образом. > hellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohello DATA ACCEPT:100 AT+CIPACK +CIPACK: 400,400,0 OK AT+CIPQSEND=0 // Нормальный режим передачи данных. OK
Прием данных в командном режиме, автоматический вывод принятых данных
AT // Модуль находится в командном режиме; OK AT OK HelloHelloHelloHelloHelloHelloHelloHelloHelloHello // Данные, принятые от сервера, выводятся из порта UART модуля автоматически. Данные выводятся как есть, и это неудобно, поэтому будут полезны следующие настройки. AT OK AT+CIPHEAD=1 // Перед блоком данных, принятых от сервера, добавлять заголовок формата +IPD,<длина блока данных>. OK AT+CIPSRIP=1 // При приеме данных показывать уведомление в виде RECV FROM:<IP адрес отправителя>,<порт>. OK
Прием данных в командном режиме, ручной вывод принятых данных
Для смены способа вывода данных требуется разорвать соединение и деактивировать контекст.
AT+CIPCLOSE // Закрытие соединения. CLOSE OK AT+CIPSTATUS OK STATE: TCP CLOSED AT+CIPSHUT // Деактивация контекста. SHUT OK AT+CIPRXGET? +CIPRXGET: 0 // Автоматический вывод принятых данных. OK AT+CIPRXGET=1 // Настройка ручного вывода данных. OK AT+CSTT OK AT+CIICR OK AT+CIFSR 100.69.113.182 AT+CIPSTART=”TCP”,”81.95.20.18”,2020 OK CONNECT OK AT OK AT OK +CIPRXGET: 1,”81.95.20.18:2020” // Уведомление о приеме данных от сервера. AT OK AT+CIPRXGET=4 // Уточнение размера принятых данных. +CIPRXGET: 4,100 // Пришло 100 байт данных. OK AT+CIPRXGET=2,20 // Вывести 20 байт в порт UART; +CIPRXGET: 2,20,80,”81.95.20.18:2020” // В буфере модуля осталось 80 байт. HelloHelloHelloHello // Запрошенные 20 байт данных. OK AT+CIPRXGET=2,20 // Вывести 20 байт в порт UART. +CIPRXGET: 2,20,60,”81.95.20.18:2020” // В буфере модуля осталось 60 байт. HelloHelloHelloHello // Запрошенные 20 байт данных. OK AT+CIPRXGET=2,60 // Вывести 60 байт в порт UART. +CIPRXGET: 2,60,0,”81.95.20.18:2020” // Приемный буфер модуля пуст. HelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHello // Запрошенные 60 байт данных. OK AT+CIPRXGET=4 // Проверка наличия данных в буфере модуля. +CIPRXGET: 4,0 // Буфер пуст. OK
Обмен данными с сервером в прозрачном режиме
Для смены режима передачи данных требуется разорвать соединение и деактивировать контекст.
AT+CIPCLOSE CLOSE OK AT+CIPSHUT SHUT OK AT+IFC=2,2 // Аппаратный контроль потока должен быть включен, чтобы избежать потери данных. OK AT+CIICR OK AT+CIFSR 100.104.155.220 AT+CIPSTART=”TCP”,”81.95.20.18”,2020 OK CONNECT // Соединение установлено.
* * *
Благодаря подробному освещению возможностей встроенного стека протоколов TCP/IP новой линейки модулей серии SIM800, выгод его применения и приведению объемного исчерпывающего примера работы со стеком в различных режимах, данная статья поможет разработчику быстро освоить материал официальных руководств по применению модулей SIMCom Wireless Solutions и послужит в разработке отправной точкой.
Код Arduino – тестирование AT команд
Для отправки AT команд и взаимодействия с платой расширения SIM900 мы будем использовать монитор последовательного порта. Приведенный ниже скетч позволит Arduino связываться с платой расширения SIM900 в мониторе последовательного порта. Прежде чем приступить к подробному разбору кода, подключите Arduino к компьютеру, скомпилируйте приведенный ниже код и загрузите его в Arduino.
Открыв монитор последовательного порта, убедитесь, что выбрана опция «NL & CR»!
Скетч начинается с включения библиотеки и ее инициализации выводами Arduino, к которым подключены Tx и Rx платы расширения SIM900.
В функции мы инициализируем последовательные каналы связи между Arduino и Arduino IDE, Arduino и платой расширения SIM900 со скоростью передачи 9600 бод.
Теперь, когда мы установили базовое соединение, мы попытаемся установить связь с платой расширения SIM900, отправляя AT команды.
– это самая базовая AT команда. Она также инициализирует автоматическое определение скорости. Если всё работает, вы должны увидеть эхо символов AT, а затем ОК, сообщающее, что все в порядке, и модуль вас правильно понимает! Затем вы можете отправить несколько команд для запроса и получения информации о плате расширения, таких как:
– проверить «уровень сигнала» — первое число – это уровень в дБ, он должен быть выше 5. Чем выше, тем лучше. Конечно, это зависит от вашей антенны и местоположения!
– получить номер SIM-карты – она проверяет, что SIM карта найдена, и вы можете сверить номер, записанный на карте.
– убедиться, что вы зарегистрированы в сети. Второе число должно быть 1 или 5. 1 означает, что вы зарегистрированы в домашней сети, а 5 – в роуминге. Другие цифры, отличающиеся этих двух, означают, что вы не зарегистрированы ни в одной сети.
В основном цикле программы мы вызываем пользовательскую функцию , которая непрерывно ожидает любые входные данные от последовательного монитора и отправляет их на плату расширения SIM900 через вывод D8 (Rx платы расширения). Она также постоянно читает вывод D7 (Tx платы расширения) на случай, если плата расширения выдает какие-либо отклики.
В мониторе последовательного порта вы должны увидеть вывод, примерно такой как показан ниже.
Рисунок 16 – Базовые AT команды SIM900 GSM Shield на Arduino
Теперь вы можете свободно отправлять любые команды через монитор последовательного порта, например, те, которые показаны ниже, и которые дает дополнительную информацию о подключении к сети и состоянии аккумулятора:
– получить имя и версию платы расширения
– проверить, что вы подключены к сети
– вернуть список операторов, присутствующих в сети
– вернуть состояние литий-полимерного аккумулятора. Второе число является процентом от полного заряда (в данном случае это 93%), а третье число является фактическим напряжением в мВ (в данном случае 3,877 В)
Рисунок 17 – Получение дополнительной информации от SIM900 GSM Shield с помощью AT команд на Arduino
Для получения дополнительной информации о AT командах SIM900 смотрите документ ниже.
Как работает устройство?
Для того чтобы обеспечить защиту собственного имущества и настроить работу системы на платформе Arduino, нужно приобрести еще и GSM модуль. Благодаря ему появляется возможность выполнить вход во всемирную паутину, выполнять дозвон или отправлять СМС оповещения.
Помимо этого в GSM плате имеется и специальный радиомодем М10, который взаимодействует с системой посредствам АТ команд. Передача данных реализуется с помощью программного последовательного интерфейса с использованием специального цифрового кода.
Стоит отметить, что аппаратное устройство Arduino, оснащенное GSM модулем функционирует на 4 частотах. И дополнительно в модеме имеется поддержка отдельных, наиболее популярных протоколов, что в свою очередь гарантирует GPRS соединение. И GPRS модуль Arduino обеспечивает скорость передачи данных до 90к/бит в секунду.
Помимо этого владелец получает возможность передавать голосовое сообщение и вызывать любого абонента. Но в этой ситуации дополнительно потребуется как микрофон, так и внешний динамик. И именно благодаря СИМ карте можно использовать устройство в режиме сотовой связи.
Как выполнить подключение?
Перед подключением GSM модуля к Arduino в слот для СИМ карты, нужно провести установку соответствующего размера симку. Только после этого следует подключать сам модуль к аппаратной платформе. Производитель дает инструкцию, и чтобы не было проблем в работе, ее нужно придерживаться. При подключении нужно использовать компьютер, а устройство подсоединяется к ПК посредствам USB кабеля. После того как Arduino загрузиться, нужно закачать софт. Как только процесс будет завершен можно отключить платформу от ПК.
Заключение
Возможности микроконтроллера Arduino позволяют создать на его базе практически любой проект домашней или промышленной автоматизации. А если дополнить его комплектом подключения к сотовой сети и соответствующим образом запрограммировать, плата превратится в мощный комплекс удаленного доступа, мониторинга, оповещения и выполнения прочих задач, требующих наличия постоянной связи. GSM-модули доступны, легко устанавливаются и настраиваются, обладают низким энергопотреблением и работают везде в зоне покрытия сотовой сети.
Разумеется, использовать их как средство передачи крупных объемов данных нельзя, поскольку доступ в интернет этим классом устройств обеспечивается только через GPRS, с небольшими скоростями. Но в задачах создания дешевой и надежной охранной системы, комплекса мониторинга или хаба «умного дома» такие решения находят обширное применение — как у энтузиастов, так и профессионалов.