- Matériaux nécessaires
- Logiciel utilisé
- Module GSM
- Communication avec le module GSM à l'aide des commandes AT
- Schéma du circuit d'interfaçage du module GSM ATMega16
- Création du projet pour ATmega16 à l'aide de CodeVision
- Code et explication
- Construisez le projet
- Téléchargez le code sur Atmega16
Les modules GSM sont intéressants à utiliser surtout lorsque notre projet nécessite un accès à distance. Ces modules peuvent effectuer toutes les actions que notre téléphone mobile normal pourrait faire, comme passer / recevoir un appel, envoyer / recevoir un SMS, se connecter à Internet en utilisant GPRS, etc. Vous pouvez également connecter un microphone et un haut-parleur normaux à ce module et converser sur votre appels mobiles. Cela ouvrira les portes à de nombreux projets créatifs s'il pouvait être interfacé avec un microcontrôleur. Par conséquent, dans ce tutoriel, nous allons apprendre comment nous pouvons interfacer le module GSM (SIM900A) avec le microcontrôleur AVR ATmega16 et le démontrer en envoyant et recevant des messages à l' aide du module GSM.
Matériaux nécessaires
- Atmega16
- Module GSM (SIM900 ou tout autre)
- affichage LCD
- Boutons poussoir
- Résistances 10k, potentiomètre
- Fils de connexion
- Adaptateur 12V
- Programmeur USBasp
- Câble FRC 10 broches
Logiciel utilisé
Nous utiliserons le logiciel CodeVisionAVR pour écrire notre code et le logiciel SinaProg pour télécharger notre code sur Atmega16 à l'aide du programmeur USBASP.
Vous pouvez télécharger ces logiciels à partir des liens indiqués:
CodeVisionAVR:
SinaProg:
Avant d'entrer dans les schémas et les codes, nous apprenons le module GSM et son fonctionnement.
Module GSM
Le module GSM peut être utilisé même sans microcontrôleur en utilisant le mode de commande AT. Comme indiqué ci-dessus, le module GSM est livré avec un adaptateur USART qui peut être directement interfacé à l'ordinateur en utilisant un module MAX232 ou les broches Tx et Rx peuvent être utilisées pour le connecter à un microcontrôleur. Vous pouvez également remarquer les autres broches comme MIC +, MIC-, SP +, SP- etc. où un microphone ou un haut-parleur peut être connecté. Le module peut être alimenté par un adaptateur 12V via une prise cylindrique CC normale.
Insérez votre carte SIM dans l'emplacement du module et allumez-le, vous devriez remarquer qu'un voyant d'alimentation s'allume. Maintenant, attendez une minute environ, et vous devriez voir une LED rouge (ou toute autre couleur) clignoter une fois toutes les 3 secondes. Cela signifie que votre module était capable d'établir une connexion avec votre carte SIM. Vous pouvez maintenant procéder à la connexion de votre module avec le téléphone ou n'importe quel microcontrôleur.
Vous pouvez créer de nombreux projets sympas en utilisant le module GSM comme:
- Tableau d'affichage sans fil utilisant GSM et Arduino
- Répondeur automatique aux appels utilisant Arduino et module GSM
- Domotique basée sur GSM utilisant Arduino
- Capteur PIR et système de sécurité basé sur GSM
Consultez également tous les projets liés au GSM ici.
Communication avec le module GSM à l'aide des commandes AT
Comme vous l'avez peut-être deviné, le module GSM peut communiquer via une communication série et ne peut comprendre qu'une seule langue, à savoir les « commandes AT ». Quoi que vous souhaitiez dire ou demander au module GSM, cela ne devrait se faire que via des commandes AT. Par exemple si vous souhaitez savoir si votre module est actif. Vous devriez demander (envoyer) une commande comme «AT» et votre module répondra «OK».
Ces commandes AT sont bien expliquées dans sa fiche technique et peuvent être trouvées ici dans sa fiche technique officielle. D'accord! D'accord! Il s'agit d'une fiche technique de 271 pages et vous pourriez prendre des jours pour les lire. J'ai donc donné ci-dessous quelques commandes AT les plus importantes pour que cela soit opérationnel bientôt.
À |
Répond par OK pour accusé de réception |
AT + CPIN? |
Vérifier la qualité du signal |
AT + COPS? |
Rechercher le nom du fournisseur de services |
ATD96XXXXXXXX; |
Appel au numéro spécifique, se termine par un point-virgule |
À + CNUM |
Trouvez le numéro de la carte SIM (peut ne pas fonctionner pour certaines SIM) |
À |
Répondre à l'appel entrant |
ATH |
Suspendre l'appel entrant en cours |
AT + COLP |
Afficher le numéro d'appel entrant |
AT + VTS = (nombre) |
Envoyer le numéro DTMF. Vous pouvez utiliser n'importe quel numéro sur votre clavier mobile pour (numéro) |
AT + CMGR |
AT + CMGR = 1 lit le message en première position |
À + CMGD = 1 |
Supprimer le message en première position |
AT + CMGDA = "SUPPRIMER TOUT" |
Supprimer tous les messages de la carte SIM |
AT + CMGL = "TOUS" |
Lire tous les messages de SIM |
À + CMGF = 1 |
Définissez la configuration SMS. «1» correspond au mode texte uniquement |
AT + CMGS = "+91 968837XXXX" > Texte CircuitDigest
|
Envoie des SMS à un numéro particulier ici 968837XXXX. Lorsque vous voyez «>», commencez à saisir le texte. Appuyez sur Ctrl + Z pour envoyer le texte. |
AT + CGATT? |
Pour vérifier la connexion Internet sur la carte SIM |
À + CIPSHUT |
Pour fermer la connexion TCP, c'est-à-dire se déconnecter d'Internet |
AT + CSTT = "APN", "username", "Pass" |
Connectez-vous au GPRS avec votre APN et votre clé d'accès. Peut être obtenu auprès du fournisseur de réseau. |
AT + CIICR |
Vérifiez si la carte SIM a un pack de données |
AT + CIFSR |
Obtenir l'IP du réseau SIM |
AT + CIPSTART = "TCP", "SERVER IP", "PORT" |
Utilisé pour définir une connexion TCP IP |
À + CIPSEND |
Cette commande est utilisée pour envoyer des données au serveur |
Ici, nous utiliserons les commandes AT + CMGF et AT + CMGS pour envoyer des messages.
Si vous avez utilisé le module GSM avec Arduino, lors de la réception de messages, vous pouvez utiliser + CMT: commande pour afficher le numéro de mobile et le message texte sur le moniteur série. Le message texte vient sur la deuxième ligne comme indiqué dans l'image.
Nous allons scanner cette commande + CMT: pour vérifier si le message est disponible ou non.
Schéma du circuit d'interfaçage du module GSM ATMega16
Les connexions seront les suivantes
- Tx et Rx du module GSM vers Rx (Pin14) et Tx (Pin15) d'Atmega16 respectivement.
- Boutons poussoirs vers PD5 (Pin19) et PD6 (Pin20).
- Connexions LCD:
- RS - PA 0
- R / W - PA1
- FR - PA2
- D4 - PA4
- D5 - PA5
- D6 - PA6
- D7 - PA7
Création du projet pour ATmega16 à l'aide de CodeVision
Après avoir installé les logiciels CodeVisionAVR et SinaProg , suivez les étapes ci-dessous pour créer un projet et écrire du code:
Déjà téléversé
Étape 1. Ouvrez CodeVision Cliquez sur Fichier -> Nouveau -> Projet . La boîte de dialogue de confirmation apparaîtra. Cliquez sur Oui
Étape 2. CodeWizard s'ouvre. Cliquez sur la première option, à savoir AT90 , et cliquez sur OK.
Étape 3: - Choisissez votre puce de microcontrôleur, ici nous prendrons Atmega16L comme indiqué.
Étape 4: - Cliquez sur USART . Sélectionnez Récepteur et Émetteur en cliquant dessus. Comme indiqué ci-dessous:
Étape 5: - Cliquez sur LCD alphanumérique et sélectionnez Activer le support LCD alphanumérique .
Étape 6: - Cliquez sur Programme -> Générer, enregistrer et quitter . Maintenant, plus de la moitié de notre travail est terminé
Étape 7: - Créez un nouveau dossier sur le bureau afin que nos fichiers restent dans le dossier sinon nous serons dispersés sur toute la fenêtre du bureau. Nommez votre dossier comme vous le souhaitez et je suggère d'utiliser le même nom pour enregistrer les fichiers du programme.
Nous aurons trois boîtes de dialogue l'une après l'autre pour enregistrer les fichiers.
Faites de même avec les deux autres boîtes de dialogue qui apparaîtront après avoir enregistré la première.
Maintenant, votre espace de travail ressemble à ceci.
La majeure partie de notre travail est réalisée à l'aide de l'assistant. Maintenant, nous devons écrire du code pour le GSM uniquement.
Code et explication
Tous les fichiers d'en-tête sont automatiquement attachés après la création du projet, il vous suffit d'inclure le fichier d'en-tête delay.h et de déclarer toutes les variables. Le code complet est donné à la fin de ce tutoriel.
#comprendre
Créez une fonction pour recevoir les données du registre UDR. Cette fonction renverra les données reçues.
caractère non signé valeur_recevée (void) { while (! (UCSRA & (1 <
Venez à la en boucle dans laquelle nous créons deux si des déclarations, un pour l' envoi d'un message et d' autres pour recevoir. Le bouton Envoyer est connecté au PIND6 d'ATmega et le bouton de réception des messages avec PIND5.
Lorsque PIND6 (bouton d'envoi) est pressé en premier si l' instruction s'exécute et toutes les commandes pour envoyer le message s'exécutent une par une.
while (1) { // lcd_clear (); lcd_putsf ("Envoyer-> bttn 1"); lcd_gotoxy (0,1); lcd_putsf ("Recevoir-> buttn 2"); si (PIND.6 == 1) { lcd_clear (); lcd_gotoxy (0,0); lcd_putsf ("Envoi de Msg…"); pour (z = 0; cmd_1! = ''; z ++) { UDR = cmd_1; delay_ms (100); } UDR = ('\ r'); delay_ms (500); pour (z = 0; cmd_2! = ''; z ++) { UDR = cmd_2; delay_ms (100); } …..
Si le bouton de réception de message est enfoncé, la boucle while (b! = '+') Vérifie si la commande CMT est présente ou non. Le cas échéant, seconde en boucle exécutera et passez à la deuxième ligne de la commande et imprimer le message sur un LCD par un.
while (PIND.5 == 1) { lcd_clear (); lcd_gotoxy (0,0); lcd_putsf ("Réception de Msg…"); b = valeur_recevée (); while (b! = '+') { b = valeur_recevée (); } b = valeur_recevée (); if (b == 'C') { b = valeur_recevée (); … ..
Cette boucle amène le programme à la deuxième ligne de commande et stocke le message dans le tableau.
while (b! = 0x0a) { b = valeur_recevée (); } pour (b = 0; b <3; b ++) { c = valeur_recue (); msg = c; } .. ..
Cette boucle for permet d'afficher le message sur l'écran LCD.
pour (z = 0; z <3; z ++) { a = msg; lcd_putchar (a); // IMPRIMER DANS lcd delay_ms (10); }
Le code complet avec la vidéo de démonstration est donné ci-dessous, nous devons maintenant construire notre projet.
Construisez le projet
Cliquez sur l' icône Construire le projet comme indiqué.
Après la construction du projet, un fichier HEX est généré dans le dossier Debug-> Exe qui se trouve dans le dossier que vous avez créé précédemment pour enregistrer votre projet. Nous utiliserons ce fichier HEX pour télécharger dans Atmega16 à l'aide du logiciel Sinaprog.
Téléchargez le code sur Atmega16
Connectez vos circuits selon le schéma donné pour programmer Atmega16. Branchez un côté du câble FRC au programmeur USBASP et l'autre côté se connectera aux broches SPI du microcontrôleur comme décrit ci-dessous:
- Pin1 du connecteur femelle FRC -> Pin 6, MOSI d'Atmega16
- Broche 2 connectée à Vcc de l'atmega16, c'est-à-dire la broche 10
- Broche 5 connectée à la réinitialisation de l'atmega16, c'est-à-dire la broche 9
- Broche 7 connectée au SCK de l'atmega16, c'est-à-dire la broche 8
- Broche 9 connectée au MISO de l'atmega16, c'est-à-dire la broche 7
- Broche 8 connectée à GND de l'atmega16, c'est-à-dire la broche 11
Nous téléchargerons le fichier Hex généré ci-dessus à l'aide du Sinaprog, alors ouvrez-le et choisissez Atmega16 dans le menu déroulant Appareil. Sélectionnez le fichier HEX dans le dossier Debug-> Exe comme indiqué.
Maintenant, cliquez sur Programme et votre code sera gravé dans le microcontrôleur ATmega16.
Vous avez terminé et votre microcontrôleur est programmé. Appuyez simplement sur les boutons pour envoyer et recevoir les messages du microcontrôleur GSM et ATmega16.
Le code complet et la vidéo de démonstration sont donnés ci-dessous.