Крысоловка + Arduino - Своими руками
Своими руками

Крысоловка + Arduino

>

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


Необходимые детали: (все позиции по 1-ой штуке)
Arduino UNO
Макетная плата
Модуль WiFi ESP8266
Соединительные провода папа/папа
Соединительные провода папа/мама
Сервопривод SG90
Инфракрасный датчик
Сопротивление 1 кОм
Сопротивление 2,2 кОм
Ловушка для мышей, крыс
– Источник питания 5-12в
Программное обеспечение:

Arduino IDE
Blynk
Датчик:

Автор в своей работе использовал инфракрасный модуль с датчиком обхода препятствий для Arduino:

Крысоловка + Arduino
Такой модуль состоит из двух основных частей. Инфракрасный (далее ИК) излучатель и ИК приёмник. Чаще всего такой датчик используют в робототехнике. Но ничто не мешает использовать его и для ловушки. Модуль работает в цифровом режиме. То есть на выходе можно получить только два значения – “0” или “1”. Эффективное расстояние работы прибора составляет 2-30 см, а угол обнаружения 35 градусов. Принцип работы датчика достаточно прост: ИК-излучатель излучает а ИК-приёмник улавливает это излучение :-) . При правильном расположении датчика в ловушке, на Arduino будет поступать сигнал о наличии или отсутствии “препятствия” , что в дальнейшем решит вопрос о необходимости закрытия дверцы.

Крысоловка + Arduino
МЕХАНИЗМ ЗАКРЫТИЯ:

После того, как автор выбрал какой именно датчик будет информировать о наличии “гостей” в ловушке, нужно подумать о механике захлапывания дверцы. Электрическая схема и программа управления будут представлены позже.

Крысоловка + Arduino
В ловушке можно использовать сервопривод SG90 или MG90S. Автор использовал второй вариант. Есть множество моделей серводвигателей. И конечно же они имеют свои характеристики, такие как напряжение питания, угол поворота рычага, усилие, которое прибор может создать.

Крысоловка + Arduino
Ниже будут приведены характеристики распространенных сервоприводов:

SG90
Крысоловка + Arduino
MG90S
Крысоловка + Arduino
MG995
Крысоловка + Arduino
MG946
Крысоловка + Arduino
Показанные выше модели сервоприводов имеют общую характеристику. А именно это наличие трех проводов. Чёрный – земля, красный – питание +5v, жёлтый – управление. При настройке сервопривода необходимо установить угол 0 градусов. Это положение должно быть при открытой дверце ловушки. При срабатывании датчика, сервопривод должен провернуть рычаг на 90 градусов для закрытия дверцы.

СВЯЗЬ:

Для связи с сервером Blynk автор использовал модуль ESP-01. Модуль использует канал Wi-Fi для управления датчиком.

Крысоловка + Arduino
ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ:

Как говорилось раньше, автор сделал свой проект с помощью Blynk. По мнению многих, это программное обеспечение значительно упрощает работу над созданием своих проектов.
В данном приложении достаточно создать новый проект и программа выдаст готовый код API. Его нужно вставить в скетч Arduino.

Вот макет автора:

Крысоловка + Arduino
Данный макет состоит из четырех частей. А именно – получение данных с датчика, работа с положением (углом поворота) сервопривода, виртуальный дисплей (используется сервер), и функция сброса. Информация на “дисплее” информирует о готовности и состоянии ловушки. Данные о положении сервопривода используются для информирования “готов/не готов”.
Есть еще одна функция. Если произойдет срабатывание ловушки, то будет отправлена информация в приложение.

Крысоловка + Arduino
О работе ловушки рассказано практически все. Эффективность ловушки оказалась очень высокой. Для лучшей работы устройства, все таки необходимо подкорректировать конкретные условия.

Крысоловка + Arduino
СХЕМА:

Крысоловка + ArduinoСкачать схему можно по этой тут.

СКЕТЧ:

Скачать код можно тут.

Крысоловка + Arduino Показать / Скрыть текст
#define BLYNK_PRINT Serial
#define ESP8266_BAUD 9600

#include
#include
#include
#include

//Credentials for logging in to Blynk
char auth[] = “”;
char ssid[] = “”;
char pass[] = “”;

Servo myservo;

//Assigning ESP based on the port
SoftwareSerial EspSerial(2, 3); // RX, TX
ESP8266 wifi(&EspSerial);

//Assigning V4 as Virtual LED in Blynk App
WidgetLCD lcd(V4);

int ir_value;
int triggered;

//Receive input from Blynk App to reset the Servo Position
BLYNK_WRITE(V3){
if(param.asInt() == 1 && triggered == 1){
resetDetection();
}
}

void setup()
{
// Debug console
pinMode(8, INPUT); //Prepare pin 8 as Input for the IR Sensor
pinMode (13, OUTPUT); //Prepare pin 13 as Output for testing purposes to light up the LED
Serial.begin(9600); //Set up the serial monitor using BAUD rate of 9600

// Set ESP8266 baud rate
EspSerial.begin(ESP8266_BAUD);
delay(10);

//Connecting arduino to blynk using the defined credential above
Blynk.begin(auth, wifi, ssid, pass);

resetDetection();
}

//Checking the value from the IR Sensor
void irSensor(){
ir_value = digitalRead(8);
Blynk.virtualWrite(V0, ir_value);
}

//Check the servo position
void servoDetail(){
Blynk.virtualWrite(V2, myservo.read());
}

//Return servo to default position at 0 degree
void resetDetection(){
myservo.attach(12);
myservo.write(0);

servoDetail();
delay(1);
myservo.detach();

triggered = 0;
lcd.clear();
lcd.print(0,0,”Ready”);
}

//Move the servo when detecting an object and send notification to Blynk app
void moveServo(){
if(ir_value == 0 && triggered == 0){
myservo.attach(12);
myservo.write(90);

servoDetail();
delay(1);
myservo.detach();

triggered = 1;
Blynk.notify(“Mouse trapped! Check immedietaly!!”);
lcd.print(0,0,”Not Ready”);
}
}

void loop()
{
Blynk.run();
irSensor();
moveServo();
}

SitesReady

Только те, кто предпринимают абсурдные попытки, смогут достичь невозможного. - Альберт Эйнштейн

Follow us

Don't be shy, get in touch. We love meeting interesting people and making new friends.