Circuits4you.com

Le modem GSM, téléphones fournit un canal de communication sans fil à faible coût et à longue portée pour les applications intégrées basées sur des microcontrôleurs qui nécessitent une connectivité plutôt que des débits de données élevés. Machines telles que réfrigérateurs industriels, congélateurs, CVC, surveillance et distributeurs automatiques, service de véhicule, système d’avertissement, système de sécurité, télécommande, etc. pourrait bénéficier d’être connecté à un modem GSM.

Ce tutoriel décrit comment utiliser un AVR pour contrôler un modem GSM à l’aide de commandes AT. L’interface entre le modem et l’hôte est un protocole textuel appelé AT-Commands. Ces commandes permettent la configuration du modem GSM, la composition, la messagerie texte, etc. Cette application particulière connecte un module AVR ATmega8 et SIM300, SIM900 à l’aide d’une connexion RS232. La plupart des modems GSM ont les mêmes commandes AT.

Contenu

• Interface avec les modems GSM.
• Implémentation du jeu de commandes AT.
• Compression et décompression des chaînes PDU.
* Transmission SMS, comment envoyer et recevoir.

Types de Modems GSM

De nombreux modems GSM sont disponibles sur le marché Simcom SIM300, SIM900 et Quectel M10. passons en revue ses caractéristiques

Points à considérer lors du choix du modem GSM

Il existe peut-être des modems GSM disponibles sur le marché ce sont SIM300, SIM900 et SIM900A, Quectel M10 est beaucoup fiable et un peu coûteux. SIM300 est un modem plus ancien maintenant, il devient absolu.

  1. Alimentation requise
  2. Interface disponible UART (TTL) ou RS232
  3. Taille
  4. Prix
  5. Interface audio (MICRO / SPK)

Alimentation Requise

La plupart des modem GSM nécessitent 4,2 V pour fonctionner et ils sont compatibles avec 5V et 3,3V certains modems sont également disponibles en 3,3V. en fonction de vos besoins en microcontrôleur, choisissez le modem correct. Le modem GSM nécessite plus de courant lors de l’envoi de SMS, de l’appel et de l’inscription sur le réseau. N’oubliez pas d’utiliser toujours une alimentation de 2 ampères. La plupart des nouvelles personnes font des erreurs dans la sélection de l’alimentation correcte, ce qui entraînera un problème ou une réinitialisation du modem lors de l’envoi de SMS.

Interface disponible UART (TTL) ou RS232

Comme nous utilisons AVR ATmega8, nous préférons l’interface UART TTL. La plupart des modem GSM ont une interface RS232 et UART (TTL).

Quelques modem GSM sont également livrés avec une interface USB, lorsque vous interfacez un modem GSM avec une interface USB pour PC. Il élimine le besoin de convertisseur USB vers série et peu de modems sont alimentés par USB, donc pas besoin d’alimentation externe.

Taille, prix

La taille et le prix de chaque modem varient en fonction de l’utilisation par le fabricant de composants externes.

Interface audio (MIC / SPK)

Une interface audio est requise si vous utilisez un modem GSM pour passer des appels ou pour vous interfacer avec un décodeur DTMF pour créer un système IVRS.

Interface Modem GSM

Avant de connecter ATmega8 avec un modem GSM, jetons un coup d’œil à divers Modems GSM. Tous ces modem GSM ont une capacité GPRS, il n’est pas nécessaire de modem GPRS séparé.

Comme vous le voyez dans ce modem GSM Quectel M10, Nous n’avons pas accès à la connexion TTL (Rx, Tx) nous avons besoin d’un convertisseur de niveau RS232 construit en utilisant MAX232.

 Quectel M10
Quectel M10

SIM300 est absolu, nous ne pouvons pas l’obtenir sur le marché. Il utilise un régulateur linéaire LM317 pour faire son alimentation, il est préférable d’avoir un convertisseur DC-DC ou un régulateur de commutation pour de meilleurs résultats.

 Modem SIM300
Modem SIM300

Nous allons utiliser ce modem GSM. Il a une sortie TTL Rx, Tx. L’interfaçage du modem GSM avec le microcontrôleur consiste simplement à connecter ces lignes Rx, Tx avec des microcontrôleurs UART.

 Modem GSM SIM900A
Modem GSM SIM900A

Connexions Modem GSM avec ATmega8

 Interface Modem GSM
Interface Modem GSM

Commandes AT

Le protocole utilisé par les modems GSM pour la configuration et le contrôle est basé sur le jeu de commandes AT. Les commandes spécifiques au modem GSM sont adaptées aux services offerts par un modem GSM tels que : messagerie texte, appel d’un numéro de téléphone donné, suppression d’emplacements mémoire, etc. Puisque l’objectif principal de ce tutoriel est de montrer comment envoyer et recevoir des messages texte, seul un sous-ensemble de l’ensemble de commandes AT doit être implémenté. L’Institut Européen des normes de Télécommunication (ETSI) GSM 07.05 définit l’interface de commande pour les modems compatibles GSM. Dans ce tutoriel, certaines commandes sélectionnées sont choisies et présentées brièvement dans cette section. Ce sous-ensemble de commandes permettra au modem d’envoyer et de recevoir des messages SMS.

Les commandes peuvent être testées en connectant un modem GSM à l’un des ports COM du PC. Utilisez hyper terminal ou n’importe quel logiciel de terminal série pour donner des commandes AT au modem GSM.

Commande Description
À Vérifiez si l’interface série et le modem GSM fonctionnent.
ATE0 Désactivez l’écho, moins de trafic sur la ligne série.
AT +CMTI Affichage des nouveaux SMS entrants.
AT + CPMS Sélection de la mémoire SMS.
AT + CMGF Format de chaîne SMS, comment ils sont compressés.
AT +CMGR Lit le nouveau message à partir d’un emplacement de mémoire donné.
AT +CMGS Envoie un message à un destinataire donné.
À +CMGD Supprimer le message.

Status(AT)

La commande « AT » est une demande d’état utilisée pour tester si un modem compatible est connecté et que l’interface série fonctionne correctement.

Commande: « AT »
Réponse: « OK »
Réponse connectée et fonctionnelle
: « ERROR »
Ligne série OK erreur du modem

Echo off(ATE0)

La commande « ATE0 » est utilisée pour configurer la communication. Par défaut, les modems GSM sont configurés pour faire écho à toute commande reçue avec un accusé de réception.

Avec echo off, « ATE0 », le modem aurait répondu « OK » lors de l’exécution de « AT ». La commande echo off réduira le trafic sur la ligne série. La commande « ATE1 » activera à nouveau l’écho.

ATE0

Gardez toujours echo off « ATE0 » pour simplifier la communication série avec le contrôleur.

AT + CMGF Sélectionnez le format du message SMS

La commande « AT + CMGF » est utilisée pour définir le format d’entrée et de sortie des messages SMS. Deux modes sont disponibles:

• Mode texte: la lecture et l’envoi de SMS se font en texte brut.

Réglez-le toujours en mode Texte pour plus de simplicité

AT +CMGF = 1

0 est le mode PDU, 1 est le mode texte.

Message de lecture (AT+CMGR)

La commande « AT+CMGR » est utilisée pour lire un message à partir d’un emplacement mémoire donné. L’exécution de « AT+ CMGR » renvoie un message at de la mémoire sélectionnée.

Par exemple lecture depuis l’emplacement 1

AT+CMGR= 1

Ecrire un message en mémoire (AT+CMGW)

Cette commande permet à l’utilisateur d’envoyer des messages SMS.

AT + CMGW = 1 // Écrit un message à l’emplacement 1

Envoyer un message SMS Depuis le stockage (AT + CMSS)

Envoie des SMS stockés.

AT +CMSS = 1 // Envoyer des SMS depuis l’emplacement 1

Envoi de SMS en utilisant le code du microcontrôleur AVR

dans votre sous-programme principal () initialisez serial et appelez sendSMS() pour envoyer des SMS

void sendSMS(){ senddata("AT+CMGD=1"); USART_Transmit(13); USART_Transmit(10); delay_ms(1000); senddata("AT+CMGF=1"); USART_Transmit(13); USART_Transmit(10); delay_ms(1000); senddata("AT+CMGW="); USART_Transmit(34); senddata("+919812345678"); //Enter Your Mobile number USART_Transmit(34); USART_Transmit(13); USART_Transmit(10); delay_ms(1000); senddata("Alert: Fire Detected"); USART_Transmit(13); USART_Transmit(10); delay_ms(1000); USART_Transmit(26); //Cntrl+Z delay_ms(1000); delay_ms(1000); senddata("AT+CMSS=1"); USART_Transmit(13); USART_Transmit(10); delay_ms(1000);}void delay_ms(unsigned int de){unsigned int rr,rr1; for (rr=0;rr<de;rr++) { for(rr1=0;rr1<30;rr1++) //395 { asm("nop"); } }}void USART_Transmit(char data ){ UDR = data; /* Wait for empty transmit buffer */ while ( !( UCSRA & (1<<UDRE)) ) ; /* Put data into buffer, sends the data */}void senddata(char string){ int len,count; len = strlen(string); for (count=0;count<len;count++) { USART_Transmit(string); }}void USART_Init(){/* Set baud rate */ UBRRH = 0x00; //12, 9600 Baud At 1MHz UBRRL =12; //Set double speed enabled UCSRA |= (1<<U2X);/* Enable receiver and transmitter */ UCSRB = (1<<RXEN)|(1<<TXEN);/* Set frame format: 8data, 2stop bit */ UCSRC = (1<<URSEL)|(1<<USBS)|(3<<UCSZ0);//Set interrupt on RX// UCSRB |= (1<<RXCIE);}

Envoi de SMS en utilisant Arduino

void setup() { Serial.begin(9600);}void loop() { sendSMS(); //Send SMS delay(5000); //Wait for few seconds}void sendSMS(){ Serial.println("AT+CMGD=1"); //Delete privious sent SMS delay(1000); Serial.println("AT+CMGF=1"); //Set SMS configuration delay(1000); Serial.print("AT+CMGW="); //Write New SMS Serial.write(34); //Double quotes ASCII Code Serial.print("+9198--------"); //Enter Your Mobile number Serial.write(34); Serial.println(); //Send Crrige return delay(1000); Serial.println("Your message here"); //SMS Message to be sent delay(1000); Serial.write(26); //Cntrl+Z character code delay(1000); delay(1000); Serial.println("AT+CMSS=1"); //Send SMS from memory location 1 delay(4000);}

Maintenant, il est clair que maintenant nous pouvons envoyez des SMS à l’aide d’un microcontrôleur Arduino et AVR avec une interface série simple avec un modem GSM.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.