bonjour,
j'ai un problème de communication série entre un arduino MEGA et un UNO avec 2 MAX485.
la MEGA (emetteur) utilise le port serial 1, et la UNO (recepteur) les broches 10 et 11 avec la lib. SoftwareSerial (pour pouvoir débugger par la console).
ça semble être un pb matériel, car en reliant directement les ports serie RX1/TX1 - 10/11, tout fonctionne parfaitement.
en passant par les 2 MAX485, plus rien...
la UNO reçoit bien une trame serie, mais après plusieurs debugs, il appparait que le 1er carractère du buffer de réception de la UNO est un "0" (byte) et le script arrête la récupération de l'ensemble.
j'ai essayé en modifiant les résistances de fin de ligne (avec 2 Res. de 690 ohms) sur A et B du MAX récepteur, ça ne change rien.....
j'utilise des circuits MAX485 déjà montés sur CI courants sur le net.
je viens de commander ces MAX485 en circuits intégrés seuls (pour pouvoir modifier plus facilement les résistances), mais en attendant de les recevoir je suis bloqué.
les petits CI de 485 ont une resit. de 20k entre le A et le +5v, le B et la masse, et une de 120 ohms entre A et B.
je suis tombé sur des tests ou il fallait 2 resits de 690 ohms et une de 240, j'attents mes circuits intégrés pour tester..
j'ai aussi essayé d'utiliser directement le port RX/TX de la UNO pour ne pas utiliser la lib softwareSerial (tant pis pour les debugs), même problème....
comme tout est OK en RX/TX direct (sans 485), c'est un pb matériel des 485 en cause je suppose.
j'ai essayé quelques tutos et avis trouvés sur le net pour les 485, mais toujours pareil....
si quelqu'un à une idée ou une piste, je suis preneur...
cordialement.
JL.
PS:
debug avec RX/TX directs, sans 485:
EMISSION MEGA:
-----> Emission vers [MAX id:2 >> per02] #PER_SET#02:ON
RECEPTION UNO (avec détail du buffer):
index= 0 -byte max485.read()= 35 --> char()= '#'
index= 1 -byte max485.read()= 80 --> char()= 'P'
index= 2 -byte max485.read()= 69 --> char()= 'E'
index= 3 -byte max485.read()= 82 --> char()= 'R'
index= 4 -byte max485.read()= 95 --> char()= '_'
index= 5 -byte max485.read()= 83 --> char()= 'S'
index= 6 -byte max485.read()= 69 --> char()= 'E'
index= 7 -byte max485.read()= 84 --> char()= 'T'
index= 8 -byte max485.read()= 35 --> char()= '#'
index= 9 -byte max485.read()= 48 --> char()= '0'
index= 10 -byte max485.read()= 50 --> char()= '2'
index= 11 -byte max485.read()= 58 --> char()= ':'
index= 12 -byte max485.read()= 79 --> char()= 'O'
index= 13 -byte max485.read()= 78 --> char()= 'N'
<----- Réception #PER_SET#02:ON
debug avec MAX485:
EMISSION MEGA:
-----> Emission vers [MAX id:2 >> per02] #PER_SET#02:ON
RECEPTION UNO:
index= 0 -byte max485.read()= 0 --> char()= ' '
<----- Réception _ _