Для электронщиков и радиолюбителей

Как собрать оптический/световой барьер с помощью Arduino, лазерного модуля KY-008 и модуля лазерного приёмника/детектора

Как собрать оптический/световой барьер с помощью Arduino, лазерного модуля KY-008 и модуля лазерного приёмника/детектора

В этом руководстве показано, как создать оптический барьер. Барьер обнаруживает любое движение между передатчиком и приёмником. Передатчиком служит лазерный модуль (Keyes KY-008), который излучает красный свет (длина волны: 650 нм). Лазерный детектор/приёмник — это немаркированный модуль, который возвращает либо LOW, либо HIGH (без «аналоговых значений» между ними).


Как подключить лазерный модуль и лазерный детектор к Arduino?

Лазерный модуль имеет три вывода. Используются только два: вывод «-» подключается к одному из контактов GND Arduino. Вывод «S» лазерного модуля подключается к контакту «2» Arduino. Таким образом, лазер можно включать и выключать, подавая соответственно LOW или HIGH.

Модуль-детектор также имеет три вывода. Его вывод «VCC» подключается к контакту «5V» Arduino, а GND — к GND Arduino. Наконец, сигнальный вывод «OUT» модуля подключается к контакту «3».


Как запрограммировать световой/оптический барьер?

Сначала задаются номера контактов для лазера и приёмника. Затем вывод лазера устанавливается в режим OUTPUT, а вывод приёмника — в режим INPUT. Далее лазер включается установкой «pinLaser» в HIGH. Чтобы отслеживать состояние светового барьера, запускается последовательное соединение.

В функции loop считывается значение, полученное от приёмника. Оно может быть либо LOW, либо HIGH. Значение LOW означает, что лазер не достигает детектора — например, что-то прошло через световой барьер и находится между лазером и детектором. Затем считанное значение выводится в консоль. В конце добавляется задержка в 1000 мс для удобства (чтобы монитор порта не «мигал» значениями).

const int pinLaser = 2; // выходной сигнал лазерного модуля/лазерной указки
const int pinReceiver = 3; // входной сигнал приёмника/детектора (модуль возвращает только цифровое состояние)

void setup() {
  pinMode(pinLaser, OUTPUT); // установить вывод лазера как выход
  pinMode(pinReceiver, INPUT); // установить вывод приёмника как вход
  digitalWrite(pinLaser, HIGH); // включить лазер
  Serial.begin(9600); // настроить последовательное соединение для вывода в консоль
}

void loop() {
  int value = digitalRead(pinReceiver); // приёмник возвращает либо LOW, либо HIGH (аналоговых значений нет!)
  Serial.println(value); // вывести значение в консоль
  delay(1000); // подождать 1000 мс
}

Если код был успешно загружен на Arduino, вывод в Serial Monitor (Инструменты → Монитор порта, Ctrl+Shift+M) должен выглядеть следующим образом:


Примечания:

Светодиод на модуле детектора, расположенный рядом с приёмником, показывает, подключён ли детектор к источнику питания.