El Kit Arduino sin soldaduras para principiantes se suministra con todo lo que usted necesita para crear un reproductor MP3, pero JJ fue más allá y sumó un sensor de luz ambiente Vishay al combo.
Una vez fuera el embalaje, el reproductor de música Adafruit estaba reproduciendo música en pocos minutos.
Ver Productos relacionados
Creemos nuestra propia aplicación donde la música reproducida dependa de la luz ambiente. El VEML6030 de Vishay se usa como sensor de luz ambiente para obtener el número de lux. Los datos se obtienen a través de un bus I2C.
Ver Productos relacionados
Aunque Arduino facilite enormemente la programación del bus I2C, es necesario entender los conceptos básicos para poder programarlo.
El bus I2C es estándar y se usa de forma generalizada para los sensores. Lo diseñó Philips (hoy día NXP) y funciona con solo 2 líneas: una línea para el reloj (SCL) y otra línea para los datos (SDA). Esta última línea es bidireccional. Estas dos líneas son de drenaje abierto y necesitan resistores elevadores. Estos son los resistores que se ven en la placa de pruebas. Obviamente, en una aplicación final, usted diseñará estos resistores en su placa. El maestro del bus genera el reloj y comienza la comunicación con el esclavo. Cada dispositivo esclavo tiene una dirección de 7 bits.
Ver Productos relacionados
El protocolo es el siguiente: el maestro envía un bit inicial (que es una transición de alta a baja de la SDA con la SCL alta) seguido de la dirección de 7 bits de la dirección con la que se quiere comunicar, y seguido después por un solo bit si desea escribir (bit a 0) o leer (bit a uno) desde el esclavo. Después de cada transmisión de 8 bits, el esclavo responde con un bit de ACK (la SDA se pone alta). Si el transmisor ve un bit 1, es un NACK (sin acuse de recibo)
El fin de la comunicación corresponde a un bit de STOP. Es una transición de baja a alta de la SDA con la SCL alta. Como el bit Comienzo y Parada se produce cuando la SCL está alta, el resto de la transición de SDA tiene lugar con la SCL baja.
Ahora que comprendemos cómo funciona el I2C, debemos leer la información de la hoja de datos del VEML6030 para conocer los valores que vamos a escribir en nuestro programa.
Primero, al leer el esquema del VEML6030, vemos que una clavija de dirección permite la configuración del valor de la dirección. En nuestra placa, esta clavija se conecta a tierra, lo que significa que la dirección del dispositivo es 0x10.
La hoja de datos explica la interfaz I2C y cómo mandar comandos. Cuando necesitamos escribir al dispositivo, necesitamos mandar la dirección, el código de comando. En el VEML6030, todos los registros son de 16 bits y el LSB debe ser el primero. Por lo tanto, el VEML6030 se debe configurar con una ganancia de un cuarto, un tiempo de integración de 100 ms y el sensor de luz ambiente encendido, con el LSB igual a 0x00 y el MSB igual a 0x18. En nuestro programa definimos los micros, incluida la biblioteca de cables, en la configuración se llama Wire.begin(), después en la función bucle, comenzamos una transmisión con la dirección del VEML6030, el comando de registro (0x00 en este caso) enviamos el LSB y MSB y finalmente agregamos endTransmission. Para obtener una explicación más detallada de estos comandos, puede visitar el sitio web de Arduino donde se explican las bibliotecas.
Una manera similar de leer los datos es comenzar una transmisión, enviar el valor de registro donde vamos a leer los datos, la función requestFrom con la dirección y 2 bytes para leer y, finalmente, leeremos los datos.
Convertimos el nivel de lux a un entero y finalmente decidimos qué música reproducir dependiendo del valor del lux.
Por debajo de 20, reproducimos música para dormir. De 20 a 50 lux, música para relajarse, de 50 a 800, música para una vida activa, y por encima de 800, nos imaginamos que usted está de camino a una fiesta y listo para escuchar música tecno.
Ahora está listo para crear su propia aplicación con cualquier clase de de sensores y personalizar su reproductor de música.