Hallo, alle miteinander!
Heute habe ich einen Artikel darüber, wie Sie mit Hilfe der Yandex-Sprecher Alice und Arduino eine Tür öffnen können, die mit einer Gegensprechanlage verbunden ist. Wenn Sie interessiert sind, dann bitte unter Katze.
Es kommt oft vor, dass jemand die Gegensprechanlage anruft und Sie in diesem Moment mit etwas beschäftigt sind oder einfach zu faul sind, um die Tür zu öffnen. Eine vertraute Situation, nicht wahr?
Und meine Gegensprechanlage öffnet die Tür überhaupt nicht, ohne den Hörer abzunehmen. Wenn Sie den Hörer nicht innerhalb von 30 Sekunden nach dem Anruf abheben, ist die Türöffner-Taste nicht mehr aktiv, bis ein neuer Anruf eingeht. Da die Gegensprechanlage (zu dieser Zeit) nicht billig ist, hat mich die Kröte erstickt, um sie gegen eine andere auszutauschen. Und ich habe beschlossen, dagegen anzukämpfen.
Die erste Idee, mein Leben zu vereinfachen, kam vor 10 Jahren. Ich entschied mich für einen Intercom-Telefonadapter, damit der Anruf von der Intercom auf mein Telefon zu Hause übertragen wird. Zeichnete ein Diagramm und baute einen Prototyp auf einem Steckbrett zusammen. Alles hat funktioniert, aber ich habe es nie über diesen Prototyp geschafft. Bis heute liegt alles im Müll herum.
Das zweite Projekt wurde auf einem TL-MR3020-Router mit CyberWRT-Firmware und BareSIP-Software SIP-Telefon implementiert. Wenn Sie die Taste des Außenpanels drückten, rief der Router parallel zum Intercom-Anruf das Mobiltelefon an, und es war sogar in einer anderen Stadt möglich, mit der Person zu sprechen, die in der Nähe der Tür Ihrer Wohnung stand, aber das Softphone oder der Router selbst funktionierten äußerst instabil und mussten aufgegeben werden.
Aber hier, zu meinem Glück, gaben sie mir letztes Jahr zu meinem Geburtstag eine Sprachassistentin Alice und ich hatte eine neue Idee - die Tür mit meiner Stimme durch eine Yandex-Kolumne zu öffnen.
Und heute kam der Tag, an dem ich mich verpflichtete, meine Idee umzusetzen.
Ein wenig darüber, wie die Türstation der Video-Gegensprechanlage funktioniert
Das Außenpanel wird über 4 Drähte GND, +12 V, Audio und Video mit dem Intercom-Monitor verbunden.
Wenn Sie auf dem Anruffeld das Audiokabel über einen 100-Ohm-Widerstand gegen GND schließen, ist ein Rufsignal zu hören. Wenn +12 V an das Audiokabel angelegt werden, funktioniert das Relais zum Öffnen der elektromagnetischen Verriegelung.
Das Bild unten zeigt den Anschlussplan des Außenpanels mit dem Türsprechgerät.
Wenn Sie ein spezielles Intercom-Kabel verwenden, um die Türstation mit dem Monitor zu verbinden, wird es normalerweise gemäß den folgenden Anweisungen angeschlossen:
GND - Flechten
+ 12 V - rotes Kabel
Audio - blaues
Kabel Video - zentraler Kern des Koaxialkabels
Planen
Aus dem Diagramm ist ersichtlich, dass Sie nur 2 Drähte anschließen müssen, um das Gerät am Arduino mit der Gegensprechanlage zu verbinden. Um diese Drähte anzuschließen, habe ich das verwendet, was ich zur Hand hatte. Anstelle eines Relais können Sie einen Schlüssel an einem NPN-Transistor oder einem PC817-Optokoppler verwenden.
Ich benutzte einen IR-Empfänger, den ersten, der mir auffiel, den ich einmal von einem alten Fernseher fallen ließ und der seit vielen Jahren in meinem Regal im Müll lag.
Verwendete Komponenten
Arduino Nano
Relay Modul
IR Empfänger 38 kHz
Dupont Drähte
Anstelle des Arduino Nano können Sie jeden anderen Mikrocontroller der Arduino Line verwenden. Ich habe Arduino Nano verwendet, weil ich viele davon habe.
Quelle für Arduino
Der Code ist recht einfach und unkompliziert.
Um den Code der gedrückten Taste zu empfangen und zu speichern, müssen Sie den Arduino-Controller in den Modus zum Hinzufügen einer Remote-Taste versetzen. Sie müssen einen Jumper an den Pins D2 und GND setzen und die Reset-Taste am Arduino drücken. Danach leuchtet die System-LED auf der Controller-Karte auf und der Controller wartet, bis die Taste auf der Fernbedienung gedrückt wird.
Ich empfehle die Verwendung der TV-Fernbedienung, damit Sie zusätzlich zur Sprachsteuerung die Tür von der Fernbedienung aus öffnen können, ohne vom Sofa aufstehen zu müssen. Wählen Sie auf der Fernbedienung am besten eine Taste, die Sie selten verwenden, normalerweise vier farbige Tasten für Videotext. Nach Erhalt des Codes blinkt Arduino fröhlich mit einer LED und kehrt in den Standby-Modus zurück.
Sie können die Tasten so oft drücken, wie Sie möchten, aber der Arduino merkt sich nur den letzten Druck. Um den Code-Speichermodus zu verlassen, müssen Sie den Jumper entfernen und die Taste "Reset" am Mikrocontroller drücken.
Code für Arduino
#include <IRremote.h>
#include <EEPROM.h>
//#define TOLERANCE 35 //
#define IR_RECEIVE_PIN 11 //
#define RELAY_PIN 12 //
#define SET_PIN 2 //
IRrecv irrecv(IR_RECEIVE_PIN);
decode_results results;
void setup()
{
irrecv.enableIRIn(); //
pinMode(RELAY_PIN, OUTPUT);
digitalWrite(RELAY_PIN, LOW);
pinMode(SET_PIN, INPUT_PULLUP); //D10 , « »
pinMode(LED_BUILTIN, OUTPUT);
digitalWrite(LED_BUILTIN, LOW);
// Serial.begin(115200);
while(!digitalRead(SET_PIN)) // D2 GND
{
set_command();
}
}
void loop()
{
if (irrecv.decode(&results)) //
{
if(LoadEEPROM()==results.value) // (ir_command==results.value)LoadEEPROM();
{
digitalWrite(RELAY_PIN, HIGH); //
digitalWrite(LED_BUILTIN, HIGH);
delay(500);
digitalWrite(LED_BUILTIN, LOW);
digitalWrite(RELAY_PIN, LOW); //
}
irrecv.resume(); //
}
}
void set_command() //
{
digitalWrite(LED_BUILTIN, HIGH);
if (irrecv.decode(&results))
{
digitalWrite(LED_BUILTIN, LOW);
SaveEEPROM(results.value); // EEPROM
irrecv.resume(); //
}
delay(100);
}
void SaveEEPROM(unsigned long ir_code) // EEPROM
{
EEPROM.write(0, ir_code & 0xFF);
EEPROM.write(1, (ir_code & 0xFF00) >> 8);
EEPROM.write(2, (ir_code & 0xFF0000) >> 16);
EEPROM.write(3, (ir_code & 0xFF000000) >> 24);
}
unsigned long LoadEEPROM() // EEPROM
{
byte val = EEPROM.read(3);
unsigned long ir_code=val;
val = EEPROM.read(2);
ir_code= (ir_code << 8) | val;
val = EEPROM.read(1);
ir_code= (ir_code << 8) | val;
val = EEPROM.read(0);
ir_code= (ir_code << 8) | val;
return ir_code;
}
#include <EEPROM.h>
//#define TOLERANCE 35 //
#define IR_RECEIVE_PIN 11 //
#define RELAY_PIN 12 //
#define SET_PIN 2 //
IRrecv irrecv(IR_RECEIVE_PIN);
decode_results results;
void setup()
{
irrecv.enableIRIn(); //
pinMode(RELAY_PIN, OUTPUT);
digitalWrite(RELAY_PIN, LOW);
pinMode(SET_PIN, INPUT_PULLUP); //D10 , « »
pinMode(LED_BUILTIN, OUTPUT);
digitalWrite(LED_BUILTIN, LOW);
// Serial.begin(115200);
while(!digitalRead(SET_PIN)) // D2 GND
{
set_command();
}
}
void loop()
{
if (irrecv.decode(&results)) //
{
if(LoadEEPROM()==results.value) // (ir_command==results.value)LoadEEPROM();
{
digitalWrite(RELAY_PIN, HIGH); //
digitalWrite(LED_BUILTIN, HIGH);
delay(500);
digitalWrite(LED_BUILTIN, LOW);
digitalWrite(RELAY_PIN, LOW); //
}
irrecv.resume(); //
}
}
void set_command() //
{
digitalWrite(LED_BUILTIN, HIGH);
if (irrecv.decode(&results))
{
digitalWrite(LED_BUILTIN, LOW);
SaveEEPROM(results.value); // EEPROM
irrecv.resume(); //
}
delay(100);
}
void SaveEEPROM(unsigned long ir_code) // EEPROM
{
EEPROM.write(0, ir_code & 0xFF);
EEPROM.write(1, (ir_code & 0xFF00) >> 8);
EEPROM.write(2, (ir_code & 0xFF0000) >> 16);
EEPROM.write(3, (ir_code & 0xFF000000) >> 24);
}
unsigned long LoadEEPROM() // EEPROM
{
byte val = EEPROM.read(3);
unsigned long ir_code=val;
val = EEPROM.read(2);
ir_code= (ir_code << 8) | val;
val = EEPROM.read(1);
ir_code= (ir_code << 8) | val;
val = EEPROM.read(0);
ir_code= (ir_code << 8) | val;
return ir_code;
}
Wenn Sie den oben veröffentlichten Code öffentlich platzieren, geben Sie bitte den Link zur Quelle an.
Verbindung zu Yandex.Station Alice herstellen
Für die Verbindung mit einem Smart-Lautsprecher benötigen Sie die Yandex Smart Remote.
Es ist nicht notwendig, es von einer russischen Suchmaschine und Partnern zu kaufen, die Fernbedienung kann bei Aliexpress etwas billiger gekauft werden. Aber der Unterschied ist nicht groß genug, um im Lotto eine Fernbedienung von den Chinesen zu kaufen. Ich werde Ihnen nicht sagen, wie Sie die Fernbedienung an die Station anschließen können, da es im Internet viele detaillierte Anweisungen zu diesem Thema gibt, die Sie leicht von derselben Yandex finden können. Ich werde Ihnen nur sagen, wie Sie die Interaktion zwischen Yandex.Station und dem Arduino-Opener einrichten.
Dazu müssen Sie zur Anwendung gehen Yandex-Browser - Alle Dienste - Geräte - Geräteverwaltung - Fernbedienung - Gerät hinzufügen - Manuell konfigurieren - Name "Tür" eingeben - Befehl hinzufügen - Name des Sprachbefehls "Öffnen" eingeben - Fernbedienung von Haushaltsgeräten nehmen und an Yandex senden. und drücken Sie die gewünschte Taste. Nachdem die blaue LED auf der Fernbedienung erlischt, kann die Spalte diesen Befehl ausführen. Jetzt können Sie überprüfen, sagen Sie den Satz "Alice öffne die Tür", sie wird nach einigem Nachdenken Ihre Bestellung ausführen.
Fazit
Mit der Yandex-Fernbedienung in einem Smart Home können Sie alle Haushaltsgeräte steuern, einschließlich einer Fernbedienung. Und es ist auch ganz einfach, nach dem Zusammenbau der einfachsten Schaltung auf dem Arduino die Steuerung anderer Geräte zu integrieren, die keine Fernbedienung haben. Es ist einfach, zuverlässig und erfordert nicht, dass diese Geräte mit dem Internet verbunden sind.
Wenn Ihnen mein Artikel gefallen hat, können Sie meinen Kanal abonnieren, um die nächste Veröffentlichung nicht zu verpassen.
Wenn Sie Fragen haben, können Sie diese in den Kommentaren stellen.