Metode otomatisasi tirai paling terjangkau



Tidak ada cara untuk mengikuti perkembangan sistem otomasi rumah modern dari merek-merek terkemuka, tetapi harga dan fungsionalitas tertentu membuat Anda menerapkan keterampilan Anda pada peralatan rumah buatan sendiri. Saya tidak terkecuali, teknik dan bekerja dengan perangkat lunak sekarang lebih mudah diakses, ESC, Arduino, STM dan banyak sekali platform lainnya yang diusulkan memberikan peluang untuk menyelesaikan hampir semua masalah teknis. Belum lama ini, saya pindah ke sebuah apartemen baru di pinggiran kota, sebuah aula yang menghadap ke tanah kosong dan sebuah situs konstruksi yang ditinggalkan di mana burung pegar berjalan di musim dingin, semuanya berubah dengan cepat dan sedang dibangun, sebuah rumah telah tumbuh di luar jendela, sebuah jendela melalui jendela.



Kurangnya keinginan untuk menjadi subjek perhatian orang lain terpacu untuk memotong tirai otomatis. Jadi, apa yang saya inginkan dari tirai, yang pertama, menaikkan dan menurunkan sesuai dengan waktu yang ditetapkan, kontrol, termasuk melalui Internet, meskipun yang terakhir diperlukan untuk penerapan kontrol suara. Akibatnya, Internet memiliki banyak hal menarik, tetapi karena saya lemah dalam pemrograman, saya tidak dapat memahami banyak solusi, dan tidak semuanya memenuhi persyaratan. Keputusan untuk melakukannya sendiri datang secara bertahap, di sini saya secara bertahap menginjak semua garu tetapi masih sampai pada hasilnya. Roller blinds dibeli, kamera CCTV rotary tua yang diambil dari objek dibongkar, dari situ aku mengekstraksi dua motor stepper Nooname-Cina yang karakteristiknya tidak bisa kutemukan di Internet.



Setelah berurusan dengan mesin, saya menggunakan nodemcu untuk mengendalikan mereka, yang mengirimkan sinyal untuk mengontrol unit daya ke driver ln298n, sebuah sketsa sederhana pada platform Blynk, posisi awal tirai dihitung dari sinyal dari saklar buluh, sejumlah langkah diambil ke posisi bawah. Waktu menaikkan dan menurunkan berbeda dalam beberapa detik dan satu setengah menit, agak lambat, tetapi tanpa suara! Papan memiliki modul wifi built-in, dan platform blink memungkinkan sinkronisasi dengan waktu, tergantung pada zona waktu, sebagai hasilnya, satu widget memungkinkan untuk menyederhanakan sirkuit sebanyak mungkin. Kontrol suara dilakukan pada asisten Dusya, sementara saya menggunakan telepon sebagai platform, ada alarm palsu berkala, tidak kritis, di masa depan akan mungkin untuk mengganti platform (jika saya mengetahuinya) dan mengganti mikrofon, ada ide.





Beberapa bulan operasi telah berlalu, semuanya bekerja, tidak melewatkan langkah, saya tidak memperhatikan tirai lagi, Anda tidak bisa mengatakan tentang kucing saya, mereka membuatnya tertarik. Apa kerugiannya, gorden tidak berfungsi dengan tidak adanya Internet (pembayaran untuk implementasi yang terjangkau), tidak ada umpan balik, sampai saya menyadarinya, tidak jelas dalam posisi apa gorden dibuka atau ditutup. Meskipun tidak fatal jika gorden dibuka atau ditutup dan perintah ulang tidak akan terjadi apa-apa. Dalam kasus apa pun, penerapannya dibenarkan atas dasar harga pasar yang berlaku. Yah, seperti kata mereka, semua baik-baik saja!



Di bawah ini adalah kode untuk esp:

#define BLYNK_PRINT Serial
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>

#include <ESP8266mDNS.h>
#include <WiFiUdp.h>
#include <ArduinoOTA.h> //OTA   OTA-

#include <AccelStepper.h>
#define motor1 D1
#define motor2 D2
#define motor3 D3
#define motor4 D4
AccelStepper Stepper1(4, D1, D2, D3, D4); 

static int buttonPin = D5;  //     
//unsigned long runTime1; //     Arduino, 
unsigned long runTime2;
int current = 20800;// -    
static bool newZeroPoint = true; //  ,      ,    .

char auth[] = "";
char ssid[] = "";
char pass[] = "";
   

void setup() {
 Serial.begin(9600);
  Blynk.begin(auth, ssid, pass);
  
  pinMode(buttonPin, INPUT);
  pinMode(motor1, OUTPUT);
  pinMode(motor2, OUTPUT);
  pinMode(motor3, OUTPUT);
  pinMode(motor4, OUTPUT);
  

  ArduinoOTA.setHostname("ESP8266-00002"); //OTA    
  //ArduinoOTA.setPassword((const char *)"0000"); //OTA      
  ArduinoOTA.begin(); //OTA  OTA
        
 Stepper1.setMaxSpeed(200);     //      (/)
Stepper1.setAcceleration(180); //  (/^2)
  
}
void ZeroPoint(){
  if (newZeroPoint)
  //   .
        if (digitalRead(buttonPin)) 
      {
          //   ,       .
          Stepper1.setCurrentPosition(0);
          newZeroPoint = false;
          //Serial.println("true");
      } else
      {
        //     ,       .
        if (Stepper1.distanceToGo() == 0) {Stepper1.moveTo(Stepper1.currentPosition() + 1000);}
        Stepper1.run();
        //Serial.println("false");
      }
  }
 BLYNK_WRITE(V0)
{
  int button = param.asInt(); // read button  
  if (button == 1){ Stepper1.move(-Stepper1.currentPosition());}  
}   
      
BLYNK_WRITE(V1)
{
  int button = param.asInt(); // read button  
  if (button == 1){
    
 Stepper1.moveTo(-current);
 Stepper1.run();
 } 
}
BLYNK_WRITE(V2)
{
  int button = param.asInt(); // read button  
  if (button == 1){
  Stepper1.stop();}
 } 
     
 void Out()//             
 {
  if (Stepper1.run())
  runTime2 = millis(); 
  if (millis() - runTime2 > 5000) 
  {runTime2 = millis();
  digitalWrite (5, LOW);
  digitalWrite (4, LOW);
  digitalWrite (0, LOW);
  digitalWrite (2, LOW);
    }
}
 void loop()
{
  Blynk.run();
 Stepper1.run();
    ZeroPoint(); 
    Out();
    ArduinoOTA.handle();       
   
}

All Articles