- Composants:
- Explication du circuit:
- Modèle de frappe d'alimentation dans Arduino:
- Explication de travail:
- Explication de la programmation:
La sécurité est une préoccupation majeure dans notre vie quotidienne, et les verrous numériques sont devenus un élément important de ces systèmes de sécurité. Il existe de nombreux types de systèmes de sécurité disponibles pour sécuriser notre place. Quelques exemples sont le système de sécurité basé sur PIR, le système de sécurité basé sur RFID, le système de verrouillage numérique, les systèmes à biomatrice, le verrouillage à code électronique. Dans cet article, construisons une serrure de porte à détection de coup secret à l'aide d'Arduino qui peut détecter le modèle de vos coups à la porte et n'ouvrira la serrure que si le modèle de frappe correspond au modèle correct. Pour une démonstration qui fonctionne correctement, consultez la vidéo à la fin.
Composants:
- Arduino Uno
- Bouton poussoir
- Avertisseur sonore
- Résistance 1M
- Puissance
- Fils de connexion
- Boîte
- Servomoteur
Explication du circuit:
Le schéma de circuit de ce détecteur de motif de cognement est très simple et contient Arduino pour contrôler l'ensemble du processus du projet, bouton-poussoir, buzzer et servomoteur. Arduino contrôle les processus complets comme prendre un mot de passe Buzzer ou Sensor, comparer les modèles, piloter Servo pour ouvrir et fermer la porte et enregistrer le modèle sur Arduino.
Le bouton poussoir est directement connecté à la broche D7 d'Arduino par rapport à la terre. Et un buzzer est connecté à la broche analogique A0 d'Arduino par rapport à la terre et avec une résistance de 1M entre A0 et la terre également. Un servomoteur est également connecté à la broche PWM D3 d'Arduino.
Modèle de frappe d'alimentation dans Arduino:
Dans ce circuit, nous avons utilisé Buzzer ou Peizo Sensor pour prendre le modèle d'entrée de cliquetis dans le système. Ici, nous utilisons un bouton poussoir pour permettre de prendre l'entrée du capteur et également de l'enregistrer dans l'Arduino. Ce système est conçu en prenant une idée du modèle de code Morse, mais pas exactement de la même manière.
Ici, nous avons utilisé une boîte en carton pour la démonstration. Pour prendre l'entrée, nous renversons le tableau après avoir appuyé sur le bouton-poussoir. Ici, nous avons frappé en gardant à l'esprit une période de 500 ms. Ces 500 ms sont dus au fait que nous l'avons corrigé dans le code et que le modèle d'entrée en dépend. Cette période de 500 ms définira que l'entrée était 1 ou 0. Vérifiez le code ci-dessous pour comprendre cette chose.
Lorsque nous le frappons, Arduino commence à surveiller le temps du premier coup au deuxième coup et le met dans un tableau. Ici, dans ce système, nous prenons 6 coups. Cela signifie que nous aurons 5 périodes.
Maintenant, nous vérifions la période un par un. Tout d'abord, nous vérifions la période entre le premier coup et le deuxième coup si la différence de temps entre ces derniers est inférieure à 500 ms, alors elle sera de 0 et si elle est supérieure à 500 ms, elle sera de 1 et elle sera enregistrée dans une variable. Maintenant, après cela, nous vérifions la période entre le deuxième coup et le troisième coup et ainsi de suite.
Enfin, nous obtiendrons une sortie à 5 chiffres au format 0 et 1 (binaire).
Explication de travail:
Le fonctionnement du projet Smart Lock basé sur Knock est simple. Nous devons d'abord enregistrer un modèle dans le système. Nous devons donc appuyer et maintenir le bouton poussoir jusqu'à ce que nous frappions 6 fois. Ici, dans ce projet, j'ai utilisé 6 coups mais l'utilisateur peut le changer comme il le souhaite. Après avoir frappé six fois, Arduino trouve le motif de frappe et l'enregistre dans l'EEPROM. Maintenant, après avoir enregistré le modèle d'entrée, appuyez et relâchez immédiatement le bouton-poussoir pour prendre l'entrée du capteur à Arduino pour ouvrir le verrou. Maintenant, nous devons frapper 6 fois. Après cela, Arduino le décode et le compare avec le modèle enregistré. Si une correspondance se produit, Arduino ouvre la porte en entraînant un servomoteur.
Remarque: lorsque nous appuyons ou maintenons le bouton poussoir, Arduino démarre une minuterie de 10 secondes pour prendre les 6 coups. Signifie que l'utilisateur doit frapper dans ce délai de 10 secondes. Et l'utilisateur peut ouvrir le moniteur série pour voir le journal.
Explication de la programmation:
Dans un programme, nous incluons tout d'abord le fichier d'en-tête et définissons les broches d'entrée et de sortie et définissons la macro et les variables déclarées comme vous pouvez le voir dans la section Code complet dans le code ci-dessous.
Après cela, dans la fonction de configuration , nous donnons la direction à la broche définie et initions le servomoteur.
void setup () {pinMode (sw, INPUT_PULLUP); myServo.attach (servoPin); myServo.write (180); Serial.begin (9600); }
Après cela, nous prenons l'entrée et enregistrons le modèle d'entrée ou le temps de frappe dans un tableau.
boucle vide () {int i = 0; if (digitalRead (sw) == LOW) {Serial.println ("Démarrer"); retard (1000); long stt = millis (); while (millis () <(stt + patternInputTime)) {int temp = analogRead (A0); if (temp> sensibilité && flag == 0 && i <= patternLenth) {…………..
Après cela, nous décodons le modèle d'entrée
pour (int i = 0; i
Et puis enregistrez si le bouton poussoir est toujours enfoncé
if (digitalRead (sw) == 0) {for (int i = 0; i
Et si le bouton-poussoir n'est pas toujours enfoncé, Arduino comparera le modèle décodé d'entrée avec le modèle enregistré.
else {if (knok == 1) {for (int i = 0; i
Si un mot de passe correspond, alors Servo ouvre la porte sinon rien ne se passe mais l'utilisateur peut voir le résultat sur le moniteur série.
Serial.println (acceptFlag); if (acceptFlag> = patternLenth-1) {Serial.println ("Accepté"); myServo.write (openGate); retard (5000); myServo.write (closeGate); } else Serial.println ("Rejeté"); }
Vous pouvez vérifier le code complet ci-dessous avec une vidéo de démonstration.