[TUTORIEL] Exploiter les commandes AT

Forum de support et d'échange sur la carte Akeru (carte compatible Arduino développée par Snootlab et intégrant la technologie Sigfox) et du shield Akene pour Arduino (shield pour Arduino développée par Snootlab et intégrant la technologie Sigfox)

[TUTORIEL] Exploiter les commandes AT

Message non lude Laetitia » Mar 12 Mai 2015 16:11

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é 330 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 !
"If it's itchy, scratch it !" - "DIY or die"

RTFM (À lire avant de poster) - ANDb (Arduino Noob Database)
Avatar de l’utilisateur
Laetitia
 
Messages: 296
Inscription: Mar 7 Aoû 2012 15:07
Localisation: Toulouse

Re: [TUTORIEL] Exploiter les commandes AT

Message non lude superjedi » Jeu 21 Mai 2015 16:35

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
superjedi
 
Messages: 4
Inscription: Jeu 21 Mai 2015 16:19

Re: [TUTORIEL] Exploiter les commandes AT

Message non lude Laetitia » Mar 26 Mai 2015 18:21

Bonjour,

Merci pour les remarques, je les ajoute de ce pas au tutoriel ;)
"If it's itchy, scratch it !" - "DIY or die"

RTFM (À lire avant de poster) - ANDb (Arduino Noob Database)
Avatar de l’utilisateur
Laetitia
 
Messages: 296
Inscription: Mar 7 Aoû 2012 15:07
Localisation: Toulouse

Re: [TUTORIEL] Exploiter les commandes AT

Message non lude philippemartorell » Dim 31 Mai 2015 11:26

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" )
philippemartorell
 
Messages: 42
Inscription: Ven 9 Déc 2011 11:37

Re: [TUTORIEL] Exploiter les commandes AT

Message non lude Laetitia » Lun 29 Juin 2015 10:35

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...
"If it's itchy, scratch it !" - "DIY or die"

RTFM (À lire avant de poster) - ANDb (Arduino Noob Database)
Avatar de l’utilisateur
Laetitia
 
Messages: 296
Inscription: Mar 7 Aoû 2012 15:07
Localisation: Toulouse

Re: [TUTORIEL] Exploiter les commandes AT

Message non lude granitic43 » Mer 10 Fév 2016 14:32

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.
granitic43
 
Messages: 3
Inscription: Sam 10 Oct 2015 10:25

Re: [TUTORIEL] Exploiter les commandes AT

Message non lude Laetitia » Mer 10 Fév 2016 15:44

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.
"If it's itchy, scratch it !" - "DIY or die"

RTFM (À lire avant de poster) - ANDb (Arduino Noob Database)
Avatar de l’utilisateur
Laetitia
 
Messages: 296
Inscription: Mar 7 Aoû 2012 15:07
Localisation: Toulouse

Re: [TUTORIEL] Exploiter les commandes AT

Message non lude blues » Lun 5 Sep 2016 22:54

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
blues
 
Messages: 1
Inscription: Lun 5 Sep 2016 22:31

Re: [TUTORIEL] Exploiter les commandes AT

Message non lude Laetitia » Mer 2 Nov 2016 14:57

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.
"If it's itchy, scratch it !" - "DIY or die"

RTFM (À lire avant de poster) - ANDb (Arduino Noob Database)
Avatar de l’utilisateur
Laetitia
 
Messages: 296
Inscription: Mar 7 Aoû 2012 15:07
Localisation: Toulouse


Retourner vers Akeru et Akene

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité