Conexión bidireccional entre un dispositivo y un servidor web

0

Soy un desarrollador de software, no estoy familiarizado con los dispositivos electrónicos, pero estoy trabajando con personas que están familiarizadas con ellos. Nuestro problema es: Necesitamos diseñar un dispositivo pequeño capaz de comunicarse con un servidor web.

Hemos cubierto el dispositivo al servidor mediante solicitudes http, pero ¿cómo podemos hablar con el dispositivo desde el servidor?

Requisitos:

Debe ser inalámbrico

Rango: creo que será a través de GSM, así que entiendo que será necesario estar dentro del radio de la señal.

Tamaño: 4 cm de ancho, 2 cm de altura, 2 cm de ancho aprox.

Consumo de energía: no podría decirlo, probablemente deba trabajar con menos de 600mAh como fuente de batería.

Gracias de antemano por cualquier consejo, orientación que pueda darnos.

    
pregunta Areks

2 respuestas

3

La mayoría de los módems celulares son cuadrados en lugar de rectangulares y pueden ser tan grandes como 40 mm cuadrados. Uno de los más pequeños que casi cumple con sus requisitos es Sierra Cuatribanda GSM / GPRS AirPrime HL6528 que es de 22 mm x 23 mm x 2,5 mm. Recuerde que además de ese espacio, también necesitará una antena que ocupa un poco de espacio y un soporte de tarjeta SIM.

He hecho un par de productos diferentes en los que necesitábamos tener un canal de comunicación bidireccional abierto a un servidor y poder iniciar una sesión desde cualquier extremo. Se escribió un programa en C # (.NET) que controlaba el lado del servidor, que se colocaba en un puerto específico y escuchaba las conexiones entrantes (por ejemplo, 111.222.333.444:5555).

Usando los comandos AT necesarios para el módem celular (los que configuran las conexiones de datos generalmente son propiedad de cada fabricante), se estableció una conexión TCP / IP entre el módem y el puerto en el servidor. En ese momento, sin ningún protocolo adicional (aparte de lo que diseñamos para nosotros mismos), el módem podría "hablar" directamente al servidor.

Ahora, si el servidor quería iniciar una comunicación con el módem celular, el truco es llamar la atención del dispositivo sin tener una conexión activa hasta todos los Tiempo (el módem, por supuesto, todavía necesita ser encendido y registrado en la red).

Uno podría intentar hacer una "llamada" al número de teléfono asociado con el módem. Pero, francamente, no sabía cómo hacerlo desde el servidor. En cambio, lo que hice fue enviar un mensaje SMS desde el servidor al módem (hay muchos servicios web diseñados para hacer esto), y luego el firmware del dispositivo sabría que "llamar a casa". Había un conjunto de comandos para el módem que permitía escuchar mensajes SMS entrantes; Se requirió muy poca codificación para manejarlos. Esto también permite la potencia mínima que puede obtener y aún estar en la red.

Para evitar las tarifas de SMS, otra posibilidad sería colgar un módem GSM de su servidor mediante un cable USB a UART y marcar el número de teléfono de su dispositivo. Entonces iría ANILLO ... ANILLO. Podría usar esto como la indicación de "llamar a casa". Como la llamada nunca se contesta, no se le debe cobrar por ello. El número de teléfono de su módem (que en realidad está almacenado en la tarjeta SIM) debe estar disponible a través de un comando AT.

En lo que respecta al consumo de energía, todo depende del ciclo de trabajo de sus mensajes. El módem particular al que estoy vinculado arriba toma un máximo de 360 mA. Por lo tanto, el promedio es probablemente mucho menos, pero mantengamos el máximo como el peor de los casos. Si cada sesión de datos toma dos minutos, y usted envía una vez por hora, con una batería de 600 mAh durará un máximo de 600 / (360 / (60/2)) = 50 horas, que no incluye la corriente de espera. Supongamos que es el 10% del máximo, por lo que ahora tiene 45 horas. Además, no puedes agotar la batería hasta cero.

    
respondido por el tcrosley
0

La forma tradicional de hacerlo es mediante un sondeo de solicitud http. Si usted es un desarrollador de software, probablemente ya haya jugado con AJAX y XHR de sondeo en las páginas web. Mismo concepto implementado solo en hardware.

Si desea una conexión persistente, es posible que desee ver websockets. La especificación es bastante simple, por lo que no es demasiado difícil de implementar en el hardware.

Por supuesto, simplemente puede abrir una conexión TCP simple y abandonar http por completo. Diseñe su propio protocolo como telnet o ssh o IRC que se comunique a través de un socket persistente. Luego simplemente haga que el programa del servidor se comunique con su servidor web (¿quizás a través de las actualizaciones de la base de datos?).

Personalmente probaría la primera opción primero. Es lo más fácil de implementar ya que ya tiene la parte http en funcionamiento.

    
respondido por el slebetman

Lea otras preguntas en las etiquetas