Platine test pour module radio AMB8636

dje8269

Senior Member
Bonjour à tous,

Dans le cadre de mon projet de véhicule, j'ai besoin de tester la communication radio. Pour ce faire je souhaiterais fabriquer une platine pour tester ces modules .

Je ne suis pas sur d'avoir de LCD en stock , donc j'ai mis quelques led ,en remplacement .

Je ne sais pas si je dois connecter ou non la broche 20 pour la configuration ?
Page 10 on trouve les connections : datasheet


Pensez vous que ce schéma pourrais convenir ? des suggestions ?
PS: le connecteur de programmation est implicite

Platine test.png
 
Last edited:

BESQUEUT

Senior Member
Prévoir un cavalier sur le TXD et un sur le RXD pour couper ces lignes à volonté afin de vous persuader que ça marche avec une seule des deux.
le LCD série (RS232 ou I2C) est impératif sur au moins une des 2 platines :
- le concept, c'est de tester la réception des datas simultanément avec la commande d'un périphérique en aval,
- en outre il faut pouvoir afficher à minima le taux de paquets perdus, et tant qu'à y être la bande passante.

Si un LCD I2C n'est pas dispo, mettre un Picaxe intermédiaire en SLAVE qui serve de driver d'affichage.
En attendant on peut se contenter d'afficher le taux d'erreur sur 3 ou 5 leds, mais c'est dommage.

Il y aura des straps ou des cavaliers pour tester différentes connexions.

Il me semble préférable d'utiliser hserin et hserout plutôt que serial in et serial out
 
Last edited:

dje8269

Senior Member
Prévoir un cavalier sur le TXD et un sur le RXD pour couper ces lignes à volonté afin de vous persuader que ça marche avec une seule des deux.
Ok
le LCD série (RS232 ou I2C) est impératif sur au moins une des 2 platines :
Je regarderais dans mes fonds de tiroir au travail, il faut qu'il soit I2C en plus car le serie est deja pris ! mais peut etre !

Il y aura des straps ou des cavaliers pour tester différentes connexions.
quelles connexions ?

Il me semble préférable d'utiliser hserin et hserout plutôt que serial in et serial out
Ok je modifie ;

et pour la patte vous avez une idée ?
 

dje8269

Senior Member
Je dois sortir pour faire les courses cet après midi, j'en profiterais pour faire un saut au travail et récupérer tout ce dont j'ai besoin .

J'ai un doute sur des régulateurs de 3.3V supportant 500mA ? ; on verra bien sinon j'en ai des ajustables.

Cote alim je prendrai un chargeru classique pour la partie fixe et une batterie Li-po pour la partie amovible
je pense passer avec des 20M2 pour être plus tranquille au niveau des broches
 
Last edited:

BESQUEUT

Senior Member
Je ne sais pas si je dois connecter ou non la broche 20 pour la configuration ?
Mettre un cavalier pour choisir entre mise à la masse ou une sortie du Picaxe.
En principe, ça doit marcher nickel avec cette broche à la masse.
Mais on peut affiner en créant un front descendant sur cette broche.
 

BESQUEUT

Senior Member
Principe de l'envoi de trames :
P1 règle le nombre de caractères entre 5 et 120
P2 règle l'attente entre deux trames, entre 1s et zéro

Une trame est constituée :
- d'un qualifier, disons LF(1O)
- d'un compteur entre 0 et 65535, (2 octets)
- de caractères de remplissage tous identiques, disons des A
- d'un séparateur, disons CR (13)

On doit donc avoir (en ASCII) :
0AAAAAAAAAAAAAA
1AAAAAAAAAAAAAA
2AAAAAAAAAAAAAA
3AAAAAAAAAAAAAA

Pour tester, on peut utiliser sertxd.

A la réception, on doit pouvoir calculer :
Le nombre de trames reçues
La longueur d'une trame
Le nombre de trames perdues, et donc le % de trames perdues à afficher
La durée de réception, et donc la bande passante effective à afficher.



Bon courage
 
Last edited:

dje8269

Senior Member
Euhhhh , je vais déjà essayer d'allumer une led quand j'appui sur un BP . d'un coté et de l'autre ? lol .

Plutot de bonne nouvelle :

Je dispose de régulateur à découpage de 3.3V, de quoi alimenter correctement le transceiver . et jai retrouver un Axe033 .... de quoi verifier nos trames si je ne m'abuse ! .
 
Last edited:

PieM

Senior Member
Pas tout suivi mais:

le picaxe est en 5V et le transceiver en 3.3V : c'est normal ?
Pourquoi tout ça puisqu'il y a un contrôle de flux par RTS/CTS ?
Hserin sur un M2: limité à deux bytes.
PS: le connecteur de programmation est implicite
Ben oui mais Tx et Rx reliés à Serial IN et Serial OUT du Picaxe ?!
 

dje8269

Senior Member
Oulalalalaaaaa ...... je suis en pleine soudure la !! et autant vous dire qu'au prix du transceiver ,je fais attention .Mais c'est chuad les marrons , et c'est délicat car le pas n'est pas de 2.55 , mais bien plus petit . j'ai sortis le mini fer a souder .

Oui le transceiver fonctionne en 3.3V , EDIT : le picaxe entre 3 et 5.5V donc c'est bon un seul régulateur ! ça de moins a câbler

Pourquoi tout ça puisqu'il y a un contrôle de flux par RTS/CTS ?
Je sais pas . je devine que :

ready to send ; cela signifie littéralement " pret a envoyer" , donc c'est pour passer en emission
Clear to send : ben c'est déjà plus délicat a traduire : "effacez pour envoyer" ? ca voudrais rien dire! plutôt "fin de l'envoi" ? !!

Ben oui mais Tx et Rx reliés à Serial IN et Serial OUT du Picaxe ?!
Non autant pour moi, j'ai été pris de cours cet après midi , et j'ai pas refait le schéma ! je vais me brancher sur Hserin et Hserout ?

Platine test.png
 
Last edited:

BESQUEUT

Senior Member
Oui le transceiver fonctionne en 3.3V , EDIT : le picaxe entre 3 et 5.5V donc c'est bon un seul régulateur ! ça de moins a câbler
C'est surtout que le Picaxe ne doit surtout pas sortir sur ses ports plus que la tension d'alim du transceiver. Donc il doit impérativement avoir la même alim, ou alorsil faut utiliser des translateurs de niveau.
 

dje8269

Senior Member
Ok premier montage effectué, mais pas testé encore . j'a igrandement simplifié le schéma pour le premier essai. J'attaque le second , je ferais l'allumage demain matin a mon avis .

Je place photo et schéma quand j'aurais finis
 

dje8269

Senior Member
En image :

P1040080.JPG
P1040081.JPG

Bon je ne sais pas trop pour ou commencer . je ne connais ni l'UART ni les transceiver .

Je dois en mettre un en CTS et l'autre en RTS ?
puis envoyer une trame par un sertxd ?

A la reception j'enregsitre les valeurs , si elles sont égale a celle attendu j'aluume ma led ?
 
Last edited:

BESQUEUT

Senior Member
Schéma très simplifié , dites moi si c'est bon pour vous ?
Pour l'émission, ça devrait suffire.

Par contre, vous m'avez pris de court dans mes réflexions sur la nature des tests à réaliser.
PieM à raison :
1) inutile de compliquer les trames,
2) il faut un Picaxe représentatif à la réception, sinon le test ne sera pas significatif.

Sur le point 1 : on connait assez bien la longueur des trames à envoyer dans chaque sens. Donc inutile de prévoir des tests avec toutes sortes de longueurs. Deux suffisent :
- soit des trames très courtes (autour de 4 à 8 octets) mais on cherche une bonne vitesse y compris à longue distance.
- soit des trames plus longues (GPS+IMU+... 10 à 20 octets ?) mais bien plus espacées.

Donc le réglage de longueur de trame est inutile, ce qui simplifie également la réception.

Voici comment je vois le protocole de test :
- on commence avec les trames courtes, espacement large (disons une par seconde)
- on vérifie la portée réelle : jusqu'à quelle distance on reçoit sans perte de trames, et comment ça évolue après.

- on peut alors étudier l'influence de la bande passante en diminuant l'attente entre trames jusqu'à zéro.
==> à courte portée, il y a des chances qu'on atteigne les limites du Picaxe.Prévoir de mettre la vitesse à fond...
Mais ce sera intéressant d'étudier différentes options de programme pour voir comment gérer au mieux le flux de données.

==> de même il y a différentes options au niveau du transceiver qui permettent d'optimiser la bande passante.


- dernière étape : une fois qu'on estime avoir de bons réglages et un bon programme, on étudie comment ça se comporte quand la distance et/ou les perturbations augmentent (en particulier

voisinage avec d'autres émetteurs, bruit sur l'alimentation,...)

Un des deux modules doit être mobile pour pouvoir faire varier la distance, mais à priori on peut choisir celui qui est le plus commode à déplacer.
Le programme d'affichage du % de trames manquantes ne doit pas perturber la mesure. Pas si facile, mais je n'aurai pas le temps ce WE, plutôt semaine prochaine.

Les avis de tous sont les bienvenus.
 

dje8269

Senior Member
Ok, mais vous envoyez du lourd .

Je cherche déjà comment envoyé une byte et la recevoir à l'autre bout lol .
ce qui sera déjà un grand pas pour moi .

Sans même appuyer sur le BP pour le moment . Il faudrait déjà envoyer des chiffres et si a la réception c'est bon on allume ?

je suis en train d'y travailler . Êtes vous en mesure de me rassurer , sur le fait que je ne risque pas de griller quelques choses si je me gourre niveau programme , genre mettre a 1 RTS alors qu'on reçoit ou émet , un truc du genre ?
 

BESQUEUT

Senior Member
Je dois en mettre un en CTS et l'autre en RTS ?
puis envoyer une trame par un sertxd ?

A la reception j'enregsitre les valeurs , si elles sont égale a celle attendu j'aluume ma led ?
Commençons par le mode "transparent" : il n'y a quasiment rien à faire !

Le RTS est en OUT (pour le transceiver). Vous pouvez le lire et allumer une LED en fonction, mais pour le moment, inutile d'en tenir compte.
Attention, il s'agit d'un "Ready To Send" et non d'un "Request To Send" ce qui est plus courant dans la littérature.

Pour le CTS, les explications ne sont pas très claires :
In radio receiving mode, the module is able to simultaneously receive radio telegrams and send them on the UART. The /CTS signal of the host can be observed optionally.
A tout hasard, je le mettrais actif, avec possibilité de tester l'inverse si ça ne marchait pas.

Puis OUI, envoyer une trame de quelques octets toutes les secondes, mais pas par un sertxd ; utiliser hserout.

Avec aucun programme à la réception, on devrait à minima voir les leds des modules s'activer.
 
Last edited:

BESQUEUT

Senior Member
Ok, mais vous envoyez du lourd .

Je cherche déjà comment envoyé une byte et la recevoir à l'autre bout lol .
ce qui sera déjà un grand pas pour moi .

Sans même appuyer sur le BP pour le moment . Il faudrait déjà envoyer des chiffres et si a la réception c'est bon on allume ?

je suis en train d'y travailler . Êtes vous en mesure de me rassurer , sur le fait que je ne risque pas de griller quelques choses si je me gourre niveau programme , genre mettre a 1 RTS alors qu'on reçoit ou émet , un truc du genre ?
Croisement de mails...
Pas de blème : du moment que le Picaxe et le transceiver sont sur la même alim et que l'antenne est branchée, pas de risque de griller quelque chose.
Normalement, en mode transparent, on n'utilise que le TXD à l'émission et le RXD à la réception.
Voir message précédent pour le CTS.
Puis OUI, envoyer une trame de quelques octets toutes les secondes, mais pas par un sertxd ; utiliser hserout.
 

BESQUEUT

Senior Member
Une fois les premiers essais réalisés, vous allez sans doute avoir besoin de configurer les modules...
Pour ça il faut :
- le logiciel qui va bien (AMBER ACC V3)
- sa doc
- une interface USB/RS232 TTL 3,3V

Pensez à ouvrir un ticket pour récupérer le soft... support
 

dje8269

Senior Member
Alors j'en suis rendu la !

Code:
#PICAXE 14M2

'####################################   Configuration   ####################################

Symbol BP = C.3
Symbol led = C.1
Symbol RTS = B.2
Symbol CTS = B.3

'####################################   Initialisation   ####################################

setfreq M8

hsersetup N9600_8, %10



'####################################   Programme Principal   ####################################

CTS = 1
RTS = 0

do
	
pause 1000

Hserout 0,(1,2,3,4,5,6,7,8)
	
	
loop
en essayant toutes les combinaisons avec rtcet cts , sans succes ; aucune led de transmission ne s'allume ?
 

BESQUEUT

Senior Member
RTS est en lecture : si vous lui forcez une valeur, vous le mettez en écriture et forcez sa valeur ==> pas bon
Ecrivez plutôt b1=RTS pour le mettre en mode entrée, et pilotez une led en fonction pour savoir si le module est prêt à émettre.
Vérifiez bien le câblage : à minima les leds du module d'émission devraient marcher ???
 

dje8269

Senior Member
bon, ce matin les enfants sont horribles avec moi. Je n'arrive pas à me concentrer et à faire clignoter cette led d’émission!

Verification du cablage ok !
Alim ok !
 

BESQUEUT

Senior Member
bon, ce matin les enfants sont horribles avec moi. Je n'arrive pas à me concentrer et à faire clignoter cette led d’émission!

Verification du cablage ok !
Alim ok !
idem avec le câble de programmation débranché ?
Dans le hsersetup, pourquoi inverser le TXD ?
 
Last edited:

dje8269

Senior Member
idem avec le câble de programmation débranché ?
Ah non je laissais le cable branché ! je vais tout retester débtancher alors !!
Dans le hsersetup, pourquoi inverser le TXD ?
Je crois pas ! En N pour "Normal" et c'est la valeur B qui inverse non ?

EDIT :

Je viens de remarquer que la broche 20 ( pour la configuration) devrait être reliée à la masse . chose faite maintenant.

Code:
[color=Navy]#PICAXE [/color][color=Black]14M2[/color]

[color=Green]'####################################   Configuration   ####################################[/color]

[color=Blue]Symbol BP [/color][color=DarkCyan]= [/color][color=Blue]C.3
Symbol led [/color][color=DarkCyan]= [/color][color=Blue]C.1
Symbol [/color][color=Purple]RTS [/color][color=DarkCyan]= [/color][color=Purple]pinB.2[/color]
[color=Blue]Symbol CTS [/color][color=DarkCyan]= [/color][color=Blue]B.3[/color]

[color=Green]'####################################   Initialisation   ####################################[/color]

[color=Blue]setfreq M8

hsersetup N9600_8[/color][color=Black], [/color][color=Navy]%10[/color]



[color=Green]'####################################   Programme Principal   ####################################[/color]
[color=Blue]do

      if [/color][color=Purple]RTS [/color][color=DarkCyan]= [/color][color=Navy]0 [/color][color=Blue]then
            LOW LED
            pause [/color][color=Navy]100
      [/color][color=Blue]else
            HIGH LED
            pause [/color][color=Navy]100
      [/color][color=Blue]end if

Hserout [/color][color=Navy]0[/color][color=Black],[/color][color=Blue]([/color][color=Navy]1[/color][color=Blue])

pause [/color][color=Navy]1000[/color]

[color=Blue]loop[/color]
Avec ce code , j'a ima led qui s'eclaire a l'allumage et après reste éteinte ! Aucune led du tranceiver allumées
 
Last edited:

BESQUEUT

Senior Member
je me suis laissé berné par l'exemple qui est faux !
Example:
hsersetup B9600_4, %10 ; 9600 baud, inverted TXD

Avec ce code , j'a ima led qui s'eclaire a l'allumage et après reste éteinte ! Aucune led du tranceiver allumées
RST RTS est "active Low" donc ça veut dire que le module est prêt à émettre.

Vous pouvez aussi essayer avec un serout à la place du hserout au cas où...

Là encore la doc n'est pas claire pour la nature des broches LED.
Mais dans la doc de l'AMB8350
il est dit qu'il s'agit de "switched GND"
Donc il faut prendre la LED entre le + et cette borne ! (au travers d'une résistance de limitation de courant de préférence)
 
Last edited:

dje8269

Senior Member
RST est "active Low" donc ça veut dire que le module est prêt à émettre.
Vous parlez de RTS ? car la patte RST existe mais c'est le reset !

Je suis d'accord , alors pkoi quand j'envoie le code derrière cela ne fais pas clignoter ma petite led d'envoi de données ?
Comment faire pour "re-armé" un envoi ?

On est encore loin de calculé des trames mdr
 

BESQUEUT

Senior Member
Vous parlez de RTS ? car la patte RST existe mais c'est le reset !
Autant pour moi : lire RTS.
Voir aussi mon message précédent sur la polarité des broches LEDs...

D'après 9.1.1 et 9.1.2 le module est prêt au bout d'une seconde après la mise sous tension.
A ce moment le RTS devient low, c'est à dire "actif".

Jusque là, ça à l'air de fonctionner.

Puis, suivant 9.2.1 les caractères sont émis dès qu'on arrête de remplir le buffer. En fait le transceiver utilise un TimeOut au bout duquel s'il ne reçoit plus rien, il considère que la trame est terminée.
UART_Timeout=5ms par defaut

Avec la pause d'une seconde on est large !
Ma seule explication serait la polarité des LEDs : en fait tout va bien, mais on ne le voit pas...

En désespoir de cause, mettre un peu de code sur le module de réception, sait-on jamais...
 
Last edited:

dje8269

Senior Member
Avec un serout j'ai du mieux ! la led rouge s'allume enfin mais bizarrement
par bizarrement j'entends que ce n'est pas fixe ! et pares un moment elle s'arrete pour de bon . genre elle clignote deux fois , petite pause , puis trois , petite pause , puis une fois et plus rien !

voici le code

Code:
'####################################   Initialisation   ####################################
setfreq M8
dirsB = %00100000

'####################################   Programme Principal   ####################################
do

	if RTS = 0 then
		LOW LED
		pause 100
	else
		HIGH LED
		pause 100
	end if

serout 0,N9600_8,(1,2,3,4,5,6,7,8)

pause 500

loop
EDIT:

On avance ca fait plaisir . je viens de brancher , pour le FUN l'autre module , histoire de voir s'il recevait quelques chose quand la led rouge s'allumait . ben OUI, ma led verte ( qui est orange j'avais plus de verte) s'allume a chaque envoi . Donc deja on arrive bien a émettre et a recevoir .
 
Last edited:

BESQUEUT

Senior Member
Donc la connectique des leds est bonne c'est déjà ça.
Aucune réaction sur l'autre module ?
Une fois arrivé au stade "plus rien"
ça ne recommence qu'avec une nouvelle mise sous tension : c'est ça ?

Manque une pause de 2s avant le do loop
 

dje8269

Senior Member
Yes ca avance plutôt bien . J'ai reusis a stabiliser et maitriser les emissions .

Avec ce programme

Code:
[color=Green]'####################################   Initialisation   ####################################[/color]
[color=Blue]setfreq M8[/color]
[color=Purple]dirsB [/color][color=DarkCyan]= [/color][color=Navy]%00100000[/color]
[color=Blue]pause [/color][color=Navy]2000[/color]
[color=Green]'####################################   Programme Principal   ####################################[/color]
[color=Blue]do

      if [/color][color=Purple]RTS [/color][color=DarkCyan]= [/color][color=Navy]0 [/color][color=Blue]then
            LOW LED
            serout [/color][color=Navy]0[/color][color=Black],[/color][color=Blue]N9600_8[/color][color=Black],[/color][color=Blue]([/color][color=Navy]1[/color][color=Black],[/color][color=Navy]2[/color][color=Black],[/color][color=Navy]3[/color][color=Black],[/color][color=Navy]4[/color][color=Black],[/color][color=Navy]5[/color][color=Black],[/color][color=Navy]6[/color][color=Black],[/color][color=Navy]7[/color][color=Black],[/color][color=Navy]8[/color][color=Blue])
            pause [/color][color=Navy]100
      [/color][color=Blue]else
            HIGH LED
            pause [/color][color=Navy]500
      [/color][color=Blue]end if
loop[/color]
J'ai augmenter et diminuer la pause après l'envoi ça marche impec . Enfin disons que j'ai des envois et j'ai de la réception au même rythme .

Ma déduction c'est :

SI RTS est à 0 ( donc actif) , le module est prêt a émettre : donc j'envoie la trame tout de suite) ; Sinon j’allume ma led .
 
Last edited:

dje8269

Senior Member
Autre remarque et test .

Quand je reduis fortement l'attente entre deux envois . genre
Code:
[color=Blue]do

      if [/color][color=Purple]RTS [/color][color=DarkCyan]= [/color][color=Navy]0 [/color][color=Blue]then
            LOW LED
            serout [/color][color=Navy]0[/color][color=Black],[/color][color=Blue]N9600_8[/color][color=Black],[/color][color=Blue]([/color][color=Navy]1[/color][color=Black],[/color][color=Navy]2[/color][color=Black],[/color][color=Navy]3[/color][color=Black],[/color][color=Navy]4[/color][color=Black],[/color][color=Navy]5[/color][color=Black],[/color][color=Navy]6[/color][color=Black],[/color][color=Navy]7[/color][color=Black],[/color][color=Navy]8[/color][color=Blue])
            pause [/color][color=Navy]20
      [/color][color=Blue]else
            HIGH LED
            pause [/color][color=Navy]50
      [/color][color=Blue]end if
loop[/color]
Ma led rouge ( LA visualisation de mes envois) clignote très très vite . Presque allumée en permanence . Mais ma led bleu qui dis que le RTS n'est pas pret ce met aussi a clignoter de temps en temps . Que doit on en déduire? dans certaines boucles, le RTS n'est pas pret certes mais pourquoi ?
 

BESQUEUT

Senior Member
J'ai augmenter et diminuer la pause après l'envoi ça marche impec . Enfin disons que j'ai des envois et j'ai de lareception au même rythme .

Ma deduction c'est :

SI RTS est 0 ( donc actif) , le module est pret a emettre : donc j'envoie la trame tout de suite) ; Sinon j'alllume ma led .
SUPER : vous pouvez maintenant utiliser le potar pour régler la pause et remplacer les 2 premiers octets par un compteur.

D'autre part, le hserout devrait marcher.

Vous pourrez alors passer à la réception.
 

BESQUEUT

Senior Member
Ma led rouge ( LA visualisation de mes envois) clignote très très vite . Presque allumée en permanence . Mais ma led bleu qui dis que le RTS n'est pas pret ce met aussi a clignoter de temps en temps . Que doit on en déduire? dans certaines boucles, le RTS n'est pas pret certes mais pourquoi ?
C'est complètement normal : vous envoyez des données à 9600 bauds.
Lui est cantonné à 4800.
Donc au delà d'un certain débit, il n'arrive plus à transmettre ce que vous lui donnez : le buffer se remplit.
Et quand il est plein, il crie "AU SECOURS" en agitant le drapeau rouge du RTS.
 

dje8269

Senior Member
Oula vous allez vite en besogne . j'ai quelques questions ou interrogations :


Qu'est qui fait que mon RTS est actif ? est ce le module qui le détermine ?

Si oui , cela ce fait il par un CTS de l'autre coté ?

SI c'est le cas il faudra que j’émette un CTS après ma trame non ? pour dire au recepteur que jai finis et qu'il peut passer en RTS a son tour ?

Car pour le moment , je travaille que sur un module qui emet et l'uatre qui recoit . Mais si le module qui émet , attend que le module qui as recu lui dis qu'il a recu ca evite d'avoir les 5ms de timeout non ?

Il faudrait vraiment que je comprenne le fonctionnement des RTS et CTS
 

BESQUEUT

Senior Member
Voir en bas de la page 12 :
The default configuration is a data rate of 4.8 kbps (RF_ConfigIndex = 0), a frequency of 869,5375 MHz (PHY_DefaultChannel = 10) and an output power of 27 dBm (PHY_PAPOWER = 27).

On n'est plus dans le cas des émetteurs classiques qui transmettent directement ce que vous envoyez sur le port série (TXD).

Le transceiver contient un µ qui lit les données coté UART (à 9600 bauds en l'occurrence) et mets ça dans un buffer.
Quand il considère qu'une trame est complète, il envoie ça par radio (à 4800 bauds donc)

Si jamais son buffer sature, il éteint son RTS pour calmer le jeu.

Son copain reçoit ces données par radio (tj à 4800bds) et mets ça dans son buffer de réception.
Si rien ne s'y oppose, il transmet ça sur son TXD (à 9600 bds) vers votre SERIN

Je suppose que le CTS coté réception peut servir au Picaxe a signaler quand il est prêt.
Donc réciproquement, s'il est FAUX, a bloquer les données dans le buffer de réception.
Il faut s'attendre a être bombardé de données dès que ce flag est levé.
Mais la doc ne me semble pas très claire : à essayer donc.

Une fois la communication établie, il y a une foultitude de façons d'optimiser les transmissions :
- en augmentant le débit coté UART,
- en augmentant le débit coté radio,
- en jouant sur la puissance,
- rien qu'en mode transparent, 3 façons différentes de valider les trames, celle par défaut étant la pire,
- si ça suffit pas, on passe en mode trame, et là : à votre bon cœur...

Notez que vos 2 modules sont actuellement cote à cote et sans perturbations.
Dans des conditions plus délicates, le transceiver est capable de faire plusieurs tentatives pour envoyer un même paquet, ce qui améliore largement la fiabilité, mais diminue la bande passante ==> compromis à trouver...
Il est même capable d'écouter avant d'envoyer pour savoir si la fréquence est libre...

Tout ceci n'a de sens que dans un contexte de test rigoureux ; sinon impossible de savoir si un changement améliore ou pas la bande passante et/ou la fiabilité.

Cette plateforme de test sera utile a n'en pas douter. Mais comme signalé par PieM, le Picaxe en réception n'est pas représentatif.


En passant, veuillez noter la très intéressante commande :
10.10 CMD_RSSI_REQ
qui donne le niveau de réception du signal en DB !
En voilà une info utile à afficher sur la télécommande, dans un sens comme dans l'autre !
 
Last edited:

dje8269

Senior Member
The default configuration is a data rate of 4.8 kbps(RF_ConfigIndex= 0)
Mais le tableau juste au dessus indique que RF_ConfigIndex= 0 correspond a 2400bauds ? pas très pro ca quand même ? je suppose que seul un oscillo pourrait nous dire ou se cache la vérité ?

Le buffer est une mémoire tampon , c'est a dire qu'il stock les données avant de les envoyées? j'ai bon ?

Si jamais son buffer sature, il éteint son RTS pour calmer le jeu.
Donc d’après vous je remplis plus vite son buffer qu'il n'a le temps de le vider ? donc il ralenti la cadence en disant qu'il n'est pas prêt pour en recevoir de nouveau . ?

Donc en augmentant le débit d'envoi on verrais donc disparaitre ce clignotement bleue, signe d'une pause ? par exemple si on met tout le monde a 9600bauds , il se remplirait aussi vite qu'il se viderais donc jamais plein , donc pas de lumière bleue . est ce que j'ai bon dans le fonctionnement grossier ?

Sans parler coté réception, pour le moment , pourrait on m'en convaincre , et ainsi renforcer mon idée, si je suis sur la bonne route bien sur, en changeant la config et en le passant a 9600bauds .
 

dje8269

Senior Member
Je dois m'absenter pour l’après midi ; les enfants sont réveillés ; je serais de retour ce soir, pour valider ou non le coté émission .
 

BESQUEUT

Senior Member
Très bizarre : d'après la table 6 page 23
RF_ConfigIndex n'a qu'une seule valeur possible : 1

Voir la petite note en bas de la page 12 :
2 Not yet implemented in firmware.
3 Not yet implemented in firmware.
4 Not yet implemented in firmware.

Ca peut le faire... mais pas tout de suite...

Quoiqu'il en soit, vous ne pouvez rien changer tant que vous n'avez pas les pré-requis. (voir #20)
Donc en attendant d'optimiser, vous pouvez déjà vous consacrer aux programmes de tests, en particulier à la mesure de la bande passante effective et à la détection de perte de trame...

Pour le reste vos analyses me semblent OK.
Notez que l'allumage de la LED bleu signifie que vous calmez le jeu : donc vous ne perdez rien...
Vous transmettez au max possible, c'est tout.
Notez qu'en fonction des conditions de transmission, la bande passante va varier.
Il faut vous attendre a avoir une télécommande très réactive dans de bonnes conditions, et un peu molle dans les cas de transmission difficile (parasites, distance, obstacles...)
Impossible de dire pour le moment à partir de quand ça va se sentir : c'est le but des essais...
En outre, plus la trame est courte, plus la fiabilité est au rendez-vous.
D'où l'intérêt de concocter une trame aux petits oignons...

Avec des trames de 6 octets vous en passez 100 par seconde à 4800 bauds
A 9600 bauds en radio, vous pouvez éventuellement faire mieux à courte distance, mais ça n'a aucun intérêt.
Par contre, dans les conditions difficiles, ça risque de devenir catastrophique...

A mon avis avec 25 trames/s votre télécommande doit déjà être pas mal réactive...

NB : pour ne pas nuire à la réactivité, il faudra supprimer les pauses à l'émission :
Code:
if RTS = 0 then
            LOW LED
            serout 0,N9600_8,(1,2,3,4,5,6,7,8)
            pause 100 ' à remplacer par les READADC et calculs associés
      else
            HIGH LED
            ' pause 50 inutile : à supprimer !
            ' comme ça dès que RTS est OK on envoie immédiatement les données
      end if
A noter que l'on peut supprimer dans cette boucle critique les HIGH et LOW
en câblant la LED directement sur le transceiver.

Du coup, le potar de réglage de vitesse est inutile : on va partir dans l'idée que l'on transmet toujours à fond :
c'est le transceiver qui calmera le jeu si nécessaire...


Code:
do
            readADC10 ... ,w2
            readADC10...,w3
            if RTS = 0 then
                  inc w1
                  serout 0,N9600_8,(w1,w2,w3)
            end if
loop
YADUTAF, sans parler de tout le reste bien sur...
 
Last edited:
Top