La méthode d'automatisation de rideau la plus abordable



Il n'y a aucun moyen de suivre le développement de systèmes domotiques modernes de grandes marques, mais le prix et une certaine fonctionnalité vous font appliquer vos compétences aux appareils électroménagers faits maison. Je n'ai pas fait exception, la technique et le travail avec les logiciels sont désormais plus accessibles, ESC, Arduino, STM et d'autres innombrables plates-formes proposées offrent des opportunités pour résoudre presque tous les problèmes techniques. Il n'y a pas si longtemps, j'ai déménagé dans un nouvel appartement à la périphérie de la ville, un hall donnant sur un terrain vague et un chantier abandonné sur lequel les faisans marchaient en hiver, tout change rapidement et se construit, une maison a grandi à l'extérieur de la fenêtre, une fenêtre à travers la fenêtre.



Le manque de désir de devenir le sujet de l'attention de quelqu'un d'autre a poussé à couper les rideaux automatiques. Donc, ce que je voulais des rideaux, le premier, lever et baisser en fonction de l'heure fixée, le contrôle, y compris via Internet, bien que ce dernier était nécessaire pour la mise en œuvre de la commande vocale. En conséquence, Internet a beaucoup de choses intéressantes, mais comme je suis faible en programmation, je ne pouvais pas comprendre de nombreuses solutions, et toutes ne répondaient pas aux exigences. La décision de le faire par moi-même est venue progressivement, ici, j'ai graduellement marché sur tous les râteaux mais je suis quand même arrivé aux résultats. Des volets roulants ont été achetés, la vieille caméra rotative CCTV prise de l'objet a été démontée, j'en ai extrait deux moteurs pas à pas Nooname-Chinese dont je ne trouvais pas les caractéristiques sur Internet.



Après avoir traité les moteurs, j'ai utilisé nodemcu pour les contrôler, qui envoie des signaux pour contrôler l'unité de puissance au pilote ln298n, un simple croquis fonctionne sur la plate-forme Blynk, la position initiale du rideau est comptée à partir du signal du commutateur à lames, un certain nombre d'étapes sont prises vers la position inférieure. Le temps de montée et de descente diffère en quelques secondes et est d'une minute et demie, assez lentement, mais sans son! La carte a un module wifi intégré, et la plate-forme de clignotement a permis la synchronisation avec l'heure, selon le fuseau horaire, en conséquence, un widget a permis de simplifier le circuit autant que possible. Le contrôle vocal est effectué sur l'assistant de Dusya, alors que j'utilise le téléphone comme plate-forme, il y a des fausses alarmes périodiques, non critiques, à l'avenir il sera possible de remplacer la plate-forme (si je le comprends) et de remplacer le microphone, il y a des idées.





Quelques mois de fonctionnement se sont écoulés, tout fonctionne, ne saute pas de pas, je ne fais plus attention aux rideaux, tu ne peux pas dire à propos de mon chat, ils lui causent un intérêt constant. Quels sont les inconvénients, les rideaux ne fonctionnent pas en l'absence d'Internet (paiement pour une mise en œuvre abordable), il n'y a pas de retour, jusqu'à ce que je m'en rende compte, on ne sait pas dans quelle position les rideaux sont ouverts ou fermés. Bien que ce ne soit pas fatal si les rideaux sont ouverts ou fermés et que l'on commande de nouveau, rien ne se passera. Dans tous les cas, la mise en œuvre est justifiée sur la base du prix du marché en vigueur. Eh bien, comme on dit, tout va bien!



Voici le code pour 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