Простейший люксметр на ESP8266 и датчике освещенности MAX44009

Простейший люксметр на ESP8266 и датчике освещенности MAX44009

Дата Автор Dmitry2 комментария 1 043 просмотров

Недавно я публиковал проект простой метеостанции с OLED-дисплеем на ESP8266 и датчике BME280.

Сегодня хочу опубликовать еще более простой проект: люксметр на ESP8266 и датчике освещенности MAX44009 производства калифорнийской компании Maxim Integrated.

Себестоимость используемых компонентов примерно $6, процесс сборки и запуска устройства займет не более 30 минут.

Что нам понадобится

Для реализации описываемого в статье проекта понадобится:

Датчик поставляется в комплекте с нераспаянными ножками. После покупки их потребуется подпаять самостоятельно.

Про люксы и уровень освещенности

Люкс (Лк) — единица измерения освещенности.

Освещенность — соотношение светового потока к площади поверхности, на которую падает свет.

Для того чтобы соотнести уровень освещенности в люксах с субъективным восприятием освещенности (тем, что мы привыкли видеть своими глазами) можно взглянуть на следующую таблицу:

Простейший люксметр на ESP8266 и датчике освещенности MAX44009

А вот требования к освещенности жилых и рабочих помещений согласно СНиПам:

Простейший люксметр на ESP8266 и датчике освещенности MAX44009

Недостаточное количество света плохо влияет на самочувствие человека. Быстрее устают глаза, снижается производительность труда, ухудшается настроение. Даже такое расстройство как «сезонная депрессия» непосредственно связано с недостаточным воздействием света на человеческий организм в северных широтах осенью и зимой.

Сборка схемы

Простейший люксметр на ESP8266 и датчике освещенности MAX44009

Конструкция предельно простая. Используется ESP8266, датчик освещенности MAX44009, 4 провода.. и все.

Обратите внимание, что всего мест под ножки на модуле датчика 6, а подписано только 4. Если очень интересно, то предназначение неподписанных ножек можно посмотреть в даташите на MAX44009, но подпаивать их не нужно. Для использования датчика они не нужны.

Подключение MAX44009 к ESP8266:
3V — VIN
GND — GND
D1 — SCL
D2 — SDA

Простейший люксметр на ESP8266 и датчике освещенности MAX44009

Примерно так схема будет смотреться вживую.

Скетч для MAX44009

Для работы с датчиком освещенности используется стандартная библиотека Wire.h и не требуется установки дополнительных библиотек.

Достаточно просто загрузить следующий скетч в ESP8266 через Arduino IDE:

#include<Wire.h>
 
#define Addr 0x4A
 
void setup()
{
 
Wire.begin();
// Initialise serial communication
Serial.begin(9600);
 
Wire.beginTransmission(Addr);
Wire.write(0x02);
Wire.write(0x40);
Wire.endTransmission();
delay(300);
}
 
void loop()
{
unsigned int data[2];
Wire.beginTransmission(Addr);
Wire.write(0x03);
Wire.endTransmission();
 
// Request 2 bytes of data
Wire.requestFrom(Addr, 2);
 
// Read 2 bytes of data luminance msb, luminance lsb
if (Wire.available() == 2)
{
data[0] = Wire.read();
data[1] = Wire.read();
}
 
// Convert the data to lux
int exponent = (data[0] & 0xF0) >> 4;
int mantissa = ((data[0] & 0x0F) << 4) | (data[1] & 0x0F);
float luminance = pow(2, exponent) * mantissa * 0.045;
 
Serial.print("Ambient Light luminance :");
Serial.print(luminance);
Serial.println(" lux");
delay(500);
}

И можно проверить работоспособность устройства.

Данный скетч не предполагает вывод данных на дисплей или через веб-сервер, так что воспользуемся встроенным в Arduino IDE монитором порта («Инструменты» -> «Монитор порта», или сочетание клавиш Ctrl+Shift+M).

Вот такие результаты получились у меня:

Простейший люксметр на ESP8266 и датчике освещенности MAX44009

Уровень освещенности на подоконнике в пасмурный день.

Простейший люксметр на ESP8266 и датчике освещенности MAX44009

Люксметр лежит на столе под включенной на полную яркость Xiaomi Smart LED Desk Lamp.

Простейший люксметр на ESP8266 и датчике освещенности MAX44009

Пасмурный день, послеобеденное время, включено верхнее освещение.

Простейший люксметр на ESP8266 и датчике освещенности MAX44009

Пасмурный день, послеобеденное время, шторы открыты, верхнее освещение выключено.

Простейший люксметр на ESP8266 и датчике освещенности MAX44009

Пасмурный день, послеобеденное время, шторы закрыты, верхнее освещение выключено.

P.S.: если вместо адекватного текста отображаются кракозябры, то в правом нижнем углу монитора порта нужно сменить скорость на 9600 бод.

Заключение

Вот так на основе ESP8266 и одного недорогого датчика можно собрать люксметр.

Я хочу превратить его в датчик уровня освещенности для «умного дома», поэтому не вижу смысла (для себя) настраивать вывод получаемых значений на дисплей или веб-страницу. Данные с датчиков планирую отправлять на сервер по MQTT, о чем со временем напишу отдельную статью.

Но если есть потребность, то можно подключить дисплей, взять кусок скетча от метеостанции и переделать его на вывод информации с MAX44009.

2 комментария на «Простейший люксметр на ESP8266 и датчике освещенности MAX44009»

  1. А как можно подключить 2 датчика освещенности GY-49 max44009 ? А0 я подключил к Vcc. Нужно два разных адреса указывать? 1001 010х и 1001 011 ? Как отразить эти адреса в скетче. И нужно ли корректировать библиотеку?

    • Затрудняюсь что-то ответить, и поэкспериментировать не могу, т.к. в наличии только один датчик сейчас.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *