Sunday, July 3, 2016

Interfacing GSM with PIC 18F4550

Bonjour, Aujourd'hui je viens avec un autre exemple de la manipulation du PIC18F4550, Comme il est inclut au titre de cet article aujourd'hui je vais vous expliquer comment interfacer un microcontr�leur comme le PIC18F4550 avec un tel module GSM.

Il faut savoir avant tout:
  • C'est quoi le module GSM
  • C'est quoi les commandes AT
  • C'est quoi l'UART
  • Comment envoyer un SMS
  • Comment r�aliser un appel vocal.



La num�rique facile d�finisse GSM comme �tant une norme de t�l�phonie mobile. On parle de r�seau GSM pour d�signer le r�seau num�rique de t�l�phonie mobile. Bien qu'on l'appelle aussi r�seau de 2 �me g�n�ration, c'est en r�alit� le premier r�seau d�velopp� avec ampleur dans le monde. On parle aussi de GSM lorsqu'on d�signe les t�l�phones mobiles utilisant ce r�seau pour communiquer.
Le "DCS 1800" utilise les fr�quences comprises entre 1710-1880 MHz.
- le GSM 850, utilisant les fr�quences situ�es entre 824 et 894 MHz.
- le GSM 1900 (appel� PCS 1900), utilisant les fr�quences entre 1850 et 1990 MHz.
GSM veut dire Global System for Mobile Communications. Il pr�sente un fonctionnement cellulaire : au coeur de chaque cellule, qui d�signe une zone g�ographique plus ou moins �tendue, il y a une antenne relais qui permet de faire le lien entre les t�l�phones mobiles et le r�seau. Le r�seau permet de passer d'une cellule � une autre sans interrompre la communication et sans que l'utilisateur ne s'en rende compte.
R�sultat de recherche d'images pour "reseau gsm"
Le r�seau GSM utilise les fr�quences situ�es dans la bande 890-960 MHz.On parle du "GSM 900" dans ce cas.
D'autres r�seaux, connus sous un nom diff�rent, sont aussi des r�seaux GSM, mais utilisant d'autres bandes de fr�quences.

Les commandes AT sont d�finies dans la norme GSM 07.07(pour les SMS cf. GSM 07.05). AT est l�abr�viation de ATtention. Ces 2 caract�res sont toujours pr�sents pour commencer une ligne de commande sous forme de texte (codes ASCII). Les commandes permettent la gestion compl�te du mobile.

Trois entit�s sont d�finies :
  • TE : Terminal Equipment (envoi et affiche les commandes.
  • TA : Terminal Adaptator (interface entre l�utilisateur et le mobile).
  • ME : Mobile Equipment.
Veillez lire ce document pour plus de d�tails sur les commandes AT : Document is here.
R�sultat de recherche d'images pour "at command"


Un UART,Universal Asynchronous Receiver Transmitter, est un �metteur-r�cepteur asynchrone universel.
En langage courant, c'est le composant utilis� pour faire la liaison entre l'ordinateur et le port s�rie . L'ordinateur envoie les donn�es en parall�le (autant de fils que de bits de donn�es). Il faut donc transformer ces donn�es pour les faire passer � travers une liaison s�rie qui utilise un seul fil pour faire passer tous les bits de donn�es.
Un DUART (Dual Universal Asynchronous Receiver Transmitter) combine deux UART dans une seule puce. Un USART (Universal Synchronous/Asynchronous Receiver Transmitter) peut communiquer de fa�on synchrone.
Aujourd'hui, les UART sont g�n�ralement int�gr�s dans des composants comme des microcontr�leurs. Ils ne sont dans ce cas plus un composant � proprement parler, mais une fonction p�riph�rique du composant.
Le module UART est repr�sente au PIC18F4550 sur les deux pins TX et RX.
Alors pour conclure le travail qu'on va faire ici on pourra dire qu'on aura une discussion instantan�e entre deux composantes �lectroniques, le premier c'est le microcontr�leur et le deuxi�me c'est le module GSM.
  • Le Module GSM il va lire les commandes AT et les transmettre on des actions bien d�finis.
  • Le Pic 18F4550 Va a travers sont UART transmettre les commandes AT.




Alors commen�ons un test virtuel sur la Proteus ISIS en rempla�ant le Module GSM par un Virtuel Terminal ou une interface qui sera seriallement virtuellement � travers VSPD reli�. On ajoute un Pic18F4550, quelques boutons poussoirs et quelques condensateurs. 





  
La programmation est toute � fait simple, on va que discuter avec l'UART du PIC18F4550 d'une fa�on artificielle et au but d'envoyer un SMS ou de r�aliser un appel vocale.
Le module GSM qui discutera avec notre �C c'est GSM shield i900.



// Letselectronic.blogspot.com
// PIC184550 with 8Mhz like input Quartz
// Interfacing with GSM shield i900

void sendsms(){
UART1_Write_Text("This is AT Command should we use to send the sms");
UART1_Write(10);
UART1_Write(13);
Delay_ms(3000);
UART1_Write_Text( "ATE0\r\n : This one is to make echo OFF ");
UART1_Write(10);
UART1_Write(13);
Delay_ms(3000);
UART1_Write_Text( "AT\r\n");
UART1_Write(10);
UART1_Write(13);
Delay_ms(3000);
UART1_Write_Text( "AT+CMGF = 1\r\n " );
UART1_Write(10);
UART1_Write(13);
Delay_ms(3000);
UART1_Write_Text( "AT+CNMI=1,2,0,0,0\r\n");
UART1_Write(10);
UART1_Write(13);
Delay_ms(3000);
UART1_Write_Text( "AT+CMGS=\"+xxxxxxxxx\"\r\n : You Have to replace the X's by the number ");
UART1_Write(10);
UART1_Write(13);
Delay_ms(3000);
UART1_Write_Text( "this is the sms: letselectronic.blogspot.com \r\n : The message that you want to send ");
UART1_Write(10);
UART1_Write(13);
Delay_ms(3000);
UART1_Write_Text( "Thats it :) ");
UART1_Write(10);
UART1_Write(13);
Delay_ms(3000);
}


void voicecall(){
UART1_Write_Text("Ring .... Ring.... lool,");
UART1_Write(10);
UART1_Write(13);
Delay_ms(3000);
UART1_Write_Text( "I m killing because this is the AT Command should you use ");
UART1_Write(10);
UART1_Write(13);
Delay_ms(3000);
UART1_Write_Text( "AT+CHFA = 1\r\n : This one is to select audio chanel");
UART1_Write(10);
UART1_Write(13);
Delay_ms(3000);
UART1_Write_Text( "ATDxxxxxxxxxx\r\n : You have to replace the x's by the number" );
UART1_Write(10);
UART1_Write(13);
Delay_ms(3000);
UART1_Write_Text( "ATH\r\n : Here you Terminate your phone call");
UART1_Write(10);
UART1_Write(13);
Delay_ms(3000);
UART1_Write_Text( "That's it :)");
UART1_Write(10);
UART1_Write(13);
Delay_ms(3000);
}
void main() {
ADCON1 = 0x0F; // Configure all ports with analog function as digital
CMCON = 7; // Disable comparators
TRISB=0; // PortB like output
TRISA=1; // Port A is an input
UART1_Init(9615); // Initialize UART module at 9600 bps
Delay_ms(100); // Wait for UART module to stabilize

UART1_Write_Text("How GSM Sim 9000 Works With Pic 18F4550");
UART1_Write(10);
UART1_Write(13);
delay_ms(2000);
UART1_Write_Text("----------------- Letselectronic.blogspot.com -----------------");
UART1_Write(10);
UART1_Write(13);
delay_ms(2000);
UART1_Write_Text("Make your choice SMS/Voice Call by Cliking the Button");
UART1_Write(10);
UART1_Write(13);
delay_ms(2000);
while (1) { // Endless loop


if (portA.f2 == 1) {
PortB.f0 = 1;
UART1_Write_Text("SMS Loading ");
UART1_Write(10);
UART1_Write(13);
Delay_ms(1000);
sendsms();
UART1_Write_Text("SMS Sended ");
UART1_Write(10);
UART1_Write(13);
Delay_ms(1000);
}
else
{
PortB.f0 = 0;
}
if (portA.f1 == 1){
PortB.f1 = 1;
UART1_Write_Text("Voice Call Loading ");
UART1_Write(10);
UART1_Write(13);
Delay_ms(1000);
VoiceCall() ;
UART1_Write_Text("Voice Call Done ");
UART1_Write(10);
UART1_Write(13);
Delay_ms(1000);
}
else
{
PortB.f1 = 0;
}}}



 Mes derniers remarques sont:
  1. Il faut bien prendre en compte le r�glage du Quartz a utiliser avec le PIC18F4550, J'ai introduit �a dans mon article pr�c�dant. 
  2. Il faut savoir bien les commandes utiliser avec le Module GSM pour la tache qu'on cherche (Les commandes sont tous trouvables ici).
  3. Initialer votre module GSM avec de r�aliser la communication (Reset button included).
  4. Au dessous c'est une vid�o d�monstrative de communication de PIC18F4550 avec Hyper Terminal. Suivez les d�tails et mettez moi en contact si il y a des probl�mes.





       

Aymenlachkem@gmail.com
   

No comments:

Post a Comment