Me gustaría hacer un dispositivo en red (similar a la llamada de servicio de habitaciones de hotel) que tenga múltiples líneas de entrada que puedan identificarse de forma única en una computadora en la red.
Encontré un producto con una funcionalidad similar.
¿Supongo que el dispositivo requerirá un microcontrolador interconectado con un controlador de E/S Ethernet? ¿Necesito tener un sistema operativo para generar paquetes de mensajes TCP/IP que puedan detectarse en una PC? Amablemente sugiera un esquema de bloques que pueda seguir para hacer esto.
No me queda claro qué es exactamente lo que quieres. Creo que es como lo siguiente: tienes un número de líneas que tendrán que ser interconectadas por un microcontrolador, y este microcontrolador envía una señal a una computadora. La computadora procesa esta señal.
Para la parte del microcontrolador, puede usar un chip con ethernet integrado como el PIC18F67J60 que mencionó Olin. También puede usar un chip más pequeño (más fácil de programar) con un chip ethernet externo como el ENC28J60 . Puede escribir software para el microcontrolador utilizando la pila TCP/IP de Microchip , la pila TCP/IP de Olin Lathrop (consulte la sección "Firmware de ejemplo de red") o la implementación de Matthew Schinkel en Jalv2 .
Dado que el microcontrolador envía una señal a la computadora, lo más fácil es hacer que la computadora sea el servidor y el microcontrolador el cliente. Eso significaría que necesita algún tipo de servidor en la computadora. Te recomiendo que busques un servidor HTTP, porque hay la mayor cantidad de información disponible para él. Para Linux, puede usar un servidor LAMP ; para Windows, use WAMP o XAMPP.
Tendrá que crear un script del lado del servidor que procese la solicitud del cliente. El cliente tiene que llamar a ese script. Podría, por ejemplo, realizar la solicitud del cliente /button.php?button=17
cuando se haya presionado el botón número 17. Entonces, el script del lado del servidor podría ser así:
<?php
if (!isset($_GET['button'])) { // Check if ?button exists
die('The button variable is mandatory.'); // If not, quit
}
$button = (int) $_GET['button']; // Cast ?button to an integer
if ($button == 0) { // Check if it was an integer
die('Invalid button number.'); // If not, quit
}
// Do stuff with $button
Aquí hay un esquema de bloques:
Déjame explicarte esto.
Los botones y otras E/S forman la entrada para el microcontrolador que va a utilizar. Estos serían los botones con los que se conectará, pero también podrían ser otras cosas, como dispositivos I2C / SPI, o lo que sea.
Puede obtener información de este IO con programación básica de chips . El chip tiene que leer valores de las entradas.
El chip (podría ser un PIC) con ethernet (podría estar integrado) procesa la información de entrada y la transmite a la IP del servidor , por ejemplo, 192.168.0.10.
Para esto, primero debe enviarse al enrutador en la IP 192.168.0.1 usando la pila TCP/IP . No notarás esto en el chip. Es como ponerse en contacto con el servidor directamente.
El enrutador procesa el paquete y lo envía al servidor en 192.168.0.10. No tienes que hacer esto, el enrutador lo hace solo.
El servidor recibe una solicitud HTTP y necesita procesarla. Envía una respuesta al enrutador en 192.168.0.10, que la reenvía al chip. Esto no se muestra en el esquema de bloques porque no es necesario en esta aplicación: los datos deben enviarse desde el chip al servidor , pero no de regreso.
El servidor puede usar los datos del chip para mostrarlos en una pantalla, almacenarlos en un archivo o hacer otra cosa con ellos. Eso depende completamente de ti.
También puede, como sugiere Olin en los comentarios, usar un servidor TCP en lugar de un servidor HTTP. Esto es posible y más eficiente (que es un profesional teórico, no lo notará). Recomendaría un principiante en redes para ir con un servidor HTTP. Hay un montón de información sobre el tema y es muy fácil empezar. Si ya sabe cosas sobre redes, también puede construir un servidor TCP. Ninguno de los dos servidores sería más complejo de implementar en el lado del cliente.
Sugeriría usar un microcontrolador de bajo costo que uso llamado "Electric Imp", es pequeño (del tamaño de una tarjeta SD) y contiene todo lo que necesita para tener un botón que haga una conexión segura a través de wifi a Internet e incluso funcione en Potencia de la batería.
Por supuesto, una vez que presiona el botón en Internet, tiene 1001 opciones diferentes con lo que puede hacer con eso.
Una característica realmente agradable es que las actualizaciones de su código se envían al dispositivo desde Internet, por lo que se puede actualizar en el campo.
Obtenga un micro con capacidad Ethernet, como el PIC18F67J60, y conecte todos los botones a él. El micro rebota los botones. Cuando ve actividad que vale la pena informar, abre una conexión TCP a un servidor conocido en un puerto conocido, envía la información y cierra la conexión.
Jim Dearden
olin lathrop
Blamer