TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: Marttyn en 05 de Julio de 2022, 08:56:18
-
Hola!
Me planteo crear un pequeño escape room (https://es.wikipedia.org/wiki/Escape_room) :police:
Rapidamente y para el que no sepa lo que es: un escape room es una sala/habitacion en la que te quedas encerrado y tienes que conseguir escapar con ingenio resolviendo diferentes puzzles y enigmas hasta conseguir desbloquear la puerta de salida. Todo en un tiempo determinado.
Mi idea es que haya varios retos y puzzles electronicos que al resolverse activen algo (una puerta, una luz, etc). Cada puzzle es "autonomo", es decir, puede desbloquar o activar algo por si mismos (abrir una trampilla por ejemplo). Pero tambien quiero que estos se puedan controlar desde un sistema central (un PC o una raspberry), y que tambien se puedan comunicar entre si.
Por ejemplo si al presionar una combinacion de botones en un teclado numerico se enciende una luz, pero esta luz puede estar en la otra punta de la sala, y en vez de cablearlo directamente, quiero que el "modulo del teclado" se comunique con el "modulo de la luz", a la vez que el sistema central tenga feedback del estado de cada modulo y poder activarlos tambien.
Me pregunto cual seria el mejor sistema para comunicar diferentes sistema entre si.
He investigado un poquito y he pensado que un CAN bus podria valer por ser sencillo de usar e implementar, ademas de solo necesitar 2 hilos de conexion y ser inmune al ruido.
Tambien he pensado en sistemas de domotica cableado como KNX o x10. Incluso me he planteado DMX...
La verdad es que nunca he usado ninguno de estos protocolos mencionados. Pero me imagino que habra librerias para poder usar facilmente. Mi intencion es escoger el mas simple de implementar tanto a nivel hardware como software.
Que me aconsejan? :-/
-
LIN
https://en.wikipedia.org/wiki/Local_Interconnect_Network
Más sencillo que el CAN bus.
UART sobre una línea de datos.
https://electronics.stackexchange.com/questions/18762/tx-rx-uart-communication-between-2-mcu-over-1-line
-
Muy interesante LIN, no tenia conocimiento!
Pero por lo que veo es un master y hasta 16 slaves.
Esto me permitiria comunicar slaves entre ellos?
Como iniciaria un slave la comunicacion con otro si es el master el que dice quien habla y quien no?
Por ultimo, que tipo de cable se usa para una comunicacion LIN de unos cuantos metros?
-
Marttyn, ¿y porqué no pones un ESP8266 en cada dispositivo y te olvidas de cablearlos?
Con una red wifi lo tendrías.
Y de hecho podrías actualizar el firmware en remoto sin tener que tocar ni un tornillo cada vez que quieras, lo que te permitiría cambiar las claves o las condiciones de apertura de las puertas a tu antojo.
-
Siendo sincero, no controlo mucho de comunicacion inalambrica, y me da miedo que interferencias o que uno pierda la conexion me mande todo al traste.
Ademas la configuracion inicial y la programacion me parecen mas complejas... Quizas me equivoque, pero con un bus CAN, solo tengo que decir a quien va dirigido el paquete y sus datos para que todo funcione. Casi como una memoria I2C. Nunca me he metido con bus CAN, igual no es tan simple como creo :D
Si quieres ofrecer soporte y estas convencido de que un ESP8266 / ESP32 pueden ser fiables, estaria encantado de contratarte como asesor :)
-
Siendo sincero, no controlo mucho de comunicacion inalambrica, y me da miedo que interferencias o que uno pierda la conexion me mande todo al traste.
Ademas la configuracion inicial y la programacion me parecen mas complejas... Quizas me equivoque, pero con un bus CAN, solo tengo que decir a quien va dirigido el paquete y sus datos para que todo funcione. Casi como una memoria I2C. Nunca me he metido con bus CAN, igual no es tan simple como creo :D
Si quieres ofrecer soporte y estas convencido de que un ESP8266 / ESP32 pueden ser fiables, estaria encantado de contratarte como asesor :)
TCP/IP sobre Ethernet y/o WiFi, esa creo que sería la mejor opción.
-
Como te dicen, lo más fácil es TCP/IP, si te preocupa que puedan existir interferencias, podrías agregar redundancia.
El protocolo que te serviría para desacoplar cada uno de los componentes sería el MQTT, el que además tiene la capacidad de saber cuando un elemento se ha desconectado.
Además, si tienes en cuenta que los ESP32 cuenta con Bluetooth, si colocas varios podrías conocer la ubicación aproximada de un dispositivo.
-
Pero lo más cómodo es cablear la alimentación de los dispositivos. Los ESP8266 consumen bastante corriente y habría que estar cambiando baterías cada poco tiempo.
Hay soluciones inalámbricas de menor consumo, como los módulos NRF24L01.
https://descubrearduino.com/nrf24l01/
https://www.mouser.com/datasheet/2/297/nRF24L01_Product_Specification_v2_0-9199.pdf
-
Pero lo más cómodo es cablear la alimentación de los dispositivos. Los ESP8266 consumen bastante corriente y habría que estar cambiando baterías cada poco tiempo.
Hay soluciones inalámbricas de menor consumo, como los módulos NRF24L01.
https://descubrearduino.com/nrf24l01/
https://www.mouser.com/datasheet/2/297/nRF24L01_Product_Specification_v2_0-9199.pdf
Hola
Yo tambien apuesto por el nrf24l01, los he usado y son muy robustos, además tienes mucha documentación al respecto sobre como usarlos, programarlos, etc.
Saludos
Anto
-
Gracias por todas las respuestas!
Un NRF20L01 puede hacer una comunicacion entre 2 dispositivos, pero puedo crear una red de forma simple?
La solucion de usar ESP8266 y un router creo que simplifica bastante todo, aunque no es la opcion mas barata. Pero creo que de cara al futuro va a ser la mejor opcion. Lo que dice Noc es cierto, una vez este todo cableado, no quiero tener que abrirlo para reprogramar uno de los dispositivos. Un flasheo OTA es lo ideal.
-
Yo creo que con los NF24L01 si se puede crear una red.
Basta con identificar cada uno con un número de ID distinto
Es como si tuvieras un maestro y muchos esclavos.
Evidentemente el maestro deberá ir cambiando el número ID según con el el NFR que se quiera hablar
F.
-
Gracias por todas las respuestas!
Un NRF20L01 puede hacer una comunicacion entre 2 dispositivos, pero puedo crear una red de forma simple?
La solucion de usar ESP8266 y un router creo que simplifica bastante todo, aunque no es la opcion mas barata. Pero creo que de cara al futuro va a ser la mejor opcion. Lo que dice Noc es cierto, una vez este todo cableado, no quiero tener que abrirlo para reprogramar uno de los dispositivos. Un flasheo OTA es lo ideal.
Hola!
Si se puede hacer un maestro-esclavo como en sistemas cableados, solo es el maestro el que pregunta cada x tiempo a los esclados y estos responden solo cuando les pregunten, etc. Aqui tienes algun ejemplo https://forum.arduino.cc/t/simple-nrf24l01-2-4ghz-transceiver-demo/405123 (https://forum.arduino.cc/t/simple-nrf24l01-2-4ghz-transceiver-demo/405123)
Yo el tema del wifi no te lo recomiendo salvo que tengas pocos dispositivos o tengas un router muy bueno, me paso como a ti que tenia mis dudas y mi jefe/amigo me demostro como los routers/puntos de acceso normalitos se saturan cuando el numero de clientes empieza a crecer. Te comento por si empiezas a integrar y desarrollar todo, te das cuenta despues que algunas cosas no comunican, se cae las conexiones, etc; por ahi van los tiros.
Saludos
Anto
-
Gracias por el dato! Tendre que buscar un buen router entonces.
Pero lo prefiero a tener que desarrollar un maestro funcionando como router.