Электронный компонент:Seeeduino GPRS

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

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

Контакты:

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


Ambox content.png Черновик


Seeeduino GPRS[1]

Seeeduino gprs cover.jpg

Seeeduino GPRS – это плата, предназначенная для проектов в сфере интернета вещей. Ее можно подключить к интернету при помощи беспроводной сети GPRS. Также поддерживаются прием/отправка телефонных звонков и SMS-сообщений. Главные компоненты платы – процессор ATmega32U4 и модуль SIM800H. ATmega32U4 – это микроконтроллер, совместимый с Arduino. Модуль SIM800H поддерживает 4-диапазонную связь 850/900/1800/1900 МГц, а также способен передавать голосовые звонки, SMS и другие данные. Кроме того, SIM800H оснащен дополнительными функциями вроде Bluetooth и FM-радио. Также стоит упомянуть о низком энергопотреблении – в спящем режиме SIM800H потребляет всего 0,1 мА.

Области применения

Вот несколько проектов, созданных на базе Seeeduino GPRS:

Функции

  • Совместимость со стандартной Arduino Leonardo
  • Четыре диапазона частот – 850/900/1800/1900 МГц
  • Разъем для наушников
  • Внешний держатель для SIM-карты
  • Управление через AT-команды
  • Поддержка Bluetooth
  • Поддержка FM-радио
  • Сила тока менее 2 ампер
  • Загрузчик от Arduino Leonardo

Характеристики

Модуль SIM800H

Параметр Значение
Четыре диапазона частот 850/900/1800/1900 МГц
Первая часть класса GPRS B
Вторая часть класса GPRS (мультислот-классы) 12/10
Стандартная GSM-фаза 2/2+
FM-радио 76-109 МГц
Bluetooth Совместимость с 3.0 + EDR
Диапазон питающего напряжения 3,4 – 4,4 вольта

Микроконтроллер Arduino (ATmega32U4)

Параметр Значение
Flash-память 32 Кб
SRAM 2,5 Кб
EEPROM 1 Кб
Тактовая частота 16 МГц
Рабочее напряжение 5 вольт
Цифровые I/O контакты 20 шт.
Каналы ШИМ 7 шт.
Входные аналоговые каналы 12 шт.

Описание компонентов

На картинке ниже показаны компоненты Seeeduino GPRS – чтобы вы лучше понимали, как устроена плата.

Seeeduino gprs hardware2.png
  • Переключатель питания. Используется для переключения вольтовой логики и выходного напряжения платы между 5 и 3,3 вольтами. В настоящее время выпускается много датчиков, работающих на 3,3 вольтах. При использовании других плат Arduino для работы с этими датчиками нужно дополнительно подключать преобразователь вольтовой логики, но на Seeeduino GPRS этого делать не нужно – как раз благодаря наличию переключателя питания.
  • Входной DC-разъем (входной DC-разъем). Позволяет питать Seeeduino GPRS от настенного адаптера – на тот случай, если вашему проекту потребуется больше питания (например, при использовании моторов постоянного тока или других устройств, имеющих повышенные требования к энергопотреблению). Напряжение на этом порте может быть в диапазоне от 9 до 12 вольт, а максимальная сила тока – 2 ампера. Но на Seeeduino GPRS есть аппаратный баг, который нужно иметь в виду. При питании от внешнего источника на контакте 5V напряжение на короткий промежуток (длящийся около 2 мс) поднимается до 6 вольт. Таким образом, есть риск, что устройство, подключенное к контакту 5V, будет повреждено. Поэтому мы не рекомендуем использовать входной DC-разъем для питания системы. Разработчики пишут, то уже работают над исправлением этого бага, но в ближайшее время его исправления ждать не стоит.
  • Контакты для SIM800H. Через эти контакты можно осуществлять отладку SIM800H.
  • ICSP. Это ICSP-гребешок для коммуникации с ATMEGA32U4-MUR. Расположен там же, где находится стандартный ICSP/SPI на устройствах (например, * «шилдах»), совместимых с Arduino Uno, Due, Mega и Leonardo. Контакты SPI на этом порте – MISO, SCK и MOSI. Обратите внимание, что эти контакты НЕ ПОДКЛЮЧЕНЫ к цифровым контактам D11-D13.
  • LED PWR1. Светодиод, сообщающий о питании Seeeduino GPRS.
  • LED PWR2. Светодиод, сообщающий о питании SIM800H.
  • LED STA. Светодиод, сообщающий о том, находится ли плата в рабочем состоянии.
  • LED PIN13. Светодиод, подключенный к 13-ому контакту Seeeduino GPRS.
  • LED NET. Светодиод, сообщающий о поведении SIM800H. Возможные паттерны мигания:


Статус Поведение SIM800H
Выключен SIM800H не работает
64 мс – включен / 800 мс – выключен SIM800H не зарегистрировал сеть
64 мс – включен / 3000 мс – выключен SIM800H зарегистрировал сеть
64 мс – включен / 300 мс – выключен SIM800H установил соединение

Установка драйвера

Во-первых, сделайте следующее:

  • Возьмите кабель MicroUSB. Для этих целей подойдет, к примеру, кабель от телефона Android. Если у вас такого нет, то его можно купить, к примеру, тут.
  • Подключите плату. Подключите плату к компьютеру при помощи USB-кабеля. В результате на плате должен загореться зеленый светодиод с надписью PWR1.

Для Windows

Примечание: Этот драйвер совместим с Windows XP, Windows Vista, Windows 7, Windows 8/8.1 и Windows 10.

Загрузить драйвер можно по этой ссылке.

  • Подключите плату и подождите, пока Windows начнет процесс установки драйвера. Спустя некоторое время ОС сообщит, что процесс установки, несмотря на все усилия, не удался.
  • Откройте «Панель управления».
  • Находясь в «Панели управления», откройте меню «Система и безопасность», а затем «Система». После этого откройте «Диспетчер устройств».
  • Найдите пункт «Порты (COM и LPT. В нем должен быть открытый порт под названием «Seeeduino GPRS». Если пункта «Порты (COM и LPT нет, ищите пункт «Другие устройства», а в нем запись «Неизвестное устройство».
  • Кликните правой кнопкой мыши на порт «Seeeduino GPRS» и выберите опцию «Обновить драйвер».
  • Далее выберите опцию «Выполнить поиск драйверов на этом компьютере».
  • Наконец, найдите скачанный драйвер – он должен называться «seeed_usb_serial.inf»
  • На этом установка драйвера должна завершиться.

Для Mac OSX

На этой ОС драйверы устанавливать не нужно.

С чего начать

Примечание: Этот раздел написан на примере IDE Arduino версии 1.6.9, установленной на Windows 10.

В самом начале нужно установить среду IDE Arduino. Загрузить ее можно с этой страницы.

Запускаем IDE Arduino

Установите IDE Arduino, а потом запустите ее.

Примечание: Если IDE Arduino запустилась на чужом языке, его можно поменять в меню «Настройки» («Preferences»). Более подробно читайте на этой странице, в разделе «Языковая поддержка».

Откройте пример «Blink»

Для этого кликните в IDE Arduino на Файл > Примеры > 01.Basics > Blink (File > Examples > 01.Basics > Blink).

Seeeduino GPRS select blink.png

Выбираем плату

Для этого кликаем в IDE Arduino на Инструменты > Плата (Tools > Board) и выбираем плату, соответствующую вашей Arduino. В нашем случае нужно выбрать «Arduino Leonardo».

Seeeduino gprs select board.png

Выбираем последовательный порт

Для этого кликните в IDE Arduino на Инструменты > Порт (Tools > Port) и выберите нужный порт. Это будет, скорее всего, COM3 или выше (COM1 и COM2 обычно зарезервированы для аппаратных последовательных портов). Чтобы найти нужный порт, отключите плату от компьютера и снова откройте это меню. Порт, который исчез, и является портом, к которому подключена Seeeduino GPRS. Переподключите плату и выберите найденный порт.

Seeeduino gprs select com.png

Примечание: На Mac этот порт должен выглядеть примерно так: «/dev/tty.USBmodem».

Загружаем программу

Теперь просто кликаем на кнопку «Загрузка» («Upload») в IDE Arduino. Ждем несколько секунд и, если загрузка пройдет успешно, в статусной панели появится сообщение «Загрузка завершена».

Seeeduino GPRS arduino ide upload image.png

Кроме того, спустя несколько секунд после завершения загрузки на плате должен замигать зеленый светодиод, подключенный к 13-ому контакту. Если замигал, поздравляем! Это значит, что Seeeduino GPRS работает.

Если используете Linux, то об установке IDE Arduino на эту ОС читайте тут.

Скетчи-примеры для Seeeduino GPRS

Seeeduino GPRS оснащена функциями мобильного телефона – она может делать/принимать телефонные звонки и SMS-сообщения, осуществлять TCP-коммуникацию и т.д. Но для всего этого понадобится библиотека, которая называется «Seeeduino GPRS», и скачать ее можно с этого GitHub-репозитория. Загрузите ее и установите в IDE Arduino (о том, как устанавливать в IDE Arduino дополнительные библиотеки, читайте тут).

Для того, чтоб начать работать с Seeeduino GPRS, понадобятся наушники и SIM-карта.

Seeeduino gprs t.jpg

Телефонный звонок

Откройте скетч-пример «GPRS_CallUp». Для этого кликните в IDE Arduino на Файл > Открыть... (File > Open…), найдите папку «libraries/Seeeduino_GPRS/example/GPRS_CallUp», выделите скетч «GPRS_CallUp.ino» и нажмите «Открыть». Когда скетч откроется, найдите функцию callUp() и замените ее аргумент – это телефонный номер, на который будет делаться звонок. Затем скомпилируйте скетч и загрузите его на плату. После этого Seeeduino GPRS позвонит на номер, указанный в скетче.

  1. #include <gprs.h>
  2. #include <SoftwareSerial.h>
  3.  
  4. GPRS gprs;
  5.  
  6. void setup() {
  7.     Serial.begin(9600);
  8.     Serial.println("GPRS - Call up Test...");
  9.                //  "GPRS – тест звонка..."
  10.     gprs.preInit();  //  включаем питание SIM800
  11.     delay(1000);
  12.     while(0 != gprs.init()) {  //  инициализируем GPRS
  13.         delay(1000);
  14.         Serial.print("init error\r\n"); // "Ошибка инициализации\r\n"
  15.     }
  16.     Serial.println("Init success, start to call...");
  17.                //  "Инициализация удалась, делаем звонок..."
  18.     gprs.callUp("150****9566");
  19. }
  20.  
  21. void loop() {
  22.      //  в блоке loop() ничего не делаем
  23. }

Отправка SMS

Кроме того, Seeeduino GPRS может и отправлять SMS-сообщения. Сначала откройте скетч-пример «GPRS_SendSMS». Для этого кликните в IDE Arduino на Файл > Открыть... (File > Open…), найдите папку «libraries/Seeeduino_GPRS/example/GPRS_SendSMS», выделите скетч «GPRS_SendSMS.ino» и нажмите «Открыть». Далее найдите функцию sendSMS() и замените ее аргументы – это телефонный номер, на который будет отправлено SMS, и само SMS. Затем скомпилируйте скетч и загрузите его на плату. После этого Seeeduino GPRS отправит сообщение на номер, указанный в скетче.

  1. #include <gprs.h>
  2. #include <SoftwareSerial.h>
  3.  
  4. GPRS gprs;
  5.  
  6. void setup() {
  7.     Serial.begin(9600);
  8.     Serial.println("GPRS - Send SMS Test ...");
  9.                //  "GPRS – тест SMS-сообщения..."
  10.     gprs.preInit();
  11.     delay(1000);
  12.     while(0 != gprs.init()) {
  13.         delay(1000);
  14.         Serial.print("init error\r\n"); // "Ошибка инициализации\r\n"
  15.     }
  16.     Serial.println("Init success, start to send SMS message...");
  17.                //  "Инициализация удалась, отправляем SMS..."
  18.     //  указываем в аргументах телефонный номер и SMS-сообщение:
  19.     gprs.sendSMS("130****3364","hello,world");
  20. }
  21.  
  22. void loop() {
  23.     //  в блоке loop() ничего не делаем
  24. }

Прием телефонного звонка и SMS-сообщения

Seeeduino GPRS также умеет отвечать на звонки и считывать присылаемые SMS-сообщения. Откройте скетч «GPRS_LoopHandle». Для этого кликните в IDE Arduino на Файл > Открыть... (File > Open…), найдите папку «libraries/Seeeduino_GPRS/example/GPRS_LoopHandle», выделите скетч «GPRS_LoopHandle.ino» и нажмите «Открыть». Затем скомпилируйте скетч и загрузите его на плату. После этого Seeeduino GPRS начнет мониторить входящие звонки и SMS. В случае входящего звонка Seeeduino GPRS ответит на него автоматически. В случае входящего SMS-сообщения Seeeduino GPRS покажет его в мониторе порта.

  1. #include <gprs.h>
  2. #include <SoftwareSerial.h>
  3. #include <stdio.h>
  4.  
  5. char gprsBuffer[64];
  6. int i = 0;
  7. char *s = NULL;
  8. int inComing = 0;
  9.  
  10. GPRS gprs;
  11.  
  12. void setup() {
  13.     Serial.begin(9600);
  14.     Serial.println("GPRS - LoopHandle Test...");
  15.                //  "GPRS – тест приема звонков и SMS..."
  16.     gprs.preInit();
  17.     while(0 != gprs.init()) {
  18.         delay(1000);
  19.         Serial.print("init error\r\n"); // "Ошибка инициализации\r\n"
  20.     }
  21.     Serial.println("Init success, start to monitor your call or message...");
  22.                //  "Инициализация удалась,
  23.                //   начинаем отслеживать звонки и SMS..."
  24. }
  25.  
  26. void loop() {
  27.     if(gprs.serialSIM800.available()) {
  28.         inComing = 1;
  29.     }else{
  30.         delay(100);
  31.     }
  32.  
  33.     if(inComing){
  34.         gprs.readBuffer(gprsBuffer,32,DEFAULT_TIMEOUT);
  35.         Serial.print(gprsBuffer);
  36.  
  37.         if(NULL != strstr(gprsBuffer,"RING")) {
  38.             gprs.answer();
  39.         }else if(NULL != (s = strstr(gprsBuffer,"+CMTI: \"SM\""))) { //SMS: $$+CMTI: "SM",24$$
  40.             char message[MESSAGE_LENGTH];
  41.             int messageIndex = atoi(s+12);
  42.             gprs.readSMS(messageIndex, message,MESSAGE_LENGTH);
  43.             Serial.print(message);
  44.         }
  45.         gprs.cleanBuffer(gprsBuffer,32);
  46.         inComing = 0;
  47.     }
  48. }

FM-радио

Еще одна функция Seeeduino GPRSFM-радио. Откройте скетч «FM_Test». Для этого кликните в IDE Arduino на Файл > Открыть... (File > Open…), найдите папку «libraries/Seeeduino_GPRS/example/FM_Test», выделите скетч «FM_Test.ino» и нажмите «Открыть». Затем скомпилируйте скетч и загрузите его на плату. Seeeduino GPRS начнет вести себя как FM-радио. Вы даже сможете менять FM-канал при помощи кнопки.


  1. #include <fm.h>
  2. #include <SoftwareSerial.h>
  3.  
  4. int channelButton = 5;  //  кнопка для переключения FM-канала
  5. FM fm;
  6.  
  7. void setup() {
  8.     pinMode(channelButton,INPUT);
  9.     Serial.begin(9600);
  10.     Serial.println("FM Test...");  //  "Тест FM-радио..."
  11.  
  12.     fm.preInit();
  13.     while(0 != fm.powerOn()){
  14.         Serial.println("FM power on failed, try again...");
  15.                    //  "Включить FM-радио не удалось,
  16.                    //   пробуем снова.."
  17.         delay(2000);
  18.     }
  19.     fm.setVolume(6); //0,1,2,3,4,5,6
  20.     fm.scanChannel();
  21.     Serial.println("FM init success");
  22.                //  "Инициализация FM-радио прошла успешно"
  23. }
  24.  
  25. void loop() {
  26.     while(HIGH == digitalRead(channelButton)){
  27.         delay(50);
  28.     }
  29.     Serial.print("change Channel\r\n");
  30.              //  "Меняем канал\r\n"
  31.  
  32.     fm.channelNext();
  33.     while(LOW == digitalRead(channelButton)){
  34.         delay(50);
  35.     }
  36. }

Функция Bluetooth

Seeeduino GPRS можно также использовать как Bluetooth-устройство, но эта функция пока работает не очень стабильно. В библиотеке «Seeeduino GPRS» есть два скетча-примера, связанные с функцией Bluetooth. Первый – это «Bluetooth_Call_PhoneNumber.ino», который ждет от вас AT-команды для того, чтобы сделать телефонный звонок. Второй – это «Bluetooth_AT_Command_And_Music_Play.ino», который тоже ждет от вас команды, но для того, чтобы установить Bluetooth-сопряжение с другим устройством.

Ниже показан скетч-пример «Bluetooth_AT_Command_And_Music_Play.ino»:

  1. #include <bluetooth.h>
  2. #include <SoftwareSerial.h>
  3.  
  4. #define DEFAULT_TIMEOUT 5
  5. #define BT_BUF_LEN      64
  6. //32
  7. BlueTooth bluetooth;
  8.  
  9. char bluetoothBuffer[BT_BUF_LEN];
  10. int start = 0;
  11. int ready = 0;
  12.  
  13. void setup() {
  14.   Serial.begin(9600);
  15.   while(!Serial);
  16.   Serial.println("Bluetooth AT Command Test...");
  17.              //  "Тест Bluetooth-сопряжения с другим устройством"
  18.   bluetooth.preInit();
  19.   delay(3*1000);
  20.   while(0 != bluetooth.powerOn()){ //bluetooth PowerOn
  21.     Serial.println("bluetooth power on failed, try again...");
  22.                //  "Включить Bluetooth не удалось, пробуем снова..."
  23.     delay(2000);
  24.   }
  25.   Serial.println("Bluetooth is on.");
  26.              //  "Bluetooth включен."
  27.  
  28.  
  29.   // проверяем, подключен ли Bluetooth:    
  30.   if(0 == bluetooth.sendCmdAndWaitForResp("AT+BTSTATUS?\r\n", "AVRCP", 2) ){
  31.     Serial.println("Bluetooth has connectted...");
  32.                //  "Bluetooth подключен..."
  33.     ready = 1;
  34.   }else{
  35.     ready = 0;
  36.     Serial.println("No bluetooth connectted, please open you phone's bluetooth and try to connect \"SIM800\"...");    
  37.                //  "Bluetooth не подключен, запустите Bluetooth
  38.                //   на телефоне и попробуйте подключиться к SIM800..."
  39.   }  
  40. }
  41.  
  42. void loop()
  43. {  
  44.   while(!bluetooth.serialSIM800.available());
  45.   bluetooth.readBuffer(bluetoothBuffer,BT_BUF_LEN,2); //DEFAULT_TIMEOUT
  46.   //Serial.println(bluetoothBuffer);  
  47.      
  48.   //  разрешаем сопряжение:
  49.   if(NULL != strstr(bluetoothBuffer,"+BTPAIRING:")){  
  50.     bluetooth.acceptPairing();      
  51.     Serial.println("Bluetooth paired...");
  52.                //  "Bluetooth-сопряжение установлено..."
  53.   }    
  54.   //  разрешаем подключение:
  55.   else if(NULL != strstr(bluetoothBuffer,"+BTCONNECTING:")){
  56.     bluetooth.acceptConnect();      
  57.     Serial.println("Bluetooth successfully connected...");  
  58.                //  "Bluetooth успешно подключен..."                            
  59.   }
  60.   bluetooth.cleanBuffer(bluetoothBuffer,64);
  61. }

Полезные ссылки

Схемы

Прошивка

AT-команды для SIM800

Библиотека Seeeduino GPRS

См.также

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

  1. wiki.seeed.cc - Seeeduino GPRS