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 cable 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.
Si usa esos ATtiny que no tienen soporte de hardware de SPI o I2C, es probable que pueda implementar eso en el software, asumiendo que no tendrá ningún procesamiento pesado de CPU ejecutándose en el ATtiny (que suele ser el caso para la mera lectura del sensor) . Dicho esto, a excepción de los de 6 pines, la mayoría de los ATtiny tienen soporte de hardware tanto para I2C como para SPI (consulte el selector de productos ).
Al elegir entre I2C y SPI, elegiría el primero dada la configuración de múltiples esclavos y el número limitado de pines del ATtiny (se necesitan 2 pines para I2C y 4 para SPI).
En realidad, los ATTinys tienen hardware compatible con TWI (la variante I2C) o SPI, conocida como "Interfaz serial universal". Puedes hacer uno de ellos a la vez, no el otro. Además, debe hacer cosas de protocolo como "buscar la dirección esclava adecuada" en el software: el hardware detectará la condición de inicio por usted y mantendrá el reloj bajo hasta que esté listo para recibir un byte, pero luego tiene 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/bajada de I2C no están garantizados en estos dispositivos).
Lo mismo para SPI; puede obtener interrupciones y datos para la selección del esclavo SPI y la transferencia de datos, y también puede transferir datos de usted al maestro en el hardware, pero debe alimentar cada byte manualmente, y como maestro, en realidad tiene que generar el reloj manualmente (ingresando un bucle que estrobosquea el bit del reloj).
He usado I2C para comunicaciones de bus de media distancia en un robot y funcionó bien. No sé si funcionaría como está a más de 10 metros; es posible que desee modular en un par de cables RS-485 y demodular en el otro extremo, por ejemplo. Eso probablemente funcionaría muy bien, a 100 kHz más o menos. Los circuitos del controlador RS-485 son baratos y fáciles de usar. Necesitaría dos pares trenzados para las comunicaciones, así que cableado telefónico normal. (Más si también desea enviar energía).
Si eso es demasiado para usted, le sugiero que use XBees para comunicaciones con firmware de la serie 1 (por lo tanto, "cables de aire" regulares para UART). Attinys no hace UART de forma nativa, pero puede emularlo con el USI ( solo dúplex simple) o golpes de bits (velocidades de datos lentas solamente).
Dicho esto, ¿por qué estás usando ATTinys? El costo de un ATmega en cantidad 25 es algo así como $2. También podría tener un chip real en cada extremo :-)
Abey
Radolino