Table des matières:

Télécommande SMS fiable, sécurisée et personnalisable (Arduino/pfodApp) - Aucun codage requis : 4 étapes
Télécommande SMS fiable, sécurisée et personnalisable (Arduino/pfodApp) - Aucun codage requis : 4 étapes

Vidéo: Télécommande SMS fiable, sécurisée et personnalisable (Arduino/pfodApp) - Aucun codage requis : 4 étapes

Vidéo: Télécommande SMS fiable, sécurisée et personnalisable (Arduino/pfodApp) - Aucun codage requis : 4 étapes
Vidéo: ⭐️ MEILLEURE TÉLÉCOMMANDE UNIVERSELLE (2022) - Comparatif & Guide d'achat 2024, Juillet
Anonim
Télécommande SMS fiable, sécurisée et personnalisable (Arduino/pfodApp) - Aucun codage requis
Télécommande SMS fiable, sécurisée et personnalisable (Arduino/pfodApp) - Aucun codage requis

Mise à jour du 6 juillet 2018: Une version 3G/2G de ce projet, utilisant SIM5320, est disponible ici

Mise à jour: 19 mai 2015: Utilisez la bibliothèque pfodParser Version 2.5 ou supérieure. Il corrige un problème signalé de ne pas laisser suffisamment de temps pour que le bouclier se connecte au réseau après la mise sous tension

introduction

En quoi la télécommande pfodSMS est-elle différente des autres implémentations: -

  • Il est fiable - les commandes reçoivent toujours une réponse et les messages perdus sont redemandés
  • Il est sécurisé - utilise une protection par mot de passe 128 bits
  • Il ne nécessite aucun compte de service Web tiers - ne nécessite qu'une carte SIM active (sans code PIN)
  • Il est personnalisable - vous pouvez utiliser pfodDesigner pour créer votre propre menu personnalisé
  • C'est facile - le pfodDesigner génère tout le code. Vous n'avez pas besoin de faire de codage.
  • Il est flexible - tous les écrans pfod sont disponibles via SMS, comme les sous-menus, la liste de sélection multiple et simple, la saisie de texte, l'enregistrement et le traçage des données.

Voir la conception du message pfodSMS pour savoir comment la connexion SMS est rendue fiable. Voir la sécurité Challenge and Response pour les pfodDevices connectés à Internet pour les détails de la sécurité 128 bits. Voir pfodDesigner, les menus Android / Arduino simplifiés pour plus de détails sur la conception de votre propre menu personnalisé. Voir le pfodSpecification.pdf pour les détails de tous les messages et écrans pfod que vous pouvez ajouter vous-même.

Exemple de projet – Contrôle d'eau chaude SMS

À titre d'exemple de projet, cette instructable décrit comment allumer et éteindre votre chauffe-eau via SMS et vérifier s'il est allumé ou éteint. Vous aurez besoin d'un électricien pour l'installer.

Étape 1: Démarrage rapide - Télécommande SMS

Démarrage rapide - Télécommande SMS
Démarrage rapide - Télécommande SMS
Démarrage rapide - Télécommande SMS
Démarrage rapide - Télécommande SMS

Voici un guide de démarrage rapide pour créer votre propre contrôle d'eau chaude SMS.

  1. Achetez les pièces de cette liste.
  2. Installez la version 1.5.8 de l'IDE Arduino et téléchargez et installez la bibliothèque pfodParser.
  3. Téléchargez gratuitement pfodDesigner.
  4. Concevez votre menu personnalisé pour activer et désactiver une entrée numérique à partir d'un curseur de menu sur votre mobile Android.
  5. Générez le code en sélectionnant SeeedStudio SIM900 GPRS shield comme connexion. (Il existe également une option pour le shield IteadStudio SIM900).
  6. Transférez le code généré de votre mobile vers l'IDE (voir pfodAppForAndroidGettingStarted.pdf pour plus de détails), ajoutez votre mot de passe secret, compilez et téléchargez sur l'Arduino Mega 2560.
  7. Installez votre carte SIM dans le shield GPRS et branchez le shield dans le Mega 2560. Assurez-vous que les liaisons série sont définies sur Hardware Serial comme indiqué ci-dessus.
  8. Connectez la sortie numérique au relais à semi-conducteurs, ou normal, entre D3 et GND (ou la broche que vous avez choisie dans le pfodDesigner). Voir Comment ajouter des relais à Arduino pour plus de détails sur les relais.
  9. Appliquez l'alimentation USB au Mega. Le code de la bibliothèque alimente le bouclier GPRS pour vous.
  10. Installez pfodApp sur votre mobile Android et configurez une connexion SMS au numéro de téléphone sim du shield. (voir pfodAppForAndroidGettingStarted.pdf pour plus de détails). Définissez le mot de passe de la connexion si vous en avez ajouté un.
  11. Connectez-vous et voyez votre menu personnalisé affiché par SMS. Cliquez sur le bouton pour activer ou désactiver le relais.
  12. Demandez à votre électricien d'installer le relais dans votre circuit d'eau chaude et de câbler l'alimentation USB pour alimenter le Mega et le blindage

Étape 2: Plus de détails

pfodDesigner

Le pfodDesigner générera tout le code dont vous avez besoin pour activer et désactiver l'état solide ou un autre relais, mais la connexion SMS dans la bibliothèque pfodParser prend en charge tous les écrans pfod donc une fois que vous avez commencé, vous pouvez ajouter des sous-menus, des curseurs numériques, curseurs multi-textes, écrans de saisie de texte, enregistrement et traçage des données via SMS. Consultez le pfodSpecification.pdf pour tous les écrans et messages pris en charge.

Le code généré est ici. Il n'a pas d'invite et un seul commutateur pour garder le message court. Les menus longs sont envoyés via plusieurs messages SMS qui mettent plus de temps à arriver. Si vous avez un menu long, le code de connexion SMS de la bibliothèque pfodParser gère tout cela pour vous.

Pour ajouter un mot de passe à votre connexion SMS modifiez la ligne

parser.connect(&pfodSMS); // connecter l'analyseur au flux SMS à quelque chose comme parser.connect(&pfodSMS, F("173057F7A706AF9BBE65D51122A14CEE"));

mais utilisez votre propre mot de passe jusqu'à 32 chiffres hexadécimaux, 0..9 A.. F. Les mots de passe plus courts que 32 chiffres hexadécimaux sont complétés par des 0. Voir Un pfodDevice Wifi/Internet simple avec sécurité 128 bits (Arduino) pour savoir comment générer un mot de passe aléatoire et le générer dans un code QR pour une saisie facile sur votre Android. Voir aussi pfodAppForAndroidGettingStarted.pdf

Le pfodDesigner générera également du code pour les connexions Bluetooth et wifi via Serial et Ethernet via SPI, le tout avec une sécurité 128 bits en option

pfodApp

La première chose à réaliser est que les SMS sont lents et peuvent ne pas arriver du tout ou arriver en panne. Ainsi, lorsque vous vous connectez avec pfodApp, il y aura un certain délai avant qu'il n'y ait une réponse SMS. Si le message est perdu ou retardé, pfodApp le renverra automatiquement après 3 minutes. Après 5 nouvelles tentatives, pfodApp vous dira que la connexion est perdue. Vous pouvez régler le temps de 3 minutes dans l'écran d'édition de connexion de pfodApp.

Si vous ajoutez un mot de passe, il y a six messages SMS (trois dans chaque sens) avant que le menu principal ne soit reçu par pfodApp. Ces messages supplémentaires ne se produisent que lors de la connexion initiale, après quoi il n'y a plus de messages supplémentaires lors de l'utilisation d'un mot de passe. Commencez donc sans mot de passe pour voir que tout fonctionne, puis ajoutez le mot de passe plus tard.

Bouclier SMS/GPRS

Les problèmes possibles sont les cartes SIM protégées par des codes PIN ou non autorisées à se connecter au réseau. La bibliothèque pfod alimente automatiquement le bouclier GPRS et recherche la réponse « prêt à l'appel ». Si cette réponse n'arrive pas, la bibliothèque s'éteint et réessaye, donc si vous voyez le voyant d'alimentation sur le blindage GPRS s'allumer pendant 20 secondes puis s'éteindre, il y a un problème de connexion au réseau. Retirez la carte SIM et essayez-la dans un téléphone normal. Vérifiez que vous n'êtes pas invité à saisir un code PIN.

Si ce n'est pas le problème, vous devrez activer le débogage de démarrage, comme décrit ci-dessous, pour voir ce qui se passe.

Alimentation du shield Mega/GPRS

Le blindage consomme jusqu'à 2A pulsé et jusqu'à 0,5A en continu. En supposant une alimentation par batterie de 12 V, le 0,5 A dépasse la capacité de l'alimentation de bord Mega. Donc, ce blindage ne doit PAS être alimenté par l'entrée 7V à 12V du Mega. L'alternative est d'alimenter le Mega et le shield via la connexion USB. J'ai utilisé une alimentation USB 1A. Pour les tests, j'ai utilisé un concentrateur alimenté Belkin (F4U020) pour éviter de tirer un courant excessif du port USB de mon ordinateur.

Pour une alimentation par batterie 12V, je suggère d'utiliser un chargeur USB 5V automobile de qualité, 1A ou supérieur. Une alimentation USB 5V automobile de qualité doit être conçue pour gérer les pics de tension qui se produisent dans les systèmes électriques des voitures et devrait donc convenir à la plupart des systèmes de charge 12V.

Relais statique

Étant donné que cet exemple de projet contrôle un chauffe-eau (une charge résistive), un relais à semi-conducteurs est idéal. Si vous souhaitez allumer ou éteindre des moteurs, démarrer des générateurs, etc., demandez à votre électricien un relais adapté à la tâche. Si vous avez besoin d'un relais haute puissance, vous pouvez utiliser un petit relais par la carte arduino pour allumer et éteindre le relais d'alimentation.

Il existe de nombreuses versions de relais statiques. Assurez-vous d'acheter un appareil capable de gérer le courant et la tension de votre appareil de chauffage et pouvant être contrôlé par 5 V cc et quelques milliampères disponibles à partir de la broche de sortie Arduino. Celui utilisé ici, FOTEK SSR-40 DA, commute jusqu'à 380VAC à 40Amps et est contrôlé par tout ce qui dépasse 3V DC et prend moins de 7mA.

Vous devez utiliser un dissipateur thermique et vous devez appliquer une fine couche de composé pour dissipateur thermique ou de graisse thermique à l'arrière du relais à semi-conducteurs avant de le boulonner au dissipateur thermique. L'idée est de recouvrir complètement la surface avec la couche la plus fine de composé de puits de tête pour combler les creux microscopiques de la surface du métal. Lorsqu'il est allumé, le commutateur à semi-conducteurs chute de 1,6 V, ce qui génère 16 watts de chaleur à 10 ampères. Le dissipateur thermique est nécessaire pour se débarrasser de cette chaleur, il doit donc être monté à l'air libre et non à l'intérieur d'une boîte en plastique.

Les retards sont mauvais

Le bouclier GPRS délivre des messages SMS via la connexion série à tout moment et votre boucle principale () doit appeler cmd = parser.parse (); souvent pour traiter les données série avant que le tampon de 64 octets dans le code de la bibliothèque Arduino ne se remplisse et que les données soient perdues.

Vous devez donc garder votre boucle principale () en cours d'exécution rapidement. Vous ne devez jamais utiliser delay() et devez vérifier qu'aucune des bibliothèques que vous utilisez n'a de retards. En utilisant le débit par défaut de 19 200 bauds du SIM900 via Hardware Serial, je n'ai pas jugé nécessaire d'augmenter la taille de la mémoire tampon dans le code de la bibliothèque Arduino. Je n'utilise pas de série logicielle, seulement des connexions série et série1, série matérielle, et presque tous les messages envoyés par pfodApp sont très petits, 10 ou 12 octets. Cependant, vous pouvez augmenter la taille du tampon Arduino, si vous le souhaitez, en modifiant la définition dans HardwareSerial.h de #define SERIAL_BUFFER_SIZE 64 à #define SERIAL_BUFFER_SIZE 128

Cependant, ce que j'ai trouvé, c'est que si j'activais la sortie de débogage, comme décrit ci-dessous, je devais avoir un débit en bauds très rapide pour la connexion du terminal, sinon le délai introduit par l'envoi de messages de débogage au terminal faisait manquer des parties des messages SMS.

Installation

J'ai ajouté un blindage de borne à vis afin d'avoir quelque chose pour connecter les fils du relais à semi-conducteurs. Je n'ai pas encore demandé à mon électricien d'installer le contrôleur. Il doit être placé dans une boîte isolée, mais avec un dissipateur thermique dépassant à travers une fente et câblé dans le câble d'alimentation d'eau chaude.

Étape 3: Suggestions d'améliorations supplémentaires - Alertes, enregistrement des données et traçage

L'exemple de projet ci-dessus affiche simplement la façon dont l'eau est allumée ou éteinte et vous permet de la changer. Mais la connexion SMS gère tous les messages pfod (voir pfodSpecification.pdf)

Si vous ajoutez un capteur de température à votre arduino, vous pouvez également envoyer surveiller la température et renvoyer des lectures à intervalles réguliers. Pour renvoyer une lecture de données c'est la même chose pour le bluetooth, le wifi ou le SMS, il suffit d'ajouter le code comme l'exemple ci-dessous. Voir Enregistrement et traçage des données pour plus de détails et des exemples d'enregistrement et de traçage des données.

analyseur.println(heure);analyseur.print(', ');analyseur.println(température);

Lorsque la bibliothèque pfodSMS verra la nouvelle ligne de println(), elle enverra les données brutes sous forme de SMS. Sur votre mobile, laissez simplement pfodApp s'exécuter en arrière-plan et votre mobile vous avertira lorsqu'un SMS sera reçu. Ouvrez à nouveau pfodApp pour l'amener au premier plan, puis ouvrez l'écran Données brutes à partir du menu du mobile pour voir les données. Remarque: les messages pfodSMS sont des caractères UTF-8 avec des numéros de connexion et de message, codés à l'aide d'un codage Base64 afin qu'ils ne ressemblent pas à du texte normal. Voir la conception du message pfodSMS pour tous les détails.

Vous pouvez utiliser le même processus pour envoyer une alerte lorsque quelque chose change à distance. c'est-à-dire parser.println(F(« Température extérieure inférieure à 0℃ » »)); Remarque: le caractère ℃ UTF-8 dans la chaîne. pfodSMS transmet tous les caractères UTF-8 à la pfodApp.

Étape 4: Débogage lors de l'utilisation de la connexion SMS dans la bibliothèque PfodParser

Débogage lors de l'utilisation de la connexion SMS dans la bibliothèque PfodParser
Débogage lors de l'utilisation de la connexion SMS dans la bibliothèque PfodParser
Débogage lors de l'utilisation de la connexion SMS dans la bibliothèque PfodParser
Débogage lors de l'utilisation de la connexion SMS dans la bibliothèque PfodParser

Le pfodDesigner génère du code qui fonctionne, mais vous souhaiterez peut-être déboguer votre propre code supplémentaire ou regarder ce qui se passe pendant que le bouclier GPRS démarre ou reçoit des messages SMS. Il existe plusieurs approches que vous pouvez adopter.

Déboguer votre propre code

Si vous déboguez votre propre code, vous pouvez simplement commenter la ligne pfodSMS et connecter l'analyseur à Serial, puis retirer le blindage GPRS et exécuter le Mega à partir du terminal Arduino. c'est-à-dire changer le setup() en

//pfodSMS.init(&Serial, 9); // ne démarre pas le shield GPRS parser.connect(&Serial); // connecte l'analyseur au Serial au lieu du flux SMS

Ensuite, à partir du terminal Arduino, vous pouvez taper {.} pour que Mega retourne le menu principal, puis renvoie la commande que vous souhaitez exécuter, par exemple. {A`1} pour activer le relais et {A`0} pour le désactiver. (Le pfodApp envoie généralement ces messages pour vous lorsque vous cliquez sur le curseur.) Ajoutez ensuite un débogage supplémentaire parser.println() pour surveiller le code supplémentaire que vous avez ajouté.

Surveillance du bouclier GPRS

Si vous voulez voir ce que fait le bouclier GPRS. Comment il démarre, reçoit des SMS, etc. Ensuite, vous devez modifier le câblage du blindage, le connecter au Mega Serial1 (série) et libérer la connexion série (USB) pour la sortie de débogage vers le moniteur Arduino IDE.

Pour connecter le blindage GPRS au Mega 2560 Serial1, supprimez les liens indiqués ci-dessus et ajoutez les fils aux broches TX1 et RX1 du Mega.

Changez ensuite le code setup() en

void setup() { Serial1.begin (19200); // changer Serial en Serial 1 Serial.begin(57600); // REMARQUE le débit en bauds rapide pour le port série USB // vers le moniteur Arduino IDE. for (int i=3; i>0; i--) { // attendre quelques secondes pour voir si nous sommes programmés delay(1000); } pinMode(cmd_A_pin, SORTIE); pfodSMS.setDebugStream(&Serial); // il faut le faire avant pfod_SMS.init // ou tout autre appel de méthode pfod_SMS // initialiser le SMS et connecter l'analyseur // changer la ligne suivante en Serial1 pfodSMS.init(&Serial1, 9); // connecte Seeed GPRS shield V2 à Serial1 au lieu de Serial parser.setDebugStream(&Serial); // il faut le faire avant parser.connect // ou tout autre appel de méthode d'analyseur parser.connect(&pfodSMS); // connecter l'analyseur au flux SMS }

Vous pouvez maintenant décommenter certains des paramètres de débogage dans la bibliothèque pfodParser au niveau du fichier pfodSMS_SIM900.cpp.

Par exemple, ne pas commenter #define DEBUG_SETUP affichera (dans le flux de débogage) ce qui se passe lors de la mise sous tension du bouclier GPRS et de sa préparation à la réception de messages SMS.

Dé-commenter #define DEBUG donnera beaucoup d'informations sur les messages SMS reçus.

C'est ça !

Conseillé: