Arduino:Примеры/GSMExamplesBandManagement
Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
Содержание | Знакомство с Arduino | Продукты | Основы | Справочник языка Arduino | Примеры | Библиотеки | Хакинг | Изменения | Сравнение языков Arduino и Processing |
Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.
Управление диапазоном частот с помощью 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;
}
См.также
- GSMBand
- begin()
- getBand()
- setBand()