Emeteur / Récepteur radio

electrique5

Senior Member
Bonjour
je viens d'acquérir ces module radio pour communiquer entre 2 picaxes
http://www.aliexpress.com/item/RF-wireless-receiver-module-transmitter-module-board-for-arduino-super-regeneration-315-433MHZ-DC5V-ASK-OOK/668591600.html

Le souci je ne sais pas comment les connecté d'ailleurs impossible de savoir lequel est l'émeteur ou le récepteur
mais je pense que le carré ca doit etre l'émeteur et celui en forme de rectangle ca doit être le récepteur.
(Je me suis basé sur ceux de chez gotronic par rapport a la taille)

c'est après au niveau des programmes
j'ai mis 2 14m2 pour les test
dans le 1er qui sera l'émeteur j'ai mis :
Code:
serout 5,T2400_4,("2")
Dans le second picaxe pour le récepteur j'ai mis
Code:
serin C.0,T2400_4,varA
bintoascii varA,b8,b9,b10
serout 5,T2400_4,(254,128,"T: ",b8,b9,b10,"")
avec un affichage sur écran LCD mais une fois connecté j'obtiens des symbole bizard
je voulais juste vous demander si je suis bon ou pas ?
Merci
 

MGU

Senior Member
Bonjour,

Je viens juste d'utiliser ces RX/TX pour le projet Agility.
Avec un 14M2, le plus simple et le plus sûr est le couple de commandes rfout / rfin

rfout demande 8 octets (ou 8 fois le même), ex:

émetteur:
rfout RF,("A","A","A","A","A","A","A","A")

et pour le récepteur:
rfin C.4,b1,b1,b1,b1,b1,b1,b1,b1
If b1="A" then
high B.5 ;Allumage témoin
etc

MM
 
Last edited:

electrique5

Senior Member
JE vien de faire comme votre exemple c'est a dire

Emeteur :
Code:
rfout 5,("2","2","2","2","2","2","2","2")
et récepteur :
Code:
rfin C.0,b0,b0,b0,b0,b0,b0,b0,b0
et sortie LCD
Code:
bintoascii varA,b8,b9,b10

serout 5,N2400_4,(254,128,"T: ",b8,b9,b10,"")
j'obtiens sur l'écran
alors que je veux obtenir le chiffre 2
je comprend pas
 

MGU

Senior Member
JE vien de faire comme votre exemple c'est a dire

Emeteur :
Code:
rfout 5,("2","2","2","2","2","2","2","2")
et récepteur :
Code:
rfin C.0,b0,b0,b0,b0,b0,b0,b0,b0
et sortie LCD
Code:
bintoascii varA,b8,b9,b10

serout 5,N2400_4,(254,128,"T: ",b8,b9,b10,"")
j'obtiens sur l'écran


alors que je veux obtenir le chiffre 2
je comprend pas
Oui, mais non, b0 contient déjà le code ascii du chiffre 2, donc il suffit d'écrire:

serout 5,N2400_4,(254,128,"T: ",b0).

Et si il y a n"importe quoi sur l'écran, c'est qu'il y a un autre problème d'afficheur.

MM
 

BESQUEUT

Senior Member
Code:
bintoascii varA,b8,b9,b10
serout 5,N2400_4,(254,128,"T: ",b8,b9,b10,"")
je comprend pas
Voir réponse de MGU.
Accessoirement :
rfin permet de lire le code reçu vers la variable b1
Puis vous décodez la variable varA avec la commande BinToASCII
Comme varA n'a rien à voir avec b1, on ne voit pas comment ça pourrait fonctionner.

Cela dit, cette commande fournit automatiquement des codes compris entre "0" et "9"
Donc il y a un autre problème.

Le programme d'une seule ligne :
serout 5,N2400_4,(254,128,"Bonjour")
affiche-t-il correctement "Bonjour" ?
 

electrique5

Senior Member
je viens de testé la solution de MGU avec : serout 5,N2400_4,(254,128,"T: ",b0)
ca fonctionne très bien
je vous remercie
 

electrique5

Senior Member
j'ai un autre souci
voila comment j'ai fait
RFIN.png
en faisant : serout 5,N2400_4,(254,128,"T: ",b0) j'ai bien le chiffre envoyé par l'émeteur
par contre en faisant des comparaisons de variable b0 = VarA
si = 1 = high1
si = 2 = high2 etc...
mais la rien ne se passe si je recois la variable VarA sur l'écran pourquoi ca ne fonctionne pas en faisant comme cela ?
 

MGU

Senior Member
Il ne faut pas confondre un chiffre et son code dans la table ascii

Ex le chiffre 0 a le code ascii 48
Si on veut voir le chiffre 2 sur un afficheur, il faut envoyer son code ascii noté "2", qui en décimal est égale à 48 + 2 = 50. Les "" font la transposition entre le chiffre et le code.

b0= "2" ;b0 contient le code du chiffre 2 soit 50
b0=b0-48 ;b0 contient le nombre 2

Mais:
Si on envoie rfout 5,(2,2,2,2,2,2,2,2)
avec
rfin C.0,b0,b0,b0,b0,b0,b0,b0,b0

b0 contient le nombre 2

Et pour afficher la valeur de b0, il faut alors passer par bintoascii ou écrire:
serout 5,N2400_4,(254,128,"T: ", #b0)

Si je ne dis pas de bêtise.

MM
 
Last edited:

BESQUEUT

Senior Member
Vous devez choisir d'envoyer des valeurs binaires ou des caractères, mais il ne faut pas passer de l'un à l'autre au milieu du programme !
restez cohérent.
Dans le premier cas
Code:
' Option N°1 : Nombre binaire

rfout 5,(2,2,2,2,2,2,2,2)
'...

do
	rfin C.0,b0,b0,b0,b0,b0,b0,b0,b0

	select case b0
	case 1 : high 1 : low 2 : low 3
	case 2 : high 2 : low 1 : low 3
	else  : high 3 : low 1 : low 2
loop
Et dans le second :
Code:
' Option N°2 : caractères

rfout 5,("2","2","2","2","2","2","2","2")
'...

do
	rfin C.0,b0,b0,b0,b0,b0,b0,b0,b0

	select case b0
	case "1" : high 1 : low 2 : low 3
	case "2" : high 2 : low 1 : low 3
	else     : high 3 : low 1 : low 2
loop
 

electrique5

Senior Member
j'ai testé ce code :
Code:
rfin C.0,b0,b0,b0,b0,b0,b0,b0,b0
bintoascii varA,b8,b9,b10
je retombe bien sur le chiffre 2 et donc la LED N°2 s'allume d'après le diagramme donc ca fonctionne comme ca

j'aurais une question juste par curiosité
pourquoi autant de nombre
rfout 5,("2","2","2","2","2","2","2","2") en faisant rfout 5,("2") ca ne fonctionne pas ?
 
Last edited:

BESQUEUT

Senior Member
j'ai testé ce code :
Code:
rfin C.0,b0,b0,b0,b0,b0,b0,b0,b0
bintoascii varA,b8,b9,b10
let VarA = VarA - 48
je retombe bien sur le chiffre 2 et donc la LED N°2 s'allume d'après le diagramme donc ca fonctionne comme ca
Je ne comprends toujours pas le lien entre b0 et VarA mais si ça marche, c'est qu'il y en a un !
Que faites vous de b8, b9 et b10 ?

Si je comprends bien, vous envoyez "2" et comme vous tenez absolument à tester si b0=2
vous passez par une étape intermédiaire pour transformer b0 (qui vaut "2") en la valeur : 2

Ne serait-il pas plus simple :
- soit d'envoyer 2 et de tester si b0=2
- soit d'envoyer "2" et de tester si b0="2"

Ça peut vous paraître futile, mais en fait, si vous ne faites pas ce type de choix, vous aurez sans arrêt des problèmes


j'aurais une question juste par curiosité
pourquoi autant de nombre
rfout 5,("2","2","2","2","2","2","2","2") en faisant rfout 5,("2") ca ne fonctionne pas ?

et si je veux transmettre une variable le code serais
rfout 5,("b0","b0","b0","b0","b0","b0","b0","b0") c'est bien ca ?
rfout a été fait au départ pour envoyer des commandes à un circuit spécialisé qui attends 8 octets.
Comme le protocole utilisé est assez performant et fiable, on détourne son usage pour des communications entre Picaxes.
Mais cette commande a été faite comme ça, et il n'a pas été prévu d'envoyer moins de 8 octets.

"b0" n'est pas une variable ! Ce sont deux nombres (98 et 48) et cette syntaxe n'est pas acceptée.
Si vous souhaitez envoyer le contenu de la variable b0, il ne faut pas mettre de guillemets.
 

MGU

Senior Member
j'ai testé ce code :
Code:
rfin C.0,b0,b0,b0,b0,b0,b0,b0,b0
bintoascii varA,b8,b9,b10
let VarA = VarA - 48
je retombe bien sur le chiffre 2 et donc la LED N°2 s'allume d'après le diagramme donc ca fonctionne comme ca

j'aurais une question juste par curiosité
pourquoi autant de nombre
rfout 5,("2","2","2","2","2","2","2","2") en faisant rfout 5,("2") ca ne fonctionne pas ?

et si je veux transmettre une variable le code serais
rfout 5,("b0","b0","b0","b0","b0","b0","b0","b0") c'est bien ca ?
Pourquoi autant de nombre?
Parce que la syntaxe de la commande rfout le demande, c'est comme ça .
Si on veut envoyer la variable b0, on envoie b0 et non "b0" qui est la correspondance d'un code caractère dans une table.

Regarde une table ascii, pour comprendre le décalage de 48 entre un chiffre et son code ascii

MM
 

BESQUEUT

Senior Member
Si on veut envoyer la variable b0, on envoie b0 et non "b0" qui est la correspondance d'un code caractère dans une table.
C'est pire que ça : "b0" représente la succession de deux nombres :
celui qui représente la lettre "b" (à savoir 96)
celui qui représente la lettre "0" (à savoir 48)
 

electrique5

Senior Member
Merci j'ai bien compris la différence avec et sans les "" ca fonctionne bien et 2 étant juste pour testé
tous mes test fonctionne je vous en remercie pour toutes ses informations

par contre j'ai un souci sur la portée mais ca je pense ce que c'est, mais je voudrait votre avis quand même,
ce genre de module ne possède pas d'antenne a mon avis c'est pour cette raison que la distance entre le Eméteur/récepteur ne dépasse pas 2 mètres
je voudrait savoir si 15cm de cable office d'antenne suffirais ou bien il faut prévoir plus ?
 

BESQUEUT

Senior Member
ce genre de module ne possède pas d'antenne a mon avis c'est pour cette raison que la distance entre le Eméteur/récepteur ne dépasse pas 2 mètres
je voudrait savoir si 15cm de cable office d'antenne suffirais ou bien il faut prévoir plus ?
Certains modules ont une antenne intégrée, d'autre pas...
D'après la photo, il semble que ces modules soient prévus pour un montage avec antenne extérieure.
Dans ce cas il faut connecter une antenne adaptée.
Ce n'est pas une option, et ça peut même griller l'émetteur.

D'autre part, la longueur d'une antenne n'est pas le fruit du hasard. Elle doit être adaptée à la fréquence émise, en l’occurrence 433 mHz

Formule de calcul :
le 1/4 d'onde est la plus classique et la meilleure des antennes fouet
(conducteur normal cuivre rigide )
longueur onde entière = vitesse de la lumière / fréquence
soit : 300 000 / 433 = 693 mm
1/4 d'onde = 173 mm

A mesurer dès la sortie du circuit imprimé.
 

PieM

Senior Member
Besqueut said:
Je ne comprends toujours pas le lien entre b0 et VarA mais si ça marche, c'est qu'il y en a un !
Sous Logicator, les variables se nomment VarA , VarB....
VarA correspond à la variable b0
 

jojojo

Senior Member
Pourquoi autant de nombre?
Parce que la syntaxe de la commande rfout le demande, c'est comme ça .

Hem ..

Oui et non, Michel.

C'est surtout parce que le codage Manchester nécessite huit données, pour fonctionner correctement.
Donc ...
 

BESQUEUT

Senior Member
C'est surtout parce que le codage Manchester nécessite huit données,
Où avez vous pêché cette info ?
A ma connaissance, le codage Manchester est applicable bit par bit, donc sur autant d'octets qu'on veut,
ou sur des trames qui ne sont même pas des octets...
voir #12 pour une explication qui me semble plus crédible.
A moins qu'on ne parles en fait de CRC ?
 

electrique5

Senior Member
Bonjour
je souhaiterais faire un autre montage utilisant les modules mais je voudrait savoir si on peut amplifier la portée de façon que le récepteur capte a une distance de 1 Km voir plus ?
je sais pas un module genre ampli ou autre chose qui permettrait d'amplifier la portée ?
ou si c'est pas possible d'amplifié si vous connaissez si il existe des modules tous fait qui ont une portée importante.
Merci
 

electrique5

Senior Member
Merci infiniment mais avez vous de la doc pour ce module un site ou un pdf comment le connecté.
et je voudrait savoir si il faut 2 modules 1 sur l'émeteur et 1 sur le récepteur ou bien juste sur l'un des 2 par exemple l'émeteur ?
et il disent pas la portée avez vous une idée a peu près
Merci beaucoup
 

dje8269

Senior Member
Bonjour à vous,

Ce genre de module "interdit en france" , permet d'amplifier la puissance de l'émission seulement, la réception elle peut s'améliorer d'autre façon, surtout par adaptation de l'antenne (la selectivité) et un bon filtrage .
Vous n'avez donc besoin que d'un seul module en émission . il permet de passer un module 433Mhz de 10mW en 500mW . La portée est difficile a determiner, car depend du terrain, et l'environnement joue énormément . disons qu'en terrain libre , vous pouvez tablé entre 2 et 5 Km environ .

Pour le brochage c'est par ici
 

electrique5

Senior Member
ha super merci
par contre j'ai un peu de mal la broche 3 et la broche 8
si j'ai bien compris :
1 = Masse
2 = Entrée Antenne
3 = ?
4 = Masse
5 = Vss (+)
6 = Masse
7 = Masse
8 = ?
9 = Masse
10 = Masse
11 = Sortie Antenne
12 = Masse

par contre la 3 et la 8 :confused:
 

dje8269

Senior Member
Bonjour ,

Non cela n'est pas possible , sur un 08M2 , il faut un 14 M2 au minimum, le 20X2 ne le fait pas non plus
 
Top