¿Cómo conectar ATTiny45 a Arduino a través de serial / spi / i2c y enviar datos?

2

Estoy tratando de crear un sistema de alarma inteligente para mi casa. Quiero tener un arduino como maestro y varios otros AtTiny como esclavos para recopilar datos como temperatura, humedad, concentración de gas, puertas abiertas, etc.

¿Cómo conecto varios AtTiny con cables a un Arduino maestro? ¿Cuál es la forma más inteligente de comunicarse entre ellos? He leído que AtTiny's no es compatible con spi o i2c pero puedes "hackearlo" de alguna manera.

EDITAR: la distancia entre el maestro y el esclavo puede ser de 1 a 10 metros.

    
pregunta Radolino

2 respuestas

2

Si utiliza esos ATtiny que no tienen soporte de SPI o I2C con hardware , es probable que pueda implementarlo en el software, asumiendo que no tendrá ningún procesamiento de CPU pesado en el ATtiny ( que es típicamente el caso para la mera lectura del sensor). Dicho esto, a excepción de los de 6 pines, la mayoría de ATtiny tiene soporte de hardware tanto para I2C como para SPI (consulte selector de producto ).

Al elegir entre I2C y SPI, elegiría la configuración de esclavo múltiple y el número limitado de pines de ATtiny (se necesitan 2 pines para I2C y 4 para SPI).

    
respondido por el abey
2

En realidad, los ATTinys tienen hardware para admitir TWI (la variante I2C) o SPI, conocido como la "Interfaz de serie universal". Puedes hacer una de ellas a la vez, no la otra. Además, tiene que hacer cosas de protocolo como "buscar la dirección de esclavo adecuada" en el software: el hardware detectará la condición de inicio y mantendrá el reloj bajo hasta que esté listo para recibir un byte, pero luego tendrá que compare ese byte con su propia dirección y luego ingrese un ciclo de sondeo si coincide. (Tenga en cuenta que los tiempos de subida / caída de I2C no están garantizados en estos dispositivos).

Lo mismo para SPI; puede obtener interrupciones y datos para la selección de esclavos SPI y la transferencia de datos, y puede transferir los datos de usted al maestro también en el hardware, pero tiene que alimentarlos manualmente cada byte, y como maestro, realmente debe generar el reloj manualmente (ingresando un bucle que destella el bit del reloj)

He utilizado I2C para comunicaciones de bus de media distancia en un robot, y funcionó bien. No sé si funcionaría tal y como está a más de 10 metros. Es posible que desee modular en un par de cables RS-485 y des-modular en el otro extremo, por ejemplo. Eso probablemente funcionaría muy bien, a 100 kHz o menos. Los circuitos del controlador RS-485 son baratos y fáciles de trabajar. Necesitará dos pares trenzados para las comunicaciones, por lo que el cableado telefónico regular. (Más si también quieres enviar poder).

Si eso es demasiado molesto para ti, sugeriría usar XBees para comunicaciones con el firmware de la serie 1 (así, "cables de aire" regulares para UART.) Los Attinys no hacen UART de forma nativa, pero puedes emularlo con la USI (solo dúplex único) o bit banging (solo velocidades de datos lentas).

Dicho esto, ¿por qué estás usando ATTinys? El costo de un ATmega en cantidad 25 es algo así como $ 2. También podrías tener un chip real en cada extremo :-)

    
respondido por el Jon Watte

Lea otras preguntas en las etiquetas