TSL2561 — это цифровой датчик освещенности с интерфейсом I2C/TWI. Более подробное описание этого модуля можете найти на странице TSL2561 — Цифровой датчик освещенности (модуль GY-2561). А в этом посте мы подключим по I2C датчик TSL2561 к Arduino, установим необходимую библиотеку и будем выводить значения в последовательный порт компьютера. С помощью TSL2561 можно изготовить самодельный люксметр на Ардуино.
Установка библиотеки Adafruit TSL2561
Для работы с данным модулем необходимо установить библиотеку Adafruit TSL2561. Скачиваем, распаковываем и закидываем в папку Arduino/libraries
. В случае, если на момент добавления библиотеки, Arduino IDE была открытой, перезагружаем среду.
Библиотеку можно установить из среды Arduino следующим образом:
- В Arduino IDE открываем менеджер библиотек: Скетч->Подключить библиотеку->Управлять библиотеками…
- В строке поиска вводим «TSL2561», находим библиотеку от Adafruit, выбираем и устанавливаем последнюю версию.
- Библиотека установлена (INSTALLED).
Не стоит забывать о Adafruit Unified Sensor Library, эту библиотеку также нужно установить.
Подключение TSL2561 к Arduino
Модуль модуль GY-2561 оборудован пяти-пиновым разъемом стандарта 2.54мм
- VCC: «+» питания
- GND: «-» питания
- SCL: последовательная линия тактирования (Serial CLock)
- SDA: последовательная линия данных (Serial DAta)
- INT: выход прерывания
Выводы отвечающие за интерфейс I2C на платах Arduino на базе различных контроллеров разнятся
Arduino Mega | Arduino Uno/Nano/Pro Mini | TSL2561 модуль | Цвет проводов на фото |
---|---|---|---|
GND | GND | GND | Черный |
5V | 5V | VCC | Красный |
20 (SDA) | A4 | SDA | Синий |
21 (SCL) | A5 | SCL | Зелёный |
Схема подключения TSL2561 к Arduino по I2C
Пример скетча
Библиотека довольно проста в использовании. Первая строка кода в примере — это «конструктор», в котором вы можете указать I2C адрес (на случай, если вы захотите его изменить) и уникальный идентификатор для подключения к этому датчику (вы можете просто оставить это значение по умолчанию: 12345 на данный момент). Изменяя адрес I2C, мы можем подключить до трех датчиков TSL2561 к одной плате:
/* Адрес будет отличаться в зависимости от того, оставляете ли вы плавающий вывод ADDR (addr 0x39) или привязываете его к GND или Vcc. В этих случаях используйте TSL2561_ADDR_LOW (0x29) или TSL2561_ADDR_HIGH (0x49) соответственно */ Adafruit_TSL2561_Unified tsl = Adafruit_TSL2561_Unified(TSL2561_ADDR_FLOAT, 12345);
Далее вам нужно будет настроить коэффициент усиления датчика и время интеграции.
Вы можете получить либо усиление 0 (без дополнительного усиления, хорошо в условиях хорошего освещения), либо усиление на 16, которое значительно усилит полученный сигнал с датчика в условиях слабого освещения.
Вы также можете изменить время интеграции, то есть как долго датчик TSL2561 будет собирать данные об освещении. Чем дольше время интеграции, тем выше точность датчика.
Впервые в версии драйвера 2.0 есть опция автоматического изменение коэффициента усиления, которая полезна при измерениях в условиях смешанного освещения. Это автоматически включит или отключит усиление в зависимости от уровня освещенности. Это все еще экспериментальная функция, и уровни переключения могут нуждаться в настройке, но эта функция может быть полезна для сбора света как внутри помещения, так и на улице без необходимости изменения кода самостоятельно.
/* Конфигурация усиления и времени интеграции для TSL2561 */ void configureSensor(void) { /* Вы также можете вручную установить усиление или включить авто-усиление */ /* Нет усиления ... используйте при ярком свете, чтобы избежать насыщения датчика */ // tsl.setGain(TSL2561_GAIN_1X); /* 16-кратное усиление ... используйте при слабом освещении для повышения чувствительности */ // tsl.setGain(TSL2561_GAIN_16X); /* Авто-усиление ... автоматически переключается между 1x и 16x */ tsl.enableAutoRange(true); /* Изменение времени интеграции дает вам лучшее разрешение сенсора (402 мс = 16-битные данные) */ /* быстрое, но низкое разрешение */ tsl.setIntegrationTime(TSL2561_INTEGRATIONTIME_13MS); /* среднее разрешение и скорость */ // tsl.setIntegrationTime(TSL2561_INTEGRATIONTIME_101MS); /* 16-битные данные, но самое медленное преобразование */ // tsl.setIntegrationTime(TSL2561_INTEGRATIONTIME_402MS); /* Обновите эти значения в зависимости от того, что вы установили выше! */ Serial.println("------------------------------------"); Serial.print ("Усиление: "); Serial.println("Auto"); Serial.print ("Времени интеграции: "); Serial.println("13 ms"); Serial.println("------------------------------------"); }
По умолчанию драйвер возвращает свет в стандартных единицах SI lux, которые являются результатом некоторых сложных вычислений на основе обоих фотодиодов на TSL2561 (один для полного спектра и один для ИК). Чувствительность двух диодов можно увидеть на графике ниже:
Когда вы будете готовы, чтобы получить ваши измерения в lux-ах, просто вызовите getEvent()
со ссылкой на объект sensor_event_t
, где будут храниться данные датчика. В этом примере предполагается, что мы используем экземпляр tsl
Adafruit_TSL2561
из верхней части примера кода:
/* Функция цикла Arduino, вызываемая после завершения установки (здесь должен быть указан ваш собственный код) */ void loop(void) { /* Получить новое событие датчика */ sensors_event_t event; tsl.getEvent(&event); /* Показать результаты (Освещённость измеряется в люксах) */ if (event.light) { Serial.print(event.light); Serial.println(" lux"); } else { /* Если event.light = 0 люкса датчик, вероятно, насыщенные и достоверные данные не может быть сгенерированы! */ Serial.println("Sensor overload"); } delay(250); }
Если вы хотите вручную прочитать данные от датчика, вы сможете сделать это, вызвав функцию getLuminosity()
и передав две переменные, в которых будут храниться данные датчика:
uint16_t broadband = 0; uint16_t infrared = 0; getLuminosity (&broadband, &infrared);
Полный код скетча:
#include <Wire.h> #include <Adafruit_TSL2561_U.h> /* Адрес будет отличаться в зависимости от того, оставляете ли вы плавающий вывод ADDR (addr 0x39) или привязываете его к GND или Vcc. В этих случаях используйте TSL2561_ADDR_LOW (0x29) или TSL2561_ADDR_HIGH (0x49) соответственно */ Adafruit_TSL2561_Unified tsl = Adafruit_TSL2561_Unified(TSL2561_ADDR_FLOAT, 12345); /* Отображает некоторую основную информацию об этом датчике */ void displaySensorDetails(void) { sensor_t sensor; tsl.getSensor(&sensor); Serial.println("------------------------------------"); Serial.print ("Датчик: "); Serial.println(sensor.name); Serial.print ("Версия драйвера: "); Serial.println(sensor.version); Serial.print ("Уникальный ID: "); Serial.println(sensor.sensor_id); Serial.print ("Макс. значение: "); Serial.print(sensor.max_value); Serial.println(" lux"); Serial.print ("Мин. значение: "); Serial.print(sensor.min_value); Serial.println(" lux"); Serial.print ("Разрешение: "); Serial.print(sensor.resolution); Serial.println(" lux"); Serial.println("------------------------------------"); Serial.println(""); delay(500); } /* Конфигурация усиления и времени интеграции для TSL2561 */ void configureSensor(void) { /* Вы также можете вручную установить усиление или включить авто-усиление */ /* Нет усиления ... используйте при ярком свете, чтобы избежать насыщения датчика */ // tsl.setGain(TSL2561_GAIN_1X); /* 16-кратное усиление ... используйте при слабом освещении для повышения чувствительности */ // tsl.setGain(TSL2561_GAIN_16X); /* Авто-усиление ... автоматически переключается между 1x и 16x */ tsl.enableAutoRange(true); /* Изменение времени интеграции дает вам лучшее разрешение сенсора (402 мс = 16-битные данные) */ /* быстрое, но низкое разрешение */ tsl.setIntegrationTime(TSL2561_INTEGRATIONTIME_13MS); /* среднее разрешение и скорость */ // tsl.setIntegrationTime(TSL2561_INTEGRATIONTIME_101MS); /* 16-битные данные, но самое медленное преобразование */ // tsl.setIntegrationTime(TSL2561_INTEGRATIONTIME_402MS); /* Обновите эти значения в зависимости от того, что вы установили выше! */ Serial.println("------------------------------------"); Serial.print ("Усиление: "); Serial.println("Auto"); Serial.print ("Времени интеграции: "); Serial.println("13 ms"); Serial.println("------------------------------------"); } /* Функция настройки Arduino (автоматически вызывается при запуске) */ void setup(void) { Serial.begin(9600); Serial.println("Тест датчика света"); Serial.println(""); /* Инициализировать датчик */ /* использовать tsl.begin() to default to Wire, tsl.begin(&Wire2) направляет API для использования Wire2 и т.д. */ if (!tsl.begin()) { /* При обнаружении TSL2561 возникла проблема ... проверьте подключение */ Serial.print("Ooops, no TSL2561 detected ... Check your wiring or I2C ADDR!"); while (1); } /* Показать основную информацию об этом датчике */ displaySensorDetails(); /* Настройка коэффициента усиления датчика и времени интеграции */ configureSensor(); /* Мы готовы к работе! */ Serial.println(""); } /* Функция цикла Arduino, вызываемая после завершения установки (здесь должен быть указан ваш собственный код) */ void loop(void) { /* Получить новое событие датчика */ sensors_event_t event; tsl.getEvent(&event); /* Показать результаты (Освещённость измеряется в люксах) */ if (event.light) { Serial.print(event.light); Serial.println(" lux"); } else { /* Если event.light = 0 люкса датчик, вероятно, насыщенные и достоверные данные не может быть сгенерированы! */ Serial.println("Sensor overload"); } delay(250); }
Результат
Материалы
TSL2561 — Цифровой датчик освещенности (модуль GY-2561)
datasheets_TSL2561.pdf
Arduino Code | TSL2561 Luminosity Sensor | Adafruit Learning System
TSL2560, TSL2561 Light-to-Digital Converter. TAOS059Q. 2009. November.
банкротство физических лиц отзывы
1 вин. http://pboarders.borda.ru/?1-11-0-00000929-000-0-0-1742818701 .
мосбет казино https://shorts.borda.ru/?1-18-0-00000397-000-0-0 .
что делать с бонусным балансом на 1win что делать с бонусным балансом на 1win .
mostbet kg скачать на андроид https://tagilshops.forum24.ru/?1-4-0-00000205-000-0-0 .
бк 1win https://www.boardwars.forum24.ru/?1-10-0-00000406-000-0-0 .
мостбет авиатор http://www.tagilshops.forum24.ru/?1-4-0-00000205-000-0-0 .
мостбет скачать бесплатно http://kharkovbynight.forum24.ru/?1-15-0-00003047-000-0-0-1742814422/ .
1 вин официальный 1 вин официальный .
motsbet https://kharkovbynight.forum24.ru/?1-15-0-00003047-000-0-0-1742814422/ .
mostbet casino http://www.maksipolinovtsu.forum24.ru/?1-1-0-00000194-000-0-0-1742815870 .
1win официальный сайт вход http://www.mymoscow.forum24.ru/?1-6-0-00026928-000-0-0 .
бк 1win https://dogzz.forum24.ru/?1-10-0-00000155-000-0-0-1742818537/ .
мостбет скачать на андроид мостбет скачать на андроид .
адин вин https://dogzz.forum24.ru/?1-10-0-00000155-000-0-0-1742818537 .
скачать mostbet http://www.corgan.borda.ru/?1-0-0-00000265-000-0-0 .
mostbet mostbet .
1вин сайт https://www.zdorovie.forum24.ru/?1-7-0-00000231-000-0-0-1742818050 .
мост бет мост бет .
Узнайте мнение тех, кто уже прошел процедуру банкротства и списал свои долги http://bankrotstvo-v-moskve123.ru .
партнёрка 1win http://knowledge.forum24.ru/?1-0-0-00000101-000-0-0-1742817704/ .
скачать мостбет официальный сайт скачать мостбет официальный сайт .
1вин официальный мобильная http://www.knowledge.forum24.ru/?1-0-0-00000101-000-0-0-1742817704 .
мостбет авиатор http://mostbet6004.ru .
1 win http://belbeer.borda.ru/?1-6-0-00001583-000-0-0 .
мостбет казино https://www.girikms.forum24.ru/?1-1-0-00000361-000-0-0-1742819287 .
1win com http://www.belbeer.borda.ru/?1-6-0-00001583-000-0-0 .
мастбет мастбет .
скачать мостбет http://alfatraders.borda.ru/?1-0-0-00004917-000-0-0-1743053068/ .
скачать mostbet на телефон https://hiend.borda.ru/?1-16-0-00000259-000-0-0-1743052953 .
mostbest https://alfatraders.borda.ru/?1-0-0-00004917-000-0-0-1743053068/ .
mostbet kg скачать на андроид http://cah.forum24.ru/?1-3-0-00000096-000-0-0-1743053764/ .
1win войти https://www.fanfiction.borda.ru/?1-0-0-00029708-000-0-0-1743051664 .
мостбет войти https://www.cah.forum24.ru/?1-3-0-00000096-000-0-0-1743053764 .
1вин официальный https://www.fanfiction.borda.ru/?1-0-0-00029708-000-0-0-1743051664 .
1 win.kg http://realistzoosafety.forum24.ru/?1-11-0-00001540-000-0-0-1742816894 .
1 вин скачать http://www.realistzoosafety.forum24.ru/?1-11-0-00001540-000-0-0-1742816894 .
1win com https://www.balashiha.myqip.ru/?1-12-0-00000437-000-0-0-1743258848 .
Узнайте мнение тех, кто уже прошел процедуру банкротства и списал свои долги https://bankrotstvo-v-moskve95.ru .
mostbet chrono https://www.svstrazh.forum24.ru/?1-18-0-00000136-000-0-0-1743260517 .
1win букмекер https://www.1win6051.ru .
мостбет скачать на андроид http://mostbet6029.ru .
cazino md https://1win5010.ru/ .
1win регистрация 1win6043.ru .
mostbet kg https://mostbet6033.ru/ .
1win скачать kg 1win скачать kg .
1win официальный 1win официальный .
скачать mostbet https://mostbet5002.ru .
1вин войти 1вин войти .
1win rossvya 1win rossvya .
скачать мостбет скачать мостбет .
descărca 1win 1win5027.ru .
1вин официальный сайт http://1win7017.ru/ .
мосбет казино https://mostbet7003.ru .
1win online http://1win7006.ru/ .
1wiun 1wiun .
мос бет 1win5028.ru .
most bet most bet .
1win партнерка вход 1win7018.ru .
melbet kg скачать melbet kg скачать .
скачать мостбет официальный сайт https://mostbet5010.ru .
мостбет авиатор http://www.mostbet5009.ru .
мосбет казино mostbet6033.ru .
мостбет казино mostbet6013.ru .
mostbet uz скачать на компьютер http://mostbet3022.ru/ .
продвижение сайта в топ http://www.itechua.com/other/277983/ .
casino olympe olympe casino
olympe casino: olympe casino cresus — olympe casino en ligne
olympe casino olympe
olympe casino cresus: olympe casino — olympe
olympe casino cresus olympe casino avis
olympe: olympe — olympe casino cresus
баланс ван вин https://1win7012.ru/ .
olympe casino cresus: olympe casino cresus — olympe casino avis
Мы изготавливаем дипломы любых профессий по доступным ценам.— diplomk-vo-vladivostoke.ru/kupit-diplom-texnikuma-s-zaneseniem-v-reestr-otzivi-2/
olympe casino avis: olympe casino en ligne — olympe casino
most bet mostbet6040.ru .
Для удачного продвижения по карьере понадобится наличие диплома института. Заказать диплом любого ВУЗа у проверенной фирмы: diplomv-v-ruki.ru/kupite-attestati-goznak-bistro-i-nadezhno/
olympe casino avis olympe casino