Датчик вибрации Arduino KY-002 или модуль сенсора SW-420 используется для определения наличия внешних вибраций на модуле и применяется для создания домашней сигнализации. В этом небольшом обзоре мы рассмотрим несколько примеров использования датчика, представим несколько схем подключения датчика вибрации к плате Arduino и продемонстрируем программу с использованием цикла while().
СОДЕРЖАНИЕ
Необходимые компоненты:
- Arduino Uno / Arduino Nano / Arduino Mega
- датчик вибрации KY-002 или SW-420
- светодиоды и резисторы
- тактовая кнопка
- макетная плата
- коннекторы
Дополнительные материалы на эту тему:
Этот датчик может быть изготовлен в виде модуля, например, SW-420, датчики logo v1.5 или датчик вибрации 140c001 для Arduino. Основой датчика SW-420 является металлическая пружина с металлическим шариком внутри пластиковой трубки, которая начинает колебаться при вибрации. Модуль содержит усилитель сигнала, подстроечный резистор для регулировки чувствительности и три контакта для подключения к микроконтроллеру.
Датчик вибрации Arduino принцип работы, распиновка

Датчик вибрации Arduino характеристики (datasheet)
- Рабочее напряжение: 3.3 — 5 В
- Ток потребления: 5 мА
- Чувствительность: регулируемая
- Интерфейс: цифровой
Внутри датчика SW-420 находится металлический шарик на пружине, который реагирует на малейшую вибрацию. Принцип работы этих датчиков можно сравнить с принципом работы кнопки — если контакты тактовой кнопки замыкаются при нажатии на нее, то контакты рассматриваемого нами датчика вибрации замыкаются при возникновении колебаний. Давайте рассмотрим, как подключить датчик вибрации к плате Arduino Uno.
Как подключить датчик вибрации к Ардуино

SW-420 Arduino имеет три выхода — GND и VCC для питания и вывод аналогового сигнала A0, который подключается к любому аналоговому входу микроконтроллера. Чтобы использовать модуль KY-002 или модуль SW-420 в качестве датчика вибрации, необходимо подключить их к Arduino, следуя распиновке. Датчик HDX, как отдельный элемент, должен быть подключен через резистор к цифровому или аналоговому пину платы Ардуино.
Скетч для датчика вибрации Ардуино KY-002
#define VIB A1
#define LED 12
int val;
void setup() {
pinMode(LED, OUTPUT);
pinMode(VIB, INPUT);
Serial.begin(9600);
}
void loop() {
val = analogRead(VIB);
Serial.print("Vibration sensor - ");
Serial.println(val);
if (val > 500) { digitalWrite(LED, HIGH); }
if (val < 500) { digitalWrite(LED, LOW); }
delay(1000);
}
Как подключить сенсор вибрации к Ардуино

В первой программе светодиод загорается при наличии вибрации и гаснет при ее отсутствии, что не подходит для устройства сигнализации. Для правильной работы необходимо доработать код и подключить кнопку синхронизации. Светодиод не должен гаснуть по окончании вибрации (иначе мы не заметим, что датчик колебаний сработал), а возвращаться в режим ожидания только после однократного нажатия тактовой кнопки.
Скетч для датчика вибрации Ардуино SW-420
#define LED 12
#define VIB A1
#define BUT 2
int val;
byte w = 0;
void setup() {
pinMode(LED, OUTPUT);
pinMode(VIB, INPUT);
pinMode(BUT, INPUT);
Serial.begin(9600);
}
void loop() {
val = analogRead(VIB);
Serial.print("Vibration sensor - ");
Serial.println(val);
if (sens > 500) { digitalWrite(LED, HIGH); w = 1; }
if (sens < 500) { digitalWrite(LED, LOW); }
while (w == 1) {
Serial.println("DANGER");
if (digitalRead(BUT) == HIGH) { w = 0; }
delay(1000);
}
delay (1000);
}
Заключение. При срабатывании сенсора вибрации мы меняем значение переменной w = 1; — это нужно для того, чтобы начал выполняться цикл while() в программе. Цикл while в программе будет выполняться бесконечно, до тех пор, пока не станет ложным условие в цикле while (w == 1). Условие будет становится ложным при нажатии на тактовую кнопку — в этом случае мы меняем в программе значение переменной на «0» и покидаем цикл.
