Отпугиватель мышей на микроконтроллере arduino

Категория: Сделай сам

Отпугиватель мышей на микроконтроллере arduino

Экстренный выпуск. Беда, в прямом смысле этого слова, свалилась на голову. Под натяжным потолком появилась мышка. И это в городе, в квартире, на 7 ом этаже. Что делать?

Выгнав мышку и приведя в чувство жену и дочку начал обдумывать варианты решения проблемы:

  • снять часть натяжного потолка, найти место проникновения незваных гостей, заделать отверстие. Но удастся ли снова натянуть потолок самому или придется снова нанимать бригаду?

  • снять люстру, поставить мышеловку. Попытался, но отверстие под люстру сделано точно по размеру крепления и проклеено. Проникнуть под потолок не удалось.

  • в щель под люстрой подложить прикормку с ядом. О, это самый худший вариант. Погибшая мышка будет долго источать ужасный запах.

А может использовать какой-то ультразвуковой отпугиватель? Почитав отзывы об этих отпугивателях понял, что работать это не будет. Мышка существо умное, и на постоянный звук (ультразвук) быстро перестанет реагировать. Тут нужно что-то более адаптивное, чтобы отпругиватель включался именно в момент появления мыши. Дело было вечером и чтобы обеспечить спокойную ночь придумать нужно было что-то срочно.

Каким датчиком обнаружить появление мыши?

Ультразвуковой и инфракрасный не действуют через потолок, а акустический будет реагировать на все шумы и и давать ложные сработки. А почему бы не использовать в качестве датчика обычный громкоговоритель? Для этого нужно просто соединить мембрану динамика и полотно потолка, например ниткой, закрепленной на скотч.

Покопавшись в ящике с радиодеталями быстро нашел все необходимые детали:

  • макетная плата

  • arduino nano (или любой другой)

  • громкоговоритель

  • пьезоизлучатель

  • белый светодиод

  • резистор 150 ом - 470 ом

  • проводки

Быстро собрал вот такую схему:

Отпугиватель на arduino

Набросал простой код в arduino IDE:

int analogPin = 7; // номер порта датчика вибрации (динамик)

int piezoPin = 3; // пин пьезоэлемента

int LedPin = 2; // пин LED

int val = 0; // переменная для хранения считываемого значения

void setup()

{

pinMode(piezoPin, OUTPUT); // объявляем выход на пьезоэлемент

pinMode(analogPin, INPUT); // объявляем вход c датчика вибрации

pinMode(LedPin, OUTPUT);

}

void loop()

{

val = analogRead(analogPin); // считываем значение

// 1 - установка чувствительности датчика вибрации потолка, чем больше значение, тем меньше чувствительность

if (val > 1) {

digitalWrite(LedPin, HIGH); // turn the LED on (HIGH is the voltage level)

tone (piezoPin, 12000); // включаем на пьезодинамик Гц

delay(200);

noTone(piezoPin);

tone (piezoPin, 8000); // включаем на пьезодинамик Гц

delay(200);

noTone(piezoPin);

tone (piezoPin, 1000); // включаем на пьезодинамик Гц

delay(20);

noTone(piezoPin);

digitalWrite(LedPin, LOW); // turn the LED off by making the voltage LOW

tone (piezoPin, 12000); // включаем на пьезодинамик Гц

delay(200);

noTone(piezoPin);

tone (piezoPin, 8000); // включаем на пьезодинамик Гц

delay(200);

noTone(piezoPin);

tone (piezoPin, 1000); // включаем на пьезодинамик Гц

delay(20);

digitalWrite(LedPin, HIGH); // turn the LED on (HIGH is the voltage level)

noTone(piezoPin);

tone (piezoPin, 12000); // включаем на пьезодинамик 12000 Гц

delay(200);

noTone(piezoPin);

tone (piezoPin, 8000); // включаем на пьезодинамик 8000 Гц

delay(200);

noTone(piezoPin);

tone (piezoPin, 1000); // включаем на пьезодинамик 1000 Гц

delay(20);

noTone(piezoPin);

digitalWrite(LedPin, LOW); // turn the LED off by making the voltage LOW

}

}

Принцип действия: При вибрациях натяжного потолка (у нас гости), появляется сигнал на выходе динамика. Выход динамика подключен к пину 7, работающему в режиме аналогового входа. Соответственно arduino отслеживает этот вход и в случае появления сигнала, превышающего порог, на несколько секунд включает светодиод и подает звуковой сигнал. Не подбирал каких-то особенных частот, влияющих на мышей. Просто исходил из того, чтобы человеческому уху их не должно быть сильно слышно ночью. Короткий тон в 1000 Гц установил для контроля работоспособности.

Нюансы: Перед началом эксплуатации необходимо програмно настроить чувствительность датчика колебаний. Отпугиватель не должен давать ложных сработок, но быть достаточно чувствительным и срабатывать от лёгкого щелчка по потолку. Если на улице ветер, то это может заставить двигаться потолок, поэтому лучше прикрыть окно. Светодиод желательно направить на потолок, в район появления незваных гостей.

Результат: Прибор показал супер эффективность! После появления мыши и сработки прибора, мышь максимально быстро пытается покинуть помещение. После нескольких появлений мышка пропала окончательно, видимо решив, что здесь ее постоянно караулят ;-) Представьте сами себя на месте мышки, вы скрытно пробираетесь по узким ходам. Вокруг тихо и темно. Вы заходите на что то мягкое (потолок) и внезапно все вокруг начинает мигать и свистеть. Страшно!

В приложении архив скетча arduino и схемы в полном размере. Скачать