Pronto, insieme,
Molti di voi, certamente, si sono occupati della costruzione di una stazione meteorologica o di un dispositivo DIY - Smart - Home. Oggi vorrei presentarvi un nuovo sensore di luce in questo campo di applicazione.
Finora ne abbiamo solo avuto uno. Fotodiodo su un bacheca di Breakout e fotodiodo con LM393 E si può misurare la luminosità dell'ambiente nel nostro Portofolio, e ora abbiamo finalmente un sensore di luce che non solo è in grado di distinguere tra Hell e Dunkel, ma anche valori in Lux.
Alla nostra nuova Sensore GY-302 si trova in BH1750 l'affidabilità dei valori riproducibili in Lux non è possibile. Grazie al regolatore di tensione usato, è possibile operare senza problemi su raspberrys, ESPs e Arduinos.
Certo, questo modulo di sensori non è un misuratore di laboratorio geoferico, ma con questi valori si può fare molto di più che con i soliti sensori di KY. Durante i miei test con il sensore a casa, ho scoperto che con i valori emessi è possibile distinguere la lampada che si è illuminata nel mio salotto.
Il sensore BH1750 è molto comune e, di conseguenza, sono disponibili diverse librerie. Sia per ESPEasy:
e Tasmota:
supportano questo sensore di sensore.
Poiché si tratta di un sensore con interfaccia I2C, sono necessari solo quattro collegamenti, per il nostro esempio di utilizzo odierno, usiamo un UNOR3.
Arduino Nazioni Unite | GY-302 |
GND | GND |
5V | VCC |
A4 | SDA |
A5 | SCL |
Oggi abbiamo deciso di votare contro la biblioteca dell'IDE di Arduino, in quanto le modifiche apportate alla risoluzione del sensore non hanno portato a risultati sperati e hanno trovato un'alternativa pratica:
Questa è la biblioteca di GitHub di Hexenmeister.
Ci sono un sacco di modi per caricare una biblioteca di Git nell'IDE. Una di queste è stata mostrata qui..
In questa biblioteca ci sono state delle cose molto piacevoli, da una parte, la commentalizzazione tedesca della AS_BH1750.h in particolare, il progettista fornisce un esempio di utilizzo con il display LCD.
Quindi, dopo aver installato la libreria e il test di funzionalità, è possibile utilizzare il sensore LCD - Shield dove la SCL/SDA Pins è in grado di combinare Pins, come abituato, è il nostro "metro light".
Esempi - > AS_BH1750 - > Light_Meter_LCD sono disponibili per la modifica dello Sketch e delle modifiche non necessarie.
Ancora una volta, il codice di esempio fornito:
" #include " <Wire.h> " #include " <AS_BH1750.h> " #include " <LiquidCrystal.h> /* * LightMeter_LCD * * versione 1.2 * Data: 05.08.2013 * * Il programma utilizza il BH1750 (Sensore di luce ambientale) * e visualizza i valori in Lux su un LCD di LCD 16x2. * * Roccorso (Nano, Nano ...) * * BH1750: * Sensore SCL pin an A5 * Sensore SDA pin a A4 * Sensore di VDD pin a 5V * Sensore GND pin sulla GND * Sensore ADDR pin libera * * LCD in modalità a 4 bit: * LCD RS pin an digital pin 8 * LCD RW pin an digital pin 13 * LCD Enable pin an digital pin 9 * LCD D4 pin an digital pin 4 * LCD D5 pin an digital pin 5 * LCD D6 pin an digital pin 6 * LCD D7 pin an digital pin 7 * * * Copyright (c) 2013 Alexander Schulz. Tutta destra. * * This program is free software: you can redistribute it and / or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, versione 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope tha voglia it be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Lago the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ AS_BH1750 Lente lightweight; // Setup LCD - Shield LiquidCrystal lcd(8, 13, 9, 4, 5, 6, 7); void Impostazione() { // avviare il display lcd.clear(); lcd.begin(16, 2); // 16x2 caratteri lcd.Cursore(0,0); lcd.print("LightMeter v1.0"); lcd.Cursore(0,1); lcd.print("Initializing ..."); delay(1000); lcd.clear(); if(!Lente lightweight.begin()){ // Verificare che il sensore esista lcd.clear(); lcd.Cursore(0,0); lcd.print("BH1750 not found"); lcd.Cursore(0,1); lcd.print("check wiring!"); while (1) { delay(1000); } } } void loop() { char clux[9]; // di lettura e di preparazione dei valori float lux = Lente lightweight.livello readLightLevel(); dtostrf(lux, 8, 1, clux); lcd.Cursore(0,0); lcd.print("Livello di Light:"); lcd.Cursore(5,1); lcd.print(clux); lcd.print("lx"); delay(500); }
Fino al prossimo contributo:)
1 commento
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