Arduino-датчик приближенности: сборка, подключение и код для HC-SR04 и ИК-модулей
Датчик приближенности позволяет Arduino обнаруживать предметы без контакта: открывать дверь при подходе, останавливать робота перед стеной, включать подсветку при появлении рук. Разберём два популярных типа: ультразвуковой HC-SR04 (дальность 2–400 см) и оптический ИК-модуль (ближний диапазон 2–30 см).
Типы датчиков и выбор
| Параметр | HC-SR04 (Ультразвук) | ИК-модуль (FC-51 / E18-D80NK) |
| Диапазон | 2 см – 4 м | 2–30 см (регулируется) |
| Точность | ~3 мм | ~1–2 см |
| Угол обзора | ~15° конус | ~30–40° сектор |
| Влияние света/цвета | Нет | Сильно (чёрное поглощает, зеркало отражает) |
| Цена | ~$1–2 | ~$0,5–1,5 |
| Пины | VCC, Trig, Echo, GND (4 пина) | VCC, OUT, GND (3 пина) |
Выбор: HC-SR04 — для точного измерения расстояния (роботы, парковка, уровень воды). ИК — для простого «есть/нет» объекта близко (счётчик посетителей, автомат мыла, концевик).
Подключение HC-SR04 к Arduino Uno/Nano
HC-SR04 Arduino
VCC → 5V
Trig → D9 (любой цифровой)
Echo → D10 (любой цифровой, лучше с прерыванием)
GND → GND
Важно: Echo выдаёт 5 В логики. На 3,3-вольтовых платах (ESP32, Arduino Due, Nano 33 IoT) нужен делитель напряжения: 1 кОм (Echo→D10) + 2 кОм (D10→GND).
Подключение ИК-модуля (3 пина)
ИК-модуль Arduino
VCC → 5V
OUT → D2 (или любой цифровой)
GND → GND
На плате модуля есть потенциометр — регулирует порог срабатывания (дальность). Поверните по часовой — дальше, против — ближе. Желательно калибровать на месте установки.
Код для HC-SR04 (измерение расстояния в см)
const uint8_t TRIG = 9;
const uint8_t ECHO = 10;
void setup() {
pinMode(TRIG, OUTPUT);
pinMode(ECHO, INPUT);
Serial.begin(115200);
}
void loop() {
// Импульс 10 мкс
digitalWrite(TRIG, LOW);
delayMicroseconds(2);
digitalWrite(TRIG, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG, LOW);
// Длительность эха в мкс
uint32_t duration = pulseIn(ECHO, HIGH, 30000UL); // таймаут 30 мс = 5 м
if (duration == 0) {
Serial.println("Timeout / out of range");
} else {
float distance_cm = duration * 0.01715f; // (343 м/с / 2) / 10000
Serial.print("Distance: ");
Serial.print(distance_cm, 1);
Serial.println(" cm");
}
delay(100);
}
Код для ИК-модуля (цифровой выход HIGH/LOW)
const uint8_t IR_PIN = 2;
const uint8_t LED_PIN = 13;
void setup() {
pinMode(IR_PIN, INPUT);
pinMode(LED_PIN, OUTPUT);
Serial.begin(115200);
}
void loop() {
bool object = digitalRead(IR_PIN); // HIGH = объект есть (у многих модулей)
digitalWrite(LED_PIN, object);
Serial.println(object ? "Object detected" : "Clear");
delay(50);
}
Примечание: У некоторых модулей логика инвертирована (LOW = объект). Проверьте Serial-монитор и при необходимости инвертируйте: bool object = !digitalRead(IR_PIN);
Улучшения и практические советы
- Фильтрация дребезга (ИК): программный дебаунс 20–50 мс или конденсатор 100 нФ на OUT.
- Усреднение (HC-SR04): берите медиану из 5–7 замеров — убирает выбросы.
- Питание: HC-SR04 может давать скачки на 5В линии — добавьте 100 мкФ×16В к VCC/GND рядом с датчиком.
- Множественные датчики: опрашивайте по очереди с паузой 60 мс, иначе ультразвук перехлёстывается.
- Корпус: для улицы — герметичный бокс, membrana из тонкого ПЭТ перед излучателем/приёмником HC-SR04.
Примеры проектов
- Автоматический дозатор мыла/воды: ИК-модуль + реле/насос + батарейка 18650 + DC-DC 5В.
- Робот-избегатор препятствий: 2×HC-SR04 спереди/сбоку + сервопривод руля + L298N.
- Умная корзина для мусора: HC-SR04 под крышкой + сервопривод открывания.
- Счётчик посетителей: 2×ИК-модуля в дверном проёме (вход/выход) + Arduino + LCD/OLED.
- Контроль уровня воды: HC-SR04 сверху вниз к воде в баке (нужен водонепроницаемый вариант JSN-SR04T).
Заключение
Датчик приближенности — один из самых полезных модулей для Arduino. HC-SR04 даёт точное расстояние, ИК-модуль — дешёвое бинарное «есть/нет». Оба подключаются за минуту, код помещается в 20 строк. Главное — правильное питание, калибровка порога и защита от помех. Хотите добавить сервопривод, экран или Wi-Fi-уведомления? Пишите — покажем, как расширить проект.
-
Датчики интенсивности света: особенности, применение и руководство по интеграции с Arduino
Датчик интенсивности света
Источник изображения: Flickr
Вам нужно определить относительное расстояние до источника света? Или вам требуется эффективное устройство для измерения яркости источника света? Тогда вам нужен датчик интенсивности света.
Что это такое? Как это работает? Не переживайте, эта
-
Полное руководство: распиновка датчика алкоголя MQ-3 и подключение к Arduino
Управление в нетрезвом виде — серьезное преступление почти во всех странах. Поэтому контроль концентрации алкоголя в крови — важнейшая задача для полиции. В этой статье мы подробно разберем, как работает датчик алкоголя MQ-3 и как подключить его к микроконтроллеру Arduino для создания собственного а
-
Arduino SD-карта: полное руководство по настройке, подключению и использованию
Делаете много проектов на Arduino? Нужно хранить большой объем важных данных и логов? Решение — Arduino SD-карта. Как это работает? Статья проведет через всё: что это, как подключить, как использовать и больше. Читайте дальше — узнаете всё необходимое. Что такое SD в Arduino? Arduino SD-карта Источ
-
Ультразвуковой датчик HC-SR04: принцип работы, подключение к Arduino и код
Обзор HC-SR04
HC-SR04 — недорогой ультразвуковой дальномер (2 см – 4 м, точность 3 мм). Работает на 40 кГц, питание 5 В, ток ~15 мА. Угол измерения ~15°.
Характеристики
Габариты: 45 × 20 × 15 мм
Импульс триггера: 10 мкс TTL
Диапазон: 2 см – 400 см
Точность: ±3 мм
Частота: 40 кГц
Питание: 5 В DC