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