>
Всем приветы!
В этой статье автор описывает как он решил бороться с грызунами. Сам он проживает вместе с семьей в Индонезии и наличие большого количества мышей и крыс является довольно распространенной проблемой. Жители этого района Земли зачастую используют простые металлические ловушки. Приманкой для животных является обычно пища. Но проблема заключается в том, что крысы не всегда пробуют предложенную пищу, и следовательно ловушка не срабатывает. Возможно они просто прогуливаются в ознакомительных целях.
Поэтому автор решил смастерить ловушку, которая бы срабатывала не от физического контакта животного с пищей, а от срабатывания датчика, например инфракрасного. Если крыса попадет в такую ловушку, выбраться она самостоятельно уже не сможет.
Необходимые детали: (все позиции по 1-ой штуке)
– Arduino UNO
– Макетная плата
– Модуль WiFi ESP8266
– Соединительные провода папа/папа
– Соединительные провода папа/мама
– Сервопривод SG90
– Инфракрасный датчик
– Сопротивление 1 кОм
– Сопротивление 2,2 кОм
– Ловушка для мышей, крыс
– Источник питания 5-12в
Программное обеспечение:
– Arduino IDE
– Blynk
Датчик:
Автор в своей работе использовал инфракрасный модуль с датчиком обхода препятствий для Arduino:
Такой модуль состоит из двух основных частей. Инфракрасный (далее ИК) излучатель и ИК приёмник. Чаще всего такой датчик используют в робототехнике. Но ничто не мешает использовать его и для ловушки. Модуль работает в цифровом режиме. То есть на выходе можно получить только два значения – “0” или “1”. Эффективное расстояние работы прибора составляет 2-30 см, а угол обнаружения 35 градусов. Принцип работы датчика достаточно прост: ИК-излучатель излучает а ИК-приёмник улавливает это излучение :-) . При правильном расположении датчика в ловушке, на Arduino будет поступать сигнал о наличии или отсутствии “препятствия” , что в дальнейшем решит вопрос о необходимости закрытия дверцы.
После того, как автор выбрал какой именно датчик будет информировать о наличии “гостей” в ловушке, нужно подумать о механике захлапывания дверцы. Электрическая схема и программа управления будут представлены позже.
В ловушке можно использовать сервопривод SG90 или MG90S. Автор использовал второй вариант. Есть множество моделей серводвигателей. И конечно же они имеют свои характеристики, такие как напряжение питания, угол поворота рычага, усилие, которое прибор может создать.
Ниже будут приведены характеристики распространенных сервоприводов:
SG90
MG90S
MG995
MG946
Показанные выше модели сервоприводов имеют общую характеристику. А именно это наличие трех проводов. Чёрный – земля, красный – питание +5v, жёлтый – управление. При настройке сервопривода необходимо установить угол 0 градусов. Это положение должно быть при открытой дверце ловушки. При срабатывании датчика, сервопривод должен провернуть рычаг на 90 градусов для закрытия дверцы.
СВЯЗЬ:
Для связи с сервером Blynk автор использовал модуль ESP-01. Модуль использует канал Wi-Fi для управления датчиком.
Как говорилось раньше, автор сделал свой проект с помощью Blynk. По мнению многих, это программное обеспечение значительно упрощает работу над созданием своих проектов.
В данном приложении достаточно создать новый проект и программа выдаст готовый код API. Его нужно вставить в скетч 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();
}