Arduino:Примеры/GSMExamplesBandManagement

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
Версия для печати больше не поддерживается и может содержать ошибки обработки. Обновите закладки браузера и используйте вместо этого функцию печати браузера по умолчанию.

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


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

Цепь

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

Код

/*
Управление диапазоном частот 

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

Пожалуйста, сверьтесь здесь – http://www.worldtimezone.com/gsm.html.
Стандартные настройки: 
* Европа, Африка, Ближний Восток: E-GSM (900) + DCS (1800)
* США, Канада, Южная Америка: GSM (850) + PCS (1900)
* Мексика: PCS (1900)
* Бразилия: GSM (850) + E-GSM (900) + DCS (1800) + PCS (1900)

Цепь:
* GSM Shield 

Создан 12 июня 2012 Хавьером Зорзано (Javier Zorzano)
и Скоттом Фитцджеральдом (Scott Fitzgerald).

Этот код не защищен авторским правом.
*/

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

// Создаем экземпляр класса GSMBand:
GSMBand band;

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

  // Запуск менеджера, управляющего диапазоном частот, перезапустит модем:
  Serial.println("Restarting modem...");  // "Перезапускаем модем..."
  band.begin();
  Serial.println("Modem restarted.");  // "Модем перезапущен."

};


void loop()
{
  // Получаем информацию о текущем диапазоне частот: 
  String bandName = band.getBand(); 
  // Получив, выводим эту информацию на Serial Monitor:
  Serial.print("Current band:");  // "Текущий диапазон частот:"
  Serial.println(bandName);
  Serial.println("Want to change the band you’re on?");  // "Хотите поменять диапазон частот?"
  String newBandName;
  newBandName = askUser();
  // Говорим пользователю, что собираемся делать... :
  Serial.print("\nConfiguring band ");  // "\nНастройка диапазона частот"
  Serial.println(newBandName); 
  // Меняем диапазон частот: 
  boolean operationSuccess; 
  operationSuccess = band.setBand(newBandName); 
  // Если операция прошла успешно, сообщаем об этом пользователю: 
  if(operationSuccess)
  { 
    Serial.println("Success");  //  "Успех!"
  } 
  else
  { 
    Serial.println("Error while changing band");  //  "Ошибка при смене диапазона частот"
   } 

  if(operationSuccess)
  { 
    while(true); 
  } 
}

// Эта функция через Serial Monitor предлагает пользователю 
// несколько вариантов дальнейшего развития событий.
// Пользователю выбирает один из них. 
String askUser()
{
  String newBand; 
  Serial.println("Select band:");  //  "Выберите диапазон частот:"
  // Выводим на Serial Monitor разные варианты: 
  Serial.println("1 : E-GSM(900)");  
  Serial.println("2 : DCS(1800)"); 
  Serial.println("3 : PCS(1900)"); 
  Serial.println("4 : E-GSM(900)+DCS(1800) ex: Europe"); 
  Serial.println("5 : GSM(850)+PCS(1900) Ex: USA, South Am."); 
  Serial.println("6 : GSM(850)+E-GSM(900)+DCS(1800)+PCS(1900)"); 

  // Очищаем буфер, содержащий входящую информацию: 
  while(Serial.available()) 
  Serial.read(); 

  // Ждем ответа и смотрим лишь на первый символ: 
  while(!Serial.available()); 
  char c= Serial.read(); 
  if(c=='1')
    newBand=GSM_MODE_EGSM; 
  else if(c=='2')
    newBand=GSM_MODE_DCS; 
  else if(c=='3')
    newBand=GSM_MODE_PCS; 
  else if(c=='4')
    newBand=GSM_MODE_EGSM_DCS; 
  else if(c=='5')
    newBand=GSM_MODE_GSM850_PCS; 
  else if(c=='6')
    newBand=GSM_MODE_GSM850_EGSM_DCS_PCS; 
  else
    newBand=GSM_MODE_UNDEFINED;
  return newBand;
}

См.также

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

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