隆Hola a todos!
Hoy tengo un art铆culo sobre c贸mo se puede abrir una puerta conectada a un intercomunicador usando los altavoces Yandex Alice y Arduino. Si est谩 interesado, por favor, debajo del gato.
A menudo sucede que alguien llama al intercomunicador y en ese momento est谩s ocupado con algo, o simplemente eres demasiado perezoso para subir y abrir la puerta. Una situaci贸n familiar, 驴no?
Y mi intercomunicador no abre la puerta en absoluto sin levantar el auricular, y si no levanta el auricular dentro de los 30 segundos posteriores a la llamada, el bot贸n de apertura de la puerta dejar谩 de estar activo hasta que llegue una nueva llamada. Como el intercomunicador no es barato (en ese momento), el sapo me estrangul贸 para cambiarlo por otro. Y decid铆 luchar contra eso.
La primera idea para simplificar mi vida apareci贸 hace 10 a帽os, decid铆 hacer un adaptador de tel茅fono de intercomunicador para que la llamada del intercomunicador se duplicara en mi tel茅fono de casa. Dibuj贸 un diagrama, ensambl贸 un prototipo en una placa. Todo funcion贸, pero nunca super茅 este prototipo. Todo sigue tirado en la basura hasta el d铆a de hoy.
El segundo proyecto se implement贸 en un enrutador TL-MR3020 con firmware CyberWRT y tel茅fono SIP con software BareSIP. Cuando presion贸 el bot贸n del panel exterior, el enrutador, en paralelo con la llamada al intercomunicador, llam贸 al tel茅fono m贸vil y fue posible incluso en otra ciudad hablar con una persona parada cerca de la puerta de su apartamento, pero el softphone o el enrutador en s铆 funcionaban extremadamente inestable y tuvieron que ser abandonados.
Pero aqu铆, para mi felicidad, el a帽o pasado me regalaron una asistente de voz Alice para mi cumplea帽os y tuve una nueva idea: abrir la puerta con mi voz, a trav茅s de una columna de Yandex.
Y hoy lleg贸 el d铆a en que me compromet铆 a implementar mi idea.
Un poco sobre c贸mo funciona la estaci贸n de puerta del videoportero
La placa de calle se conecta al monitor del intercomunicador mediante 4 hilos GND, +12 V, audio y v铆deo.
Si est谩 en el panel de llamada, cierre el cable de audio a trav茅s de una resistencia de 100 ohmios a GND, entonces se escuchar谩 una se帽al de llamada. Y si se aplica +12 V al cable de audio, el rel茅 para abrir la cerradura electromagn茅tica funcionar谩.
La siguiente imagen muestra el esquema de conexi贸n de la placa de calle con el interfono.
Si utiliza un cable de intercomunicaci贸n especial para conectar la estaci贸n de puerta al monitor, generalmente se conecta de acuerdo con las siguientes instrucciones:
GND - trenzado
+ 12V - cable rojo
Audio - cable azul
Video - n煤cleo central del cable coaxial
Esquema
Se puede ver en el diagrama que para conectar el dispositivo en el Arduino al intercomunicador, necesita conectar solo 2 cables. Para conectar estos cables, us茅 lo que ten铆a a mano. En lugar de un rel茅, puede usar una llave en un transistor NPN o un optoacoplador PC817.
Us茅 un receptor de infrarrojos, el primero que me llam贸 la atenci贸n, que una vez dej茅 caer de un televisor viejo y que hab铆a estado en mi estante en la basura durante muchos a帽os.
Componentes utilizados
M贸dulo Arduino Nano Relay
Receptor de infrarrojos Cables
Dupont de 38 kHz
En lugar de Arduino nano, puede utilizar cualquier otro microcontrolador de la l铆nea Arduino. Us茅 Arduino nano porque tengo muchos de ellos.
Fuente para Arduino
El c贸digo es bastante simple y directo.
Para recibir y guardar el c贸digo del bot贸n presionado, debe poner el controlador Arduino en el modo de agregar un bot贸n remoto. Deber谩 establecer un puente en los pines D2 y GND y presionar el bot贸n de reinicio en el Arduino, despu茅s de lo cual el LED del sistema en la placa del controlador se iluminar谩 y el controlador esperar谩 a que se presione el bot贸n en el control remoto.
Recomiendo utilizar el mando a distancia del televisor, para que, adem谩s del mando por voz, puedas abrir la puerta desde el mando a distancia sin levantarte del sof谩. En el mando a distancia, es mejor elegir un bot贸n que utilice con poca frecuencia, normalmente cuatro botones de colores dise帽ados para teletexto. Despu茅s de recibir el c贸digo, Arduino parpadear谩 alegremente con un LED y volver谩 al modo de espera.
Puede presionar los botones tanto como desee, pero el Arduino solo recordar谩 la 煤ltima vez que lo presion贸. Para salir del modo de memorizaci贸n de c贸digos, basta con quitar el puente y pulsar el bot贸n "Reset" del microcontrolador.
C贸digo para 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;
}
Cuando coloque p煤blicamente el c贸digo que he publicado anteriormente, indique el enlace a la fuente.
Conexi贸n a Yandex.Station Alice
Para conectarse a un altavoz inteligente, necesita Yandex Smart Remote.
No es necesario comprarlo en un motor de b煤squeda ruso y socios, el control remoto se puede comprar en Aliexpress un poco m谩s barato. Pero la diferencia no es lo suficientemente grande como para jugar a la loter铆a compr谩ndole el control remoto a los chinos. No le dir茅 c贸mo conectar el control remoto a la estaci贸n, ya que hay muchas instrucciones detalladas sobre este tema en Internet, puede encontrarlas f谩cilmente en el mismo Yandex. Solo te dir茅 c贸mo configurar la interacci贸n entre Yandex.Station y el abridor Arduino.
Para hacer esto, debes ir a la aplicaci贸n Yandex.Browser - Todos los servicios - Dispositivos - Administraci贸n de dispositivos - Control remoto - Agregar un dispositivo - Configurar manualmente - ingresar el nombre "Puerta" - Agregar un comando - ingresar el nombre del comando de voz "Abrir" - tomar el control remoto de cualquier electrodom茅stico, enviarlo a Yandex. y presione el bot贸n requerido. Una vez que se apaga el LED azul del control remoto, la columna est谩 lista para ejecutar este comando. Ahora puedes comprobar, decir la frase "Alice abre la puerta", ella, despu茅s de pensarlo un poco, llevar谩 a cabo tu pedido.
Conclusi贸n
El uso del control remoto Yandex en una casa inteligente le permitir谩 controlar cualquier electrodom茅stico, que incluye un control remoto. Y tambi茅n es bastante f谩cil, habiendo ensamblado el circuito m谩s simple en el Arduino, integrar el control de cualquier otro dispositivo que no tenga control remoto. Es simple, confiable y no requiere que estos dispositivos est茅n conectados a Internet.
Si te gust贸 mi art铆culo, puedes suscribirte a mi canal para no perderte la pr贸xima publicaci贸n.
Si tiene alguna pregunta, puede hacerla en los comentarios.