
Интернет-магазин «Неглупый Дом»
Лазерный модуль KY-008 постоянно светит на фоторезистор KY-018, установленный напротив. Как только луч пересекают — освещённость резко падает, и включается сирена.
Принцип классический для охранных растяжек: лазер создаёт на фоторезисторе постоянное яркое пятно света, и плата непрерывно измеряет уровень освещённости через аналоговый вход. Пока луч не прерван, показания держатся примерно на одном уровне (`baseline`) с небольшими колебаниями от фоновой засветки. Когда кто-то пересекает луч — даже на долю секунды — освещённость резко падает, и если это падение больше порога `dropThreshold`, плата считает это срабатыванием и включает сирену.
Важная особенность именно лазера (в отличие от обычного ИК-барьера) — узкий, хорошо видимый луч, который легко направить точно в одну точку на расстоянии нескольких метров, и его сложнее перекрыть случайно (например, рукой при уборке), если правильно выбрать высоту растяжки.
Так как реализации данного модуля бывают разные, если у вас на плате нет тех контактов, которые указаны ниже — сориентируйтесь по названиям контактов на своей плате.
// ВНИМАНИЕ: рекомендую отладить код через монитор порта, так как я языковая
// модель, а не специализированный кодер, и могу что-то упустить. Основу
// и идею я накидал, но проверьте под свою схему.
const int sensorPin = A0; // фоторезистор KY-018
const int buzzerPin = 8; // пассивный зуммер
int baseline; // уровень освещённости при целом луче
const int dropThreshold = 150; // на сколько должна упасть освещённость, чтобы считать срабатыванием
void setup() {
Serial.begin(9600);
pinMode(buzzerPin, OUTPUT);
delay(500); // даём лазеру и датчику стабилизироваться после включения
baseline = analogRead(sensorPin); // запоминаем "нормальный" уровень освещённости луча
Serial.print("Базовый уровень освещённости: ");
Serial.println(baseline);
}
void loop() {
int value = analogRead(sensorPin);
if (baseline - value > dropThreshold) {
// освещённость резко упала — луч пересечён
tone(buzzerPin, 2000);
Serial.println("Тревога! Луч пересечён");
} else {
noTone(buzzerPin);
}
delay(50); // частый опрос, чтобы не пропустить короткое пересечение луча
}
`baseline` считывается один раз при включении — направьте лазер точно на фоторезистор перед подачей питания. `dropThreshold` подбирается опытным путём под освещённость помещения.
Ещё модули для Arduino: Электронные модули.
🎁 Купить весь комплект со скидкой 10%
Все 2 товара сразу в корзину: 135 ₽ 122 ₽ (экономия 13 ₽)
Скидка применяется автоматически при оформлении заказа, если в корзине именно этот комплект.
Остались вопросы? Проконсультируйтесь с ИИ-инженером — он уже в курсе темы статьи и сразу ответит, ничего вводить не нужно.