Автоматическая дверь в курятник

0 12

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

Материалы и инструменты:

-Фоторезистор;
-Ардуино;
-Резисторы;
-Кнопочные переключатели;
-Шаговый двигатель;
-Солнечная панель;
-Повербанк;
-Макетная плата;
-Провода;
-Два блока;
-Веревка;
-Рым-болт;
-Вал с блоками;
-Противовес;
Шаг первый: Ардуино
Сначала мастер собирает схему, как на фото.
Дверь закрывается, когда на улице настают сумерки и открывается, когда встает солнце. Для принудительного закрытия/открытия мастер установил две кнопки.
После сборки схемы мастер скачивает библиотеки по этому адресу .

#include  
#include 
CheapStepper Stepper (8,9,10,11); 
логическое moveClockwise = true;
const int ldrPin = A2;
const int OuvPin = 5;
const int FermPin = 6;
int x = 1;
const int pinReveil = 2;
const int pinReveil2 = 3;
const int pinReveil3 = 4;
const int pinReveil4 = 12;

В этом коде мастер устанавливает разъемы шагового двигателя, кнопок, фоторезистора и т.д.
Далее определяет контакты, которые будут получать информацию (от LDR и от кнопок). Х — это положение двери (1 = открыто, 0 = закрыто).
Ниже он устанавливает скорость шагового двигателя. Скорость выставляется между 1 и 8. 8 самая маленькая скорость.

void setup () {
  pinMode (pinReveil, OUTPUT);
  pinMode (pinReveil2, OUTPUT);
  pinMode (pinReveil3, OUTPUT);
  pinMode (pinReveil4, OUTPUT);
  pinMode (ldrPin, INPUT);
  pinMode (OuvPin, INPUT);
  pinMode (FermPin, INPUT);
  stepper.setRpm (1);
  Serial.begin (9600);
Загружает код.
void loop() 

  digitalWrite(pinReveil,HIGH); // The pins is now +5V
  digitalWrite(pinReveil2,HIGH);
  digitalWrite(pinReveil3,HIGH);
  digitalWrite(pinReveil4,HIGH);
  delay(100);
  digitalWrite(pinReveil,LOW); // The pin is now 0
  digitalWrite(pinReveil2,LOW);
  digitalWrite(pinReveil3,LOW);
  digitalWrite(pinReveil4,LOW);

// Here that is what I was talking about : stimulating my powerbank so that I don't have to

// open it and solder things, or power my arduino with 3.6V.


 if(digitalRead(OuvPin) == 1 ){
    while ( digitalRead(OuvPin) == 1 ){
      moveClockwise = true;
      stepper.moveDegrees(moveClockwise, 1 );
    }
    digitalWrite(8,LOW);
    digitalWrite(9,LOW);
    digitalWrite(10,LOW);
    digitalWrite(11,LOW);
    x=1; // We consider that we will use this button only to put the door in full "open" position
  }

// I just checked whether my 'open' button was used or not, and acted accordingly.

 else if(digitalRead(FermPin) == 1 ){
    while ( digitalRead(FermPin) == 1 ){
      moveClockwise = false;
      stepper.moveDegrees(moveClockwise, 1 );
    }
    digitalWrite(8,LOW);
    digitalWrite(9,LOW);
    digitalWrite(10,LOW);
    digitalWrite(11,LOW);
    x=0; // We consider that we will use this button only to put the door in full "closed" position
  }

// Same here with closing button.

int ldrStatus = analogRead(ldrPin);
  delay(500);

// I get the value of the ldr resistance, and let a delay to process the information.

if(ldrStatus > 150 && x==0){ // If my door is closed and light is enough 
    moveClockwise = true;
    stepper.moveDegrees(moveClockwise,2500);
    stepper.moveDegrees(moveClockwise,2500);
    stepper.moveDegrees(moveClockwise,2500);
    stepper.moveDegrees(moveClockwise,2500);
    stepper.moveDegrees(moveClockwise,2000);
    x=1;
    digitalWrite(8,LOW);
    digitalWrite(9,LOW);
    digitalWrite(10,LOW);
    digitalWrite(11,LOW);
  }

// I open my door if it's closed and if the threshold is reached ( you have to observe your chickens 

// so that you know when they get in and out and adapt values accordingly. 

else if (ldrStatus<6  && x==1) {
    moveClockwise=false;
    stepper.moveDegrees(moveClockwise,2500);
    stepper.moveDegrees(moveClockwise,2500);
    stepper.moveDegrees(moveClockwise,2500);
    stepper.moveDegrees(moveClockwise,2500);
    stepper.moveDegrees(moveClockwise,2000);
    x=0;
    digitalWrite(8,LOW);
    digitalWrite(9,LOW);
    digitalWrite(10,LOW);
    digitalWrite(11,LOW);
  }

// same with closing

else {
   for (int i=0; i<6;i++)
      LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF)

 }

// If I'm not in those situations ( full day or night ), I just put my arduino in sleep mode 

// to try to save energy.

}

Шаг второй: дверь

Далее мастер делает устанавливает систему блоков для поднятия двери. Шаговый двигатель и всю электронику, кроме солнечной панели, устанавливает внутри. Солнечную панель поместил в пластиковый контейнер и установил на крыше. По команде начинает работать шаговый двигатель и наматывает веревку на шкив — дверь открывается. Вечером двигатель начинает крутится в другую сторону и дверь закрывается. Продолжительность работы двигателя устанавливается опытным путем в зависимости от размеров двери и конструкции блока.

Источник: usamodelkina.ru
Оставить комментарий

Мы используем файлы cookie. Продолжив использование сайта, вы соглашаетесь с Политикой использования файлов cookie и Политикой конфиденциальности Принимаю

Privacy & Cookies Policy