Système d'alarme GSM économique avec le cerveau d'Arduino. Système d'alarme domestique ou utilisation d'un capteur de mouvement et d'un moniteur LCD avec Arduino À partir de quoi allons-nous assembler

Bonne journée! Encore une fois, un multi-revue des composants électroniques chinois, comme d'habitude un peu sur tout, je vais essayer d'être plus court, mais est-ce que ça marchera ? Alors bienvenue alarme GSM coûtant jusqu'à 700 roubles. Intéressant? Je demande "couper" !

Commençons! Avant de commencer, je recommande de se pencher sur celui-ci, moins de composants et plus d'autonomie. Ainsi, les "termes de référence", les exigences de base pour la signalisation :

1) Avertir lorsque les capteurs sont déclenchés.
2) En cas de coupure de courant, une certaine autonomie doit être prévue.
3) Gestion des alarmes via sms et appels.

En raison du fait que le processus de création d'une alarme traîne depuis plusieurs mois et que certains vendeurs ne vendent plus les composants qui leur ont été achetés, les liens seront mis à jour vers les produits d'autres vendeurs qui ont le nombre maximum ou proche du nombre maximum des ventes de produits et meilleur prix... Les prix indiqués dans la revue sont en vigueur à la date de rédaction.

Liste de ce dont vous avez besoin :

Liste des changements

GSM_03_12_2016-14-38.hex- fonctionnement fixe de l'appareil avec le modem M590.
GSM_05_12_2016-13-45.hex- ajout de memtest de commande de console, optimisation de l'utilisation de la RAM.
GSM_2016_12_06-15-43.hex- ajout de la sortie des résultats de la commande à la console, optimisation de la mémoire. Occupation : 49 % SRAM.
GSM_2016_12_07-10-59.hex- maintenant les numéros de téléphone sont ajoutés et supprimés correctement. Occupé : 49 % de SRAM, 74 % de mémoire flash.
GSM_2016_12_07-15-38.hex- ajout de la possibilité de connecter un capteur de mouvement, il est connecté à la broche A0 (dans ce cas, la broche A0 est utilisée comme numérique). SMS ajoutés - commandes PIRON, PIROff... Occupé : 48 % SRAM, 76 % mémoire Flash.
GSM_2016_12_08-13-53.hex- Maintenant, après l'exécution réussie de la commande, qui n'envoie pas de message SMS en réponse, l'appareil clignote une fois avec une LED bleue. Maintenant, après l'exécution incorrecte de la commande, qui n'envoie pas de message SMS en réponse, l'appareil clignote deux fois avec une LED bleue. Maintenant, après avoir initialisé les paramètres de l'appareil, si le mode "silencieux" est activé (SendSms = 0), l'appareil fait clignoter la LED bleue rapidement pendant 2 secondes. Correction d'un bug à cause duquel le numéro n'était pas toujours supprimé de la mémoire par la commande DeletePhone. Occupé : 48 % SRAM, 78 % mémoire Flash.
GSM_2016_12_11-09-12.hex- Ajoutée commandes de la console AddPhone et DeletePhone, la syntaxe est similaire aux commandes SMS. Optimisation de la mémoire. Occupé : 43 % SRAM, 79 % mémoire Flash.
GSM_2017_01_03-22-51.hex- Prise en charge implémentée d'extensions de ports E/S similaires sur la puce PCF8574, pour connecter 8 capteurs supplémentaires, y compris des commutateurs Reed. Recherche d'adresse automatique et configuration automatique du module. Les noms standards des capteurs et le niveau logique de leur déclenchement sont modifiés à l'aide de la commande EditSensor. Contenu modifié du sms d'alarme pour le capteur principal (broche D0) « Alarme ! Capteur principal !" et détecteur de mouvement (broche A0) « Alarme ! Capteur PIR !". Ajout des commandes EditSensor et I2CScan. Occupé : 66 % SRAM, 92 % mémoire Flash.
GSM_2017_01_15-23-26.hex- Prise en charge du modem A6_Mini. Contrôle de l'alimentation externe (broche D7). Ajout des commandes SMS WatchPowerOn, WatchPowerOff. Ajout des commandes de console ListConfig, ListSensor. Maintenant, la commande sms EditSensor fonctionne correctement. La sortie de débogage vers le moniteur de port a été légèrement "réduite". Occupé : 66 % SRAM, 95 % mémoire Flash.
GSM_2017_01_16-23-54.hex- Désormais, dans le message de réponse à la commande SMS "Info", l'état du détecteur de mouvement est également signalé. Correction d'un bug à cause duquel des messages de réponse SMS parfois vides étaient envoyés. Désormais, l'appareil informe non seulement de la déconnexion, mais également de la reprise de l'alimentation externe. Tous les modems ont commencé à "discuter moins", maintenant le moniteur de port est un peu plus propre. Occupé : 66 % SRAM, 95 % mémoire flash.
GSM_2017_02_04-20-23.hex- Correction d'un bug "Regardez la mise sous tension". Maintenant, après le désarmement, la "pin d'alarme" est désactivée. Maintenant, après avoir supprimé le numéro, les informations correctes s'affichent dans la console. Correction possible d'un bug à cause duquel des messages de réponse SMS parfois vides étaient envoyés. Occupé : 66 % SRAM, 90 % mémoire Flash.
GSM_2017_02_14-00-03.hex- Maintenant les messages SMS sont envoyés par défaut, le paramètre SendSms est à nouveau égal à 1. Maintenant, lorsque les contacts de l'interrupteur principal à lames sont fermés (porte fermée), l'appareil fait clignoter la LED bleue pendant 2 secondes, signalant le fonctionnement normal de le capteur. Occupé : 66 % SRAM, 90 % mémoire Flash.
GSM_2017_03_01-23-37.hex- Commande WatchPowerOn supprimée. Ajout de la commande console WatchPowerOff, identique à la commande SMS. Ajout des commandes WatchPowerOn1, WatchPowerOn2. WatchPowerOn1 - la surveillance de l'alimentation externe est activée si l'alarme est armée, WatchPowerOn2 - la surveillance de l'alimentation externe est toujours activée. La fonction d'armement et de désarmement par des dispositifs externes a été implémentée ; pour cela, les broches A1 (D15) et A2 (D16) sont utilisées. Armer/désarmer l'alarme lorsque apparaît sur la broche A1 (D15) haut niveau+ 5V ou sur la broche A2 (D16) GND bas niveau. La broche A1 (D15) est tirée vers GND, la broche A2 (D16) est tirée vers + 5 V via des résistances de 20 (10) kΩ. Ajout des commandes GuardButtonOn et GuardButtonOff. Maintenant, après l'armement, la LED rouge clignote jusqu'à ce que l'intégrité du circuit du capteur Reed principal soit vérifiée. Si le circuit est intact, la LED rouge s'allume. Occupé : 66 % SRAM, 95 % mémoire flash.
GSM_2017_03_12-20-04.hex- Maintenant, la console est encore plus propre, mais si le mode test "TestOn" est activé, des informations supplémentaires sont affichées dans la console. Correction du bug "Envoyé!", Maintenant le message sur l'envoi de messages s'affiche correctement dans la console. Le bogue du "faux appel répété" a été corrigé. La demande de solde devrait maintenant fonctionner correctement sur tous les modems. Occupé : 67 % SRAM, 95 % mémoire flash.
GSM_2017_04_16-12-00.hex- Corrigé. Désormais, les équipes Info et Money enverront toujours un SMS de réponse. La commande GuardButtonOn a été remplacée par les commandes GuardButtonOn1 et GuardButtonOn2. Occupé : 67 % SRAM, 99 % mémoire Flash.
GSM_2017_04_21-09-43.hex - utilisation non recommandée, uniquement à titre de test, merci pour les erreurs identifiées :) - Désormais, le paramètre sendsms n'affecte pas l'envoi de messages SMS pour la surveillance du réseau électrique. Ajout de la commande SMS DelayBeforeGuard, qui est responsable du délai lors de l'armement, la valeur ne peut pas dépasser 255 secondes. Ajout de la commande SMS DelayBeforeAlarm, qui est responsable du retard dans l'envoi des notifications et de l'activation du "pin d'alarme" lorsque les capteurs sont déclenchés, la valeur ne peut pas dépasser 255 secondes. Suppression des commandes ClearSMS, désormais les messages sont supprimés automatiquement dès leur réception. Occupé : 68 % SRAM, 100 % mémoire Flash.
GSM_2017_04_22-20-42.hex- Correction de plusieurs bugs. Les commandes ClearSMS sont à nouveau présentes dans le firmware. Optimisation de la mémoire. Occupé : 68 % de SRAM, 98 % de mémoire flash.
GSM_2017_04_23-17-50.hex- Maintenant, la demande de solde devrait fonctionner correctement sur tous les modems. L'armement et le désarmement par des appareils externes fonctionnent désormais correctement. Les messages de réponse SMS de la commande Info ne doivent pas être vides. Optimisation de la mémoire. Occupé : 68 % de SRAM, 98 % de mémoire flash.
GSM_2017_04_24-13-22.hex- Désormais, la transmission des commandes de la console au module GSM n'est effectuée que si le mode test est activé. Désormais, il n'y a plus de division entre les commandes SMS et les commandes de la console, toutes les commandes existantes peuvent être envoyées à la fois par SMS et via la console. Probablement un bug avec la commande Info a été corrigé. Optimisation de la mémoire. Occupé : 68 % de SRAM, 94 % de mémoire flash.
GSM_2017_04_25-20-54.hex- Correction d'un bug où la commande ListConfig modifiait la valeur du dernier événement. Désormais, lors de la saisie de commandes via le kosol, les messages SMS inutiles ne sont pas envoyés. Probablement un bug avec la commande Info a été corrigé. Optimisation de la mémoire. Occupé : 66 % SRAM, 94 % mémoire Flash.
GSM_2017_04_30-12-57.hex- Sortie temporairement activée d'informations supplémentaires vers la console lors de l'envoi de messages SMS et de la formation d'une réponse à la commande Info. Bug éventuellement corrigé avec la commande Info. Optimisation de la mémoire. Occupé : 66 % SRAM, 92 % mémoire Flash.
GSM_2017_05_06-11-52.hex- Corrigé avec la fonction DelayBeforeAlarm. Occupé : 66 % SRAM, 93 % mémoire Flash.
GSM_2017_05_23-21-27.hex- Légèrement modifié la sortie des informations vers la console. Ajout de la prise en charge des modules d'extension de port sur PCF8574A avec des adresses de 0x38 à 0x3f inclus. Correction d'un bug c. Maintenant, l'appareil est redémarré automatiquement après les commandes FullReset, ResetConfig, ResetPhone et si la commande MemTest est exécutée avec succès. Ajout de la commande WatchPowerTime. Il est maintenant possible de régler le délai après lequel un message SMS sera envoyé concernant la déconnexion de la source d'alimentation externe. Occupé : 67 % SRAM, 94 % mémoire Flash.
GSM_2017_05_26-20-22.hex- Correction de l'initialisation de la mémoire des capteurs de la carte d'extension. La syntaxe de la commande AddPhone a été modifiée. Ajout de la commande EditMainPhone. Le principe de fonctionnement du système de notification a été modifié, lorsque le capteur est déclenché, des messages SMS seront envoyés en premier, après quoi des appels vocaux seront effectués. Des messages SMS alarmants seront envoyés aux numéros de téléphone avec le signe "S" (SMS). Les appels vocaux seront effectués vers les numéros avec le signe "R" (Sonnerie). Les messages concernant la mise hors/sous tension de l'alimentation externe seront envoyés aux numéros de téléphone avec le signe « P » (Alimentation). Ajout de la commande RingTime. Maintenant, il est possible de définir la durée de l'appel vocal d'alarme, le paramètre peut avoir une valeur de 10 à 255 secondes. Désormais, la commande RingOn / RingOff active / désactive globalement la notification d'appel vocal. Ajout de la commande ResetSensor. Occupé : 68 % SRAM, 99 % mémoire Flash.
GSM_2017_06_02-17-43.hex- Ajout du paramètre "I" (Info) aux commandes AddPhone et EditMainPhone, qui est responsable de la notification par SMS sur l'armement ou le désarmement de l'appareil. Maintenant, après avoir ajouté le numéro principal, l'appareil redémarre automatiquement. Vous pouvez maintenant ajouter les mêmes numéros à la mémoire de l'appareil. Lors de l'ajout du deuxième et des numéros en double suivants, les attributs "M", "S", "P" et "I" en seront automatiquement supprimés. Ces numéros seront utilisés pour les appels vocaux répétés lorsque les capteurs sont déclenchés. Correction d'un bug avec une sortie de courbe vers la console après l'exécution de la commande AddPhone, désormais les informations ne s'affichent pas automatiquement après l'ajout d'un numéro. Ajout de la commande de redémarrage. Occupé : 69 % SRAM, 99 % mémoire Flash.
GSM_2017_06_11-00-07.hex- Maintenant encore, lorsque les contacts de l'interrupteur principal à lames sont fermés (la porte est fermée), l'appareil clignote avec une LED bleue pendant 2 secondes, signalant le fonctionnement normal du capteur, alors que l'appareil n'est pas armé ou désarmé. Commandes RingOn / RingOff supprimées. Maintenant, l'appareil peut être désarmé pendant un appel d'alarme, maintenant ils sont exécutés en arrière-plan. Occupé : 69 % SRAM, 99 % mémoire Flash.
GSM_2017_07_04-21-52.hex- Désormais, la commande Pause n'envoie plus de SMS de réponse. Suppression des commandes TestOn et TestOff. L'indicateur de gestion a été supprimé de tous les numéros. Occupé : 68 % SRAM, 96 % mémoire Flash.
GSM_2017_07_24-12-02.hex- Ajout de commandes ReedSwitchOn / ReedSwitchOff pour surveiller le capteur Reed principal, il peut désormais être activé / désactivé de la même manière que le capteur de mouvement. Correction d'un bug de la commande Info. Les commandes TestOn et TestOff sont à nouveau présentes dans le firmware. Occupé : 68 % SRAM, 96 % mémoire Flash.
GSM_2017_07_26-10-03.hex- Ajout de la commande ModemID. Le modem n'est détecté automatiquement que si la valeur de ce paramètre est 0. Après avoir mis la valeur du paramètre à 0, l'appareil est automatiquement redémarré. Occupé : 68 % de SRAM, 98 % de mémoire flash.
GSM_2017_08_03-22-03.hex- Maintenant, l'alarme peut contrôler des appareils externes. La sortie analogique A3 est utilisée pour le contrôle (D17 - utilisé comme numérique). Le niveau logique de la sortie (+ 5 V ou GND) peut être modifié, après avoir modifié le niveau via la commande de réglage, l'appareil redémarrera automatiquement. La durée du signal de commande de l'appareil externe peut être modifiée. Ajout des commandes ExtDeviceLevelLow, ExtDeviceLevelHigh, ExtDeviceTime, Open. Quelques changements dans la logique des commandes de contrôle. Optimisation de la mémoire. Occupé : 68 % SRAM, 99 % mémoire Flash.
GSM_2017_08_10-12-17.hex- Suppression des commandes SmsOn / SmsOff, ReedSwitchOn / ReedSwitchOff, PIROn / PIROff et tout ce qui s'y rapporte. Commande DelayBeforeAlarm remplacée par des commandes étendues. La sortie de la commande Info a été modifiée. Optimisation de la sortie de la commande ListConfig vers la console. Désormais, tous les capteurs numériques avec un niveau de réponse élevé ou faible, y compris les commutateurs Reed, peuvent être connectés aux broches D6 et A0. Les broches D6 et A0 doivent être connectées à la masse (GND) via une résistance de 10 (20) kOhm. Si le capteur est configuré pour un niveau de déclenchement bas (activé en mode commutateur Reed), alors la continuité du circuit est vérifiée. Le niveau logique de déclenchement sur les entrées D6 et A0 (+ 5V ou GND) peut être modifié, après avoir changé le niveau logique l'appareil sera automatiquement redémarré. Pour chacun des capteurs (principal, secondaire, cartes d'extension PCF), lorsqu'il est déclenché, son propre temps peut être défini, après quoi une notification sera effectuée (SMS et / ou appel vocal). "Capteur PIR" renommé en "Second capteur". Le fonctionnement de la carte d'extension a été corrigé, une erreur à cause de laquelle l'appareil notifiait toujours le déclenchement des capteurs, que l'appareil soit armé ou non. Vous pouvez maintenant sélectionner le mode de fonctionnement dans lequel l'appareil peut surveiller les capteurs de la carte d'extension à la fois en mode armé (GuardOn) et en mode désactivé (GuardOff). Ajout des commandes PCFForceOn / PCFForceOff, MainSensorLevelHigh / MainSensorLevelLow / MainSensorLevelOff, SecondSensorLevelHigh / SecondSensorLevelLow / SecondSensorLevelOff, MainDelayBeforeAlarm, SecondDelayBeFAforeAlay, PC Occupé : 68 % SRAM, 99 % mémoire Flash.

* Les versions ultérieures du micrologiciel incluent les modifications par rapport aux versions précédentes.


Ports utilisés d'Arduino Nano v3

D4- sortie broche "alarme", lorsque le capteur est déclenché, un signal de haut niveau est défini sur cette broche
D5- sortie inverse de la broche "alarme", lorsque le capteur est déclenché, un signal de niveau bas est mis sur cette broche

D6- interrupteur à lames. À partir de la version GSM_2017_08_10-12-17.hex, tous les capteurs numériques avec un niveau de déclenchement haut ou bas, y compris les commutateurs Reed, peuvent être connectés à la broche D6. La broche D6 doit être mise à la terre (GND) via une résistance de 10 (20) kΩ.
D7- connecté à un diviseur de tension à partir d'une alimentation externe + 5V. Le bras supérieur est de 2,2 kOhm, le bras inférieur est de 3,3 kOhm.

Diviseur de tension


D8- Modem émetteur
D9- Modem RX

D10- LED rouge
D11- LED bleue
D12- LED verte

Connexion périphérique :
A0- Capteur de mouvement . À partir de la version GSM_2017_08_10-12-17.hex, tous les capteurs numériques avec un niveau de réponse élevé ou faible, y compris les commutateurs Reed, peuvent être connectés à la broche A0. La broche A0 doit être mise à la terre (GND) via une résistance de 10 (20) kΩ.

A1- Entrée pour contrôle externe. L'alarme va armer/désarmer le système lorsqu'un niveau haut + 5V apparaît à l'entrée.
A2- Entrée inverse pour contrôle externe. L'alarme va armer/désarmer le système lorsqu'un niveau bas GND apparaît à l'entrée.

A3- Sortie configurable (+ 5V ou GND) pour contrôler des appareils externes. Lorsqu'une commande de contrôle est reçue, la valeur à cette sortie change en fonction de celle qui a été définie pour une période de temps définie.

A4- SDA I2C
A5- SLC I2C
, pour connecter 8 capteurs supplémentaires.


Commandes de contrôle pour hex - firmware

Attention! Commandes dédiées en gras ne peuvent être effectués qu'à partir du numéro principal, car ils sont responsables de la configuration de l'appareil. Le reste des commandes peut être exécuté à partir de nombres avec le signe "Gestion".

SMS - les commandes de contrôle ne sont pas sensibles à la casse:
Ajouter un téléphone- Ajouter un numéro de téléphone. Au total, pas plus de 9 numéros + 1 numéro principal peuvent être ajoutés, qui sont automatiquement enregistrés en mémoire lors du premier appel à l'appareil après la réinitialisation aux paramètres d'usine par commandes Réinitialiser le téléphone ou alors Réinitialisation complète... Ceux. celui qui a appelé en premier l'appareil après l'avoir réinitialisé aux paramètres d'usine est le « principal », ce numéro est entré dans la première cellule de mémoire et ne peut pas être modifié ou supprimé par SMS. Il est possible d'ajouter deux numéros identiques, mais le numéro en double ne conserve automatiquement que le signe "r" - exclusivement pour les appels vocaux répétés.
Exemple de commande :



Syntaxe de la commande :

Ajouter un téléphone- équipe
: - délimiteur
5 - écrire dans le cinquième emplacement mémoire
+71234567890 - numéro de téléphone
Avant la version GSM_2017_05_26-20-22.hex :
a - Paramètre « Alarme » - Un SMS sera envoyé aux numéros avec ce paramètre - des messages sur l'activation de l'alarme et des messages sur l'armement ou le désarmement.
À partir de la version GSM_2017_05_26-20-22.hex :
m - Paramètre "Gestion" - gestion des alarmes activée
s - Paramètre "SMS" - un message sms sera envoyé lorsque les capteurs seront déclenchés
r - Paramètre "Sonnerie" - un appel vocal sera effectué lorsque les capteurs seront déclenchés
p - Paramètre "Power" - un message SMS sera envoyé lorsque l'alimentation externe est allumée / éteinte
i - Paramètre "Info" - un message SMS sera envoyé lors de l'armement ou du désarmement
En l'absence de paramètres "m", "s", "r", "p", "i", le téléphone est stocké dans la mémoire, mais n'est en aucun cas utilisé.


Supprimer le téléphone- Supprimer le numéro de téléphone.
Exemple de commande :

Syntaxe de la commande :

Supprimer le téléphone - commande
: - délimiteur
+71234567891 - numéro de téléphone


ModifierTéléphonePrincipal- Modifier les paramètres "s", "r", "p", "i" du téléphone principal, ce numéro est inscrit dans la première cellule mémoire.
Exemple de commande :

Syntaxe de la commande :

EditMainPhone - commande
: - délimiteur
srpi - paramètres


SoldeNum- Modification du numéro de demande de solde et traitement de la longueur de la réponse à la demande. Valeur par défaut pour Beeline : # 100 # L22.
Exemple de commande :

Syntaxe de la commande :

BalanceNum - commande
: - délimiteur
# 103 # - numéro de demande de solde
L24 - La longueur (len) de la réponse envoyée est de 24 caractères, nous avons coupé le spam de la demande de solde.


ModifierCapteur- Changer le nom du capteur et le niveau de déclenchement logique. Il ne peut y avoir plus de 8 capteurs supplémentaires au total. Après avoir modifié les paramètres, un redémarrage de l'appareil est requis.
Exemple de commande :
EditSensor : 1 + Datchik dvizheniya v koridore # h

Syntaxe de la commande :

EditSensor - commande
: - délimiteur
1 - écrire dans le premier emplacement mémoire
+ - séparateur
Datchik dvizheniya v koridore - le nom du capteur, ne peut pas dépasser 36 caractères, espaces compris.
#h - Signe d'un niveau logique haut du capteur, à réception duquel une alarme sera déclenchée. S'il n'y a pas de "#h", l'alarme sera déclenchée lorsqu'un niveau logique bas est reçu du capteur.


Temps de sommeil- Le temps de "s'endormir" de l'alarme lors de la réception de SMS - la commande "Pause", est indiquée en minutes. Valeur par défaut : 15, ne peut pas être inférieure à 1 et supérieure à 60.
Exemple de commande :

Syntaxe de la commande :

SleepTime - commande
: - délimiteur
20 - 20 minutes de "sommeil".


AlarmePinTime- Le temps pendant lequel la broche alarme / inverse est allumée / éteinte, est indiqué en secondes. Valeur par défaut : 60, ne peut pas être inférieure à 1 seconde et supérieure à 43 200 secondes (12 heures).
Exemple de commande :

Syntaxe de la commande :

Commande AlarmPinTime
: - délimiteur
30 - 30 secondes marche / arrêt broche d'alarme.


DelayBeforeGuard- Temps avant d'armer l'appareil après avoir reçu la commande appropriée.
Exemple de commande :

Syntaxe de la commande :

DelayBeforeGuard - Équipe
: - délimiteur
25 - 25 secondes avant l'armement


DélaiAvantAlarme- Le délai après lequel la notification SMS "alarmante" sera envoyée si l'alarme n'a pas été désarmée pendant cette période de temps. Remplacé par des commandes étendues à partir de la version GSM_2017_08_10-12-17.hex
Exemple de commande :

Syntaxe de la commande :

DelayBeforeAlarm - commande
: - délimiteur
40 - 40 secondes avant d'envoyer la notification "alarme"


RegarderPowerTime- Temps en minutes après lequel un message SMS sera envoyé concernant la déconnexion de la source d'alimentation externe. Si l'alimentation externe est rétablie avant l'expiration du temps défini, le message ne sera pas envoyé.
Exemple de commande :

Syntaxe de la commande :

WatchPowerTime - Équipe
: - délimiteur
5 à 5 minutes avant d'envoyer un SMS


Heure de sonnerie- Durée de l'appel vocal d'alarme, le paramètre peut avoir une valeur de 10 à 255 secondes.
Exemple de commande :

Syntaxe de la commande :

RingTime - commande
: - délimiteur
40 - 40 La durée de l'appel sera de 40 secondes, après quoi le prochain abonné sera appelé.


Identifiant du modem- Installation forcée du modèle du modem utilisé. Valeurs possibles : 0 - détection automatique du modem, 1 - M590, 2 - SIM800l, 3 - A6_Mini.
Exemple de commande :

Syntaxe de la commande :

ID modem - commande
: - délimiteur
2 - Identifiant du modem.


ExtDeviceTime- Le nombre de secondes pendant lesquelles le niveau du signal à la sortie de commande de l'appareil externe changera.
Exemple de commande :

Syntaxe de la commande :

ExtDeviceTime- commande
: - délimiteur
5 - 5 secondes


NiveauPériphérique ExtBas- Un appareil externe connecté à la sortie A3 est piloté par un faible niveau de signal (GND). Par défaut, la sortie sera élevée + 5V jusqu'à ce qu'une commande pour contrôler un périphérique externe soit reçue.
ExtDeviceLevelHigh- Un appareil externe connecté à la sortie A3 est contrôlé par un niveau de signal élevé (+ 5V). La sortie sera par défaut à un niveau GND bas jusqu'à ce qu'une commande pour contrôler un périphérique externe soit reçue.

Réinitialiser le capteur- réinitialiser les paramètres des capteurs d'extension de port

Réinitialiser la configuration- retour aux paramètres d'usine

Réinitialiser le téléphone- suppression de la mémoire de tous les numéros de téléphone

Réinitialisation complète- réinitialiser les paramètres, supprimer tous les numéros de téléphone de la mémoire, restaurer la valeur par défaut de la commande BalanceNum.

RingOn- activer la notification par un appel au numéro "principal" enregistré dans la première cellule mémoire lors du déclenchement du capteur. Supprimé depuis la version GSM_2017_06_11-00-07.hex
Raccrocher- désactiver la notification par un appel lorsqu'un capteur est déclenché. Supprimé depuis la version GSM_2017_06_11-00-07.hex

SMS activé- activer la notification par SMS lorsqu'un capteur est déclenché. Supprimé depuis la version GSM_2017_08_10-12-17.hex
SMS désactivé- désactiver la notification par SMS lorsqu'un capteur est déclenché. Supprimé depuis la version GSM_2017_08_10-12-17.hex

PIRON- activer le traitement du capteur de mouvement
PIROff- désactiver le traitement du capteur de mouvement

ReedSwitchOn- activer le traitement du capteur Reed principal
ReedSwitchOff- désactiver le traitement du capteur Reed principal

RegarderMise sous tension- activer le contrôle de l'alimentation externe, un message SMS sur la déconnexion de l'alimentation externe sera envoyé, à condition que l'alarme soit armée. Supprimé depuis la version GSM_2017_03_01-23-37.

RegarderPowerOn1- activer le contrôle de l'alimentation externe, un message SMS sur la déconnexion de l'alimentation externe sera envoyé, à condition que l'alarme soit armée.
RegarderPowerOn2- activer le contrôle de l'alimentation externe, un message SMS sur la déconnexion de l'alimentation externe sera envoyé dans tous les cas

RegarderMise hors tension- désactiver le contrôle de l'alimentation externe

GuardButtonOn- le contrôle d'alarme par des appareils externes ou par bouton est activé.Supprimé depuis la version GSM_2017_04_16-12-00.
GuardButtonOn1- une fonction armer ou désarmer la protection par des appareils externes ou le bouton est activé
GuardButtonOn2- une fonction uniquement des productions armé par des appareils externes ou le bouton est activé, le désarmement est effectué en appelant l'appareil ou à l'aide d'une commande SMS.
Bouton de garde désactivé- le contrôle de l'alarme par des appareils externes ou par bouton est désactivé

PCFForceOn- surveillance continue d'un groupe de tous les capteurs de l'expandeur
PCFForceOff- surveillance d'un groupe de tous les capteurs d'extension uniquement lorsque l'appareil est armé

Niveau du capteur principal- une notification d'alarme sera envoyée lorsqu'un signal de niveau haut (+5 V) apparaît à l'entrée (D6) du capteur
Niveau du capteur principal- une notification d'alarme sera envoyée lorsqu'un signal de niveau bas (GND) apparaît à l'entrée (D6) du capteur
MainSensorLevelOff- traitement capteur d'entrée (D6) désactivé

SecondSensorLevelHaut- une notification d'alarme sera envoyée lorsqu'un signal de niveau haut (+5 V) apparaît à l'entrée (A0) du capteur
SecondSensorLevelLow- une notification d'alarme sera envoyée lorsqu'un signal de niveau bas (GND) apparaît à l'entrée (A0) du capteur
SecondSensorLevelOff- le traitement du capteur à l'entrée (A0) est désactivé

MainDelayAvantAlarme- le délai au bout duquel une notification SMS « alarme » sera envoyée lors du déclenchement du capteur principal (D6), si l'alarme n'a pas été désarmée pendant ce laps de temps. La syntaxe est la même que celle de la commande DelayBeforeAlarm.
DeuxièmeDélaiAvantAlarme- le délai après lequel une notification SMS « alarme » sera envoyée lorsqu'un capteur supplémentaire (A0) est déclenché, si l'alarme n'a pas été désarmée pendant cette période. La syntaxe est la même que celle de la commande DelayBeforeAlarm.
PCFDelayBeforeAlarm- le délai après lequel la notification SMS "alarme" sera envoyée lorsque les capteurs de la carte d'extension (PCF8574) seront déclenchés, si l'alarme n'a pas été désarmée pendant ce laps de temps. La syntaxe est la même que celle de la commande DelayBeforeAlarm.

GuardOn - bras
GuardOff - supprimer la protection

Open - commande pour contrôler un périphérique externe

Info - vérifiez l'état, en réponse à ce message, un sms sera envoyé avec des informations sur le numéro à partir duquel la sécurité a été activée / désactivée

Pause - met le système en pause pendant la durée définie par la commande sleeptime en minutes, le système ne répond pas au déclenchement du capteur.

TestOn - le mode test est activé, LED bleue clignotante.
TestOff - le mode test est désactivé.

LedOff - éteint la LED de veille.
LedOn - allume la LED de veille.

Argent - demande de solde.

ClearSms - Supprime tous les SMS de la mémoire

Commandes de la console (jusqu'à la version GSM_2017_04_24-13-22.hex) - entrées dans le moniteur du port Arduino IDE :

AddPhone - similaire à la commande SMS AddPhone

DeletePhone - similaire à la commande SMS DeletePhone

EditSensor - similaire à la commande sms EditSensor

ListPhone - sortie vers le moniteur de port de la liste des téléphones stockés dans la mémoire

ResetConfig - similaire à la commande sms ResetConfig

ResetPhone - similaire à la commande sms ResetPhone

FullReset - similaire à la commande SMS FullReset

ClearSms - similaire à la commande ClearSms sms

WatchPowerOn1 - similaire à la commande SMS WatchPowerOn1
WatchPowerOn2 - similaire à la commande SMS WatchPowerOn2
WatchPowerOff - similaire à la commande SMS WatchPowerOff

GuardButtonOn - similaire à la commande sms GuardButtonOn. Supprimé depuis la version GSM_2017_04_16-12-00
GuardButtonOn1 - similaire à la commande sms GuardButtonOn1
GuardButtonOn2 - similaire à la commande sms GuardButtonOn2
GuardButtonOff - similaire à la commande sms GuardButtonOff

Memtest - test de la mémoire non volatile de l'appareil, tous les paramètres de l'appareil seront réinitialisés, de la même manière que la commande FullReset.

I2CScan - recherchez et initialisez les périphériques pris en charge sur le bus I2C.

ListConfig - affiche la configuration actuelle de l'appareil sur le moniteur de port.

ListSensor - envoie la configuration actuelle du capteur au moniteur de port.

UPD. Lors de l'utilisation d'un détecteur de mouvement, pour exclure les fausses alarmes lorsque le modem fonctionne, il faut entreépingles GND et A0 Arduino opposer de la résistance, nous disons merci à un ami
AllowPhone = ("70001234501", "70001234502", "70001234503", "70001234504", "70001234505") - Numéros autorisés à contrôler la sécurité.
AlarmPhone = ("70001234501", "70001234502") - Numéros pour envoyer des notifications par SMS lorsqu'un capteur est déclenché et des notifications sur le désarmement ou l'armement. Le premier numéro de la liste sera appelé lors du déclenchement du capteur si la commande RingOn est exécutée, par défaut cette option est activée. Ceci est fait parce que les messages SMS peuvent arriver avec un certain retard, mais l'appel doit passer immédiatement.

Si un appel provient d'un numéro autorisé ou d'un message SMS avec la commande GuardOn / GuardOff, alors en fonction de l'état actuel de la protection, un message SMS sur l'armement ou le désarmement sera envoyé aux numéros répertoriés dans la matrice AlarmPhone, un message SMS sera également envoyé au numéro d'où provient l'appel.

Lorsque le capteur est déclenché des messages SMS sont envoyés à tous les numéros du réseau AlarmPhone (liste) et un appel vocal est passé au premier numéro de ce réseau.

Voyant lumineux :
LED rouge - armé.
La LED est allumée vert- désarmé, activé / désactivé par commande sms LedOn / LedOff.
La LED clignote en bleu en permanence - elle signale que tout est en ordre avec l'Arduino, la carte n'est pas figée, elle est utilisée exclusivement pour le débogage, elle est allumée / éteinte par la commande sms TestOn / TestOff.
* Le code contient la fonction LedTest (), il clignote avec une LED bleue, il est fait uniquement pour surveiller l'Arduino, clignote - cela signifie qu'il fonctionne, ne clignote pas - il est gelé. Pas encore gelé :)

Non pertinent!

Connexion de 2 capteurs ou plus pour un micrologiciel ouvert (s'applique uniquement à ce micrologiciel sketch_02_12_2016.ino)
Pour connecter des commutateurs à lames supplémentaires, nous utilisons des broches numériques libres D2, D3, D5 ou D7. Schéma de raccordement avec capteur supplémentaire sur D7.

Changements de firmware requis
... #define DoorPin 6 // Numéro de l'entrée connectée au capteur principal int8_t DoorState = 0; // Variable pour stocker l'état du capteur principal int8_t DoorFlag = 1; // Variable pour mémoriser l'état du capteur principal #define BackDoorPin 7 // Numéro de l'entrée connectée au capteur supplémentaire int8_t BackDoorState = 0; // Variable de stockage de l'état du capteur supplémentaire int8_t BackDoorFlag = 1; // Variable pour mémoriser l'état du capteur supplémentaire ...
void setup () (... pinMode (DoorPin, INPUT); pinMode (BackDoorPin, INPUT); ...
... void Detect () (// Lecture des valeurs des capteurs DoorState = digitalRead (DoorPin); BackDoorState = digitalRead (BackDoorPin); // Traitement du capteur principal si (DoorState == LOW && DoorFlag == 0) (DoorFlag = 1 ; délai (100 ); if (LedOn == 1) digitalWrite (GLed, LOW); Alarm ();) if (DoorState == HIGH && DoorFlag == 1) (DoorFlag = 0; delay (100);) // Traitement du capteur supplémentaire if (BackDoorState == LOW && BackDoorFlag == 0) (BackDoorFlag = 1; delay (100); if (LedOn == 1) digitalWrite (GLed, LOW); Alarm ();) if (BackDoorState = = HAUT && BackDoorFlag == 1) (BackDoorFlag = 0; retard (100);)) ...

Et encore une chose:
1. Il est préférable d'utiliser des diodes conçues pour un courant de 2 A, car le module infecte avec un courant de 1 A et nous devons encore alimenter l'Arduino et le modem avec quelque chose. Dans ce cas, des diodes 1N4007 sont utilisées, si elles tombent en panne, remplacez-les par 2 A.
2. J'ai utilisé toutes les résistances de la LED à 20 kOhm, afin de ne pas éclairer tout le couloir la nuit.
3. J'ai également accroché une résistance de 20 kOhm sur le commutateur Reed entre la broche GND et la broche D6.

C'est tout pour le moment. Merci pour l'attention! :)

Je prévois d'acheter +207 Ajouter aux Favoris J'ai aimé la critique +112 +243

Un simple système d'alarme de sécurité domestique sur l'Arduino Uno est le sujet de cette revue. Malgré le fait que les microcontrôleurs de cette famille étaient à l'origine destinés à l'enseignement aux étudiants, il est tout à fait possible de réaliser un projet vraiment utile sur Arduino. Alarmes antivol pour la maison ou parcelle de jardin sera en mesure d'avertir le propriétaire d'une urgence et d'envoyer un message des capteurs au smartphone.

Alarme domestique Arduino

Voyons comment faire une alarme pour une maison, un jardin de banlieue ou un garage sur un Arduino Uno ou Nano. Dans le projet, nous avons utilisé un capteur de mouvement, un capteur d'eau et de température - il s'agit d'un ensemble de capteurs de base pour le système d'avertissement le plus simple. Vous découvrirez une percée dans le système d'approvisionnement en eau, une diminution de la température dans la maison ou la pénétration d'étrangers dans la pièce à tout moment, n'importe où.

Capteurs Arduino pour alarmes antivol

Dans ce projet, nous avons utilisé un vieux smartphone pour transmettre des informations sur Internet. En conséquence, la localisation de votre bien doit disposer d'un signal GPRS et tout opérateur mobile a le tarif le plus simple avec un accès Internet connecté. Si ces conditions ne sont pas remplies, une sirène sonore est prévue dans le système de sécurité, ce qui peut également effrayer les voleurs.

Le projet utilise les capteurs les plus simples - un capteur de température DHT11, un capteur de fuite d'eau que vous pouvez fabriquer vous-même et un capteur de mouvement. Si vous décidez de faire une signalisation plus complexe, nous vous recommandons de regarder le projet alarme incendie ou alarme sur GSM. Vous devrez également installer l'application sur votre smartphone et enregistrer deux comptes Twitter.

Comment faire une alarme Arduino

Pour ce projet nous avons besoin de :

  • Carte Arduino Uno / Arduino Nano / Arduino Mega ;
  • smartphone avec accès Internet ;
  • Capteur de température et d'humidité DHT11 ;
  • capteur de fuite d'eau;
  • capteur de mouvement et bouton (interrupteur) ;
  • LED, résistances, fils, etc.


Un croquis pour une alarme, toutes les bibliothèques nécessaires et une application pour smartphone peuvent être téléchargés dans une seule archive. A noter qu'il ne sera pas possible de contrôler à distance l'Arduino, puisque le projet est le plus simple possible. Vous pouvez uniquement dans les messages sur votre smartphone connaître les lectures des capteurs installés dans la maison, après une période de temps spécifiée ou lorsqu'un capteur est déclenché.

Croquis d'alarme de sécurité Arduino Uno / Nano

#inclure // connexion de la bibliothèque SoftwareSerial.h SoftwareSerial mySerial (2, 3); // spécifie les broches rx et tx, respectivement#inclure // connecte la librairie pour le capteur DHT dht (16, DHT11); // indique sur quel port sera le capteur int tmp; #définir le PIR 5 // port pour connecter le capteur de mouvement int pir; #définir le KNP 7 // port pour connecter le commutateur int knp; #définir le WTR 19 // port pour connecter un capteur d'eau poids int; #définir la LED 11 // port pour connecter les LED#définir BUZ 9 // port pour connecter un haut-parleur piézo // chaînes d'identification des informations reçues sur le smartphone Chaîne chaîneT = Chaîne ("*"); Chaîne chaîneP = Chaîne ("^"); Chaîne chaîneW = Chaîne ("-"); Chaîne chaîneH = Chaîne ("#"); // variables pour compteurs, cycles de comptage, etc. mouvement long non signé; heure longue non signée; octet m, s1, s2, s3, c = 10 ; void setup () (mySerial.begin (9600); Serial .begin (9600); dht.begin (); pinMode (PIR, INPUT); analogWrite (PIR, LOW); pinMode (KNP, INPUT); analogWrite (KNP, LOW); pinMode (WTR, INPUT); analogWrite (WTR, LOW); // vérifier les LED et le buzzer à la mise sous tension pinMode (BUZ, SORTIE); pinMode (LED, SORTIE); analogWrite (LED, 255); tonalité (BUZ, 100); retard (1000); analogWrite (LED, 0); pas de tonalité (BUZ); retard (1000); ) boucle vide () (tmp = dht.readTemperature (); pir = digitalRead (PIR); knp = digitalRead (KNP); wtr = analogRead (WTR); // démarrer le compteur heure = millis (); // 3600000 millisecondes soit 1 heure, 10800000 - 3 heures // si 3 heures se sont écoulées - envoyer les données au smartphone // si besoin, mettez vos valeurs à la place de 10800000 if (millis () - heure> 10800000) (mySerial.println (tmp + stringT); mySerial.println (stringH); // envoie un signal que 3 heures se sont écoulées } // compter les cycles, tous les dix cycles nous envoyons des données au smartphone c--; Impression en série (c) ; Serial .println ("- boucle"); Serial .println (""); retard (1000); pas de tonalité (BUZ); si (c> 10) (c = 10;) si (c< 1) { s1 = 0; s2 = 0; s3 = 0; mySerial.println (tmp + stringT); // envoie la valeur de la température mySerial.println (pir + stringP); // envoie la présence de mouvement dans la maison mySerial.println (wtr + stringW); // envoyer les données des capteurs d'eau // LE CAPTEUR DE MOUVEMENT A FONCTIONNÉ ET LE BOUTON EST ÉTEINT - ALLUMEZ LA LUMIÈRE if (pir == HIGH && knp == LOW) (analogWrite (LED, 255) ;) // CAPTEUR DE MOUVEMENT DÉCONNECTÉ ET BOUTON ÉTEINT - ÉTEINDRE LA LUMIÈRE if (pir == LOW && knp == LOW) (motion = millis (); while (pir == LOW) (tmp = dht.readTemperature (); pir = digitalRead (PIR); knp = digitalRead (KNP); wtr = analogRead (WTR); c--; Serial .print (c); Serial .println ("- loop"); Serial .println (""); délai (1000); noTone (BUZ); si (c> 10 ) (c = 10;) si (c< 1) { s1 = 0; s2 = 0; s3 = 0; mySerial.println (tmp + stringT); // envoie la valeur de la température mySerial.println (pir + stringP); // envoie la présence de mouvement dans la maison mySerial.println (wtr + stringW); // envoyer les données des capteurs d'eau // afficher toutes les données des capteurs sur le moniteur de port Serial .print ("TMP ="); Serial .println (tmp); Serial .print ("PIR ="); Serial .println (pir); Serial .print ("KNP ="); Serial .println (knp); Serial .print ("WTR ="); Serial .println (wtr); Serial .println (""); ) // INTERVALLE D'ALLUMAGE EN MILLISECONDES if (millis () - motion> 5000) (analogWrite (LED, 0); break;) if (pir == HIGH) (analogWrite (LED, 255); break;))) // LE CAPTEUR DE MOUVEMENT A FONCTIONNÉ ET LE BOUTON EST ALLUMÉ - DÉMARRAGE DU MINUTEUR if (pir == HIGH && knp == HIGH) (motion = millis (); délai (1000); analogWrite (LED, 255); Serial .println ( "CAPTEUR FONCTIONNE"); Serial .println (""); retard (1000); while (knp == HIGH) (tmp = dht.readTemperature (); pir = digitalRead (PIR); knp = digitalRead (KNP); wtr = analogRead (WTR); c--; Serial .print (c); Serial. println ("- loop"); Serial. println (""); delay (1000); noTone (BUZ); if (c> 10) (c = 10;) if (c< 1) { s1 = 0; s2 = 0; s3 = 0; mySerial.println (tmp + stringT); // envoie la valeur de la température mySerial.println (pir + stringP); // envoie la présence de mouvement dans la maison mySerial.println (wtr + stringW); // envoyer les données des capteurs d'eau // afficher toutes les données des capteurs sur le moniteur du port Serial .print ("TMP ="); Serial .println (tmp); Serial .print ("PIR ="); Serial .println (pir); Serial .print ("KNP ="); Serial .println (knp); Serial .print ("WTR ="); Serial .println (wtr); Serial .println (""); ) // SI LE CAPTEUR DE MOUVEMENT EST DÉCONNECTÉ - ENVOI D'UN MESSAGE À BLUES if (knp == LOW) (Série .println ( « ALARME DÉSACTIVÉE »); Serial .println (""); retard (1000); ) // SI ÇA FAIT PLUS DE 10 SECONDES - ENVOI D'UN MESSAGE AUX BLUES if (millis () - motion> 10000 && s1! = 1) (m = 1; goto message1;) delay (1000); )) // SI FUITE D'EAU - ENVOI D'UN MESSAGE AUX BLUES if (wtr> 500 && s2! = 2) (m = 2; goto message2;) if (wtr> 500) (tone (BUZ, 400);) if (wtr<= 500) { noTone (BUZ); } // SI LA TEMPERATURE A BAISSE - ENVOI D'UN MESSAGE AU BLUES si (tmp< 20 && s3 != 3) { m = 3; goto message3; } if (tmp < 20) { tone (BUZ, 200); } if (tmp >= 20) (noTone (BUZ);) message1: while (m == 1) (Serial .println ( "ALARME ENVOYEE A BLUESE" // envoie la valeur de la température mySerial.println (1 + stringP); // envoie la présence de mouvement dans la maison mySerial.println (wtr + stringW); // envoyer les données des capteurs d'eau s1 = 1 ; m = 0 ; Pause; ) message2 : while (m == 2) (Serial .println ( « SIGNAL DE FUITE D'EAU ENVOYÉ À BLUESE »); Serial .println (""); retard (1000); mySerial.println (tmp + stringT); // envoie la valeur de la température mySerial.println (pir + stringP); // envoie la présence de mouvement dans la maison mySerial.println (500 + chaîneW); // envoyer les données des capteurs d'eau s2 = 2 ; m = 0 ; Pause; ) message3 : while (m == 3) (Serial .println ( « SIGNAL DE TEMPÉRATURE ENVOYÉ À BLUESE »); Serial .println (""); retard (1000); mySerial.println (20 + stringT); // envoie la valeur de la température mySerial.println (pir + stringP); // envoie la présence de mouvement dans la maison mySerial.println (wtr + stringW); // envoyer les données des capteurs d'eau s3 = 3 ; m = 0 ; Pause; ))

Explications du code :

À première vue, le schéma peut sembler compliqué, mais il ne l'est pas. La signalisation peut être assemblée sur n'importe quelle carte, y compris l'Arduino Uno. Au lieu de LED, vous pouvez utiliser une bande LED, mais l'alimentation de la carte aura déjà besoin de 12 Volts, et connectez la bande LED non pas à 5V, mais à la broche Vin Arduino. Avec les LED, vous pouvez utiliser un chargeur de téléphone ordinaire de 5 volts pour alimenter le circuit.

Installer une application d'alarme sur un smartphone

Pour installer l'application, téléchargez le fichier home_twit.apk sur votre téléphone via le câble USB, recherchez-le dans la mémoire du téléphone et cliquez sur « Installer ». Ce téléphone doit toujours être dans la zone bluethoth du signal Arduino. Après l'installation, ouvrez l'application et cliquez sur le bouton "Configurer". Ici, vous devrez spécifier les valeurs de température minimale et maximale auxquelles le message sera envoyé.

Maintenant, la partie la plus difficile est de créer des comptes Twitter. Dans les paramètres, spécifiez le nom d'utilisateur Twitter à qui vous enverrez le message. Vous devez également spécifier un login, Clé API et Clé secrète API au nom de qui les messages seront reçus. Les dernières innovations sont dues à la lutte contre le spam et à la collecte d'informations sur les utilisateurs sur le réseau social. Comment obtenir la clé API et le secret API - lisez cette critique.

Sur le téléphone, qui sera toujours avec vous et recevra des messages, vous devrez installer l'application Twitter officielle de PlayMarket et la saisir avec le nom d'utilisateur souhaité. En conséquence, l'application signalizaciya.apk du téléphone de la maison collectera les données des capteurs Arduino et les enverra dans un message personnel via Twitter à l'utilisateur sous lequel vous avez installé l'application Twitter.

Si vous rencontrez des problèmes avec les paramètres d'alarme sur l'Arduino, écrivez vos questions dans les commentaires de cet avis.

Ce sont des plates-formes matérielles spéciales sur la base desquelles divers appareils électroniques peuvent être créés, y compris et. Les appareils de ce type se distinguent par une conception simple et la possibilité de programmer des algorithmes pour leur fonctionnement. Grâce à cela, l'alarme créée avec l'Arduino GSM , peut être configuré autant que possible pour l'objet qu'il gardera.

Qu'est-ce qu'un module Arduino ?

Les Arduinos sont implémentés sous forme de petites cartes qui ont leur propre microprocesseur et mémoire. La carte contient également un ensemble de contacts fonctionnels auxquels vous pouvez connecter divers appareils électrifiés, y compris des capteurs utilisés pour les systèmes de sécurité.

Le processeur Arduino vous permet de charger vous-même un programme écrit par l'utilisateur. En créant votre propre algorithme unique, vous pouvez fournir des modes de fonctionnement optimaux pour les alarmes de sécurité pour différents objets et pour différentes conditions d'utilisation et tâches à résoudre.

Est-ce difficile de travailler avec Arduino ?

Les modules Arduino sont très populaires auprès de nombreux utilisateurs. Ceci est rendu possible par sa simplicité et son prix abordable.

Les programmes de gestion des modules sont écrits en C++ ordinaire et des ajouts sous forme de fonctions simples pour contrôler les processus d'E/S sur les broches du module. De plus, le logiciel gratuit Arduino IDE fonctionnant sous Windows, Linux ou Mac OS peut également être utilisé pour la programmation.

Avec les modules Arduino, la procédure d'assemblage des appareils a été considérablement simplifiée. La signalisation GSM sur Arduino peut être créée sans avoir besoin d'un fer à souder - l'assemblage s'effectue à l'aide d'une maquette, de cavaliers et de fils.

Comment créer une alarme avec Arduino ?

Les principales exigences auxquelles le système d'alarme créé par le GSM sur l'Arduino doit répondre de leurs propres mains comprennent :

  • aviser le propriétaire de l'installation d'un cambriolage ou d'une pénétration ;
  • prise en charge de systèmes externes tels que sirène sonore, voyants d'avertissement ;
  • contrôle d'alarme par SMS ou appel ;
  • fonctionnement autonome sans alimentation externe.

Pour créer une alarme, vous aurez besoin de :

  • module Arduino ;
  • un ensemble de capteurs fonctionnels ;
  • ou un modem ;
  • alimentation autonome;
  • dispositifs exécutifs externes.

Une caractéristique distinctive des modules Arduino est l'utilisation de cartes d'extension spéciales. Avec leur aide, tous les périphériques supplémentaires sont connectés à l'Arduino, qui sont nécessaires pour assembler la configuration. système de sécurité... Ces cartes sont installées au-dessus du module Arduino sous la forme d'un "sandwich" et les périphériques auxiliaires correspondants sont connectés aux cartes elles-mêmes.

Comment ça fonctionne?

Lorsqu'un des capteurs connectés est déclenché, un signal est transmis au processeur du module Arduino. À l'aide du logiciel personnalisé chargé, le microprocesseur le traite selon un algorithme spécifique. En conséquence, une commande peut être formée pour faire fonctionner l'actionneur externe, qui lui est transmise via la carte d'interface d'extension correspondante.

Afin d'assurer la possibilité d'envoyer des signaux d'alerte au propriétaire d'une maison ou d'un appartement à protéger, un module GSM... Il installe une carte SIM de l'un des fournisseurs cellulaire.

En l'absence d'un adaptateur GSM spécial, un téléphone portable ordinaire peut également jouer son rôle. En plus d'envoyer des messages SMS avec un avertissement concernant une alarme et une numérotation, la présence de la communication cellulaire vous permettra de contrôler à distance le système d'alarme GSM sur l'Arduino, ainsi que de surveiller l'état de l'objet en envoyant des demandes spéciales.

"Noter!

Pour communiquer avec le propriétaire de l'installation, en plus des modules GSM, des modems ordinaires peuvent également être utilisés, qui permettent la communication via Internet. "

Dans ce cas, lorsque le capteur est déclenché, le signal traité par le processeur est transmis via un modem à un portail ou un site Web spécial. Et déjà depuis le site, la génération automatique d'un SMS d'avertissement ou d'un mailing vers l'e-mail lié est effectuée.

conclusions

L'utilisation de modules Arduino permettra aux utilisateurs de concevoir indépendamment des alarmes GSM pouvant fonctionner avec divers capteurs fonctionnels et contrôler des périphériques externes. Grâce à la possibilité d'utiliser divers capteurs, les fonctions d'alarme peuvent être considérablement étendues et un complexe peut être créé qui surveillera non seulement la sécurité de l'installation, mais également son état. Par exemple, il sera possible de contrôler la température de l'installation, d'enregistrer les fuites d'eau et de gaz, de couper leur alimentation en cas d'accident, et bien plus encore.

Les capteurs infrarouges (IR, IR) sont couramment utilisés pour mesurer des distances, mais ils peuvent également être utilisés pour détecter des objets. En connectant plusieurs capteurs IR à l'Arduino, vous pouvez créer alarme.

Aperçu

Les capteurs infrarouges (IR, IR) sont couramment utilisés pour mesurer des distances, mais ils peuvent également être utilisés pour détecter des objets. Les capteurs IR se composent d'un émetteur infrarouge et d'un récepteur infrarouge. L'émetteur émet des impulsions de rayonnement infrarouge tandis que le récepteur détecte les reflets. Si le récepteur détecte un reflet, cela signifie qu'il y a un objet à une certaine distance devant le capteur. S'il n'y a pas de reflet, il n'y a pas d'objet.

Le capteur IR que nous utiliserons dans ce projet détecte les réflexions dans une plage spécifique. Ces capteurs ont peu appareil de ligneà couplage de charge (CCD), qui détecte l'angle auquel le rayonnement infrarouge retourne au capteur. Comme le montre la figure ci-dessous, le capteur transmet une impulsion infrarouge dans l'espace, et lorsqu'un objet apparaît devant le capteur, l'impulsion est réfléchie vers le capteur selon un angle proportionnel à la distance entre l'objet et le capteur. Le récepteur du capteur détecte et émet l'angle, et en utilisant cette valeur, vous pouvez calculer la distance.

En connectant quelques capteurs IR à l'Arduino, nous pouvons créer une simple alarme antivol. Nous installerons les capteurs sur le cadre de la porte, et en alignant correctement les capteurs, nous pourrons détecter quand quelqu'un franchit la porte. Lorsque cela se produit, le signal à la sortie du capteur IR changera, et nous détecterons ce changement en lisant constamment la sortie des capteurs avec l'Arduino. Dans cet exemple, nous savons que l'objet passe par la porte lorsque la lecture sur le capteur IR dépasse 400. Lorsque cela se produit, l'Arduino déclenchera une alarme. Pour réinitialiser l'alarme, l'utilisateur peut appuyer sur le bouton.

Composants

  • 2 x capteur de distance infrarouge ;
  • 1 x Arduino Mega 2560 ;
  • 1 buzzer ;
  • 1 bouton ;
  • 1 résistance de 470 ohms ;
  • 1x transistor NPN ;
  • cavaliers.

Diagramme de connexion

Le schéma de ce projet est présenté dans la figure ci-dessous. Les sorties des deux capteurs IR sont connectées aux broches A0 et A1. Les deux autres broches sont connectées à 5V et GND. Un buzzer de 12 volts est connecté à la broche 3 via un transistor, et le bouton utilisé pour désactiver l'alarme est connecté à la broche 4.


La photo ci-dessous montre comment nous avons collé les capteurs au cadre de porte pour cette expérience. Bien entendu, en cas d'utilisation constante, vous installeriez les capteurs différemment.


Installation

  1. Connectez les broches 5V et GND de la carte Arduino aux broches d'alimentation et GND des capteurs. Vous pouvez également leur fournir une alimentation externe.
  2. Connectez les fils de sortie des capteurs aux broches A0 et A1 de la carte Arduino.
  3. Connectez la broche 3 de l'Arduino à la base du transistor via une résistance de 1K.
  4. Appliquer 12 V au collecteur du transistor.
  5. Connectez le fil positif du buzzer 12V à l'émetteur et le fil négatif au rail de masse.
  6. Connectez la broche 4 à la broche 5V via un bouton. Pour des raisons de sécurité, il est toujours préférable de le faire via une petite résistance supplémentaire pour éviter un flux de courant élevé.
  7. Connectez la carte Arduino à votre ordinateur via un câble USB et téléchargez le programme sur le microcontrôleur à l'aide de l'IDE Arduino.
  8. Allumez la carte Arduino à l'aide d'une alimentation, d'une batterie ou d'un câble USB /

Le code

const int buzzer = 3; // la broche 3 est une sortie buzzer const int pushbutton = 4; // la broche 4 est l'entrée pour la configuration de l'annulation du bouton () (pinMode (buzzer, OUTPUT); // définissez la broche 3 sur la sortie pinMode (bouton-poussoir, INPUT); // définissez la broche 4 sur l'entrée) boucle vide () (/ / lire la sortie des deux capteurs et comparer le résultat avec le seuil int sensor1_value = analogRead (A0) ; int sensor2_value = analogRead (A1) ; if (sensor1_value> 400 || sensor2_value> 400) (while (true) (digitalWrite (buzzer) , HIGH) ; // activer l'alarme if (digitalRead (bouton-poussoir) == HIGH) break;)) else (digitalWrite (buzzer, LOW); // désactiver l'alarme))

Vidéo

Pour protéger votre maison des invités indésirables, tout le monde plus de gens installer des alarmes. Ils vous permettent d'avertir en temps opportun de l'entrée dans la pièce. Aujourd'hui, il y a différents types alarmes, mais récemment, la popularité des alarmes GSM a commencé à croître, car elles vous permettent de recevoir des informations sur la pénétration à n'importe quelle distance de l'objet, l'essentiel est que le propriétaire à ce moment ait un téléphone avec lui, et ce téléphone est dans le réseau. Malheureusement, ces systèmes ne sont pas encore trop bon marché pour leur être exclusivement préférés. Mais de nos jours, vous pouvez faire vous-même une simple signalisation GSM. Et la carte Arduino populaire vous aidera dans cette affaire.


Ce projet est un système de sécurité (alarme) pour alerter sur les intrus entrant dans la maison. Le système utilise la technologie GSM.



Un module de détection d'intrusion est connecté à la carte microcontrôleur de ce système de sécurité, qui peut être basé, par exemple, sur un capteur IR ou un capteur de proximité à ultrasons. A la réception d'un signal d'un tel module, un message SMS est envoyé sur le téléphone de l'utilisateur concernant la pénétration dans son domicile.


La figure ci-dessous est un schéma fonctionnel du système de sécurité.



Les principaux éléments du système sont une carte microcontrôleur (par exemple, Arduino Uno) et un module GSM/GPRS SIM900A. L'ensemble du système peut être alimenté par une alimentation 12V / 2A.


L'image ci-dessous montre schéma système de sécurité domestique avec gsm basé sur arduino.



Le fonctionnement du système est très simple et ne nécessite aucune explication particulière. Lorsque la tension d'alimentation est appliquée, le système passe en mode veille. Cependant, lorsque J2 est court-circuité, un message d'avertissement est automatiquement envoyé au numéro de téléphone mobile prédéfini. N'importe quel capteur de détection peut être connecté au connecteur d'entrée J2. A noter que le niveau bas sur la broche 1 de J2 est actif et active le système de sécurité.


De plus, le système a ajouté la possibilité de passer un appel en appuyant sur le bouton S2. Le bouton S3 peut être utilisé pour réinitialiser cet appel.


Voici le code pour Arduino.


// Connectez la broche Tx à la broche D3 du module GPS // Connectez la broche Rx à la broche D4 du module GPS // Connectez le signal d'envoi SMS à la broche D7 (actif bas) // Connectez le signal d'appel CALL à D8 (actif bas) // Connectez le signal de réinitialisation d'appel END à la broche D9 (actif bas) #include NewSoftSerial mySerial (3,4); // définit les broches RX et TX pour la communication avec le module GSM #define msg_key 7 #define call_key 8 #define end_key 9 String number = "0000000000" ; // Ici, au lieu de zéros, vous devez entrer une configuration d'annulation de numéro de téléphone mobile à 10 chiffres () (Serial.begin (9600); mySerial.begin (9600); pinMode (msg_key, INPUT); pinMode (call_key, INPUT) ; pinMode (end_key, INPUT ); digitalWrite (msg_key, HIGH); digitalWrite (call_key, HIGH); digitalWrite (end_key, HIGH);) void loop () (// envoyer un sms à chaque fois que msg_key se déclenche si (digitalRead (msg_key) = = LOW) // Vérifiez si le bouton d'envoi de SMS est enfoncé (mySerial.println ("AT + CMGF = 1"); // Définissez le mode comme délai de mode texte (150); mySerial.println ("AT + CMGS = \" + 00 " + numéro + " \ " "); // Spécifiez le numéro de destination au format international, en remplaçant les zéros délai (150); mySerial.print (" Attention ! Alerte intrusion ! "); // Entrez le délai du message (150); mySerial.write (( byte) 0x1A); // Caractère de fin de message 0x1A : équivalent à Ctrl + z delay (50); mySerial.println ();) // Faire un appel lorsque call_key déclenche else if ( digitalRead (call_key) == LOW) // Vérifiez si call_key a déjà été enfoncé (mySerial.println ("ATD + 91" + number + ";"); // Déterminez n numéro à appeler pendant (digitalRead (call_key) == LOW); retard (50); ) // Réinitialiser l'appel else if (digitalRead (end_key) == LOW) // Vérifiez si le bouton de réinitialisation est déjà enfoncé (mySerial.println ("ATH"); while (digitalRead (end_key) == LOW); delay ( 50 );))

Ainsi, il est assez facile de créer de vos propres mains une alarme GSM basée sur la carte Arduino. Une telle alarme à son prix sera, bien sûr, moins chère que ses homologues propriétaires sur le marché aujourd'hui, et elle fonctionnera de manière presque identique.

mob_info