====== GPRS Shield v3 ======
[[amp>product/arduino-gprs-shield?utm_source=man&utm_campaign=gprs-shield&utm_medium=wiki | GPRS Shield]] — плата расширения, позволяющая Arduino работать в сетях сотовой связи по технологиям GSM/GPRS. Модуль умеет осуществлять входящие/исходящие звонки, принимать и передавать SMS и выходить в интернет средствами GPRS.
GPRS Shield в момент поиска сети потребляет ток до 2 А. Питания только через разъём USB не достаточно.
Для стабильной работы модуля используйте дополнительный [[amp>collection/wall-supplies?utm_source=man&utm_campaign=gprs-shield&utm_medium=wiki|источник питания]] от 7 до 12 В.
{{ :продукты:arduino-gprs-shield-v3:arduino-gprs-shield-v3.1.jpg?nolink |}}
===== Подключение и настройка =====
- Установите SIM-карту в GPRS Shield, а шилд — на управляющую платформу, например [[amp>collection/arduino?utm_source=man&utm_campaign=gprs-shield&utm_medium=wiki | Arduino]] или [[amp>product/iskra-neo?utm_source=man&utm_campaign=gprs-shield&utm_medium=wiki | Iskra Neo]].
- Убедитесь в наличии и правильности соединения джамперов на плате GPRS устройства:
* ''TX'' и ''RX'' с ''0'' и ''1'' пином соответственно;
* ''PK'' с ''2'' пином;
* ''ST'' с ''3'' пином.
- Подключите внешнюю антенну через SMA-разъём.
{{ :продукты:arduino-gprs-shield-v3:arduino-gprs-shield-v3.4.jpg?nolink |}}
GPRS Shield общается с управляющей платой по протоколу [[видеоуроки:6-serial-и-processing|UART]] и дополнительными сигнальными пинами — ''PK'' и ''ST''.
На всех платах Iskra и Arduino присутствует хотя бы один аппаратный UART — [[https://www.arduino.cc/en/Reference/Serial|HardwareSerial]]. Если же по каким то причинам последовательный интерфейс занят другим устройством, можно воспользоваться программным UART — [[https://www.arduino.cc/en/Reference/SoftwareSerial|SoftwareSerial.]]
==== HardwareSerial ====
На управляющей плате [[amp>product/iskra-js?utm_source=man&utm_campaign=troyka-wi-fi&utm_medium=wiki | Iskra JS]] и Arduino платах с микроконтроллером ''ATmega32U4 / ATSAMD21G18'', данные по USB и общение через пины ''0'' и ''1'' осуществляется через два раздельных ''UART''. Это даёт возможность подключить GPRS Shield к аппаратному ''UART'' на пинах ''0'' и ''1''.
Список поддерживаемых плат:
* [[amp>product/iskra-js?utm_source=man&utm_campaign=arduino-gprs-shield-v3&utm_medium=wiki | Iskra JS]]
* [[amp>product/iskra-neo?utm_source=man&utm_campaign=arduino-gprs-shield-v3&utm_medium=wiki | Iskra Neo]]
* [[amp>product/arduino-leonardo?utm_source=man&utm_campaign=arduino-gprs-shield-v3&utm_medium=wiki | Arduino Leonardo]]
* [[amp>product/arduino-leonardo-eth?utm_source=man&utm_campaign=arduino-gprs-shield-v3&utm_medium=wiki | Arduino Leonardo ETH]]
* [[amp>product/arduino-leonardo-eth-poe?utm_source=man&utm_campaign=arduino-gprs-shield-v3&utm_medium=wiki | Arduino Leonardo ETH PoE]]
* [[amp>product/arduino-yun?utm_source=man&utm_campaign=arduino-gprs-shield-v3&utm_medium=wiki | Arduino Yún]]
* [[amp>product/arduino-tian?utm_source=man&utm_campaign=arduino-gprs-shield-v3&utm_medium=wiki | Arduino Tian]]
В качестве примера подключите модуль к Iskra Neo и отправьте SMS на указанный номер с GPRS Shield’a. Прошейте управляющую плату скетчем приведённым ниже. Откройте монитор последовательного порта для анализа действий программы.
// библиотека для работы с GPRS устройством
#include
// создаём объект класса GPRS и передаём в него объект Serial1
GPRS gprs(Serial1);
// можно указать дополнительные параметры — пины PK и ST
// по умолчанию: PK = 2, ST = 3
// GPRS gprs(Serial1, 2, 3);
void setup()
{
// открываем последовательный порт для мониторинга действий в программе
Serial.begin(9600);
// открываем Serial-соединение с GPRS Shield
Serial1.begin(9600);
// ждём, пока не откроется монитор последовательного порта
// для того, чтобы отследить все события в программе
while (!Serial) {
}
Serial.print("Serial init OK\r\n");
// включаем GPRS шилд
gprs.powerOn();
// проверяем есть ли связь с GPRS устройством
while (!gprs.init()) {
// если связи нет, ждём 1 секунду
// и выводим сообщение об ошибке
// процесс повторяется в цикле
// пока не появится ответ от GPRS устройства
delay(1000);
Serial.print("Init error\r\n");
}
// выводим сообщение об удачной инициализации GPRS Shield
Serial.println("GPRS init success");
// отправляем сообщение по указанному номеру с заданным текстом
gprs.sendSMS("+79263995140", "Hello SMS from Amperka!");
}
void loop()
{
}
==== SoftwareSerial ====
Некоторые платы [[amp>collection/arduino|Arduino]], например, [[amp>product/arduino-uno|Uno]], прошиваются через пины ''0'' и ''1''. Это означает невозможность использовать одновременно прошивку/отладку по USB и общение с GPRS модулем. Решение проблемы — программный ''UART''. Снимите джампера с ''TX'' и ''RX'' GPRS Shield’a и с помощью [[amp>product/wire-fm?utm_source=man&utm_campaign=gprs-shield&utm_medium=wiki | проводов «мама-папа»]] перебросьте на свободные пины управляющей платы.
В качестве примера подключите GPRS Shield к платформе Arduino Uno.
- Оденьте модуль сверху на управляющую платформу.
- Снимите джампера с пинов ''TX'' и ''RX'' GPRS Shield'a и перекиньте управляющие контакты с ''0(RX)'' и ''1(TX)'' — на ''10'' и ''11'' пин соответственно.
{{ :продукты:arduino-gprs-shield-v3:arduino-gprs-shield-v3_swap_pins_uno.png?nolink |}}
Протестируйте. Отправим SMS на указанный номер с GPRS Shield’a.
При использовании программного UART не забудьте про библиотеку [[https://www.arduino.cc/en/Reference/SoftwareSerial|SoftwareSerial]].
Прошейте управляющую плату скетчем приведённым ниже. Откройте монитор последовательного порта для анализа действий программы.
// библиотека для работы с GPRS устройством
#include
// библиотека для эмуляции Serial порта
// она нужна для работы библиотеки GPRS_Shield_Arduino
#include
// создаём объект mySerial и передаём номера управляющих пинов RX и TX
SoftwareSerial mySerial(10, 11);
// создаём объект класса GPRS и передаём в него объект mySerial
GPRS gprs(mySerial);
// можно указать дополнительные параметры — пины PK и ST
// по умолчанию: PK = 2, ST = 3
// GPRS gprs(mySerial, 2, 3);
void setup()
{
// открываем последовательный порт для мониторинга действий в программе
Serial.begin(9600);
// открываем Serial-соединение с GPRS Shield
mySerial.begin(9600);
// ждём, пока не откроется монитор последовательного порта
// для того, чтобы отследить все события в программе
while (!Serial) {
}
Serial.print("Serial init OK\r\n");
// включаем GPRS шилд
gprs.powerOn();
// проверяем есть ли связь с GPRS устройством
while (!gprs.init()) {
// если связи нет, ждём 1 секунду
// и выводим сообщение об ошибке
// процесс повторяется в цикле
// пока не появится ответ от GPRS устройства
delay(1000);
Serial.print("Init error\r\n");
}
// выводим сообщение об удачной инициализации GPRS Shield
Serial.println("GPRS init success");
// отправляем сообщение по указанному номеру с заданным текстом
gprs.sendSMS("+79263995140", "Hello SMS from Amperka!");
}
void loop()
{
}
==== HardwareSerial Mega ====
На платах форм-фактора [[amp>product/arduino-mega-2560?utm_source=man&utm_campaign=arduino-gprs-shield-v3&utm_medium=wiki | Arduino Mega 2560]] аппаратный UART, который отвечает за передачу данных через пины ''1'' и ''0'', отвечает также за передачу по USB. Это означает невозможность использовать одновременно ''UART'' для коммуникации с GPRS-модулем и отладки по USB.
Но на платах такого форм-фактора есть ещё дополнительно три аппаратных UART:
* **Serial1:** пины ''19(RX1)'' и ''18(TX1)'';
* **Serial2:** пины ''17(RX2)'' и ''16(TX2)'';
* **Serial3:** пины ''15(RX3)'' и ''14(TX3)''.
Список поддерживаемых плат:
* [[amp>product/arduino-mega-2560?utm_source=man&utm_campaign=arduino-gprs-shield-v3&utm_medium=wiki | Arduino Mega 2560]]
* [[amp>product/arduino-adk?utm_source=man&utm_campaign=arduino-gprs-shield-v3&utm_medium=wiki | Arduino ADK]]
* [[amp>product/arduino-due?utm_source=man&utm_campaign=arduino-gprs-shield-v3&utm_medium=wiki | Arduino Due]]
* [[amp>product/iskra-mega?utm_source=man&utm_campaign=arduino-gprs-shield-v3&utm_medium=wiki | Iskra Mega]]
Подключите GPRS Shield к платформе Arduino Mega 2560.
- Оденьте модуль сверху на управляющую платформу.
- Снимите джампера с пинов ''TX'' и ''RX'' GPRS Shield'a и перекиньте управляющие контакты с ''0(RX)'' и ''1(TX)'' — на ''19(RX1)'' и ''18(TX1)'' пин соответственно.
{{ :продукты:arduino-gprs-shield-v3:arduino-gprs-shield-v3_swap_pins_mega.png?nolink |}}
Протестируйте.
В качестве примера отправим SMS на указанный номер с GPRS Shield’a. Прошейте управляющую плату скетчем приведённым ниже. Откройте монитор последовательного порта для анализа действий программы.
// библиотека для работы с GPRS устройством
#include
// создаём объект класса GPRS и передаём в него объект Serial1
GPRS gprs(Serial1);
// можно указать дополнительные параметры — пины PK и ST
// по умолчанию: PK = 2, ST = 3
// GPRS gprs(Serial1, 2, 3);
void setup()
{
// открываем последовательный порт для мониторинга действий в программе
Serial.begin(9600);
// открываем Serial-соединение с GPRS Shield
Serial1.begin(9600);
// ждём, пока не откроется монитор последовательного порта
// для того, чтобы отследить все события в программе
while (!Serial) {
}
Serial.print("Serial init OK\r\n");
// включаем GPRS шилд
gprs.powerOn();
// проверяем есть ли связь с GPRS устройством
while (!gprs.init()) {
// если связи нет, ждём 1 секунду
// и выводим сообщение об ошибке
// процесс повторяется в цикле
// пока не появится ответ от GPRS устройства
delay(1000);
Serial.print("Init error\r\n");
}
// выводим сообщение об удачной инициализации GPRS Shield
Serial.println("GPRS init success");
// отправляем сообщение по указанному номеру с заданным текстом
gprs.sendSMS("+79263995140", "Hello SMS from Amperka!");
}
void loop()
{
}
===== Примеры работы GPRS Shield =====
Рассмотрим несколько примеров работы GPRS Shield’a. Для каждой управляющей платы скетч будет отличаться, только лишь созданием GPRS-объекта. Подробнее в предыдущем разделе.
==== Исходящие звонки ====
Чтобы позвонить с GPRS Shield’a, воспользуйтесь скетчем, приведенным ниже. Не забудьте подключить наушники и микрофон в соответствующие разъёмы на плате, чтобы вы смогли слышать абонента, а он вас. Если открыть монитор последовательного порта, можно проследить порядок действий.
// библиотека для работы с GPRS устройством
#include
// номер на который будем звонить
#define PHONE_NUMBER "+79263995140"
// создаём объект класса GPRS и передаём в него объект Serial1
GPRS gprs(Serial1);
// можно указать дополнительные параметры — пины PK и ST
// по умолчанию: PK = 2, ST = 3
// GPRS gprs(Serial1, 2, 3);
void setup()
{
// открываем последовательный порт для мониторинга действий в программе
Serial.begin(9600);
// ждём, пока не откроется монитор последовательного порта
// для того, чтобы отследить все события в программе
while (!Serial) {
}
Serial.print("Serial init OK\r\n");
// открываем Serial-соединение с GPRS Shield
Serial1.begin(9600);
// включаем GPRS шилд
gprs.powerOn();
// проверяем есть ли связь с GPRS устройством
while (!gprs.init()) {
// если связи нет, ждём 1 секунду
// и выводим сообщение об ошибке
// процесс повторяется в цикле
// пока не появится ответ от GPRS устройства
delay(1000);
Serial.print("GPRS Init error\r\n");
}
// вывод об удачной инициализации GPRS Shield
Serial.println("GPRS init success");
// сообщаем о наборе номера
Serial.print("Start to call ");
Serial.print(PHONE_NUMBER);
// звоним по указанному номеру
gprs.callUp(PHONE_NUMBER);
}
void loop()
{
}
==== Входящие звонки ====
Произведём входящий звонок на GPRS Shield. Не забудьте подключить наушники и микрофон в соответствующие разъёмы на плате, чтобы вы смогли слышать абонента, а он вас.
// библиотека для работы с GPRS устройством
#include
// создаём объект класса GPRS и передаём в него объект Serial1
GPRS gprs(Serial1);
// можно указать дополнительные параметры — пины PK и ST
// по умолчанию: PK = 2, ST = 3
// GPRS gprs(Serial1, 2, 3);
void setup()
{
// открываем последовательный порт для мониторинга действий в программе
Serial.begin(9600);
// ждём, пока не откроется монитор последовательного порта
// для того, чтобы отследить все события в программе
while (!Serial) {
}
Serial.print("Serial init OK\r\n");
// открываем Serial-соединение с GPRS Shield
Serial1.begin(9600);
// включаем GPRS шилд
gprs.powerOn();
// проверяем есть ли связь с GPRS устройством
while (!gprs.init()) {
// если связи нет, ждём 1 секунду
// и выводим сообщение об ошибке
// процесс повторяется в цикле,
// пока не появится ответ от GPRS устройства
delay(1000);
Serial.print("GPRS Init error\r\n");
}
// вывод об удачной инициализации GPRS Shield
Serial.println("GPRS init success");
// сообщаем об ожидании звонка
Serial.println("Wait to call ");
}
void loop()
{
// ожидаем звонка
if (gprs.ifcallNow()) {
// если поступает входящий звонок
// выводим сообщение
Serial.println("Incoming call");
// по истечении 5 секунд берём трубку
delay(5000);
gprs.answer();
// выводим сообщение о начале разговора
delay(1000);
Serial.println("Call a conversation");
while (!gprs.ifcallEnd()) {
// ждём пока месть абонент не положит трубку
}
// выводим сообщение о конце разговора
Serial.println("Call over");
}
}
==== Отправка SMS ====
Помимо приёма и совершения звонков модуль может принимать и отправлять короткие текстовые сообщения — SMS. Ниже представлен пример отправки текстового сообщения.
// библиотека для работы с GPRS устройством
#include
// номер на который будем отправлять сообщение
#define PHONE_NUMBER "+79263995140"
// текст сообщения, которое будем отправлять
#define MESSAGE "Hello from GPRS Shield"
// создаём объект класса GPRS и передаём в него объект Serial1
GPRS gprs(Serial1);
// можно указать дополнительные параметры — пины PK и ST
// по умолчанию: PK = 2, ST = 3
// GPRS gprs(Serial1, 2, 3);
void setup()
{
// открываем последовательный порт для мониторинга действий в программе
Serial.begin(9600);
// ждём пока не откроется монитор последовательного порта
// для того, чтобы отследить все события в программе
while (!Serial) {
}
Serial.print("Serial init OK\r\n");
// открываем Serial-соединение с GPRS Shield
Serial1.begin(9600);
// включаем GPRS-шилд
gprs.powerOn();
// проверяем, есть ли связь с GPRS-устройством
while (!gprs.init()) {
// если связи нет, ждём 1 секунду
// и выводим сообщение об ошибке;
// процесс повторяется в цикле,
// пока не появится ответ от GPRS-устройства
delay(1000);
Serial.print("GPRS Init error\r\n");
}
// вывод об удачной инициализации GPRS Shield
Serial.println("GPRS init success");
// сообщаем о написании и отправке СМС по указанному номеру
Serial.println("Start to send message ...");
// отправляем сообщение по указанному номеру с заданным текстом
gprs.sendSMS(PHONE_NUMBER, MESSAGE);
}
void loop()
{
}
==== Чтение SMS ====
Прочитаем сообщения, которые будут поступать на сим-карту, установленную в модуль. Вся информация будет выводиться в монитор Serial порта.
// библиотека для работы с GPRS устройством
#include
// длина сообщения
#define MESSAGE_LENGTH 160
// номер сообщения в памяти сим-карты
int messageIndex = 0;
// текст сообщения
char message[MESSAGE_LENGTH];
// номер, с которого пришло сообщение
char phone[16];
// дата отправки сообщения
char datetime[24];
// создаём объект класса GPRS и передаём в него объект Serial1
GPRS gprs(Serial1);
// можно указать дополнительные параметры — пины PK и ST
// по умолчанию: PK = 2, ST = 3
// GPRS gprs(Serial1, 2, 3);
void setup()
{
// открываем последовательный порт для мониторинга действий в программе
Serial.begin(9600);
// ждём пока не откроется монитор последовательного порта
// для того, чтобы отследить все события в программе
while (!Serial) {
}
Serial.print("Serial init OK\r\n");
// открываем Serial-соединение с GPRS Shield
Serial1.begin(9600);
// включаем GPRS-шилд
gprs.powerOn();
// проверяем, есть ли связь с GPRS-устройством
while (!gprs.init()) {
// если связи нет, ждём 1 секунду
// и выводим сообщение об ошибке;
// процесс повторяется в цикле,
// пока не появится ответ от GPRS-устройства
delay(1000);
Serial.print("GPRS Init error\r\n");
}
// выводим сообщение об удачной инициализации GPRS Shield
Serial.println("GPRS init success");
Serial.println("Please send SMS message to me!");
}
void loop()
{
// если пришло новое сообщение
if (gprs.ifSMSNow()) {
// читаем его
gprs.readSMS(message, phone, datetime);
// выводим номер, с которого пришло смс
Serial.print("From number: ");
Serial.println(phone);
// выводим дату, когда пришло смс
Serial.print("Datetime: ");
Serial.println(datetime);
// выводим текст сообщения
Serial.print("Recieved Message: ");
Serial.println(message);
}
}
===== Работа с AT-командами =====
Данный раздел рассказывает о том, как работать с GPRS Shield на более низком уровне, без дополнительных библиотек. Если вам достаточно тех методов, которые предоставляет штатная библиотека, можете пропустить этот раздел.
==== Введение ====
С внешним миром модуль общается посредством AT-команд. Все команды делятся на базовые, так называемые S-команды, и расширенные, добавленные в стандартах GSM07.05–07.07. Практически все команды работают в 3 режимах — тестовом, чтения и записи.
* В тестовом режиме возвращается ''OK'', если команда поддерживается или возможные значения данных в параметре команды. Тестовый режим определяется окончанием команды в виде ''=?''
* В режиме чтения возвращаются текущие значения параметра, отличается от тестового наличием в конце просто символа ''?''
* В режиме записи после ''='' идут новые значения параметров.
==== Настройки порта ====
По умолчанию модуль настроен на 9600 8N1:
* 9600 – скорость;
* 8 – бит в посылки;
* N – нет контроля чётности;
* 1 – стоп бит.
Для проверки поддерживаются AT-команды:
^ Команда ^ Ответ ^ Описание ^
| AT+IPR? |+IPR: 0\\ OK |**Скорость порта:**\\ 0 – автоматически\\ 1200\\ 2400\\ 4800\\ 9600\\ 19200\\ 38400\\ 57600\\ 115200|
| AT+ICF? |+ICF: 3,3\\ OK|**Настройки передачи.**\\ Первый параметр:\\ Бит в посылке\\ чётность/стоп бит\\ 1 – 8/0/2\\ 2 – 8/1/1\\ 3 – 8/0/1\\ 4 – 7/0/2\\ 5 – 7/1/1\\ 6 – 7/0/1\\ Второй параметр – чётность:\\ 0 – нечётный\\ 1 – чётный\\ 3 – нет|
| AT+IFC? |+IFC: 0,0\\ OK|**Контроль передачи данных.**\\ Первый параметр – терминалом от модуля\\ Второй параметр – модулем от терминала\\ 0 – нет контроля\\ 1 – программный\\ 2 – аппаратный|
Если вы хотите изменить их, введите AT-команду, замените знак ''?'' на ''='' и введите нужные вам параметры из таблицы.
Все настройки этих команд сохраняются в энергонезависимой памяти.
==== Информация о модуле и состояние ====
^ Команда ^ Ответ ^ Описание ^
| AT+GCAP |+GCAP: +CGSM\\ OK |Возможности модуля|
| AT+GMM |SIMCOM_SIM800C\\ OK|Идентификатор модуля|
| AT+GMR |Revision:1418B08SIM800C32_BT_EAT\\ OK|Ревизия|
| AT+GSN |8683450321ХХХХХ\\ OK|IMEI|
В документе с {{ :продукты:arduino-gprs-shield-v3:sim800_at_commands.pdf |перечнем AT-команд}} можно найти документацию на все поддерживаемые команды.
==== Пример скетча для работы с использованием AT-команд ====
// библиотека для работы с GPRS устройством
#include
// создаём объект класса GPRS и передаём в него объект Serial1
GPRS gprs(Serial1);
// можно указать дополнительные параметры — пины PK и ST
// по умолчанию: PK = 2, ST = 3
// GPRS gprs(Serial1, 2, 3);
void setup()
{
// открываем последовательный порт для мониторинга действий в программе
Serial.begin(9600);
// ждём, пока не откроется монитор последовательного порта
// для того, чтобы отследить все события в программе
while (!Serial) {
}
Serial.print("Serial init OK\r\n");
// открываем Serial-соединение с GPRS Shield
Serial1.begin(9600);
// включаем GPRS шилд
gprs.powerOn();
// проверяем есть ли связь с GPRS устройством
while (!gprs.init()) {
// если связи нет, ждём 1 секунду
// и выводим сообщение об ошибке
// процесс повторяется в цикле
// пока не появится ответ от GPRS устройства
Serial.print("GPRS Init error\r\n");
delay(3000);
}
// выводим сообщение об удачной инициализации GPRS Shield
Serial.println("GPRS init success");
}
void loop()
{
// считываем данные с компьютера и записываем их в GPRS Shield
serialPCread();
// считываем данные с GPRS Shield и выводим их в Serial-порт
serialGPRSread();
}
void serialPCread()
{
if (Serial.available() > 0) {
// если приходят данные по USB
while (Serial.available() > 0) {
// записываем их в GPRS Shield
Serial1.write(Serial.read());
}
}
}
void serialGPRSread()
{
if (Serial1.available() > 0) {
// если приходят данные с GPRS Shield
while (Serial1.available() > 0) {
// передаём их в USB
Serial.write(Serial1.read());
}
}
}
===== Элементы платы =====
{{ :продукты:arduino-gprs-shield-v3:arduino-gprs-shield-v3_annotation.png?nolink |}}
==== Модуль SIM800C ====
Сердце GPRS Shield — чип {{ :продукты:arduino-gprs-shield-v3:sim800_hardware_design.pdf |SIM800C}} — представитель GSM/GPRS-модулей компании SIMCom.
==== Разъём микрофона и наушников ====
При подключении наушников и микрофона в соответствующие разъёмы, во время звонка с абонентом можно общаться аналогично обычному телефону.
==== Слот для SIM-карты ====
Слот для подключения стандартной сим-карты — Mini-SIM (2FF). Если у вас сим-карта другого размера, Micro Sim или Nano Sim, воспользуйтесь специальными переходниками.
==== Контакты выбора управляющих пинов ====
^ Контакты GPRS Shield ^ Контакты Arduino ^ Использование ^
| TX и RX | 0 и 1 |Используются для выбора управляющих пинов c микроконтроллером.|
| PK | 2 |Используется для включения модуля. Для этого на него необходимо подать высокий уровень на 3 секунды, а затем подать низкий уровень на эту же ножку.|
| ST | 3 |Информационный пин о состоянии включения GPRS Shield. Если высокий уровень — шилд включён, если низкий — выключен.|
Если в вашем проекте какие-нибудь из этих пинов уже заняты другим устройством, вы можете использовать любой другой свободный цифровой пин. Для этого необходимо снять джампер напротив занятого пина и припаять проводок между луженым отверстием рядом со снятым джампером и таким же отверстием рядом с нужным пином.
==== Гнездо для батарейки ====
Гнездо для батарейки [[amp>product/battery-cr1225?utm_source=man&utm_campaign=product-permalink&utm_medium=wiki | CR1225]], обеспечивающей работу встроенных часов реального времени. Нужна только при использовании команд, связанных с часами.
==== Разъём для внешней антенны ====
SMA-разъём для подключения внешней антенны. Без неё сигнал будет очень слабым.
==== Индикатор состояния сети ====
У модуля есть два информационных светодиода — ''ST'', который загорается после включения модуля и ''AIR'', который мигает в зависимости от состояния сети.
Возможные режимы ''AIR'' (Горит/Не горит):
* 64мс/800мс — сеть не найдена;
* 64мс/3000мс — сеть найдена;
* 64мс/300мс — идет обмен по GPRS.
===== Характеристики =====
* Поддержка частот GSM 850/900/1800/1900 МГц
* Класс передачи данных GPRS multi-slot class 12
* Соответствие стандарту GSM фазы 2/2+
* Bluetooth стандарта 3.0 + EDR
* Встроенный стек TCP/IP, UDP/IP
* Поддержка протоколов HTTP и FTP
* Полное управление при помощи АТ-команд:
* Стандартный набор – GSM 07.07 & 07.05
* Расширенный набор – SIMCOM AT
* Возможность подключения аудио гарнитуры и микрофона
* Интерфейс UART 1200–115200 (9600 по умолчанию) бит/с
* Разъём для сим-карты
* Энергопотребление:в зависимости от текущего режима работы и может колебаться от 20-30мА до 500мА. Также возможны кратковременные скачки до 2-3А, особенно в процессе поиска сети или при приеме/передачи данных. В спящем режиме: 1.5 мА.
* Выполнен в форм-факторе Arduino
* Напряжение питания Vin: 7—12 В
* Температурный диапазон: -40 °C...+85 °C
===== Ссылки =====
* [[amp>product/arduino-gprs-shield?utm_source=man&utm_campaign=arduino-gprs-shield&utm_medium=wiki|GPRS Shield v3]] в магазине.
* [[https://github.com/amperka/hardware-drawings/blob/master/arduino-gprs-shield-v3.svg|Векторное изображение модуля]]
* [[https://github.com/amperka/gprs-shield|Библиотека для Arduino]]
* [[http://wiki.amperka.ru/js:gprs-shield|Библиотека для Iskra JS]]
* [[http://wiki.amperka.ru/projects:smart-power|GPRS Shield в проекте SMS-розетка]]
* {{ :продукты:arduino-gprs-shield-v3:sim800_at_commands.pdf |Мануал по изучению AT команд на чип SIM800}}
* {{ :продукты:arduino-gprs-shield-v3:sim800_hardware_design.pdf |Datasheet на чип SIM800}}