luxmetre.ino
El ADC del ESP8266 es atípico: fondo de escala 1 V (0,1 V sin el divisor NodeMCU). El script promedia 16 lecturas, convierte a voltios y luego a lux aproximados, y categoriza el ambiente.
Hardware necesario
Un módulo ESP-12E (ESP8266EX, Wi-Fi 2,4 GHz) montado en una placa NodeMCU / Wemos D1 mini, alimentada por micro-USB. 1 fotorresistencia (LDR) + resistencia de 10 kΩ en divisor, o sensor luminoso módulo de 3 pines.
Cableado
Divisor LDR/10 kΩ entre 3,3 V y GND, cursor a A0. En NodeMCU pelado (sin divisor), añada un divisor 10 kΩ/20 kΩ.
Funcionamiento
analogRead devuelve 0-1023 referido al fondo de escala del convertidor; el promedio software suaviza el ruido. La conversión a lux es lineal y estrictamente falsa: sirve como nivel relativo. En el Arduino IDE, instale el paquete « esp8266 », elija « NodeMCU 1.0 (ESP-12E Module) » y suba (mantenga GPIO0 a LOW si falla). El ADC A0 lee 0-1 V (divisor NodeMCU: 0-3,3 V).
Para ir más lejos
Dispare el encendido de un LED bajo un umbral, o envíe el nivel con marca de tiempo a un servidor cada minuto.
luxmetre.ino
// Photorésistance sur A0 — l'ADC de l'ESP8266 lit 0 a 1 V seulement !
// Sur NodeMCU, le diviseur embarque ramene la pleine echelle a ~3,3 V.
const unsigned long PERIODE = 500;
unsigned long precedent = 0;
void setup() {
Serial.begin(115200);
analogReadResolution(10); // 0..1023 par defaut
}
void loop() {
if (millis() - precedent < PERIODE) return;
precedent = millis();
long brut = 0;
for (int i = 0; i < 16; i++) brut += analogRead(A0); // moyenne 16
brut /= 16;
float volts = brut * (3.3 / 1023.0); // apres diviseur NodeMCU
float lux = volts * 500.0; // grossier : a calibrer au LUXmetre
Serial.printf("brut=%ld %.2f V ~%.0f lux %s\n", brut, volts, lux,
lux < 30 ? "NOIR" : lux < 300 ? "interieur" : "lumineux");
}