Ouverture de la porte de l'interphone avec un assistant vocal et arduino



Bonjour à tous!



Aujourd'hui, j'ai un article sur la façon d'ouvrir une porte connectée à un interphone à l'aide des haut-parleurs Yandex Alice et Arduino. Si vous êtes intéressé, alors s'il vous plaît, sous chat.



Il arrive souvent que quelqu'un appelle l'interphone, et en ce moment vous êtes occupé avec quelque chose, ou tout simplement trop paresseux pour venir ouvrir la porte. Une situation familière, n'est-ce pas?



Et mon interphone n'ouvre pas du tout la porte sans décrocher le combiné, et si vous ne décrochez pas le combiné dans les 30 secondes suivant l'appel, le bouton d'ouverture de la porte cessera d'être actif jusqu'à ce qu'un nouvel appel arrive. Puisque l'interphone n'est pas bon marché (à ce moment-là), le crapaud m'a étouffé pour le changer en un autre. Et j'ai décidé de le combattre.



La première idée pour me simplifier la vie est apparue il y a 10 ans, j'ai décidé de faire un adaptateur interphone-téléphone pour que l'appel de l'interphone soit dupliqué sur mon téléphone résidentiel. Dessiné un diagramme, assemblé un prototype sur une maquette. Tout a fonctionné, mais je n'ai jamais dépassé ce prototype. Tout est toujours à la poubelle à ce jour.



Le deuxième projet a été mis en œuvre sur un routeur TL-MR3020 avec le micrologiciel CyberWRT et le téléphone SIP du logiciel BareSIP. Lorsque vous avez appuyé sur le bouton du panneau extérieur, le routeur, parallèlement à l'appel interphone, a appelé le téléphone mobile et il était possible même dans une autre ville de parler à la personne se tenant près de la porte de votre appartement, mais le soft phone ou le routeur lui-même fonctionnait extrêmement instable et a dû être abandonné.



Mais ici, à mon bonheur, l'année dernière, ils m'ont donné une assistante vocale Alice pour mon anniversaire et j'ai eu une nouvelle idée - ouvrir la porte avec ma voix, à travers une chronique Yandex.

Et aujourd'hui est venu le jour où j'ai entrepris de mettre en œuvre mon idée.



Un peu sur le fonctionnement de la platine de rue de l'interphone vidéo



Le panneau extérieur est connecté au moniteur d'interphone à l'aide de 4 fils GND, +12 V, audio et vidéo.



Si sur le panneau d'appel, fermez le fil audio à travers une résistance de 100 Ohm à GND, alors un signal d'appel sera entendu. Et si la tension de +12 V est appliquée au fil audio, le relais d'ouverture de la serrure électromagnétique fonctionnera.



L'image ci-dessous montre le schéma de connexion du panneau extérieur avec l'interphone.







Si vous utilisez un câble d'interphone spécial pour connecter la platine de rue au moniteur, il est généralement connecté selon les instructions suivantes:



GND - tressage

+ 12V - fil rouge

Audio - fil bleu

Vidéo - noyau central du câble coaxial







Schème



On peut voir sur le schéma que pour connecter l'appareil sur l'Arduino à l'interphone, vous devez connecter seulement 2 fils. Pour connecter ces fils, j'ai utilisé ce que j'avais sous la main. Au lieu d'un relais, vous pouvez utiliser une clé sur un transistor NPN ou un optocoupleur PC817.



J'ai utilisé un récepteur infrarouge, le premier qui a attiré mon attention, que j'ai jadis laissé tomber d'un vieux téléviseur et qui traînait sur mon étagère à la poubelle depuis de nombreuses années.







Composants utilisés





Module Arduino Nano Relay

Récepteur IR

Fils Dupont 38 kHz



Au lieu de l'Arduino nano, vous pouvez utiliser n'importe quel autre microcontrôleur de la ligne Arduino. J'ai utilisé Arduino nano car j'en ai beaucoup.



Source pour Arduino



Le code est assez simple et direct.



Pour recevoir et enregistrer le code du bouton enfoncé, vous devez mettre le contrôleur Arduino en mode d'ajout d'un bouton à distance. Vous devrez définir un cavalier sur les broches D2 et GND et appuyer sur le bouton de réinitialisation de l'Arduino, après quoi le voyant système de la carte contrôleur s'allumera et le contrôleur attendra que le bouton de la télécommande soit enfoncé.



Je recommande d'utiliser la télécommande du téléviseur, afin qu'en plus de la commande vocale, vous puissiez ouvrir la porte à partir de la télécommande sans vous lever du canapé. Sur la télécommande, il est préférable de choisir un bouton que vous utilisez rarement, généralement quatre boutons de couleur conçus pour le télétexte. Après avoir reçu le code, Arduino clignotera joyeusement avec une LED et retournera en mode veille.



Vous pouvez appuyer sur les boutons autant que vous le souhaitez, mais l'Arduino ne se souviendra que de la dernière pression. Pour sortir du mode de mémorisation de code, il suffit de retirer le cavalier et d'appuyer sur le bouton "Reset" du microcontrôleur.



Code pour 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;

}



Lorsque vous publiez le code que j'ai publié ci-dessus, veuillez indiquer le lien vers la source.



Connexion à Yandex.Station Alice



Pour vous connecter à un haut-parleur intelligent, vous avez besoin de Yandex Smart Remote.







Il n'est pas nécessaire de l'acheter auprès d'un moteur de recherche russe et de partenaires, la télécommande peut être achetée sur Aliexpress un peu moins cher. Mais la différence n'est pas assez grande pour jouer à la loterie en achetant une télécommande aux Chinois. Je ne vous dirai pas comment connecter la télécommande à la station, car il existe de nombreuses instructions détaillées à ce sujet sur Internet, vous pouvez facilement les trouver à partir du même Yandex. Je vais juste vous dire comment configurer l'interaction entre Yandex.Station et l'ouvreur Arduino.



Pour ce faire, vous devez vous rendre dans l'application Yandex.Browser - Tous les services - Appareils - Gestion des appareils - Télécommande - Ajouter un appareil - Configurer manuellement - entrez le nom «Porte» - Ajoutez une commande - entrez le nom de la commande vocale «Ouvrir» - prenez la télécommande de tous les appareils ménagers, envoyez-la à Yandex. et appuyez sur le bouton souhaité. Une fois que le voyant bleu de la télécommande I. s'est éteint, la colonne est prête à exécuter cette commande. Maintenant vous pouvez vérifier, dites la phrase «Alice ouvre la porte», elle, après une petite réflexion, exécutera votre commande.



Conclusion



L'utilisation de la télécommande Yandex dans une maison intelligente vous permettra de contrôler tous les appareils électroménagers, y compris une télécommande. Et il est également assez facile, après avoir assemblé le circuit le plus simple sur l'Arduino, d'intégrer le contrôle de tout autre appareil qui ne possède pas de télécommande. C'est simple, fiable et ne nécessite pas que ces appareils soient connectés à Internet.



Si vous avez aimé mon article, vous pouvez vous abonner à ma chaîne pour ne pas manquer la prochaine publication.



Si vous avez des questions, vous pouvez les poser dans les commentaires.



All Articles