Arduino:Примеры/GSMExamplesTestModem

Материал из Онлайн справочника
Версия от 01:49, 14 декабря 2016; Myagkij (обсуждение | вклад) (Замена текста — «<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS">» на «<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS" enclose="div">»)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Перейти к навигацииПерейти к поиску

Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.


Проверка модема с помощью GSM Shield[1]

Этот скетч тестирует модем на GSM Shield, проверяя, правильно ли он работает. SIM-карта для этого примера не требуется.

Необходимое оборудование

  • Плата Arduino;
  • Модуль Arduino + Telefonica GSM/GPRS Shield;

Цепь

Модуль Arduino GSM Shield, установленный поверх Arduino Uno

Код

Для начала импортируем библиотеку GSM.

#include <GSM.h>

Создаем экземпляр класса GSMModem.

GSMModem modem;

Создаем переменную, в которой будем хранить IMEI модема.

String IMEI = "";

В секции setup() инициализируем последовательную передачу данных на компьютер. Запустив соединение, отправляем сообщение, информирующее о начале работы скетча.

void setup(){
  Serial.begin(9600); 
  Serial.print("Starting modem test...");

Чтобы запустить модем, вызываем функцию modem.begin(). В зависимости от результата выводим на Serial Monitor статусное сообщение, а затем завершаем блок setup().

if(modem.begin()) 
    Serial.println("modem.begin() succeeded");
  else
    Serial.println("ERROR, no modem answer.");
}

В блоке loop() вписываем функцию modem.getIMEI(), чтобы она вернула нам IMEI-номер модема. Для вашего GSM Shield этот номер будет уникальным.

void loop()
{
  // get modem IMEI
  Serial.print("Checking IMEI...");
  IMEI = modem.getIMEI();

Если getIMEI() вернет нам какой-нибудь приемлемый ответ, выводим его на Serial Monitor, а потом перезагружаем модем при помощи функции modem.begin().

if(IMEI != NULL)
  {
    Serial.println("Modem's IMEI: " + IMEI);
    Serial.print("Reseting modem...");
    modem.begin();

Перезагрузив, снова проверяем IMEI. Если результат снова приемлем, то модем функционирует как нужно.

if(modem.getIMEI() != NULL)
    {
      Serial.println("Modem is functoning properly");
    }

Однако если после перезагрузки модема приемлемого результата нет, сообщаем об ошибке.

else
    {
      Serial.println("Error: getIMEI() failed after modem.begin()");
    }

Если после запуска мы так и не получили IMEI, сообщаем об этом и завершаем программу.

}
  else
  {
    Serial.println("Error: Could not get IMEI");
  }
  while(true);
}


/*
Проверка модема с помощью GSM Shield

Этот скетч проверяет, правильно ли работает ваш модем. 

Цепь:
* GSM Shield, подключенный к Arduino (через 2-ой, 3-ий и 7-ой цифровые контакты)

Создан 12 июня 2012 Дэвидом дель Пералем (David del Peral),
модифицирован 21 ноября 2012 Томом Иго (Tom Igoe).
 */

// Библиотеки:
#include <GSM.h>

// Объект для проверки модема:
GSMModem modem;

// Переменная для номера IMEI:
String IMEI = "";

void setup()
{
  // Инициализируем последовательную передачу данных:
  Serial.begin(9600);

  // Запускаем тест модема (методом сброса и проверки ответа):
  Serial.print("Starting modem test...");  //  "Начинаем тест модема..."
  if(modem.begin()) 
    Serial.println("modem.begin() succeeded");  //  "Функция modem.begin() активирована успешно..."
  else
    Serial.println("ERROR, no modem answer.");  //  "Ошибка, модем не отвечает"
}

void loop()
{
  // Пытаемся получить IMEI-номер модема:
  Serial.print("Checking IMEI...");  //  "Проверяем IMEI..."
  IMEI = modem.getIMEI();

  // Проверяем ответ:
  if(IMEI != NULL)
  {
    // Показываем IMEI на Serial Monitor:
    Serial.println("Modem's IMEI: " + IMEI);  //  "IMEI-номер модема: "
    // Перезагружаем модем для проверки загрузки:
    Serial.print("Reseting modem...");  //  "Перезагружаем модем..."
    modem.begin();
    // Получаем и проверяем IMEI еще раз:
    if(modem.getIMEI() != NULL)
    {
      Serial.println("Modem is functoning properly");  //  "Модем работает должным образом"
    }
    else
    {
      Serial.println("Error: getIMEI() failed after modem.begin()");  //  "Ошибка: getIMEI() не сработала после modem.begin()"
    }
  }
  else
  {
    Serial.println("Error: Could not get IMEI");  //  "Ошибка: получить IMEI не удалось"
  }
  // Ничего не делаем:
  while(true);
}

См.также

  1. GSMModem Constructor
  2. begin()
  3. getIMEI()

Внешние ссылки