domingo, 25 de septiembre de 2016

PHP, JavaScript/AJAX, Gmaps & SIM900 GPRS

SIM900 GPRS, PHP, JS/AJAX, Gmaps
SIM900 GSM/GPRS

Este ejemplo básico consiste en enviar mediante GPRS del SIM900 datos a un sitio web para ser presentados adecuadamente, en nuestro caso los datos a enviar son: Latitud, Longitud, Fecha de adquisición, Hora de adquisición. Por lo tanto necesitamos de GMAPS para visualizar los datos correctamente.

Mediante la página web presentamos los datos de "geo-localización" los cuales son enviados por el SIM900 o cualquier otro módulo GPRS. La interfaz de visualización consiste en un sitio usando PHP, JavaScript/AJAX, Gmaps, MySQL, etc.

En el mapa del sitio se puede observar un marcador. Este marcador corresponde al último dato que ha recibido el servidor de parte del dispositivo AVL, es decir el último dato almacenado en la base de datos MySQL. Además el sitio nos permite ver la hora y fecha de adquisición del último dato mostrado. Todo dato enviado por el SIM900 al servidor será automáticamente marcado en el mapa y podremos observar cómo se va marcando la trayectoria del dispositivo.

La actualización del mapa con el último dato en servidor se realiza mediante AJAX, con ayuda de este preguntamos frecuentemente al servidor por el último dato recibido del dispositivo, y si el dato es el mismo no lo marca más. En caso de que un nuevo dato ha sido recibido por el servidor pero su valor corresponde al mismo punto marcado anteriormente entonces el sitio solo actualiza la fecha y hora del dato.

Este es un ejemplo básico, obviamente sería necesario un formulario para validar usuarios, cookies, ademas de control y protección de los scripts, keys, etc.


Sistema


último dato en MySQL DB -> Gmaps

Conexión
-
GET, GPRS SIM900

MySQL database/table

CREATE TABLE gprs.samples (
   sampleId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
   sampleDate DATE NOT NULL,
   sampleTime TIME NOT NULL,
   sampleLat VARCHAR(20) NOT NULL,
   sampleLon VARCHAR(20)NOT NULL
)default character set utf8;

INSERT INTO gprs.samples(sampleDate, sampleTime, sampleLat, sampleLon)
VALUES ("2016-02-02", "14:35:43", "12.1006", "-86.2435");

Insertar datos (GET):
localhost/site/scripts/update.php?date=2016-12-12&time=01:41:40&lat=12.1006&lon=-86.2435

Comandos AT (SIM900):

Recordar que [CR] = 0x0D, [LF] = 0x0A, [SUB] = 0x1A, (26), <ctrl+z>

AT [CR][LF]
AT+CPIN? [CR][LF]
AT+CSQ [CR][LF]
AT+CREG? [CR][LF]
AT+CGATT? [CR][LF]
AT+CGATT=1 [CR][LF]

AT+CSTT [CR][LF]
AT+CIICR [CR][LF]
AT+CIFSR [CR][LF]

AT+CIPSTATUS [CR][LF]

AT+CIPSTART="TCP","website.com",80 [CR][LF]
AT+CIPSEND [CR][LF]

GET /scripts/update.php?date=2016-12-12&time=01:41:40&lat=12.1006&lon=-86.2435 HTTP/1.0 [CR][LF]
Host: website.com [CR][LF]
Connection: close [CR][LF]
[CR][LF]
[SUB] 

Terminal:

Para este ejemplo he usado una simple terminal que he programado en QT5 framework C++, pero tu puedes usar cualquier terminal disponible Putty, TeraTerm, minicom, moserial, etc.

sydbernard terminal (QT5 C++)

Descargar Código fuente
Disculpen si no respondí antes, password: "sydbernard", "sydbernard1", "maniacmansion" ,"maniacmanison1". Alguno ha de servir.



SIM900 GPRS

GET (mysql,php)


5 comentarios: