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

Arduino:Примеры/GSMExamplesBandManagement

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

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

Контакты:

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


Управление диапазоном частот с помощью 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()

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

  1. Arduino - Band Management