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.
http://indianpharmacy.win/# online pharmacy india
canadian pharmacy cheap: canadian pharmacy ratings — canadianpharmacymeds com
https://mexicanpharmacy.store/# mexican drugstore online
https://indianpharmacy.win/# online shopping pharmacy india
best online pharmacies in mexico: mexican rx online — mexican online pharmacies prescription drugs
https://canadianpharmacy.win/# best canadian online pharmacy
https://indianpharmacy.win/# best india pharmacy
canadian family pharmacy: canadianpharmacy com — canada pharmacy
http://canadianpharmacy.win/# cheap canadian pharmacy
https://indianpharmacy.win/# pharmacy website india
buying prescription drugs in mexico online: mexican mail order pharmacies — mexico drug stores pharmacies
http://indianpharmacy.win/# Online medicine order
http://canadianpharmacy.win/# canadian pharmacies that deliver to the us
https://indianpharmacy.win/# mail order pharmacy india
canadian pharmacy online reviews: best canadian online pharmacy — canadian pharmacy no scripts
http://canadianpharmacy.win/# trustworthy canadian pharmacy
https://canadianpharmacy.win/# vipps canadian pharmacy
http://mexicanpharmacy.store/# mexico pharmacies prescription drugs
mexico drug stores pharmacies: reputable mexican pharmacies online — mexican rx online
https://fastpillseasy.com/# best ed pills online
https://fastpillseasy.com/# ed pills cheap
buy cialis pill: MaxPillsForMen — Cialis without a doctor prescription
cheapest cialis buy cialis online Cialis 20mg price
Tadalafil Tablet [url=http://maxpillsformen.com/#]MaxPillsForMen[/url] Tadalafil Tablet
sildenafil 50 mg price: FastPillsForMen — Generic Viagra online
ed online prescription: fast pills easy — buy ed meds online
https://fastpillsformen.com/# Viagra generic over the counter
Generic Tadalafil 20mg price buy cialis online cialis for sale
Tadalafil price: MaxPillsForMen — cialis for sale
п»їcialis generic Max Pills For Men Cialis without a doctor prescription
where to buy ed pills: fast pills easy — order ed meds online
http://fastpillsformen.com/# Buy Viagra online cheap
buying erectile dysfunction pills online cheap cialis where can i buy erectile dysfunction pills
ed rx online: fast pills easy — ed treatment online
Buy Tadalafil 10mg: MaxPillsForMen — Tadalafil Tablet
https://maxpillsformen.com/# Tadalafil price
Cialis without a doctor prescription: buy cialis pill — Buy Tadalafil 20mg
http://maxpillsformen.com/# Tadalafil Tablet
best online ed medication fast pills easy where can i buy ed pills
Generic Cialis price: Generic Cialis without a doctor prescription — Cialis 20mg price in USA
http://maxpillsformen.com/# cialis for sale
Cheap Cialis buy cialis online Cialis without a doctor prescription
http://maxpillsformen.com/# Generic Tadalafil 20mg price
buy erectile dysfunction pills online cheap ed treatment buy ed medication online
http://fastpillseasy.com/# ed rx online
cheapest cialis: buy cialis online — Buy Tadalafil 20mg
http://fastpillseasy.com/# ed pills for sale
https://fastpillsformen.com/# Viagra generic over the counter
where can i get ed pills ed doctor online buy ed meds online
https://fastpillseasy.com/# get ed meds today
Cheap generic Viagra: FastPillsForMen.com — viagra without prescription
what is the cheapest ed medication: fast pills easy — how to get ed meds online
https://maxpillsformen.com/# п»їcialis generic
Buy Tadalafil 10mg buy cialis online cialis for sale
https://fastpillsformen.com/# Viagra tablet online
Sildenafil 100mg price: cheap viagra — Cheapest Sildenafil online
http://fastpillseasy.com/# buy ed medication
sweet bonanza: sweet bonanza slot — sweet bonanza demo oyna
guvenilir casino siteleri: deneme bonusu veren casino siteleri — canl? casino siteleri
slot casino siteleri slot oyunlar? puf noktalar? en cok kazand?ran slot oyunlar?
guvenilir casino siteleri: en guvenilir casino siteleri — Casino Siteleri
sweet bonanza yorumlar sweet bonanza guncel sweet bonanza giris
yat?r?ms?z deneme bonusu veren siteler deneme bonusu veren siteler yeni yat?r?ms?z deneme bonusu veren siteler
deneme bonusu veren siteler deneme bonusu veren siteler yeni deneme bonusu veren siteler
http://sweetbonanza25.com/# sweet bonanza
casino slot online en guvenilir casino siteleri en guvenilir casino siteleri
https://casinositeleri25.com/# deneme bonusu veren casino siteleri
en kazancl? slot oyunlar?: guvenilir slot siteleri — slot siteleri
bahis siteleri isimleri
deneme bonusu veren siteler yeni deneme bonusu veren siteler deneme bonusu veren siteler
canl? casino siteleri: casino bahis siteleri — Canl? Casino Siteleri
deneme bonusu veren siteler yeni: deneme bonusu veren siteler yeni — deneme bonusu veren siteler
slot casino siteleri en kazancl? slot oyunlar? en cok kazand?ran slot oyunlar?
denemebonusuverensiteler25: deneme bonusu veren siteler yeni — denemebonusuverensiteler25
guvenilir casino siteleri Casino Siteleri canl? casino siteleri