Page 1 sur 1

[TUTORIEL] Exploiter les commandes AT

Message non luPosté: Mar 12 Mai 2015 16:11
de Laetitia
Bonjour,

Aujourd'hui nous allons nous affranchir de la librairie Akeru pour parler directement avec le modem via la liaison série. Nous utiliserons les commandes AT pour le bidouiller !

- MATÉRIEL -

- Arduino Uno + Akene
ou
- Akeru

- EXPLICATIONS -

Le modem communique avec l'ATmega via la librairie SoftwareSerial incluse dans l'IDE Arduino. Pour communiquer directement avec lui, nous pouvons exploiter le moniteur série comme une passerelle, qui affichera les données en provenance du modem et lui enverra les commandes rentrées par l'utilisateur.

Pour ce faire, nous initialisons la liaison SoftwareSerial, en faisant attention au brochage : les RX, TX de l'Akeru et de l'Akene sont inversés. Suivant votre configuration, il faudra donc déclarer :

Code: Tout sélectionner
SoftwareSerial akene(4, 5); // Akene
SoftwareSerial akeru(5, 4); // Akeru

Ensuite nous initialisons le modem avec les commandes requises (identiques à celles présentes dans la fonction akeru.begin() de la librairie Akeru), et enfin nous faisons l'échange de données entre les deux liaisons.

- CODE -

Code: Tout sélectionner
/*
 * Communiquer avec Akeru/Akene via le moniteur série
 * Pas besoin de la librairie Akeru !
 * Envoyez les commandes AT via le moniteur et lisez les résultats
 *
 * SoftSerial setup : [Akeru] RX, TX = 5, 4
 *                    [Akene] RX, TX = 4, 5
 * Serial Monitor setup : 9600 bauds, NL et CR
 */

#include <SoftwareSerial.h>

SoftwareSerial akene(4, 5); // RX, TX (voir ci-dessus)

void setup()
{
  // Initialisation liaison série
  Serial.begin(9600);
  Serial.println("Starting...");
 
  // akeru.begin()
  akene.begin(9600);
  akene.write((uint8_t)'\0');
  akene.write((uint8_t)';');
  while(akene.available() < 3);
  akene.read(); //'K'
  akene.read(); //'O'
  akene.read(); //';'
}

void loop()
{
  // s'il y a des données en provenance du modem
  if (akene.available())
  {
    // envoyer sur le moniteur série
    Serial.write(akene.read());
  }
  // si l'on envoie des commandes via le moniteur série
  if (Serial.available())
  {
    // envoyer au modem
    akene.write(Serial.read());
  }
}

- COMMANDES AT-

Ouvrez votre moniteur série, configuré avec "NL & CR". Sans les bons caractères de fin de trame, le moniteur série ne reconnaîtra pas les messages envoyés par le modem.
Tapez "AT" puis Entrée, le modem doit vous répondre "OK". Si ce n'est pas le cas vérifiez le paramétrage du SoftwareSerial.

Vous pouvez désormais dialoguer avec votre modem, le paramétrer et envoyer des messages directement depuis votre moniteur série ! La liste des commandes AT est disponible dans le manuel de référence :

TD1208 Reference Manual.pdf
(359.19 Kio) Téléchargé 569 fois

Une commande utile pour éviter les caractères étranges apparaissant à cause de l'écho : ATE0.

C'est tout pour cette fois ! J'espère que ce tutoriel vous aura plu, et bonne bidouille en attendant le prochain !

Re: [TUTORIEL] Exploiter les commandes AT

Message non luPosté: Jeu 21 Mai 2015 16:35
de superjedi
Merci Leatitia,

Communiquer directement en serial avec le TD1208 est une étape essentielle pour commencer à prendre ce dernier en main. J'ai pu valider le fonctionnement du shield Akene en quelques secondes grâce à ton code !

Deux notes importantes:
- pensez à bien passer votre serial monitor en NL&CR
- si vous voulez virer l'écho qui génère du garbage dans le monitor: ATE0

Re: [TUTORIEL] Exploiter les commandes AT

Message non luPosté: Mar 26 Mai 2015 18:21
de Laetitia
Bonjour,

Merci pour les remarques, je les ajoute de ce pas au tutoriel ;)

Re: [TUTORIEL] Exploiter les commandes AT

Message non luPosté: Dim 31 Mai 2015 11:26
de philippemartorell
Merci Laeti pour cette initiation au monde profond du modem.

J'ai juste une difficulté sur la lecture des informations décimales, à partir des commandes Information Display Control ( ATIx). Si le retour d'informations ASCII ne posent pas de problèmes, je ne comprends pas comment exploiter les données décimales, comme la température, la puissance RF ou la tension d'alim.

Pour prendre l'exemple de la température, j'ai en retour les données ;
72;56;38;83;72;184;67;225;79;75;13;10;
ce qui en ascii donne H8&SH¸CáOK
Je vois bien le "OK" et le retour à la ligne, mais je ne vois pas de température dans ce qui précède. Et pour une température, il ne faut pas autant de bits !

J'ai raté quelque chose ?

Plus d'infos sur ma version;
Telecom Design TD1208
Hardware Version: 0F
Software Version: SOFT1198
S/N: 00008701
ACTIVE PROFILE
E0 V1 Q0 X1 S200:0 S300:24 S301:2 S302:14 S303:1 S400:000000 S401:FFFFFFF S402:0 S403:869312500 S404:14

( Très pratique la commande "AT&V" )

Re: [TUTORIEL] Exploiter les commandes AT

Message non luPosté: Lun 29 Juin 2015 10:35
de Laetitia
Bonjour,

Testée chez nous sur un Akene neuf (SOFT1351), la commande ATI26 renvoie bien la température, avec la syntaxe précisée dans le manuel.
Ton modem tourne sur une ancienne version du firmware, peut-être la syntaxe des commandes ou des réponses a-t-elle changé entre deux révisions ? Tu peux essayer de le mettre à jour via ce lien, en suivant la procédure ici paragraphe 2.6. Je n'ai pas d''autre piste pour le moment...

Re: [TUTORIEL] Exploiter les commandes AT

Message non luPosté: Mer 10 Fév 2016 14:32
de granitic43
Bonjour,

Merci beaucoup pour ce tutoriel.
Lorsque je tape ATI26, j'obtiens !á24 dans ma console.
Idem pour ATI27 !á3.25

Y a-t-il un paramétrage que j'aurai loupé pour afficher les valeurs décimales ?

Version du modem
Telecom Design TD1208
Hardware Version: 0F
Software Version: SOFT1451


Merci de votre réponse.

Re: [TUTORIEL] Exploiter les commandes AT

Message non luPosté: Mer 10 Fév 2016 15:44
de Laetitia
Bonjour,

24°C et 3.25V me semblent être des valeurs correctes, pour les caractères situés avant la réponse "normale" du modem je conseille d'utiliser la commande ATE0, comme indiqué en fin de tutoriel.

Re: [TUTORIEL] Exploiter les commandes AT

Message non luPosté: Lun 5 Sep 2016 22:54
de blues
Bonjour,

Je viens d'acquérir un breakout TD1208 et commence à jouer avec les commandes AT.

Question 1 : qui a décidé de la chaîne hexa retournée après l'envoi d'un AT$SB=1,2,1
ou par exemple d'un AT$SF=01 00 12 34 56 78,2,1 ? Si on répète la commande,
c'est toujours la même chaîne, mais en revanche les chaînes diffèrent par le dernier byte
suivant la commande (a8 et a2). Quelle est la logique de cette chaîne ?
On doit pouvoir "customiser" la chaîne, mais comment ?

Question 2 : si on peut effectivement programmer l'envoi d'un message quand une des
entrées digitales bascule, avec par ex : AT$REG , ATS506=1,2,15,1,1,1,1 , peut-on faire
basculer une des pattes USR via une chaîne downlink "customisée" que reconnaitrait le CPU,
après avoir modifié le firmware ? Il s'agit bien sûr ici de rendre le dispositif actif.

Merci d'avance,

Blues

Re: [TUTORIEL] Exploiter les commandes AT

Message non luPosté: Mer 2 Nov 2016 14:57
de Laetitia
Bonjour,

blues a écrit:Question 1 : qui a décidé de la chaîne hexa retournée après l'envoi d'un AT$SB=1,2,1
ou par exemple d'un AT$SF=01 00 12 34 56 78,2,1 ?

Le fabricant du modem, en l'occurrence Telecom Design. Nous ne pouvons pas, chez Snootlab, déterminer la "logique" de cette chaîne ni la customiser.

blues a écrit:Question 2 : si on peut effectivement programmer l'envoi d'un message quand une des
entrées digitales bascule, avec par ex : AT$REG , ATS506=1,2,15,1,1,1,1 , peut-on faire
basculer une des pattes USR via une chaîne downlink "customisée" que reconnaitrait le CPU,
après avoir modifié le firmware ?

Théoriquement oui, mais ce n'est pour le moment pas une commande disponible dans le firmware de Telecom Design.