В этом руководстве мы рассмотрим, как использовать фоторезистор (LDR) с микроконтроллером ESP32 для измерения интенсивности света. Считывая сопротивление LDR, мы можем запускать действия, например, включать зуммер, когда уровень света превышает определенный порог. Этот проект продемонстрирует взаимодействие между уровнями света и возможностями аналогового чтения ESP32, что позволит нам создавать адаптивные приложения на основе окружающего света (на видео в 5:30).
Объяснение аппаратного обеспечения
Основные компоненты, которые мы будем использовать в этом проекте, включают микроконтроллер ESP32, фоторезистор и резистор на 10 кОм. Фоторезистор изменяет свое сопротивление в зависимости от интенсивности света, попадающего на его поверхность: больше света приводит к меньшему сопротивлению, а меньше света — к большему сопротивлению. Это свойство позволяет нам измерять различные уровни света, подключая фоторезистор в конфигурации делителя напряжения с резистором.
Микроконтроллер ESP32 имеет встроенные Wi-Fi и Bluetooth, что делает его идеальным для проектов Интернета вещей. У него есть несколько аналоговых контактов, которые могут считывать различные уровни напряжения, которые мы будем использовать для контроля напряжения на фоторезисторе. Это напряжение будет преобразовано в аналоговое значение, которое ESP32 может обработать и использовать для запуска таких действий, как активация зуммера.
Данные из технического описания
Производитель
Espressif Systems
Номер детали
ESP32
Логическое/IO напряжение
3,3 В
Напряжение питания
3,0 - 3,6 В
Выходной ток (на GPIO)
макс. 40 мА
Рекомендации по частоте ШИМ
1 кГц - 40 кГц
Пороговые значения входной логики
Высокий: мин. 2,0 В, Низкий: макс. 0,8 В
Падение напряжения / RDS(on) / насыщение
макс. 0,3 В
Тепловые пределы
от -40 °C до 125 °C
Корпус
QFN48
Примечания / варианты
Поддерживает несколько протоколов Wi-Fi и Bluetooth
Используйте резистор на 10 кОм последовательно с фоторезистором для деления напряжения.
Убедитесь, что ESP32 питается от 3,3 В, чтобы избежать повреждения.
Правильно подключите фоторезистор и резистор для измерения интенсивности света.
При необходимости используйте конденсатор для развязки, чтобы стабилизировать источник питания.
Проверяйте значения аналогового чтения, чтобы убедиться, что они находятся в ожидаемых диапазонах.
Инструкции по подключению
ESP32-22_light_sensor-wiring
Чтобы подключить фоторезистор и резистор к ESP32, начните с подключения одного вывода фоторезистора к контакту питания 3,3 В на ESP32. Другой вывод фоторезистора должен быть подключен к одному выводу резистора на 10 кОм. Подключите другой вывод резистора к земле.
Затем подключите перемычку от точки соединения между фоторезистором и резистором к контакту 35 на ESP32. Эта схема создает делитель напряжения, позволяя ESP32 считывать изменяющееся напряжение в зависимости от интенсивности света, попадающего на фоторезистор. Убедитесь, что все соединения надежны и что фоторезистор расположен так, чтобы точно воспринимать изменения света.
Примеры кода и пояснения
В коде мы начинаем с инициализации последовательной связи для контроля показаний с фоторезистора. Ключевым идентификатором здесь является analogValue, который хранит показание с контакта 35.
void setup() {
Serial.begin(115200);
}
void loop() {
int analogValue = analogRead(35);
Serial.printf("ADC analog value = %d\n",analogValue);
delay(100);
}
Этот фрагмент кода инициализирует последовательный монитор со скоростью 115200 бод и непрерывно считывает аналоговое значение с контакта 35. Значение выводится на последовательный монитор, что позволяет нам наблюдать, как оно изменяется при различных уровнях света.
Когда интенсивность света изменяется, сопротивление фоторезистора меняется, и, следовательно, напряжение, считываемое ESP32, также будет меняться, отражая условия освещения (на видео в 12:45).
Демонстрация / Что ожидать
Когда вы запустите программу и будете наблюдать за последовательным монитором, вы должны увидеть, что ADC analog value колеблется в зависимости от условий окружающего освещения. Когда вы закрываете фоторезистор, значение должно увеличиваться, указывая на большее сопротивление, а при воздействии яркого света значение должно значительно снижаться. Это поведение можно использовать для запуска зуммера или любого другого действия на основе заранее заданных порогов.
Если показания не изменяются так, как ожидалось, проверьте проблемы с подключением, убедитесь, что фоторезистор не находится в подвешенном состоянии, и подтвердите, что ESP32 правильно запитан. Это поможет избежать распространенных ошибок и обеспечит плавную работу (на видео в 15:30).
821-ESP32 Tutorial 22/55- Arduino code for Light dependant resistor
Язык: C++
void setup() {
// инициализировать последовательную связь на скорости 115200 бит в секунду:
Serial.begin(115200);
}
void loop() {
// прочитать аналоговое значение
int analogValue = analogRead(35);
// распечатайте значения, которые вы прочитали:
Serial.printf("ADC analog value = %d\n",analogValue);
delay(100); // задержка между чтениями для четкого считывания из серийного порта
}
Раскрытие: Как партнер Amazon, мы зарабатываем на квалифицированных покупках. Это означает, что мы можем получить небольшую комиссию, если вы нажмете на ссылку и совершите покупку без дополнительных затрат для вас.