EnglishRussian

Arduino GSM/GPRS-шилд

Купить GSM/GPRS-шилд «Cosmo GSM»

GPRS-модуль расширяет возможности Arduino, позволяя отправлять SMS-сообщения, делать звонки, обмениваться данными по GPRS.

В данном руководстве рассматриваются примеры с использованием GPRS-шилда от libelium.com

Для работы с GPRS-модулем потребуется:

  • Базовая плата (Arduino Duemilanove или Cosmo Black Start или другие аналоги)
  • GPRS-шилд (например, от libelium.com)
  • Внешняя GPRS–антенна
  • SIM-карта
  • USB-кабель, тип A-B
  • Компьютер с установленной Arduino IDE

Для начала нужно убедиться в работоспособности GPRS-модуля. Для этого мы подключим шилд к плате Arduino в режиме шлюза и отправим на модем AT-команды. Для подключения модуля в режиме шлюза, необходимо извлечь микроконтроллер Atmega из платы Arduino. Затем вставить шилд в Arduino, как показано ниже и установите SIM-карту.

Далее установите на шилде джампер в положении «USB-gateway».

Соедините посредством USB-кабеля Arduino с компьютером. Открой терминал последовательного порта (например, HyperTerminal, cutecom и т.п.). Если для набора AT-команд вы используете программу Serial Monitor из Arduino IDE, убедитесь, что вы отправляете CR (возврат каретки) и LF (перевод строки).

Установите скорость передачи данных 115200 бит/с, откройте терминал последовательного порта. Нажмите и удерживайте 2 секунды кнопку «ON» на шилде, после чего должно появится сообщение PSSTK. Потом введите команду «AT», если модем ответил «OK» — значит устройство работает правильно.

Если GPRS-модуль не отвечает, тогда измените скорость передачи данных — 9600, 19200, 34800, 57600, 115200. Рекомендуемые значения 19200 или autobaudrate (0).

AT+IPR=19200
или
AT+IPR=0

 

Набор номера

ATD12345678 (12345678 — номер вызываемого абонента)

ATH (положить трубку)

 

Отправка SMS

AT+CSCA? (запрос адреса SMS центра)

AT+CMGF=1 (выбор формата SMS, 1 — текстовый режим)

AT+CMGS="12345678" (получатель SMS)
Текст сообщения .................
1A(hex) (конец сообщения)

 

Использование GPRS-шилда в автономном режиме для отправки SMS

Шилд необходимо подключить к Arduino с микроконтроллером, джампер необходимо выставить в положение «Arduino».

   /*
   *  Sending SMS using GPRS module from Libelium for Arduino
   *  Basic program, just sends an SMS
   *  Copyright (C) 2008 Libelium Comunicaciones Distribuidas S.L.
   *  http://www.libelium.com
   *
   *  This program is free software: you can redistribute it and/or modify
   *  it under the terms of the GNU General Public License as published by
   *  the Free Software Foundation, either version 3 of the License, or
   *  (at your option) any later version.
   *
   *  This program is distributed in the hope that it will be useful,
   *  but WITHOUT ANY WARRANTY; without even the implied warranty of
   *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   *  GNU General Public License for more details.
   *
   *  You should have received a copy of the GNU General Public License
   *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
   *
   *  Version 0.1
   *  Author: Marcos Yarza <m.yarza [at] libelium [dot] com>
   */

   int led = 13;
   int onModulePin = 2;        // the pin to switch on the module (without press on button) 

   int timesToSend = 1;        // Numbers of SMS to send
   int count = 0;

   void switchModule(){
   digitalWrite(onModulePin,HIGH);
   delay(2000);
   digitalWrite(onModulePin,LOW);
   }

   void setup(){

   pinMode(led, OUTPUT);
   pinMode(onModulePin, OUTPUT);

   Serial.begin(19200);               // the GPRS baud rate
      
   switchModule();                    // swith the module ON
   
   for (int i=0;i<2;i++){
      delay(5000);
   }
   
      Serial.println("AT+CMGF=1");         // set the SMS mode to text
      delay(100);
      Serial.print("AT+CSCS=");
      Serial.print(34,BYTE);
      Serial.print("IRA");
      Serial.println(34,BYTE);
   }

   void loop(){
   
   while (count < timesToSend){
      delay(1500);
      Serial.print("AT+CMGS=");          // send the SMS the number
      Serial.print(34,BYTE);             // send the " char
      Serial.print("*********");         // send the number (change ********* by the actual number)
      Serial.println(34,BYTE);           // send the " char
      delay(1500);
      Serial.print("Hola caracola...");     // the SMS body
      delay(500);
      Serial.print(0x1A,BYTE);             // end of message command 1A (hex)
         
      delay(5000);

      count++;
   }

   if (count == timesToSend){
      Serial.println("AT*PSCPOF");             // switch the module off
      count++;
   }
   }
   

Другие примеры и информацию по этому шилду смотрите на сайте производителя.