Download GM862 Arduino Shield

Transcript
Manual de Usuario
GM862 Arduino Shield
Rev. 1.3
MCI-MA-0063
INGENIERÍA MCI LTDA.
www.olimex.cl
Luis Thayer Ojeda 0115. Of. 402 ▪ Santiago, Chile ▪ Tel. +56 2 3339579 ▪ [email protected]
MCI Ltda.
Luis Thayer Ojeda 0115. Oficina 402
Santiago, Chile
www.olimex.cl
Tel: +56 2 3339579
Fax: +56 2 3350589
® MCI Ltda. 2011
Atención: Cambios y modificaciones hechas en el dispositivo, no autorizados
expresamente por MCI, anularán su garantía.
Código Manual: MCI – MA - 0063
Manual Usuario de GM862 Arduino Shield
Página 3 de 13
INTRODUCCIÓN .................................................................................................... 4
FUNCIONALIDADES .............................................................................................. 4
PARTES DEL DISPOSITIVO .................................................................................. 5
GUÍA RÁPIDA DE INSTALACIÓN Y PROGRAMACIÓN DE GM862 ARDUINO
SHIELD ........................................................................................................... 6
CÓDIGO EJEMPLO GM862 ARDUINO SHIELD .................................................... 8
MAPA DE PUERTOS.............................................................................................. 9
HISTORIA DEL DOCUMENTO ............................................................................. 13
Luis Thayer Ojeda 0115 Of. 402 ▪ Santiago, Chile ▪ Tel. +56 2 3339579 ▪ [email protected]
www.olimex.cl
Manual Usuario de GM862 Arduino Shield
Página 4 de 13
INTRODUCCIÓN
El objetivo de este documento es la descripción de las funcionalidades del
GM862 Arduino Shield.
Este documento abarca todas las funcionalidades que permite el shield,
también se sugieren procedimiento de configuraciones básicas del modem GM862.
El GM862 Arduino Shield permite a la tarjeta Arduino hacer llamadas
telefónicas, enviar mensajes de texto SMS, enviar datos vía GPRS, accionar pines
I/O del módulo y mucho más. Con esto se fusiona la gran cantidad de
funcionalidades y flexibilidad de los módems GM862 con la facilidad y sencillez de
programación de Arduino. Esto posibilita desarrollar proyectos con Arduino en las
siguientes áreas:
Telemetría y telecontrol
Sistemas de seguridad inteligentes
Sistemas de venta automática inteligentes
Sistemas de gestión de automóviles flota
FUNCIONALIDADES
El GM862 Arduino Shield principalmente entrega la alimentación adecuada al
módem Telit GM862 y adapta los pines haciéndolo compatible con Arduino.
Algunas características específicas para éste dispositivo son:
1)
2)
3)
4)
5)
6)
7)
8)
9)
Regulación de voltaje a de 5-9 [VDC] a 3.8 [VDC]
Consumo máximo de 3 [A]
Led indicador de alimentación
Led indicador de Status del modem GM862
Led configurable por el usuario
Botón de encendido/apagado de modem GM862
Botón de reset placa Arduino
Conexión a Puerto ADC modem GM862
Dimensiones: 76 x 54 [mm]
Luis Thayer Ojeda 0115 Of. 402 ▪ Santiago, Chile ▪ Tel. +56 2 3339579 ▪ [email protected]
www.olimex.cl
Manual Usuario de GM862 Arduino Shield
Página 5 de 13
PARTES DEL DISPOSITIVO
Jumper ADC
Conexión
GSM
LED PWR
Antena
LED STAT
LED USER
Botón ON/OFF
Reset Arduino
Conector
GM862
Modem
Conexión
GPS
Fig.1 Placa GM862 Arduino Shield
Conector Modem GM862: Conector para modem GM862-GPS
LED STAT: Indicador de funcionamiento de modem GM862
LED PWR: Indicador de alimentación de modem GM862
LED USER: Indicador configurable por el usuario
Conector antena GSM: Conector para antena GSM externa
Conector antena GPS: Conector para antena GPS externa
Botón ON/OFF: Botón de encendido/apagado del modem
Botón Reset Arduino: Resetea placa base Arduino
Jumper ADC: Jumper para setear valor de conversión del ADC del modem
GM862 a 0 V.
Luis Thayer Ojeda 0115 Of. 402 ▪ Santiago, Chile ▪ Tel. +56 2 3339579 ▪ [email protected]
www.olimex.cl
Antena
Manual Usuario de GM862 Arduino Shield
Página 6 de 13
GUÍA RÁPIDA DE INSTALACIÓN Y PROGRAMACIÓN DE GM862
ARDUINO SHIELD
Para la instalación y programación del GM862 Arduino Shield se debe instalar
un puerto serial virtual y conectar algunos pines del Shield, de manera de poder
tener comunicación con el modem y con el PC a la vez, permitiendo que el
procedimiento de depuración del software sea más fluido que utilizando solamente
el puerto serial por hardware. Además, se debe hacer uso de la librería GM862,
que contiene funciones elaboradas para poner en marcha la comunicación entre el
modulo GM862, arduino, y la red.
1. Descargar programa de ejemplo aquí, y descomprimirlo.
2. Copiar la carpeta newSoftSerial , y la capeta GM862 en la carpeta de
instalación del programa arduino, específicamente en libraries.
3. Instalar el Shield. Ver fig. 2 para referencia.
A. Conectar el modem GM862
B. Alinear shield de manera de que los pines de conexión de los costados
del shield correspondan sean correspondientes con los pines de la
placa Arduino, y ensamblar.
4. Insertar SIM a modem GM862
5. Conectar alimentación 5-9VDC a placa Arduino.
6. Conectar puerto USB de Arduino a PC.
7. En caso de que no se hayan instalados los drivers FTDI, instalar drivers USB
(Descargar aquí), para tarjetas arduino más recientes, la instalación de los
drivers es automática.
8. Como convención, los parámetros que deben ser modificados se podrán
identificar por estar escritos con fuente de color rojo, en los Skechers
presentados en este manual.
Luis Thayer Ojeda 0115 Of. 402 ▪ Santiago, Chile ▪ Tel. +56 2 3339579 ▪ [email protected]
www.olimex.cl
Manual Usuario de GM862 Arduino Shield
Página 7 de 13
C
A
B
IT
L
TE
D
Fig.2 Ensamblaje Placa GM862 Arduino Shield
Luis Thayer Ojeda 0115 Of. 402 ▪ Santiago, Chile ▪ Tel. +56 2 3339579 ▪ [email protected]
www.olimex.cl
Manual Usuario de GM862 Arduino Shield
Página 8 de 13
CÓDIGO EJEMPLO GM862_SMS ARDUINO SHIELD
Éste código envía un mensaje SMS a un número definido por el programador, con
un texto pre-definido. Además realiza toda la inicialización y configuración del
módem.
Los archivos fuente pueden se pueden descargar desde la página del autor o
desde www.olimex.cl.
¡Es necesario haber realizado los 12 primeros pasos del manual!
Para cargar el código directamente desde arduino abrir el programa arduino, luego:
File>examples>MG862>GM862_SMS.
Ubicar
la
función
“modem.sendSMS(“+569numerotelefonico”,”mensaje”)”.
Reemplazar el número telefónico, y el mensaje de texto.
Cargar el programa a arduino.
Si se abre el visor serial configurado a 9600bds, se pueden apreciar los
procedimientos realizados por el microcontrolador.
/*
File:
GM862_SMS.pde
Author: Moisés Campos
MCI Electronics
www.olimex.cl
*/
#include <NewSoftSerial.h>
#include <string.h>
#include "GM862.h"
#define BUF_LENGTH 100
#define txGprs_pin 3
#define rxGprs_pin 2
NewSoftSerial ser(rxGprs_pin,txGprs_pin);
GM862 modem(&ser);
void setup()
{
Serial.begin(9600);
modem.switchOn();
modem.init();
while (!modem.isRegistered())
{
delay(1000);
modem.checkNetwork();
}
}
void loop()
{
modem.sendSMS("+56998300000", "Hello World!");
digitalWrite(ST_LED_pin,HIGH);
delay(2000);
modem.switchOff();
while(1);
}
Luis Thayer Ojeda 0115 Of. 402 ▪ Santiago, Chile ▪ Tel. +56 2 3339579 ▪ [email protected]
www.olimex.cl
Manual Usuario de GM862 Arduino Shield
Página 9 de 13
CÓDIGO EJEMPLO GM862_LOAD_HTML ARDUINO SHIELD
Éste código configura una conexión HTTP con un servidor, en este caso un
servidor de prueba del fabricante del modem. Luego de conectarse, el modulo pide
un archivo html, el servidor lo envía, el modulo lo carga, todo esto se visualiza en
una ventana serial configurada a 9600 bds.
Para cargar el código directamente desde arduino abrir el programa arduino, luego:
File>examples>MG862>GM862_LOAD_HTML.
Ubicar la función modem.settoInternet(“APN”,”user…….). Reemplazar el número
APN, username y password por los parámetros otorgados por su proveedor de
servicios de internet movil.
Cargar el programa a arduino.
Cargar es programa, y abrir la ventana serial configurada a 9600bds para
visualizar los datos.
/*
File:
GM862_SMS.pde
Author: Moisés Campos
MCI Electronics
www.olimex.cl
*/
#include <NewSoftSerial.h>
#include <string.h>
#include "GM862.h"
#define BUF_LENGTH 100
#define txGprs_pin 3
#define rxGprs_pin 2
NewSoftSerial ser(rxGprs_pin,txGprs_pin);
GM862 modem(&ser);
char generalBuffer[500];
void setup()
{
Serial.begin(9600);
modem.switchOn();
modem.init();
while (!modem.isRegistered())
{
delay(1000);
modem.checkNetwork();
}
modem.settoInternet("APN","username","password","www.roundsolutions.com", "80");
}
void loop()
{
modem.connecttoServer();
byte i = 0;
Serial.println("Load html...");
modem.sendd("GET / HTTP/1.0\r\n"); // search twitter for gm862
modem.sendd("Connection: keep-alive\r\n");
// write on the socket
modem.sendd("\r\n");
Serial.println("receiving ...");
while (i++ < 50) {
Luis Thayer Ojeda 0115 Of. 402 ▪ Santiago, Chile ▪ Tel. +56 2 3339579 ▪ [email protected]
www.olimex.cl
Manual Usuario de GM862 Arduino Shield
Página 10 de 13
modem.receive(generalBuffer);
if (strlen(generalBuffer) > 0) {
Serial.print("buf:");
Serial.println(generalBuffer);
i--;
}
}
Serial.println("done");
modem.closedConection();
digitalWrite(ST_LED_pin,HIGH);
modem.switchOff();
while(1);
}
Luis Thayer Ojeda 0115 Of. 402 ▪ Santiago, Chile ▪ Tel. +56 2 3339579 ▪ [email protected]
www.olimex.cl
Manual Usuario de GM862 Arduino Shield
Página 11 de 13
CÓDIGO EJEMPLO GM862_GPRS ARDUINO SHIELD
Éste código permite abrir un socket con un servidor, por otro lado, lee y procesa
datos provenientes de un sensor que ingresan por la entrada analógica 0.
Posteriormente envía datos al servidor en tiempo real.
Para cargar el código directamente desde arduino abrir el programa arduino, luego:
File>examples>MG862>GM862_GPRS.
Ubicar la función modem.settoInternet(“APN”,”user…….). Reemplazar el número
APN, username y password por los parámetros otorgados por su proveedor de
servicios de internet móvil.
En la misma función anterior, reemplazar el dominio por el del servidor, y la puerta
de acceso.
Configurar el servidor para revivir datos.
Cargar el programa, y abrir la ventana serial configurada a 9600bds.
/*
File:
GM862_SMS.pde
Author: Moisés Campos
MCI Electronics
www.olimex.cl
*/ #include <NewSoftSerial.h>
#include <string.h>
#include "GM862.h"
#define BUF_LENGTH 100
#define txGprs_pin 3
#define rxGprs_pin 2
NewSoftSerial ser(rxGprs_pin,txGprs_pin);
GM862 modem(&ser);
char generalBuffer[100];
void setup()
{
Serial.begin(9600);
modem.switchOn();
modem.init();
while (!modem.isRegistered())
{
delay(1000);
modem.checkNetwork();
}
modem.settoInternet("APN", "username", "password", "domain", "port");
}
void loop()
{
modem.connecttoServer();
char iteracion =0;
while(iteracion < 4)
{
char tmp;
Serial.println("");
float temperature = float(analogRead(0));
temperature = processinSensor(temperature,-21.244,1.7908,-0.0278,0.0003,0,(100.0/1024));
strcpy(generalBuffer,"Temperatura Actual = ");
Luis Thayer Ojeda 0115 Of. 402 ▪ Santiago, Chile ▪ Tel. +56 2 3339579 ▪ [email protected]
www.olimex.cl
Manual Usuario de GM862 Arduino Shield
Página 12 de 13
char *pTemporal = generalBuffer + strlen(generalBuffer);
ftoa(pTemporal,temperature,1);
modem.transmittoServer(generalBuffer);
delay(5000);
iteracion++;
Serial.println(generalBuffer);
}
modem.closedConection();
digitalWrite(ST_LED_pin,HIGH);
delay(2000);
modem.switchOff();
while(1);
}
float processinSensor(float sensor, float a, float ax,float axx, float axxx,float axxxx,
float factor) {
sensor=(sensor*factor);//valor normalizado, y luego transformado en %
sensor= (axxxx*pow(sensor,4)+axxx*pow(sensor,3)+axx*pow(sensor,2)+ax*sensor+a);
return sensor;}
void *ftoa(char *a, double f, int precision){
float p[] = {0.0,10.0,100.0,1000.0,10000.0,100000.0,1000000.0,10000000.0,100000000.0};
char *ret = a;
char mantiza[10];
long heiltal = long(f);
ltoa(heiltal, a, 10);
while (*a != '\0') a++;
*a++ = '.';
long decimal = abs(long((f - float(heiltal)) * p[precision]));
ltoa(decimal, mantiza, 10);
for(;strlen(mantiza) < precision; precision--)
*a++ = '0';
strcpy(a , mantiza);}
Luis Thayer Ojeda 0115 Of. 402 ▪ Santiago, Chile ▪ Tel. +56 2 3339579 ▪ [email protected]
www.olimex.cl
Manual Usuario de GM862 Arduino Shield
Página 13 de 13
MAPA DE PUERTOS
Mapa de pines de GM862 Arduino Shield
Pin
DIGITAL 0
DIGITAL 1
DIGITAL 2
DIGITAL 3
DIGITAL 4
RESET
EAR_HF+
EAR_HFMIC_HFMIC_HF+
GPIO5
GPIO6
GPIO7
GPIO8
GPIO9
GPIO10
GPIO11
GPIO12
ADC
3.8V
Nombre/Función
Serial RX
Serial TX
SoftSerial RX
SoftSerial TX
ON/OFF Modem
RESET Ard
Handset ear output, phase +
Handset ear output, phase Handsfree microphone input; phase -,
nominal level 3mVrms
Handsfree microphone input; phase +,
nominal level 3mVrms
Configurable general purpose I/O pin
GP I/O pin or ALARM output pin
GP I/O pin or Buzzer output pin
Configurable general purpose I/O pin
Configurable general purpose I/O pin
Configurable general purpose I/O pin
Configurable general purpose I/O pin
Configurable general purpose I/O pin
ADC input
3.8V regulated voltage
HISTORIA DEL DOCUMENTO
Revisión
1.0
Fecha
12 de Agosto 2010
Editado por
E. Martin
1.1
22 de Septiembre
2010
E. Martin
1.2
23 de Noviembre
2010
E. Martin
1.3
21 de Julio
2011
M. Campos
Descripción/Cambios
Versión
inicial
del
documento
Se incluye ejemplo para
uso de puerto serial por
software
Actualización
de
cambios
en
nueva
versión de placa
Se incluyen nuevos
ejemplos y cambios en
las librerías
Luis Thayer Ojeda 0115 Of. 402 ▪ Santiago, Chile ▪ Tel. +56 2 3339579 ▪ [email protected]
www.olimex.cl