Arduino:Примеры/GSMExamplesBandManagement

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

Перевод: Максим Кузьмин (Cubewriter) Контакты:</br>* Skype: cubewriter</br>* E-mail: cubewriter@gmail.com</br>* Максим Кузьмин на freelance.ru
Проверка/Оформление/Редактирование: Мякишев Е.А.


Управление диапазоном частот с помощью GSM Shield[1]

Этот пример показывает, как при помощи GSM Shield и библиотеки GSM управлять диапазоном частот, который использует модем.

Общую информацию о диапазонах частот GSM можно почитать, например, здесь. Для разных регионов есть свои собственные настройки:

  • Европа, Африка, Ближний Восток: E-GSM (900) + DCS (1800)
  • США, Канада, Южная Америка: GSM (850) + PCS (1900)
  • Мексика: PCS (1900)
  • Бразилия: GSM (850) + E-GSM (900) + DCS (1800) + PCS (1900)

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

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

Цепь

GSMShield ArduinoUno.png

Изображение модуля Arduino GSM Shield, установленного поверх платы Arduino Uno

Код

  1 /*
  2 Управление диапазоном частот 
  3 
  4 Этот скетч для Arduino GSM Shield проверяет, на какой диапазон частот настроен модем,
  5 и позволяет вам менять его.
  6 
  7 Пожалуйста, сверьтесь здесь – http://www.worldtimezone.com/gsm.html.
  8 Стандартные настройки: 
  9 * Европа, Африка, Ближний Восток: E-GSM (900) + DCS (1800)
 10 * США, Канада, Южная Америка: GSM (850) + PCS (1900)
 11 * Мексика: PCS (1900)
 12 * Бразилия: GSM (850) + E-GSM (900) + DCS (1800) + PCS (1900)
 13 
 14 Цепь:
 15 * GSM Shield 
 16 
 17 Создан 12 июня 2012 Хавьером Зорзано (Javier Zorzano)
 18 и Скоттом Фитцджеральдом (Scott Fitzgerald).
 19 
 20 Этот код не защищен авторским правом.
 21 */
 22 
 23 // Библиотеки:
 24 #include <GSM.h>
 25 
 26 // Создаем экземпляр класса GSMBand:
 27 GSMBand band;
 28 
 29 void setup()
 30 {
 31   // Инициализируем последовательную передачу данных:
 32   Serial.begin(9600);
 33 
 34   // Запуск менеджера, управляющего диапазоном частот, перезапустит модем:
 35   Serial.println("Restarting modem...");  // "Перезапускаем модем..."
 36   band.begin();
 37   Serial.println("Modem restarted.");  // "Модем перезапущен."
 38 
 39 };
 40 
 41 
 42 void loop()
 43 {
 44   // Получаем информацию о текущем диапазоне частот: 
 45   String bandName = band.getBand(); 
 46   // Получив, выводим эту информацию на Serial Monitor:
 47   Serial.print("Current band:");  // "Текущий диапазон частот:"
 48   Serial.println(bandName);
 49   Serial.println("Want to change the band you’re on?");  // "Хотите поменять диапазон частот?"
 50   String newBandName;
 51   newBandName = askUser();
 52   // Говорим пользователю, что собираемся делать... :
 53   Serial.print("\nConfiguring band ");  // "\nНастройка диапазона частот"
 54   Serial.println(newBandName); 
 55   // Меняем диапазон частот: 
 56   boolean operationSuccess; 
 57   operationSuccess = band.setBand(newBandName); 
 58   // Если операция прошла успешно, сообщаем об этом пользователю: 
 59   if(operationSuccess)
 60   { 
 61     Serial.println("Success");  //  "Успех!"
 62   } 
 63   else
 64   { 
 65     Serial.println("Error while changing band");  //  "Ошибка при смене диапазона частот"
 66    } 
 67 
 68   if(operationSuccess)
 69   { 
 70     while(true); 
 71   } 
 72 }
 73 
 74 // Эта функция через Serial Monitor предлагает пользователю 
 75 // несколько вариантов дальнейшего развития событий.
 76 // Пользователю выбирает один из них. 
 77 String askUser()
 78 {
 79   String newBand; 
 80   Serial.println("Select band:");  //  "Выберите диапазон частот:"
 81   // Выводим на Serial Monitor разные варианты: 
 82   Serial.println("1 : E-GSM(900)");  
 83   Serial.println("2 : DCS(1800)"); 
 84   Serial.println("3 : PCS(1900)"); 
 85   Serial.println("4 : E-GSM(900)+DCS(1800) ex: Europe"); 
 86   Serial.println("5 : GSM(850)+PCS(1900) Ex: USA, South Am."); 
 87   Serial.println("6 : GSM(850)+E-GSM(900)+DCS(1800)+PCS(1900)"); 
 88 
 89   // Очищаем буфер, содержащий входящую информацию: 
 90   while(Serial.available()) 
 91   Serial.read(); 
 92 
 93   // Ждем ответа и смотрим лишь на первый символ: 
 94   while(!Serial.available()); 
 95   char c= Serial.read(); 
 96   if(c=='1')
 97     newBand=GSM_MODE_EGSM; 
 98   else if(c=='2')
 99     newBand=GSM_MODE_DCS; 
100   else if(c=='3')
101     newBand=GSM_MODE_PCS; 
102   else if(c=='4')
103     newBand=GSM_MODE_EGSM_DCS; 
104   else if(c=='5')
105     newBand=GSM_MODE_GSM850_PCS; 
106   else if(c=='6')
107     newBand=GSM_MODE_GSM850_EGSM_DCS_PCS; 
108   else
109     newBand=GSM_MODE_UNDEFINED;
110   return newBand;
111 }

См.также

  1. GSMBand
  2. begin()
  3. getBand()
  4. setBand()

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