Вторник, 17 ноября 2020 18:34

Как отправлять/принимать SMS и звонить с платой расширения SIM900 GSM Shield и Arduino Избранное

Автор
Оцените материал
(1 Голосовать)

Хотите ли вы слышать то, что происходит в вашем доме, который находится на расстоянии многих километров от вас, или активировать систему полива в вашем саду просто беззвучным звонком, тогда плата расширения SIM900 GSM/GPRS Shield станет надежной отправной точкой для начала работы с IoT!

 SIM900 GSM/GPRS shield для Arduino – это GSM-модем, который может быть интегрирован в большое количество проектов интернета вещей (IoT). Вы можете использовать эту плату расширения, чтобы выполнять почти все, что может обычный сотовый телефон; текстовые SMS сообщения, совершать или принимать телефонные звонки, выполнять подключение к интернету через GPRS, TCP/IP, и многое другое! В довершение всего, плата расширения поддерживает четырехдиапазонную сеть GSM/GPRS, что означает, что она работает практически в любой точке мира.

Содержание
Обзор аппаратного обеспечения SIM900 GSM/GPRS Shield
Светодиодные индикаторы состояния
Питание для SIM900 GSM/GPRS Shield
Связь через UART
Динамик и микрофон
Антенна
Разъем для SIM карты
RTC (часы реального времени)
Подключение платы расширения SIM900 GSM/GPRS Shield к Arduino UNO
Подключение платы расширения SIM900 GSM/GPRS Shield к компьютеру
Включение/выключение чипа SIM900
Аппаратный запуск
Программный запуск
Код Arduino – тестирование AT команд
Код Arduino – отправка SMS
Код Arduino – чтение SMS
Расширение размера буфера SoftwareSerial на Arduino
Код Arduino – выполнение звонка
Код Arduino – прием вызова

Обзор аппаратного обеспечения SIM900 GSM/GPRS Shield

Плата расширения SIM900 GSM/GPRS Shield разработана для того, чтобы снабдить чип SIM900 всем необходимым для взаимодействия с Arduino, а также несколькими дополнительными вкусностями, чтобы воспользоваться уникальными функциями чипа.

Давайте познакомимся с особенностями и возможностями этой платы расширения. Вот краткий обзор:

Рисунок 1 – Аппаратное обеспечение SIM900 GSM/GPRS Shield. Вид сверху

Рисунок 2 – Аппаратное обеспечение SIM900 GSM/GPRS Shield. Вид снизу

Плата расширения SIM900 GSM/GPRS Shield обладает удивительным количеством функций при своих маленьких размерах. Некоторые из них перечислены ниже:

  • Поддержка четырех диапазонов: GSM850, EGSM900, DCS1800 и PCS1900
  • Подключение к любой глобальной сети GSM с любой 2G SIM картой
  • Совершение и прием голосовых звонков, используя внешний наушник и электретный микрофон
  • Отправка и получение SMS сообщений
  • Отправка и получение данных GPRS (TCP/IP, HTTP и т. д.)
  • Сканирование и прием FM радиопрограмм
  • Мощность передачи:
  • Класс 4 (2 Вт) для GSM850
  • Класс 1 (1 Вт) для DCS1800
  • Набор AT команд для управления через последовательный порт
  • Разъемы U.FL и SMA для сотовой антенны
  • Работа с полноразмерной SIM картой
  • Для получения дополнительной информации о чипе сотовой GSM связи SIM900 смотрите техническое описание:

Светодиодные индикаторы состояния

На плате расширения SIM900 GSM/GPRS Shield есть три светодиода, которые указывают на состояние подключения или питания. Наблюдая за этими светодиодами, вы можете получить визуальную информацию о том, что происходит с платой расширения.

Рисунок 3 – Светодиодные индикаторы на SIM900 GSM/GPRS Shield

PWR: этот светодиод подключен к линии питания платы расширения. Если этот светодиод включен, плата расширения получает питание.

Status: этот индикатор показывает рабочее состояние SIM900. Если этот светодиод включен, микросхема находится в рабочем режиме.

Netlight: этот индикатор показывает состояние подключения к сотовой сети. Он будет мигать с разной скоростью, чтобы показать, в каком оно состоянии.

  • выкл.: чип SIM900 не работает;
  • вкл. 64 мс, выкл. 800 мс: чип SIM900 работает, но еще не зарегистрирован в сотовой сети;
  • вкл. 64 мс, выкл. 3 с: чип SIM900 зарегистрирован в сотовой сети и может отправлять/получать SMS сообщения и звонки.
  • вкл. 64 мс, выкл. 300 мс: соединение для передачи данных через GPRS, которое вы запросили, активно.


Питание для SIM900 GSM/GPRS Shield

Одной из наиболее важных частей работы платы расширения SIM900 GSM/GPRS Shield является обеспечение её достаточным питанием.

В зависимости от того, в каком состоянии он находится, SIM900 может быть относительно энергоемким устройством. Максимальный ток потребления чипа составляет около 2А во время передачи. Обычно он не требует так много, но может потребовать около 216 мА во время телефонных звонков или 80 мА во время передачи по сети. Следующая таблица описывает, что вы можете ожидать:

Рабочее напряжение чипа SIM900 составляет от 3,4 до 4,4 В. Чтобы обеспечить безопасное напряжение питания при 4,1 В, плата расширения поставляется с мощным, высокоточным стабилизатором напряжения MIC29302WU с малым падением напряжения от Micrel, способным выдерживать токи нагрузки до 3 А.

Рисунок 4 – Разъем питания постоянным напряжением, переключатель выбора источника
питания и MIC29302 на SIM900 GSM Shield

Вы можете подключить к плате расширения внешний источник питания с помощью разъема 5,5 мм, к которому можно подключить любой адаптер постоянного напряжения 5–9 В. Рядом с разъемом питания находится ползунковый переключатель для выбора источника питания с надписью EXTERN. Чтобы использовать внешний источник питания, переместите ползунок, как показано выше.

ВНИМАНИЕ

Источник питания должен обеспечивать минимальный пиковый ток 2 А, в противном случае микросхема будет продолжать отключаться.

Связь через UART


Плата расширения SIM900 GSM/GPRS Shield для связи с Arduino использует интерфейс UART. Чип поддерживает скорость передачи от 1200 бит/с до 115200 бит/с с автоматическим определением скорости.

Рисунок 5 – Перемычки выбора UART на SIM900 GSM Shield

С помощью перемычек вы можете подключить (RX, TX) платы расширения к программному последовательному порту (D8, D7) или аппаратному последовательному порту (D1, D0) Arduino.

Динамик и микрофон

Плата расширения поставляется с двумя стандартными разъемами 3,5 мм. Один для стереонаушников, и другой для монофонического микрофона. Плата позволяет использовать аудиоинтерфейс SIM900 для совершения и приема голосовых вызовов и прослушивания FM радио.

Рисунок 7 – Разъемы динамика и микрофона на SIM900 GSM Shield

Mic: к этому разъему можно подключить внешний электретный микрофон.

Earphone: к этому разъему можно подключить наушники. Все наушники, совместимые с "iPhone" или "Android" телефонами, должны работать.

Антенна

Антенна необходима для использования SIM900 для любого типа передачи голоса или данных, а также для некоторых команд SIM.

Рисунок 8 – Антенные SMA и U.FL. разъемы на SIM900 GSM Shield

Плата расширения имеет два интерфейса для подключения антенны, а именно, разъем U.FL и разъем SMA. Они соединены через патч-корд.

Плата расширения обычно поставляется с GSM-антенной 3 дБи, что позволяет установить плату расширения внутри металлического корпуса (если антенна находится снаружи).

Разъем для SIM карты


На нижней стороне платы находится гнездо для SIM карты. Любая активированная полноразмерная 2G SIM карта будет работать отлично.

Рисунок 9 – Держатель SIM карты на SIM900 GSM Shield

Работа с держателем для SIM карты может потребовать некоторого привыкания. Чтобы разблокировать защелку, нажмите на верхнюю часть сборки, а затем поднимите её. Поместите SIM-карту в нижнюю часть держателя. Затем положите руку обратно в корпус держателя и осторожно протолкните его вперед в положение блокировки.

RTC (часы реального времени)

Плата расширения SIM900 GSM/GPRS Shield может быть настроена на сохранение времени. Таким образом, нет необходимости в отдельном RTC. Она сохранит время даже при выключенном питании.

Рисунок 10 – Держатель батареи CR1220 RTC на SIM900 GSM Shield

Если вы хотите использовать внутренний RTC, вам необходимо установить батарею CR1220 на задней стороне платы.

ПРИМЕЧАНИЕ

Ваш оператор сети может не поддерживать установку времени автоматически. В этом случае вы можете сделать это вручную, используя AT команду AT+CCLK.

Подключение платы расширения SIM900 GSM/GPRS Shield к Arduino UNO

Теперь, когда мы знаем всё о плате расширения, мы можем подключить её к нашей плате Arduino!

Для начала подключите контакты D7 (Tx) и D8 (Rx) на плате расширения к цифровым выводам 7 и 8 на Arduino. Поскольку для связи с платой расширения мы будем использовать программный последовательный порт, убедитесь, что перемычки установлены на выбор программного последовательного порта.

Рисунок 11 – Подключение платы расширения SIM900 GSM/GPRS Shield к Arduino UNO

Подключите плату расширения к внешнему источнику питания 5В 2A. Не поддавайтесь искушению подключить ее к источнику питания 5В на Arduino, так как плата расширения может не работать из-за недостатка тока источника питания. Также убедитесь, что вы выбрали внешний источник питания с помощью ползункового переключателя рядом с разъемом питания.

Теперь подключите все земли в схеме.

Наконец, подключите антенну, вставьте полностью активированную SIM карту в держатель.

Подключение платы расширения SIM900 GSM/GPRS Shield к компьютеру

Чтобы управлять платой расширения SIM900 GSM/GPRS Shield напрямую через компьютер, вам необходимо подключить её к ПК с помощью любого преобразователя USB в TTL.

На рисунке ниже показано, как SIM900 GSM Shield подключен к компьютеру через PL2303 конвертер USB в TTL.

Рисунок 12 – Подключение SIM900 GSM Shield к ПК через преобразователь PL2303 USB↔TTL

Включение/выключение чипа SIM900


Даже если вы включите плату расширения, вам нужно еще включить чип SIM900, чтобы он заработал.

В соответствии с техническим описанием, установив на выводе PWRKEY чипа низкий логический уровень (лог. 0) в течение как минимум 1 секунды, можно включить/выключить чип. У нашей платы расширения есть два способа сделать это.

Аппаратный запуск

Рисунок 13 – Кнопка включения/выключения чипа SIM900

Плата расширения снабжена тактильной кнопкой, расположенной под прямым углом рядом со светодиодным индикатором PWR. Вам нужно нажать и удерживать эту кнопку в течение примерно 2 секунд, чтобы включить или выключить плату расширения.

Программный запуск

Вместо того, чтобы каждый раз вручную нажимать PWRKEY, вы можете программно включать/выключать SIM900.

Во-первых, вам нужно запаять SMD перемычку, обозначенную как R13 на плате расширения, как показано на рисунке ниже.

Рисунок 14 – Запаиваемая перемычка R13 на SIM900 GSM Shield для программного управления

Затем вам нужно подключить вывод D9 на плате расширения к выводу D9 на Arduino.

Рисунок 15 – Подключение SIM900 GSM Shield к Arduino для программного управления

 Наконец, вам нужно добавить следующую функцию в вашу программу.

void SIM900power()
{
  pinMode(9, OUTPUT); 
  digitalWrite(9,LOW);
  delay(1000);
  digitalWrite(9,HIGH);
  delay(2000);
  digitalWrite(9,LOW);
  delay(3000);
}

Код Arduino – тестирование AT команд

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

Открыв монитор последовательного порта, убедитесь, что выбрана опция "NL & CR"! 

#include <SoftwareSerial.h>

//
Создать объект программного последовательного порта для связи с SIM900
//Tx и Rx SIM900 подключены к выводам 7 и 8 Arduino
SoftwareSerial mySerial(7, 8);
void setup()
{
// Начать последовательную связь Arduino и Arduino IDE (монитор последовательного порта)
Serial.begin(9600);

// Начать последовательную связь Arduino и SIM900
mySerial.begin(9600);

Serial.println("Initializing...");
delay(1000)

// Рукопожатие с SIM900
mySerial.println("AT");
updateSerial();
// Тест качества сигнала, диапазон значений 0-31, 31 - лучший
mySerial.println("AT+CSQ");
updateSerial();
// Прочитать информацию о SIM карте, чтобы убедиться, что SIM карта подключена
mySerial.println("AT+CCID");
updateSerial();
// Проверяем, зарегистрирован ли модуль в сети
mySerial.println("AT+CREG?");
updateSerial();
}
void loop()
{
updateSerial();
}
void updateSerial()
{
delay(500);
while (Serial.available())
{
// Пересылка того, что было получено с аппаратного последовательного порта,
// на программный последовательный порт
mySerial.write(Serial.read());
}
while(mySerial.available())
{
// Пересылка того, что было получено с программного последовательного порта,
// на аппаратный последовательный порт
Serial.write(mySerial.read());
}
}
Прочитано 112 раз
Другие материалы в этой категории: « Arduino UNO Умный курятник »

Добавить комментарий


Защитный код
Обновить