Sim900 + rasberry PI

858 views
Skip to first unread message

Juan Carlos Abdala

unread,
Sep 27, 2014, 5:15:14 PM9/27/14
to rsp...@googlegroups.com
Hola gente como les va, les cuento que estoy trabajando en un proyecto con raspberry + una placa icomsat 1.1 con un Simcom SIM900 (es un modem GSM). 
La idea básica de lo que estoy haciendo es un concentrador de información en el campo y subir la información a una pagina web cada x tiempo, para eso solo necesitaría iniciar la cesión enviar los datos y cerrar cesión no necesita conexión constante  
La cuestión es la siguiente, lo he podido conectar por serie sin problemas y probar los comandos AT sin problema, pero no he podido encontrar ninguna librería  para GSM con soporte para HTTP REST para hacer mas prolijo el trabajo,
He intentado adaptar GSM-GPRS-GPS-Shield-GSMSHIELD (inetGSM mas precisamente) de arduino con arduPi de libelium pero después de mucho trabajo llego a estancarme con las libreras Print.h de Arduino.
Que recomiendan, ¿escribo todo desde cero?, ¿se puede utilizar algo echo ya?
Desde ya muchas gracias. 

david fernandez

unread,
Sep 27, 2014, 6:44:41 PM9/27/14
to rsp...@googlegroups.com

Disculpa, no es más facil utilizar un modem 3g via usb?

--
Comunidad de usuarios Raspberry Pi en Argentina
 
Web: raspberrypi.com.ar
FB: facebook.com/RaspberryPiAr
Twitter: twitter.com/raspberrypi_ar
---
Has recibido este mensaje porque estás suscrito al grupo "Comunidad Raspberry Pi en Argentina" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a rspi-ar+u...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

claudio conejero

unread,
Sep 27, 2014, 9:55:09 PM9/27/14
to rsp...@googlegroups.com
Espero que no te tomes a mal la corrección, no es de mala leche.
Sesión se escribe con "S".

Abrazos.

Fernando Cassia

unread,
Sep 28, 2014, 7:19:15 AM9/28/14
to rsp...@googlegroups.com

2014-09-27 18:15 GMT-03:00 Juan Carlos Abdala <ton...@gmail.com>:
pero no he podido encontrar ninguna librería  para GSM con soporte para HTTP REST para hacer mas prolijo el trabajo,

Hay algo que evidentemente me estoy perdiendo...
Si tenes un modem o placa GSM, estableces una conexion 3G (o EDGE o GPRS lo que te den las antenas de la zona), y a partir de ahi tenes una conexion IP, con lo cual es todo HTTP a un web server (o si queres, lo podrias hacer hasta por email via SMTP....

FC
--
During times of Universal Deceit, telling the truth becomes a revolutionary act
Durante épocas de Engaño Universal, decir la verdad se convierte en un Acto Revolucionario
- George Orwell

claudio conejero

unread,
Sep 28, 2014, 1:57:16 PM9/28/14
to rsp...@googlegroups.com
O por TCP derechito a la base de datos.
Yo tampoco entendi bien.

--

Juan Carlos Abdala

unread,
Sep 29, 2014, 4:44:24 PM9/29/14
to rsp...@googlegroups.com
Ok entiendo los planteos, pero realizar una seción pero no es simple,no es un modem USB es una placa externa SIM900 (http://imall.iteadstudio.com/im120417009.html),  la conecto por serie,  y la necesito por su alcance y la posibilidad de agregarle antena mas potente o colocarla mas alto (es para zonas rurales).

Intente anteriormente usar sakis3g y wvdial, pero no logro establecer una conexión:

Por ejemplo con wvdial lo configure con:

[Dialer Defaults]
Modem = /dev/ttyAMA0
Phone = *99***1#
Init1 = ATZ
Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 S10=45 +FCLASS=0
Init3 = AT+CGDCONT=1,"IP","gprs.claro.com.ar"   //tambien probe igprs.claro.com.ar
ISDN = 0
New PPPD = yes
Auto Reconnect = on
Carrier Check = on
Stupid Mode = on
Idle Seconds = 0
Auto DNS = on
Baud = 9600
Dial Command = ATDT
Username = ctigprs //Tambien probe clarogprs 
Password = ctigprs999 //clarogprs99

Y queda estático en:
--> WvDial: Internet dialer version 1.61
--> Initializing modem.
--> Sending: ATZ
ATZ
OK
--> Sending: ATQ0 V1 E1 S0=0 &C1 &D2 S10=45 +FCLASS=0
ATQ0 V1 E1 S0=0 &C1 &D2 S10=45 +FCLASS=0
OK
--> Sending: AT+CGDCONT=1,"IP","gprs.claro.com.ar"
AT+CGDCONT=1,"IP","gprs.claro.com.ar"
OK
--> Modem initialized.
--> Sending: ATD*99***1#
--> Waiting for carrier.
ATD*99***1#
CONNECT
--> Carrier detected.  Starting PPP immediately.
--> Starting pppd at Mon Sep 29 20:14:18 2014
--> Pid of pppd: 2394

Y no levanta la interfaz ppp0. Al igual que:

Sakis3G tira scrip error, también probé con pppd directamente
 
sudo pppd ttyAMA0 nodetach defaultroute noipdefault lock usepeerdns connect 'chat "" "at" "" "at" "OK" "at&f" "OK" "atz" "OK" "at+cgdcont=1,'IP','gprs.claro.com.ar'" OK "atdt*99***1#" CONNECT' user ctigprs password ctigprs999

pero igualmente obtengo:
Script chat "" "at" "" "at" "OK" "at&f" "OK" "atz" "OK" "at+cgdcont=1,IP,gprs.claro.com.ar" OK "atdt*99***1#" CONNECT finished (pid 2408), status = 0x3
Connect script failed

Por lo que he probado realizar directamente por HTTP con un poco mas de éxito:

//Begin
AT
AT+CREG?
AT+SAPBR=3,1,"APN","igprs.claro.com.ar"
AT+SAPBR=3,1,"USER","clarogprs"
AT+SAPBR=3,1,"PWD","clarogprs999"
AT+SAPBR=3,1,"Contype","GPRS"
AT+SAPBR=1,1
AT+HTTPINIT
AT+HTTPPARA="CID",1

//GET
AT+HTTPPARA="URL","google.com
AT+HTTPACTION=0
AT+HTTPREAD

//FINISH
AT+HTTPTERM

EL POST es mas cuestionable por que de la forma que lo usan no respeta la API basada en REST diseñada anteriormente.

Por lo que buscaba alguna API mas por desarrollada pero por lo visto no hay.

En cuanto a levantar una TCP/IP directamente sobre el modem y pasar los datos por serie, la estructura web desarrollada es muy compleja desde la autenticación, hasta los parámetros que pasa. Pero hasta ahora es la única posible.

Esto funciona para levantara:
//BEGIN
AT
AT+CREG?
AT+CGATT=1
AT+CSTT="igprs.claro.com.ar","clarogprs","clarogprs999"
AT+CIICR
//Indica el IP
AT+CIFSR

//START
AT+CIPSTART="TCP","mipagina.com.ar",80
AT+CIPSEND
//Si se abre una consola > es que se conecto.

//FINISH
AT+CIPSHUT
AT+CGATT=0

Hasta ahora no encontré una solución prolija, la mejor seria la conexión directa y simplemente usar python request pero no encuentro el error en las configuraciones.

Desde ya gracias por las respuesta.

Saludos.

david fernandez

unread,
Sep 29, 2014, 6:43:50 PM9/29/14
to rsp...@googlegroups.com

El usuario tiene los permisos y pertenece al grupo correspondiente? Mira los log que seguro te va a dar una pista de por qué el error.

Roberto J. R.

unread,
Sep 29, 2014, 9:21:44 PM9/29/14
to rsp...@googlegroups.com
Hola Juan Carlos. Independientemente de que el modem sea RS-232 o usb, tu prioridad debería ser que levante el PPP. Una vez que logres eso, el equipo va a tener su propio IP, y la forma en que sacás los datos del equipo, casi que pasa a ser "lo de menos". Por ejemplo, podría ser un script que utilice "curl", y con ello sacás los datos como si fueras un cliente web. O el script se podría comportar como un cliente FTP, etc. Las posibilidades son infinitas. Eso creo que es lo que intentaban señalarte los participantes en algunas de las entradas anteriores.

Habría que modificar algún script existente de PPP, que adapte la secuencia de comandos AT a los que acepta y reconoce tu modem, que asumo que estarás familiarizado en función de que interactuáste con el modem a mano. Yo he realizado algunas pruebas con modems GSM, y efectivamente suelen tener una versión extendida de comandos AT que incluyen soporte para cosas específicas de las redes 3G. Además esta versión extendida puede que varíe con el fabricante, así que hay que adaptar los script. Probá de ponerle delays en algunas partes de negociación, ya que a veces las cosas se cortan antes de tiempo por timeouts demasiado celosos. Tratá de arrancar los servicios en algún modo verbose o debug, y fijate en los logs a ver en que parte de la negociación está fallando.

Saludos.

Roberto Paz

Juan Carlos Abdala

unread,
Sep 30, 2014, 10:18:08 AM9/30/14
to rsp...@googlegroups.com
Gente la solución que encontré fue con pppconfig, siguiendo este tutorial:


Con los mismos datos excepto los propios del carrier y los de la raspberry pi:
User Name: clarogprs
password: clarogprs999
speed: 9600
Phone: *99***1#
Modem Port: /dev/ttyAMA0

Después activan la interfaz con "pon"

Y por ultimo para probar tire la ruta por defecto:

route add -net 0.0.0.0/0 ppp0 

Probamos:
ping google.com  

y funciona!!!

Muchas gracias a todos por las respuestas.

Saludos.

Fernando Cassia

unread,
Oct 9, 2014, 3:37:24 PM10/9/14
to rsp...@googlegroups.com

2014-09-30 11:18 GMT-03:00 Juan Carlos Abdala <ton...@gmail.com>:
User Name: clarogprs
password: clarogprs999
speed: 9600
Phone: *99***1#
Modem Port: /dev/ttyAMA0

Excelente, gracias por compartirlo. Me acabás de solucionar indirectamente un problema que tenia con apps para PalmOS de Tethering (!) que pedian el numero de discado y le ponia *99# como decia el developer y nada. Ahora vere si le agrego el ***1# al final :)

Gracias!
Reply all
Reply to author
Forward
0 new messages