Commande AT & PIC
Répondre à la discussion
Affichage des résultats 1 à 3 sur 3

Commande AT & PIC



  1. #1
    IHCAAMEL

    Question Commande AT & PIC


    ------

    Bonjour
    j'ai réalisé un programme en MIKROC de la reception et l'émission des SMS à l'aide d'un PIC16F877A pour la simulation sur ISIS ca marche mais je ne suis pas sur que les commandes AT et leur programmation surtout au niveau de la reception d'un message sont correctes ( je rappelle que j'ai besoin d'aide d'un personne qui a deja essayé ça en pratique car la simulation est bonne mais au pratique ????)
    voici mon programme :

    void reception_message(){
    UART1_INIT(9600); // initialisation du protocol UART
    // avec vitesse d'echange des données de 9600
    Delay_ms(100);
    UART1_write_text("AT"); // Envoi de la commande ATUART1_write(13); // Code ASCII equivalent pour ENTRE
    UART1_write(10); // Code ASCII equivalent pour (CTRL+H)delay_ms(1000);
    UART1_write_text("AT+CMGF=1"); // choisir le mode texte
    // en positionnant en 1
    UART1_write(13);
    UART1_write(10);
    delay_ms(1000);
    UART1_write_text("AT+CPMS='ME' "); // la mémoire choisie est
    //la mémoire de la télephone
    UART1_write(13);
    UART1_write(10);
    delay_ms(1000);
    UART1_write_text("AT+CNMI=2,1, 0,0,0");// extraire touts
    // les message reçus
    UART1_write(13);
    UART1_write(10);
    delay_ms(1000);}
    void lecture_message (){
    UART1_write_text("AT+CMGR=1"); // la lecture du message
    // de l'enplacement 1
    UART1_write(13);
    UART1_write(10);
    delay_ms(1000);
    UART1_write_text("AT+CMGD=1"); // supprimer le message
    // dans l'emplacement 1
    UART1_write(13);
    UART1_write(10);
    delay_ms(1000);}
    void main() { char R;trisb.f0=1;intcon=0x90;trisb .f6=0;
    reception_message();
    UART1_init(9600);
    Delay_ms(100);
    loop:
    lecture_message ();
    if(X==1){ Emission_Message(); Emission_presence();X=0; }
    // verifier si X est à 1 si oui envoyer
    //un sms "presence" sinon continuer le programme

    if(UART1_Data_Ready()){ // tester si on a une donnée au niveau
    //de la reception par pic venant
    //d'un telephone portable
    R=UART1_Read();

    if(R=='a'){ PORTB.f6=1; Emission_Message();Emission_al ume();}
    // si le message recu par le pic est "a" envoyer un sms "alume"else { if(R=='e' ){ PORTB.f6=0;Emission_Message(); Emission_Eteint();}
    // si le message recu par le pic est "e" envoyer un sms "eteint"else {Emission_Message(); Emission_Erreur();};};};
    // sinon envoi "erreur" goto loop;
    }
    void interrupt(){X=1;intcon.f1=0;}
    // positioner X à 1 lorsqu'on a une interruption sur le pin RB0

    -----

  2. #2
    IHCAAMEL

    Re : Commande AT & PIC

    Voila le code avec plus d'organisation :


    void reception_message(){
    UART1_INIT(9600); // initialisation du protocol UART
    // avec vitesse d'echange des données de 9600
    Delay_ms(100);
    UART1_write_text("AT"); // Envoi de la commande AT
    UART1_write(13); // Code ASCII equivalent pour ENTRE
    UART1_write(10); // Code ASCII equivalent pour (CTRL+H)
    delay_ms(1000);
    UART1_write_text("AT+CMGF=1"); // choisir le mode texte
    // en positionnant en 1
    UART1_write(13);
    UART1_write(10);
    delay_ms(1000);
    UART1_write_text("AT+CPMS='ME' "); // la mémoire choisie est
    //la mémoire de la télephone
    UART1_write(13);
    UART1_write(10);
    delay_ms(1000);
    UART1_write_text("AT+CNMI=2,1, 0,0,0"); // extraire touts
    // les message reçus
    UART1_write(13);
    UART1_write(10);
    delay_ms(1000);}
    void lecture_message (){
    UART1_write_text("AT+CMGR=1"); // la lecture du message
    // de l'enplacement 1
    UART1_write(13);
    UART1_write(10);
    delay_ms(1000);
    UART1_write_text("AT+CMGD=1"); // supprimer le message
    // dans l'emplacement 1
    UART1_write(13);
    UART1_write(10);
    delay_ms(1000);}
    void main() { char R;trisb.f0=1;intcon=0x90;trisb .f6=0;
    reception_message();
    UART1_init(9600);
    Delay_ms(100);
    loop:
    lecture_message ();
    if(X==1){ Emission_Message(); Emission_presence();X=0; }
    // verifier si X est à 1 si oui envoyer
    //un sms "presence" sinon continuer le programme
    if(UART1_Data_Ready()){ // tester si on a une donnée au niveau
    //de la reception par pic venant
    //d'un telephone portable
    R=UART1_Read();

    if(R=='a'){ PORTB.f6=1; Emission_Message();Emission_al ume();}
    // si le message recu par le pic est "a" envoyer un sms "alume"
    else { if(R=='e' ){ PORTB.f6=0;Emission_Message(); Emission_Eteint();}
    // si le message recu par le pic est "e" envoyer un sms "eteint"
    else {Emission_Message(); Emission_Erreur();};};};
    // sinon envoi "erreur"
    goto loop;
    }
    void interrupt(){X=1;intcon.f1=0;}
    // positioner X à 1 lorsqu'on a une interruption sur le pin RB0

  3. #3
    invite4b4d44a0

    Re : Commande AT & PIC

    bonjour,

    Je te félicite pour votre programme, svp dis moi est ce que ça été fonctionné en vrai!! Ou vous n'aviez pas l'essayer!! Si réussi quelle type de téléphone que vous aviez utilisé.
    Merci
    A+

Discussions similaires

  1. [Divers] Chasse d'eau & câble de commande !
    Par invitec99188a2 dans le forum Dépannage
    Réponses: 5
    Dernier message: 14/08/2010, 19h10
  2. Commande du PIC par USB
    Par invitec1317d72 dans le forum Électronique
    Réponses: 3
    Dernier message: 07/05/2008, 13h11
  3. commande PIC
    Par ABN84 dans le forum Électronique
    Réponses: 2
    Dernier message: 18/03/2008, 23h17
  4. Qui connais logi pic & et question à propos des pic
    Par Floris dans le forum Électronique
    Réponses: 10
    Dernier message: 29/05/2006, 22h40
  5. PIC et commande au volant
    Par nullos dans le forum Électronique
    Réponses: 0
    Dernier message: 09/01/2006, 17h30
Découvrez nos comparatifs produits sur l'informatique et les technologies.