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.
prednisone 0.5 mg: Prednisone Without Prescription — prednisone steroids
buying clomid tablets: generic clomid — cost of generic clomid price
can you buy amoxicillin over the counter canada: com pharm — over the counter amoxicillin
order prednisone 10mg: raypharm — can i order prednisone
azithromycin amoxicillin amoxil com pharm where can you get amoxicillin
buying generic clomid prices: get clomid no prescription — can you buy cheap clomid pill
order amoxicillin no prescription: Amoxicillin for sale — amoxicillin 500mg capsules uk
can you get generic clomid tablets: rex pharm — can you buy cheap clomid without prescription
prednisone 7.5 mg prednisone 10 mg price prednisone 10mg canada
buy dapoxetine online: priligy max pharm — priligy maxpharm
amoxicillin 500mg capsule buy online Com Pharm amoxicillin 1000 mg capsule
amoxicillin without prescription: com pharm — amoxicillin 500mg capsules uk
buy priligy: buy priligy — Priligy tablets
prednisone in mexico: cheap prednisone — prednisone 30
amoxicillin 200 mg tablet: com pharm — amoxicillin in india
buy prednisone from canada: prednisone ray pharm — generic prednisone 10mg
get clomid online: rex pharm — order clomid price
how can i order prednisone: prednisone — cost of prednisone
where can i get amoxicillin: buy amoxil online — over the counter amoxicillin
prednisone 5 mg tablet without a prescription: prednisone 10 mg over the counter — prednisone 5mg over the counter
http://iverfast.com/# ivermectin 200
minocycline 50 mg tablets for human: cheapest Ivermectin — buy ivermectin for humans uk
buy cytotec pills online cheap cheapest cytotec buy cytotec pills online cheap
max pharm: priligy maxpharm — buy dapoxetine online
Lisinopril 1st: buy Lisinopril 1st — Lisinopril 1st
cheap priligy: buy priligy max pharm — priligy
generic amoxicillin 500mg: prescription for amoxicillin — where can i buy amoxicillin without prec
minocycline 100 mg for sale: does minocycline work for acne — buy minocycline 100mg otc
п»їplavix generic PlavixClo Best Price Plavix 75 mg price
where buy generic clomid tablets: generic clomid — where can i buy cheap clomid
cheap plavix antiplatelet drug: PlavixClo — plavix best price
http://cytpremium.com/# order cytotec online
prednisone 10 tablet: cheap prednisone — generic prednisone online
minocycline 50 mg tablets for human iver fast minocycline 50mg otc
get clomid tablets: clomid online — buying generic clomid tablets
пин ап казино онлайн: пин ап кз — пин ап казино онлайн
pinup: пин ап зеркало — pinup kazi
пинап казино: pinup kazi — pinup-kazi.kz
вавада онлайн казино вавада казино vavada
vavada: вавада онлайн казино — вавада казино онлайн
вавада онлайн казино: вавада казино — vavada
pinup-kazi.ru: pinup kazi — пин ап казино
пин ап казино пин ап кз пин ап кз
пин ап казино: пин ап казино онлайн — пин ап казино онлайн
пин ап зеркало: pinup — pinup
вавада казино зеркало: вавада казино зеркало — vavada-kazi.ru
пин ап казино: pinup kazi — pinup kazi
pinup-kazi.ru: пин ап казино — пинап казино
can you buy cytotec pill They state on their corundom that unfeasible users of duchy which i cursing habitually should be phonic as follows
mexico drug stores pharmacies: Mexican Pharm — mexican mail order pharmacies
ed cures that actually work canadianpharm1st.com impotance
erectile dysfunction drugs: canadian pharm — erectile dysfunction drug
erection pills https://mexicanpharmeasy.com/# best online pharmacies in mexico
pharmacy website india: IndianPharmStar — indian pharmacy online
india online pharmacy: indian pharmacy — india pharmacy
homepage: canadian pharm 1st — erectile dysfunction drug
treatment for erectile dysfunction canadian pharm 1st cure ed
online pharmacy india: indian pharm star — online pharmacy india
is ed reversible: canadian pharm 1st — best ed solution
medications online canadian pharm ed doctors
buying prescription drugs in mexico online: Mexican Pharm — medication from mexico pharmacy
ed medication online: canadian pharmacy — drugs and medications
online meds for ed https://canadianpharm1st.com/# best natural ed treatment
how to overcome ed https://indianpharmstar.com/# best online pharmacy india
mexico drug stores pharmacies: MexicanPharmEasy — reputable mexican pharmacies online
pharmacy website india IndianPharmStar cheapest online pharmacy india
medication online: canadian pharmacy — online ed drugs
is ed reversible http://mexicanpharmeasy.com/# medicine in mexico pharmacies
reputable indian online pharmacy indian pharmacy india online pharmacy
ed pills cheap http://mexicanpharmeasy.com/# mexico pharmacies prescription drugs
non prescription ed pills: canadianpharm1st.com — ed medications list
mexico drug stores pharmacies mexicanpharmeasy.com reputable mexican pharmacies online
real viagra without a doctor prescription usa: canadianpharm1st.com — treating ed
gabapentin 300mg: Gabapentin Pharm — Gabapentin Pharm
minocycline interactions Ivermectin Pharm Store minocycline coupon
paxlovid cost without insurance: Paxlovid.ink — paxlovid price
https://semaglutidepharm.com/# Semaglutide pharmacy price
Gabapentin Pharm: drug neurontin — Gabapentin Pharm
discount neurontin: neurontin 100mg cap — Gabapentin Pharm
https://semaglutidepharm.com/# buy rybelsus
Paxlovid.ink: Paxlovid.ink — buy paxlovid online
Gabapentin Pharm Gabapentin Pharm neurontin 300 mg pill
rybelsus: Buy semaglutide pills — rybelsus
https://ivermectinpharm.store/# Ivermectin Pharm Store
rybelsus generic: Buy compounded semaglutide online — buy semaglutide online
https://ivermectinpharm.store/# Ivermectin Pharm
Paxlovid.ink: paxlovid covid — Paxlovid.ink
cost of neurontin: Gabapentin Pharm — Gabapentin Pharm
https://semaglutidepharm.com/# buy rybelsus
Paxlovid.ink Paxlovid.ink Paxlovid.ink
https://amoxilpharm.store/# Amoxil Pharm Store
п»їpaxlovid: п»їpaxlovid — Paxlovid over the counter