Introducción
El presente tutorial tiene por objetivo presentar de manera sencilla como poder utilizar y realizar una conexión estándar TCP/IP a través de comandos AT para luego, mediante el protocolo HTTP poder acceder al contenido de una página web.
Protocolo HTTP
El protocolo HTTP (Hipertext Transfer Protocol) es un protocolo diseñado para intercambiar información entre un cliente y un servidor.
HTTP trabaja como un protocolo de “Petición-Respuesta” (request-response) entre un cliente y un servidor.
Un cliente puede ser un navegador (Mozilla por ejemplo) mientras que un servidor puede ser una aplicación en un computador que mantiene una página web.
Para hacer un request mediante el método “GET” se deben realizar los siguientes pasos.
Conexión TCP/IP
Primero, se debe generar una conexión TCP mediante el envío de los siguientes comandos:
I. AT+QIFGCNT=0 // Selecciona un contexto para la conexión
Respuesta: OK
II. AT+QICSGP=1,”mi APN” // Ingresa os datos del “APN” para el contexto seleccionado, donde en “mi APN” se debe ingresar la APN correspondiente a la tarjeta SIM utilizada.
Respuesta: OK
III. AT+QIDNSIP=1 // Se indica al modem que la dirección del servidor es un nombre de dominio (ejemplo www.olimex.cl).
Respuesta: OK
IV. AT+QINDI=1 // Permite que los datos recibidos en el modem sean primero avisados mediante el mensaje +QIRDI:
Respuesta: OK
V. AT+QIMUX=0 // Le indica al modem si pueden existir múltiples sesiones TCP al mismo tiempo. Cero indica que no permite esta situación.
Respuesta: OK
VI. AT+QIMODE=0 // Selecciona modo transferencia en TCP/IP. En este caso se selecciona modo normal en donde para enviar datos hacia un servidor se utiliza AT+QISEND
Respuesta: OK
VII. AT+QIOPEN=”TCP”,”www.olimex.cl”,”80″ // Se abre la conexión
Respuesta : {0D}{0A}OK{0D}{0A}{0D}{0A}CONNECT OK{0D}{0A}
Nota: La respuesta OK llega de inmediato, mientras que la respuesta CONNECT OK se puede tardar hasta 15 segundos.
Método get
Para hacer un request mediante el método “GET” se deben realizar los siguientes pasos.
I. Se ejecuta el comando AT+QISEND
La respuesta a este comando es >
Una vez recibido el carácter “>” se envía el método GET de la siguiente manera:
GET /hello.html / HTTP/1.1#013#010#013#010Connection: close#013#010#013#010#026
II. Después de enviar GET se debe finalizar la acción con el “Ctrl-Z” (1A en HEX o 26 en DEC)
Una vez enviada esta trama el modem responde SEND OK lo que indica que la trama está correctamente ejecutada.
Finalmente, el modem recibe +QIRDI: 0,1,0 lo que indica que el modem ha recibido datos desde el servidor.
Para recuperar los datos se debe ejecutar el siguiente comando:
- AT+QIRD=0,1,0,1024#013#010
La respuesta a este comando es la siguiente:
+QIRD: 186.67.78.27:80,TCP,936{0D}{0A}HTTP/1.1 200 OK{0D}{0A}Date: Tue, 20 Oct 2015 19:00:48 GMT{0D}{0A}Server: Apache{0D}{0A}Last-Modified: Tue, 20 Oct 2015 13:39:53 GMT{0D}{0A}ETag: “16c393a-2a1-52289658d41bb”{0D}{0A}Accept-Ranges: bytes{0D}{0A}Content-Length: 673{0D}{0A}Vary: Accept-Encoding{0D}{0A}Connection: close{0D}{0A}Content-Type: text/html{0D}{0A}{0D}{0A}<h1>Hello World </h1>{0A}<br>{0A}No one knows exactly why Hello World has stood the test of time so well.<br>{0A}The most likely historical explanation is simply that a short program like <br>{0A}Hello World once allowed the programmer to make sure that a language’s compiler,<br>{0A}development environment, and run-time environment were correctly installed. Because this <br>{0A}involved a lot of work, a very simple program was used first to test things out. <br>{0A}According to Wikipedia, the tradition of using the phrase “Hello, world” as the test <br>{0A} message was influenced by an example program in the book <br{0A}>”The C Programming Language”, by Brian Kernighan and Dennis Ritchie.{0A}{0A}{0D}{0A}OK{0D}{0A}{0D}{0A}CLOSED{0D}{0A}
Lo anterior corresponde a la respuesta de la siguiente página web:
