Emulación de dispositivos de 1 cable

10

Lo que quiero hacer es convertir un ATTiny IC en esclavo en el bus de 1 cable, con su propia S / N y lista de comandos para sus funciones específicas.

Lo que quiero saber es si puedo usar la biblioteca de un cable del sitio arduino para enviar datos como esclavo.

Por ejemplo, puede tener un esclavo en una habitación con múltiples tipos de sensores que informarían al maestro sobre la información solicitada, o el maestro puede decirle que controle algo como las persianas.

Pregunta ¿Tendría que controlar la línea de bus y responder a una solicitud del maestro y también tener en cuenta la forma en que un sensor normal enviaría datos? ¿A qué frecuencia debo ejecutar el esclavo para obtener la mejor funcionalidad?

No usaré el poder parasitario, como nota.

RSM
fuente
@Gerben: lo había encontrado antes en una búsqueda. Lo hojeé. Pero estaba preocupado porque hubo algunos errores, aunque resuelto, no sé la fiabilidad. También buscar diseños de enemigos con esclavos personalizados no parecía algo común, de ahí la pregunta anterior.
RSM
Parece decir que la biblioteca lo admite. Aquí hay una biblioteca específicamente para eso , creo. La velocidad parece estar alrededor de 15 kbps. Creo que la velocidad de la CPU realmente no importa, pero eso depende de la biblioteca. Si no funciona con batería, simplemente ejecútelo a 8mhz o 16mhz, y debería estar bien.
Gerben
@ Gerben Probaré la biblioteca para ver cómo funciona. Una cosa que todavía no entiendo es por qué es tan raro que algunas cosas no utilicen el esclavo de un cable.
RSM
@RSM Debería consultar esta biblioteca github.com/MarkusLange/OneWireSlave
Ryu_hayabusa

Respuestas:

3

Hasta donde sé, la biblioteca de 1 cable que vinculaste en tu pregunta solo permite actuar como maestro, no como esclavo.

Acabo de lanzar una biblioteca para convertir una placa Arduino en un esclavo de 1 cable, aquí: https://github.com/neuoy/OneWireArduinoSlave (editar: movido aquí https://gitea.youb.fr/youen/OneWireArduinoSlave ) Lo uso en mi sistema de automatización del hogar personalizado, y funciona sin problemas en mi configuración (el maestro de 1 cable, un DS9490R, está conectado a una computadora portátil a través de USB, y también proporciona energía al Arduino, que es un Arduino Uno). La biblioteca maneja detalles de bajo nivel: coincidencia de rom, envío y recepción de bytes (que en realidad es bastante difícil de corregir, casi imposible sin un analizador lógico). El resto depende de usted.

Se implementa completamente con interrupciones, todas las comunicaciones se realizan en segundo plano, puede ejecutar otro código como de costumbre, en paralelo, y las devoluciones de llamada se notifican cuando se reciben bytes, etc. El envío de bytes al maestro también es asíncrono.

También sé que existe al menos otra biblioteca, https://github.com/MarkusLange/OneWireSlave , como comentó anteriormente Ryu_hayabusa. No funcionó para mí (no sé si es por mi configuración de hardware o por otra razón), pero definitivamente funciona para otros, por lo que también vale la pena intentarlo. Parece que esta biblioteca no se implementa con interrupciones, por lo que su programa se bloquea mientras espera la actividad maestra (que es perfectamente aceptable en muchos escenarios).

youen
fuente
El repositorio parece haberse trasladado a gitea.youb.fr/youen/OneWireArduinoSlave
Jonas Berlin el
1
@JonasBerlin De hecho, he movido el repositorio (solo edité la respuesta para reflejar eso). Dejo el enlace anterior como una copia de seguridad por si acaso, y como referencia para encontrar otras bifurcaciones en GitHub.
Youen
¿Deberían copiarse los problemas tal vez?
Jonas Berlin