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