Bienvenue aux nouveaux arrivants sur FantasPic !
- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.
--- L’équipe FantasPic ---
- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.
--- L’équipe FantasPic ---
Modérateur : Jérémy
Module GSM2-Click
- paulfjujo
Expert- Messages : 2598
- Âge : 73
- Enregistré en : juillet 2015
- Localisation : 01800
- Contact :
bonsoir,
je suis surpris que tu doives diminuer la vitese à 300 bauds.
Mes 2 liaisons UART1 et UART2 sont à 19200 bds.
à voir aussi : quelles sont les ressources utilisées par le SON ?.
Il y a une enorme difference dans mon application,
je ne gere pas la laison GSM2 (UART2) via une machine d'etat .
mais en gerant un buffer de reception (via interrupt) et test du contenu buffer.
A quel vitesse FOS tourne ton PIC ?
je suis à 48MHz .. 83nS / cycle
c'est bien la meme chose :
Des qu'un SMS est reçu, analysé et exploité, la zone de memoire SMS INBOX est razée ,de sorte
à ne conserver aucun message reçu et donc celui qui arrive est toujour en position #1.
On peut donc le lire soit via "REC UNREAD" soit en précisant son index (numero) ,inutile dans ce cas là.
Un stockage des messages recus pourrait etre envisagé si besoin..
18:55:38.234> List all msg from inbox (AT+CMGL=ALL)
18:55:40.796> OK
nota: je n'ai pas encore testé ton appli .. ça va "viendre" .
je suis surpris que tu doives diminuer la vitese à 300 bauds.
Mes 2 liaisons UART1 et UART2 sont à 19200 bds.
à voir aussi : quelles sont les ressources utilisées par le SON ?.
Il y a une enorme difference dans mon application,
je ne gere pas la laison GSM2 (UART2) via une machine d'etat .
mais en gerant un buffer de reception (via interrupt) et test du contenu buffer.
A quel vitesse FOS tourne ton PIC ?
je suis à 48MHz .. 83nS / cycle
Sinon PAul, tu gére l'effacement des SMS recu par "DEL INBOX" ? qu'entend-il par INBOX ? par rapport à un "DEL ALL"
c'est bien la meme chose :
Des qu'un SMS est reçu, analysé et exploité, la zone de memoire SMS INBOX est razée ,de sorte
à ne conserver aucun message reçu et donc celui qui arrive est toujour en position #1.
On peut donc le lire soit via "REC UNREAD" soit en précisant son index (numero) ,inutile dans ce cas là.
Un stockage des messages recus pourrait etre envisagé si besoin..
18:55:38.234> List all msg from inbox (AT+CMGL=ALL)
18:55:40.796> OK
nota: je n'ai pas encore testé ton appli .. ça va "viendre" .
Module GSM2-Click
-
Jérémy
Administrateur du site- Messages : 2727
- Âge : 45
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
quelles sont les ressources utilisées par le SON ?.
Je ne sais pas ! qu'entends tu par la ? je n'ai pas encore touché à cela .
A quel vitesse FOS tourne ton PIC ?
je suis à 48MHz .. 83nS / cycle
J'ai encore du mal a comprendre ca . Au départ j'étais à 8Mhz, et pour testé j'ai changé en passant à 32 mhz mais je trouvais que c'était encore plus lent au niveau des pauses ( genre le beep émis sur ma carte était différent). alors jai activé les PLL pareil .
A 300Bauds j'ai aucun loupé si je me mets à 1200 bauds j'ai quelques loupés ( 1 sur deux environs)
Piur les SMS Unrread j'ai testé hier soir . effectivement une fois lu , il passe en stockage automatiquement, amis on peut les garder on UNREAD il me semble avec une commande.
Je vais essayer de peaufiner ma compréhension des commandes, puis revoir le programme de test pour le mettre à ma sauce.
Mais pour la façon de traiter les reçus par sms je trouve la façon de faire peu claire .Le fait de vérifier chaque lettre une à une et de glisser dans le switch case pour retrouver le bon mot ! Je pense que je pourrais revoir ceci .
Puis enfin viendra le HARD, je ne vois pas pourquoi tu n'arrive pas descendre la consommation avec le mode sleep, sans touché le CFUN qui inhibe la liaison RF .
Suivant l'application , je ne vois que le mode sommeil/reveil automatique pour descendre a mort . Genre un reveil toutes les 5 minutes pour checker l'arrivé de SMS .
Module GSM2-Click
- paulfjujo
Expert- Messages : 2598
- Âge : 73
- Enregistré en : juillet 2015
- Localisation : 01800
- Contact :
Jérémy a écrit :quelles sont les ressources utilisées par le SON ?.
Je ne sais pas ! qu'entends tu par la ? je n'ai pas encore touché à cela .
ceci :
Code : Tout sélectionner
Sound_Play(5000, 50); // On joue un son
CFUN qui inhibe la liaison RF .
si CFUN inhibe aussi la RF reception .. ce n'est pas le SMS qui le reveillera ..
Je n'ai pas vu d'efficacité reelle sur la conso avec CFUN.. mais je ne sais pas tout !
Modifié en dernier par paulfjujo le mar. 7 juin 2016 20:24, modifié 1 fois.
Module GSM2-Click
Module GSM2-Click
-
Jérémy
Administrateur du site- Messages : 2727
- Âge : 45
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
Je n'ai pas vu d'efficacité reelle sur la conso avec CFUN.. mais je ne sais pas tout !
Etrange , car CFUN coupe la liaison RF, ce qui devrait etre le gain le plus significatif en terme de conso le fait de couper la réception.
Comment a tu branche ton amperemetre ? sur le 5V ou le 3.3V ? car je n'ai aps compris la facon dont est alimenté le module !
Sur ma carte si je ne mets que la prise 3.3V le module ne s'allume pas ! je dois branché le 3.3V ET le 5 V .
EDIT : Test effectue sans SOUND, pareil .
Re-EDIT: En fait le PIC ou sa fréquence ne rentre pas en ligne de compte , car il est complétement débranché de mon module. Je ne me sert de lui que pour l'init de PWRKEY, ensuite je débranche les fils UART pour les mettre sur mon câble .
Module GSM2-Click
-
Jérémy
Administrateur du site- Messages : 2727
- Âge : 45
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
Bonsoir ,
J'ai repris quelques tests sur mon GSM2 click .
@Paul : Quand tu branche ton cable TTL/USB , branches-tu aussi les broches CTS et RTS au cable ? ou seulement GND , Rx et Tx
Si je ne branche pas rts et cts, tu me on firme que CTS doit être mis à gnd ?
J'ai repris quelques tests sur mon GSM2 click .
@Paul : Quand tu branche ton cable TTL/USB , branches-tu aussi les broches CTS et RTS au cable ? ou seulement GND , Rx et Tx
Si je ne branche pas rts et cts, tu me on firme que CTS doit être mis à gnd ?
Module GSM2-Click
- paulfjujo
Expert- Messages : 2598
- Âge : 73
- Enregistré en : juillet 2015
- Localisation : 01800
- Contact :
Bonjour Jeremy
Pour les liaison avec le PC .. je ne connecte que TX et RX .
par contre au niveau de l'init GSM2
j'ai CTS=RB3 = Entree tirée au niveau 1 via l'activation Pullup PortB
je ne sais pas si cette entree est activée ou pas, par le module GSM2
je ne la traite pas.
par contre j'ai mis RTS=RD3 mis à 0.
je gere aussi DTR (modif carte GSM2) pour reduire la conso..
rem: dans mon init GSM j'ai 2 modes : init longue et init courte
l'init longue en 16 pas etant faite au moins 1 fois, ensuite on peut utiliser que l'init courte en 5 pas
suivant #ifdef Full_Init validé ou non
Je vais m'y remettre dessus quand j'aurai recu mon GPS click ...
envoi data GPS -> via SMS (GSM-2)
un extrait de code concerné :
Pour les liaison avec le PC .. je ne connecte que TX et RX .
par contre au niveau de l'init GSM2
j'ai CTS=RB3 = Entree tirée au niveau 1 via l'activation Pullup PortB
je ne sais pas si cette entree est activée ou pas, par le module GSM2
je ne la traite pas.
par contre j'ai mis RTS=RD3 mis à 0.
je gere aussi DTR (modif carte GSM2) pour reduire la conso..
rem: dans mon init GSM j'ai 2 modes : init longue et init courte
l'init longue en 16 pas etant faite au moins 1 fois, ensuite on peut utiliser que l'init courte en 5 pas
suivant #ifdef Full_Init validé ou non
Je vais m'y remettre dessus quand j'aurai recu mon GPS click ...
envoi data GPS -> via SMS (GSM-2)
un extrait de code concerné :
Code : Tout sélectionner
// specific to GSM2_click
sbit STAT at RA0_bit ; // AN Microbus STAT
sbit STAT_Direction at TRISA0_bit;
sbit PWRKEY at LATD2_bit; // RST Microbus PWRKEY
sbit PWRKEY_Direction at TRISD2_bit;
//sbit RING at RG3_bit; // PWM Microbus RIng
//sbit RING_Direction at TRISG3_bit;
sbit CTS at RB3_bit; // INT MicroBus CTS
sbit CTS_Direction at TRISB3_bit;
sbit RTS at LATD3_bit; // CS Microbus RTS
sbit RTS_Direction at TRISD3_bit;
sbit Cde_DTR at LATD6_bit;
sbit Cde_DTR_Direction at TRISD6_bit;
unsigned int Initialisation_Cdes_GSM2(void)
{
// 1234567890123456
#ifdef With_LCD2119
LCD_Write_CText(1,1,"Init GSM2-Click ");
#endif
LD2=1;
Step=0;
Drapeaux.Visible=1;
UART1_Write_CText(" Set PIN code(AT+CPIN=1234) \r\n"); // p 61-62
Send_Cde_display_response("AT+CPIN=1234\r", Drapeaux.Visible);
//1
#ifdef Full_Init
UART1_Write_CText(" Send Msg type as text mode (AT+CMGF=1)\r\n");
Send_Cde_display_response("AT+CMGF=1\r", Drapeaux.Visible); // TXT lmode for messages
//2
UART1_Write_CText(" Software Version (AT+CGMR) \r\n");
Send_Cde_display_response("AT+CGMR\r\n", Drapeaux.Visible);
//3
UART1_Write_CText(" IMEI Serial number (AT+CGSN) \r\n");
Send_Cde_display_response("AT+CGSN\r", Drapeaux.Visible);
//4
UART1_Write_CText(" Format de Reponse via libellé (ATV1) \r\n");
Send_Cde_display_response("ATV1\r", Drapeaux.Visible);
//5
UART1_Write_CText(" Select SM (AT+CPMS=\"SM\",\"SM\",\"SM\" \r\n");
Send_Cde_display_response("AT+CPMS=\"SM\",\"SM\",\"SM\"\r", Drapeaux.Visible);
//6
UART1_Write_CText(" Renvoi SMS sur terminal (AT+CNMI=2,1) \r\n");
Send_Cde_display_response("AT+CNMI=2,1\r", Drapeaux.Visible);
//7
UART1_Write_CText(" Enregistre Numero tel Paul ,en position en SIM 1 (AT+CPBW=1,..)\r\n");
Send_Cde_display_response("AT+CPBW=1,\"+33626330000\",145,\"Paul\",12,12\r", Drapeaux.Visible);
//8
UART1_Write_CText(" Enregistre Numero tel Joelle ,en position en SIM 2 (AT+CPBW=2,..)\r\n");
Send_Cde_display_response("AT+CPBW=2,\"+33654131111\",145,\"Joelle\",12,12\r", Drapeaux.Visible);
//9
UART1_Write_CText(" Query service center.(AT+CSCA?)\r\n");
Send_Cde_display_response("AT+CSCA?\r", Drapeaux.Visible);
//10
UART1_Write_CText(" Never go in SLEEP mode(AT+QSCLK=0) \r\n");
Send_Cde_display_response("AT+QSCLK=0\r", Drapeaux.Visible);
//11
UART1_Write_CText(" Save profile (AT&W)\r\n");
Send_Cde_display_response("AT&W\r", Drapeaux.Visible);
//12
#endif
UART1_Write_CText(" Test si enregistré sur le reseau (AT+CREG?1)\r\n");
Send_Cde_display_response("AT+CREG?\r", Drapeaux.Visible);
//13 ou 2
// format : AA//MM/DD,HH:MM:SS+xx xx= decalage horaire *4 (soit +-48)
// UART1_Write_CText(" MAJ date et Heure par defaut (AT+CCLK=\"15/10/01,19:05:00+04\")\r\n");
// Send_Cde_display_response("AT+CCLK=\"15/09/29,16:45:00+04\"\r");
UART1_Write_CText(" Lecture de date et heure (AT+CCLK?)\r\n");
Send_Cde_display_response("AT+CCLK?\r", Drapeaux.Visible);
//14 ou 3
UART1_Write_CText(" Never go in SLEEP mode(AT+QSCLK=0) \r\n");
Send_Cde_display_response("AT+QSCLK=0\r", Drapeaux.Visible);
//15 ou 4
UART1_Write_CText(" List all UNREAD msg from inbox (AT+CMGL=REC UNREAD)\r\n");
Send_Cde_display_response("AT+CMGL=\"REC UNREAD\"\r", Drapeaux.Visible);
//16 ou 5
Delay_ms(1500);
UART1_Write_CText(" Phase d'init en ");
#ifdef With_LCD2119
LCD_CLS();
LCD_Write_CText(1,1,"Phase d'init en ");
#endif
WordToStr(Step,txt);
UART1_Write_Text(txt);
#ifdef With_LCD2119
LCD_RAZ_Ligne(2);
#endif
#ifdef Full_Init
UART1_Write_CText(" pas/16");
#ifdef With_LCD2119
LCD_Write_Text(2,1,txt);
LCD_Write_CText(2,8," pas /16");
#endif
#else
UART1_Write_CText(" pas/5"); // was 6
#ifdef With_LCD2119
LCD_Write_CText(2,1," pas / 5 ");
LCD_Write_Chr(2,3,Step+48);
#endif
#endif
//CRLF1();
return(Step);
}
// dans le main
// dans la partie Hardware init
STAT_Direction=1;
PWRKEY_Direction=0;
RING_Direction=1;
CTS_Direction=1;
RTS_Direction=0;
RBPU_bit=0; // pull up RB3 CTS
Cde_DTR_Direction=0; // output DTR RD6
.....
Cde_DTR=0;
// Set PWRKEY pin to zero
Delay_ms(1000);
PWRKEY = 1; //
Delay_ms(5000); // hold it at least for two seconds
PWRKEY = 0; // Turn ON module
Delay_ms(1000);
// la led jaune (STAT) doit s'allumer
// Set RTS pin to zero (we will use only RX & TX)
RTS =0;
Step= Initialisation_Cdes_GSM2();
... etc ..
Module GSM2-Click
-
Jérémy
Administrateur du site- Messages : 2727
- Âge : 45
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
Bonsoir ,
Pensez vous qu'il soit possible, après une longue période sans trouver de connexion, de pouvoir "reseter" le module pour essayer de retrouver un réseau ?
Il faudrait que je surveille le status du module ? puis que je déclenche un timer quand il perd la connexion et au bout du timer que je le reset ?
est ce que vous pensez que c'est jouable ou utile?
@Paul : as tu trouver la commande pour faire un RESET ?
Pensez vous qu'il soit possible, après une longue période sans trouver de connexion, de pouvoir "reseter" le module pour essayer de retrouver un réseau ?
Il faudrait que je surveille le status du module ? puis que je déclenche un timer quand il perd la connexion et au bout du timer que je le reset ?
est ce que vous pensez que c'est jouable ou utile?
@Paul : as tu trouver la commande pour faire un RESET ?
Module GSM2-Click
-
Jérémy
Administrateur du site- Messages : 2727
- Âge : 45
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
Bonsoir,
Mes investigations avancent bien, ainsi que ma comprehension du programme ! je devrais pas tarder à la refaire à la sauce Jérémy .
Cependant un truc me chiffonne .
Voici mon programme actuel:
On envoie une commande pour afficher la liste des messages reçus : dans le while principal à la ligne :
M95_Send(atc6); On envoie donc "AT+CMGL=\"ALL\""; au module .
celui répond par la liste de tout les messages . jusque la c'est normal .
le format recu est celui ci :
Dans la partie de décodage de ce message , il ne traite que le mot "UNREAD"
Comment se fait-il qu'il le détecte ? car il ne sait pas ou il est placé dans le buffer ? y'a pas de mot de reconnaissance ? ou alors c'est l'espace qui joue un rôle ?
Merci si vous avez une explication sur le fonctionnement de cette partie
Mes investigations avancent bien, ainsi que ma comprehension du programme ! je devrais pas tarder à la refaire à la sauce Jérémy .
Cependant un truc me chiffonne .
Voici mon programme actuel:
► Afficher le programme
On envoie une commande pour afficher la liste des messages reçus : dans le while principal à la ligne :
M95_Send(atc6); On envoie donc "AT+CMGL=\"ALL\""; au module .
celui répond par la liste de tout les messages . jusque la c'est normal .
le format recu est celui ci :
Code : Tout sélectionner
+CMGL: 5,"REC UNREAD","+336xxxxxxxx","","2016/07/31 19:21:54+08"
Coucou
Dans la partie de décodage de ce message , il ne traite que le mot "UNREAD"
Code : Tout sélectionner
if (tmp == 'U') // si Nous avons un 'U', C'est peut-être le mot "UNREAD"
gsm_state = 120; // On signale qu'on attend peut etre un 'N'
break;
Comment se fait-il qu'il le détecte ? car il ne sait pas ou il est placé dans le buffer ? y'a pas de mot de reconnaissance ? ou alors c'est l'espace qui joue un rôle ?
Merci si vous avez une explication sur le fonctionnement de cette partie
Module GSM2-Click
- paulfjujo
Expert- Messages : 2598
- Âge : 73
- Enregistré en : juillet 2015
- Localisation : 01800
- Contact :
bonjour,
Attention,
la lecture des messages UNREAD peut prendre beaucoup de temps et aussi en taille ...
avec la methode buffer de reception, je sort que un nb maxi de caractere ou timerout
pour eviter un depassement de table .
L'echo GSM est bien desactivé ?
Avec la methode State machine ..il faut trouver effectivement autre chose que le U pour sortir de la boucle !
compterun nombre de 'U' ?
un timeout ?
un nombre de caracteres ?
Attention,
la lecture des messages UNREAD peut prendre beaucoup de temps et aussi en taille ...
avec la methode buffer de reception, je sort que un nb maxi de caractere ou timerout
pour eviter un depassement de table .
L'echo GSM est bien desactivé ?
Avec la methode State machine ..il faut trouver effectivement autre chose que le U pour sortir de la boucle !
compterun nombre de 'U' ?
un timeout ?
un nombre de caracteres ?
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 112 invités