Hola a todos
muchos de ustedes sin duda han estado involucrados en la replicación de una estación meteorológica o dispositivos de juguete inteligente DIY. Para esta aplicación, me gustaría presentarles hoy a un nuevo sensor de luz.
Hasta ahora, sólo teníamos una Diodo fotográfico en una tabla de ruptura así como el Fotodiodo con LM393 y contacto de conmutación ajustable en nuestra cartera para medir el brillo ambiental, ahora finalmente tenemos un sensor de luz que no sólo puede distinguir la luz y la oscuridad, sino también los valores de salida en Lux.
En nuestra nueva GY-302 Sensor se encuentra un BH1750 valores reproducibles fiables Lux Salidas. Gracias al regulador de voltaje fijo utilizado, la frambuesa, los ESP y los Arduino pueden funcionar sin problemas.
Claro, este módulo de sensor no es un dispositivo de medición de laboratorio calibrado, pero estos valores se pueden utilizar mucho más que con los sensores KY habituales. Durante mis pruebas con el sensor en casa, encontré que con los valores de salida es incluso posible distinguir qué lámpara está encendida en mi sala de estar.
El sensor BH1750 es bastante común y por lo tanto hay varias bibliotecas disponibles. Para ambos ESPEasy:
así como Tasmota:
apoyar este chip de sensor.
Puesto que es un sensor con una interfaz I2C, solamente se requieren cuatro conexiones, para el ejemplo de aplicación de hoy utilizamos un UNOR3:
Arduino UNITED Nations | GY-302 |
Gnd | Gnd |
5v | Vcc |
A4 | Sda |
A5 | Scl |
Hoy decidimos en contra de la biblioteca del gestor de la biblioteca del IDE de Arduino, porque los cambios en la resolución del sensor no llevaron al resultado deseado y han descubierto una alternativa práctica:
Haga clic aquí para ir a la biblioteca GitHub de warlocks.
Hay muchas maneras de cargar una biblioteca de Git en el IDE, hemos mostrado uno de ellos aquí.
Nos gustaron varias cosas mucho en esta biblioteca, por un lado el comentario alemán de la AS_BH1750.h particularmente detallado y estructurado, por otro lado, el desarrollador proporciona un ejemplo de una aplicación con una pantalla LCD de inmediato.
Después de instalar la biblioteca y la prueba de funciones, puede utilizar nuestros sensores para Escudo LCD y conecte los pines SCL/SDA como de costumbre, nuestro "LightMeter" está listo.
En Ejemplos -> AS_BH1750 -> Light_Meter_LCD encontrará el boceto, los cambios no son necesarios.
De nuevo el código de ejemplo suministrado:
#include <Alambre.H> #include <AS_BH1750.H> #include <LiquidCrystal.H> /* * LightMeter_LCD * * Versión 1.2 * Fecha: 05.08.2013 * * El programa utiliza el BH1750 (sensor de luz de conversión) * y muestra los valores en Lux en una pantalla LCD de icono de 16x2. * * Cableado (UNO, Nano...) * * BH1750: * Sensor SCL pin en A5 * Sensor SDA pin en A4 * Sensor VDD pin a 5V * Sensor GND pin a GND * Sensor ADDR libre de pines * * LCD en modo de 4 bits: * PIN LCD RS al pin digital 8 * PIN LCD RW al pin digital 13 * LCD Habilitar pin a pin digital 9 * LCD D4 pin a pin digital 4 * LCD D5 pin a pin digital 5 * LCD D6 pin a pin digital 6 * LCD D7 pin a pin digital 7 * * * Derechos de autor (c) 2013 Alexander Schulz. Muy bien reservado. * * Este programa es software libre: puede redistribuirlo y/o modificarlo * bajo los términos de la Licencia Pública General GNU publicada por * la Free Software Foundation, ya sea la versión 3 de la Licencia, o * (a su elección) cualquier versión posterior. * * Este programa se distribuye con la esperanza de que sea útil, * pero SIN NINGUNA GARANTIA; sin siquiera la garantía implícita de * COMERCIABILIDAD O IDONEIDAD PARA UN FIN PARTICULAR. Ver el * Licencia Pública General GNU para más detalles. * * Debería haber recibido una copia de la Licencia Pública General GNU * junto con este programa. Si no es así, consulte <http://www.gnu.org/licenses/>. */ AS_BH1750 Lightmeter; Configurar LCD Shield LiquidCrystal Lcd(8, 13, 9, 4, 5, 6, 7); Vacío Configuración() { Inicializar pantalla Lcd.Claro(); Lcd.Comenzar(16, 2); 16x2 caracteres Lcd.setCursor(0,0); Lcd.Impresión("LightMeter v1.0"); Lcd.setCursor(0,1); Lcd.Impresión("Inicializando..."); Retraso(1000); Lcd.Claro(); Si(!Lightmeter.Comenzar()){ Compruebe si el sensor está presente Lcd.Claro(); Lcd.setCursor(0,0); Lcd.Impresión("BH1750 no encontrado"); Lcd.setCursor(0,1); Lcd.Impresión("Comprobar cableado!"); Mientras (1) { Retraso(1000); } } } Vacío Bucle() { Char clux[9]; Lectura y reprocesamiento de valores Flotador Lux = Lightmeter.readLightLevel(); dtostrf(Lux, 8, 1, clux); Lcd.setCursor(0,0); Lcd.Impresión("Nivel de luz: "); Lcd.setCursor(5,1); Lcd.Impresión(clux); Lcd.Impresión("Lx"); Retraso(500); }
Hasta el próximo post :)
1 comentario
Pohl, Michael
Ich verwende den ESP32. Meine Frage: kann man über die I2C Schnittstelle ohne Probleme die Signale, die etwa 3.3V maximal sein dürfen, allgemein – d. h. auch für andere Sensoren über die I2C Schnittstelle – ohne Gefahr empfangen? Gibt es für den ESP32 entsprechende Libraries?
Mic