Tabla de contenido:

Cree un módulo de luminosidad con AtHome: 7 pasos
Cree un módulo de luminosidad con AtHome: 7 pasos

Video: Cree un módulo de luminosidad con AtHome: 7 pasos

Video: Cree un módulo de luminosidad con AtHome: 7 pasos
Video: Como realizar doble función luces led fijas y flash 12v y 24v 🟣🔵🟢🔴🟡 2024, Noviembre
Anonim
Cree un módulo de luminosidad con AtHome
Cree un módulo de luminosidad con AtHome

AtHome es un proyecto de estudiante de código abierto y hardware abierto realizado por el grupo AtHome de Epitech, con el objetivo de desarrollar una solución conectada de varios módulos de sensores individuales que se comunican con una base de datos autohospedada que expone una API utilizada para alimentar una aplicación de teléfono inteligente y una aplicación web. Los módulos monitorean el ambiente interior de una casa y son capaces de dar una retroalimentación visual al usuario, pasando de verde (bueno) a rojo (malo) y los datos transmitidos son visibles por el usuario a través de la comunicación serial de un módulo o en nuestras aplicaciones si las usa.

Aunque este proyecto aún se encuentra en un desarrollo activo, las funcionalidades básicas de nuestros módulos ahora están listas y supuestamente fáciles de usar para desarrollar módulos personalizados. Entonces, es por eso que les propongo que vean cómo construir su propio módulo simple con este ejemplo de módulo de luminosidad.

Estos módulos están básicamente construidos con una placa compatible con Arduino (un núcleo Arduino parcial debería ser suficiente siempre que tenga Stream, Wire y un soporte de flujo UART), un LED (rojo o RGB) que se vuelve rojo en caso de problema, un sensor, una fuente de alimentación (fuente de alimentación de pared o batería) y una carcasa cortada con láser.

Sí, definitivamente no es nuevo, hay muchos proyectos de sensores, pero esperamos que otras características, como la detección de problemas de salud, la comunicación y el almacenamiento de información en un servidor autohospedado y una aplicación de visualización, lo ayuden. O si solo quieres hacer un seguimiento de tu casa, proyectos sencillos o no menos interesantes:)

Paso 1: Recopilación de componentes

Recopilación de componentes
Recopilación de componentes

Para este proyecto, necesitará algunos componentes para construir su módulo AtHome:

  • 1x placa compatible con Arduino: aquí usaré un Arduino UNO (pero también funciona con otras placas como TI Launchpads y placas ESP8266)
  • Sensor 1x: usaré un sensor de luminosidad TSL2561 (la lista de sensores compatibles está disponible en la documentación de nuestra biblioteca)
  • 1x led: usaré un LED RGB Grove Chainable aquí (pero también puede ser un simple led rojo o un NeoPixel)
  • Alambres Dupont

La lista de componentes compatibles está disponible en la documentación de nuestro proyecto.

Paso 2: Instalación de nuestra biblioteca

Instalación de nuestra biblioteca
Instalación de nuestra biblioteca
Instalación de nuestra biblioteca
Instalación de nuestra biblioteca

Para instalar nuestra biblioteca, deberá descargarla de nuestro repositorio (lo publicaremos más adelante en la lista de IDE de Arduino y PlatformIO) con este enlace:

gitlab.com/Woodbox/Framework/-/jobs/artifacts/master/download?job=deploy

Luego, vaya al IDE de Arduino y elija "Sketch> Incluir biblioteca> Agregar biblioteca. ZIP …". Luego seleccione el archivo zip llamado "artifacts.zip" y haga clic en "Aceptar".

Paso 3: instalación de las bibliotecas necesarias

Instalación de bibliotecas necesarias
Instalación de bibliotecas necesarias
Instalación de bibliotecas necesarias
Instalación de bibliotecas necesarias
Instalación de bibliotecas necesarias
Instalación de bibliotecas necesarias

Para funcionar, nuestra biblioteca necesita que otras bibliotecas estén instaladas en su computadora:

  • Biblioteca Arkhipenko TaskScheduler
  • Biblioteca de sensores de luz digital SEEED Studio Grove
  • Biblioteca LED RGB encadenable de SEEED Studio Grove
  • Biblioteca Adafruit NeoPixel

Puede instalarlos a través del administrador de bibliotecas del IDE de Arduino, yendo a "Sketch"> "Incluir biblioteca"> "Administrar bibliotecas …".

En la nueva ventana que se abrirá, escriba en la barra de búsqueda blanca el nombre de la biblioteca que desea instalar, luego haga clic en su bloque. Aparecerá un botón "Instalar", solo necesita hacer clic en él y el IDE lo descargará e instalará por usted.

Paso 4: Montaje del módulo

Montaje del módulo
Montaje del módulo

Comenzaremos con el sensor. Conecte a través de un cable el pin VCC del TSL2561 al pin 5V del Arduino, el pin GND del sensor a uno de los pin GND del Arduino y los pines SDA y SCL del sensor a los pines SDA y SCL del Arduino. ¡Ya terminaste!

Ahora, conecte el pin VCC del LED RGB Grove Chainable al pin 5V del Arduino y el pin GND del LED al segundo GND del Arduino. Si es Arduino como solo un pin de 5V, puede usar una placa de pruebas para conectar el 5v del Arduino a una fila + de la placa de pruebas y conectar todos los pines de 5V de sus componentes en él, o soldarlos juntos en un trozo de placa o use conectores wago o lo que prefiera. Ahora, conecte el pin CI de su LED al pin 7 de su Arduino y el pin DI de su LED al pin 8 de su Arduino. Si no tiene un LED de este tipo, no se preocupe, es posible usar el LED incorporado de su placa Arduino o uno clásico con solo un pequeño cambio en el código.

Paso 5: escribir el boceto del módulo de luminosidad

Escribir el boceto del módulo de luminosidad
Escribir el boceto del módulo de luminosidad

Creemos un nuevo boceto y escribamos el código para nuestro módulo.

Si no le interesa la explicación del boceto, puede copiarlo y pegarlo en su IDE de Arduino:

#incluir

usando LightModule = AtHomeModule; Stream * streams = {& Serial, nullptr}; GroveChainableLED:: Pines grovePins = {7, 8}; GroveChainableLED led (y grovePins); Módulo de luz * módulo = Módulo de luz:: getInstance (); void setup () {// ponga su código de configuración aquí, para que se ejecute una vez: Serial.begin (9600); módulo-> setStreams (corrientes); GroveDigitalLightSensor * lightSensor = nuevo GroveDigitalLightSensor (); módulo-> setSensor (sensor de luz); módulo-> setDisplay (& led); módulo-> configuración (); } void loop () {// ponga su código principal aquí, para que se ejecute repetidamente: módulo-> ejecutar (); }

Si desea comprender todo lo que hace este código, puede leer lo siguiente o, si no está interesado, puede pasar directamente al siguiente paso.

Para comenzar, necesitamos incluir nuestra biblioteca en nuestro boceto escribiendo esta línea en la parte superior del boceto:

#incluir

Ahora, necesitamos crear un alias para el objeto de módulo que usaremos. Puedes verlo como un cuadro con varios botones que se utilizan para cambiar sus componentes, iniciarlo, detenerlo,… etc. Como es una caja construida por una plantilla (como la plantilla habitual que usamos para proyectos como humanos, tiene una base de inicio y el compilador de Arduino construye el código final en base a los parámetros que le damos) definiendo el tipo que representa un valor de sensor y el número de valores de sensor que queremos mantener en la memoria, se especifica en su nombre y normalmente debería repetirse cada vez que queremos usarlo. Lo cual es un poco molesto, por eso asociaremos un nuevo nombre, un alias, al nombre completo de este cuadro.

Digamos, por ejemplo, que quiero que este cuadro se llame "LightModule", ya que se usará para implementar un módulo de monitoreo de luminosidad y quiero mantener solo 1 valor a la vez. La luminosidad está representada en lux como un tipo integral por nuestro sensor TSL2561, que es representado como uint16_t por computadoras. Nuestro alias se verá así:

usando LightModule = AtHomeModule;

la palabra clave "using" significa que estamos creando un alias y el nombre que le damos justo después corresponde a la secuencia después del carácter "=".

"AtHomeModule" es el nombre real de este cuadro, le estamos dando un nuevo nombre, y los parámetros que definen la representación del valor y el número de valores guardados en la memoria se enumeran entre "".

Ahora, cuando usemos más adelante el nombre "AtHomeModule", Arduino sabrá que se refiere al nombre completo "AtHomeModule".

Si quieres que tu caja pueda mantener 5 valores en la memoria en lugar de 1, solo necesitas reemplazar el "1" por "5" y Arduino generará para ti un tipo diferente de caja capaz de hacer lo que quieras. Sin embargo, tenga en cuenta que si el módulo está programado para enviar sus valores antes de que tenga tiempo de medir 5 valores del sensor de manera efectiva, nunca verá que se envíen 5 de ellos, ya que envía solo los nuevos valores desde la última carga.

A continuación, necesitamos crear una matriz de punteros que contengan punteros en los flujos de Arduino utilizados por el módulo para comunicarse, siempre terminados por el keyworkd "nullptr". Aquí, estoy usando solo el flujo "Serial" del Arduino que se comunica con la computadora a través del puerto USB, por lo que la matriz se ve así:

Stream * streams = {& Serial, nullptr};

El carácter "*" significa que el tipo es un puntero (la ubicación del elemento, no el elemento en sí) y los corchetes "" significan en Arduino que es una matriz, por lo que podemos poner varios valores.

A continuación, necesitamos crear nuestro LED. Para hacer esto, necesitamos escribir las siguientes dos líneas;

GroveChainableLED:: Pines grovePins = {7, 8};

GroveChainableLED led (y grovePins);

Si no tiene un LED Grove RGB pero aún desea una retroalimentación visual, puede hacerlo con un simple cambio en el boceto. Reemplace las dos líneas anteriores por esta línea:

LED monocromático LED (LED_BUILTIN);

En esta configuración, el LED verde incorporado se encenderá siempre que el valor monitoreado sea adecuado para la salud y se apagará cuando esté fuera de enlace. Si prefiere que se encienda cuando esté fuera de enlace (porque está usando, por ejemplo, un LED rojo en lugar del verde en el pin 13), puede usar esta línea en su lugar:

LED monocromático LED (LED_BUILTIN, verdadero);

El siguiente paso es crear nuestro propio módulo. Se hace la primera vez que obtenemos su ubicación en la memoria llamando al método "getInstance", así:

Módulo de luz * módulo = Módulo de luz:: getInstance ();

Luego, necesitamos configurar los parámetros en la función "setup ()" de Arduino, comenzando por inicializar el puerto "Serial" como es habitual en los bocetos de Arduino:

Serial.begin (9600);

Creamos el sensor de luz escribiendo esta línea:

GroveDigitalLightSensor * lightSensor = nuevo GroveDigitalLightSensor ();

Luego, le decimos a nuestro módulo que use nuestra matriz de punteros en Arduino Stream para comunicarse a través de ellos:

módulo-> setStreams (corrientes);

También le decimos a nuestro módulo que use nuestro sensor de luz para monitorear la intensidad de la luz donde está el módulo:

módulo-> setSensor (sensor de luz);

Le decimos a nuestro módulo que use nuestro LED para darnos una retroalimentación visual:

módulo-> setDisplay (& led);

Finalmente, le decimos a nuestro módulo que está listo para realizar cualquier configuración interna que necesite al llamar a su propia función de "configuración":

módulo-> configuración ();

Nuestro último paso es ahora llamar a la función "run ()" de nuestro módulo, que está diseñado para ser llamado en cada iteración de la función "loop" de Arduino escribiendo esta línea dentro de la función "loop":

módulo-> ejecutar ();

¡Ahora, nuestro boceto finalmente está listo para cargarse en Arduino y probar nuestro módulo!

Paso 6: Probar nuestro módulo AtHome

Prueba de nuestro módulo AtHome
Prueba de nuestro módulo AtHome
Prueba de nuestro módulo AtHome
Prueba de nuestro módulo AtHome

Para subir el boceto al Arduino, elija su placa Arduino UNO yendo a "Herramientas"> "Puerto"> "[COMx o / dev / x] (Arduino / Genuino UNO)".

Por último, simplemente haga clic en el botón "Cargar" (el botón circular con una flecha apuntando hacia la derecha, el segundo icono de la barra de herramientas) para cargar el boceto en su tablero.

¡Se hace! Ahora su módulo debería estar funcionando y enviando valores a su computadora visibles en el Serial Monitor de Arduino. Puede verificarlo abriendo el "Monitor en serie" de Arduino en el menú "Herramientas" y debería tener una salida que se parezca a la segunda imagen de título de este paso:)

Paso 7: Elaboración de un caso para el módulo

Construyendo un caso para el módulo
Construyendo un caso para el módulo

Puede construir una caja simple para su módulo cortándola con láser en una tabla de madera contrachapada de 3 mm.

Para hacer nuestros estuches de caja, usamos makercase para preparar una plantilla en las dimensiones deseadas que personalizamos más adelante. Encontrará el archivo svg del módulo de luminosidad adjunto a este paso.

Luego solo pega las caras juntas excepto una para que puedas abrirla más tarde, coloca tu circuito adentro y pega el LED en el orificio de la carcasa (usamos cinta transparente para rellenar el orificio y difundir la luz además de pegar el LED al frente de ella).

Ahora solo agregue una batería para alimentar su Arduino, cierre la carcasa y su módulo estará listo y debería verse bien:)

Recomendado: