Cat hungry.png
Здравствуйте! Собираем деньги на перевод материалов по электронике(https://www.allaboutcircuits.com/education/). Реквизиты указаны здесь.

Arduino:Примеры/GSMExamplesTestModem

Материал из Онлайн справочника
Перейти к: навигация, поиск

Перевод: Максим Кузьмин (Cubewriter)
Перевел 2686 статей для сайта.

Контакты:

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


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

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

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

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

Цепь

GSMShield ArduinoUno.png

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

Код

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

  1. #include <GSM.h>

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

  1. GSMModem modem;

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

  1. String IMEI = "";

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

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

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

  1. if(modem.begin())
  2.     Serial.println("modem.begin() succeeded");
  3.   else
  4.     Serial.println("ERROR, no modem answer.");
  5. }

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

  1. void loop()
  2. {
  3.   // get modem IMEI
  4.   Serial.print("Checking IMEI...");
  5.   IMEI = modem.getIMEI();

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

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

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

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

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

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

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

  1. }
  2.   else
  3.   {
  4.     Serial.println("Error: Could not get IMEI");
  5.   }
  6.   while(true);
  7. }


  1. /*
  2. Проверка модема с помощью GSM Shield
  3.  
  4. Этот скетч проверяет, правильно ли работает ваш модем.
  5.  
  6. Цепь:
  7. * GSM Shield, подключенный к Arduino (через 2-ой, 3-ий и 7-ой цифровые контакты)
  8.  
  9. Создан 12 июня 2012 Дэвидом дель Пералем (David del Peral),
  10. модифицирован 21 ноября 2012 Томом Иго (Tom Igoe).
  11.  */
  12.  
  13. // Библиотеки:
  14. #include <GSM.h>
  15.  
  16. // Объект для проверки модема:
  17. GSMModem modem;
  18.  
  19. // Переменная для номера IMEI:
  20. String IMEI = "";
  21.  
  22. void setup()
  23. {
  24.   // Инициализируем последовательную передачу данных:
  25.   Serial.begin(9600);
  26.  
  27.   // Запускаем тест модема (методом сброса и проверки ответа):
  28.   Serial.print("Starting modem test...");  //  "Начинаем тест модема..."
  29.   if(modem.begin())
  30.     Serial.println("modem.begin() succeeded");  //  "Функция modem.begin() активирована успешно..."
  31.   else
  32.     Serial.println("ERROR, no modem answer.");  //  "Ошибка, модем не отвечает"
  33. }
  34.  
  35. void loop()
  36. {
  37.   // Пытаемся получить IMEI-номер модема:
  38.   Serial.print("Checking IMEI...");  //  "Проверяем IMEI..."
  39.   IMEI = modem.getIMEI();
  40.  
  41.   // Проверяем ответ:
  42.   if(IMEI != NULL)
  43.   {
  44.     // Показываем IMEI на Serial Monitor:
  45.     Serial.println("Modem's IMEI: " + IMEI);  //  "IMEI-номер модема: "
  46.     // Перезагружаем модем для проверки загрузки:
  47.     Serial.print("Reseting modem...");  //  "Перезагружаем модем..."
  48.     modem.begin();
  49.     // Получаем и проверяем IMEI еще раз:
  50.     if(modem.getIMEI() != NULL)
  51.     {
  52.       Serial.println("Modem is functoning properly");  //  "Модем работает должным образом"
  53.     }
  54.     else
  55.     {
  56.       Serial.println("Error: getIMEI() failed after modem.begin()");  //  "Ошибка: getIMEI() не сработала после modem.begin()"
  57.     }
  58.   }
  59.   else
  60.   {
  61.     Serial.println("Error: Could not get IMEI");  //  "Ошибка: получить IMEI не удалось"
  62.   }
  63.   // Ничего не делаем:
  64.   while(true);
  65. }

См.также

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

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

  1. Arduino - GSM Test Modem