Pages: [1] 2 3   Go Down
Author Topic: Comunicar a traves de Tx/Rx  (Read 6210 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Full Member
***
Karma: 0
Posts: 200
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hola amigos.

Estoy intentando conectar un arduino al pc usando otro arduino como pasarela (quitándole el atmega). ¿por que hago esta tonterida? Para posteriormente sustituir la conexión tx/rx por conexiones rs485 full-duplex.

Os cuento las fases de mi experimento.

1.- Conecto un arduino con modbus-slave al pc mediante usb. En el pc tengo un software modbus-master. La comunicación funciona perfectamente.
2.- Desconecto el usb del ardu-modbus-slave y se lo conecto a un arduino sin atmega.
3.- Conecto tx->rx, rx->tx,5v, y gnd de ambos arduinos.
4.- Ambos arduinos comparten tensión.
5.- Con el software del pc busco al slave. El led rx del arduino sin chip parpadea. Esto quiere decir que recibe los datos del pc.
6.- El pc no encuentra nada.

¿Alguien me puede dar una pista de que está pasando?

Muchas gracias. Un saludo

PD. Por si a alguien le interesa después pienso usar un MAX488. El software que uso es Mango M2M. La librería Modbus es la de jpmzometa.
« Last Edit: February 15, 2011, 06:05:02 pm by Jose Francisco » Logged

0
Offline Offline
Jr. Member
**
Karma: 5
Posts: 72
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

La patilla TX es por donde el ATMEGA envía datos.
La patilla RX es por donde el ATMEGA recibe datos.

Lo que envías desde el PC llegará al primer Arduino por la patilla RX (RX1).

Si luego conectas la patilla RX del primer Arduino(RX1) con la apatilla TX del segundo Arduino (TX2) estás intententando meterle al segundo Arduino por la patilla TX (que es para que el ATMEGA envíe datos, no para recibirlos) lo que envía el PC.

Por eso no funciona.
Logged

0
Offline Offline
Full Member
***
Karma: 0
Posts: 200
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Gracias por la aclaración, pero sigue sin funcionar.

He conectado Rx -> Rx y Tx -> Tx
He alimentado al esclavo con una pila por si fuese problema de falta de tensión, comunicando los gnd.
He cambiado los cables de comunicación.

Y nada.

Funciona bien cuando lo conecto por usb directamente pero no cuando hago el puente con otro arduino sin atmega.

¿Fantasmas?
Logged

0
Offline Offline
Full Member
***
Karma: 0
Posts: 200
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Sigo con los experimentos:



El arduino con atmega:
lo puedo programar directamente por usb.
Ese sketch (modbus) y otros con serial funcionan perfectamente a traves de usb.

Ahora uso un arduino intermediario sin atmega. tx a tx y rx a rx:
Le meto un sketch que SOLO escribe en el puerto serie y puedo ver los datos en el pc. Conclusión: el atmega envia datos y el ftdi los manda correctamente al usb
Le meto un sketch que lee comandos por puerto serie y escribe resultados por puerto serie: NO REACCIONA

Si saco un cable del pin rx del arduino sin atmega (es equivalente al tx del ftdi) y lo conecto al led tx o rx del arduino con atmega, el led parpadea. Conclusión el ftdi envía datos

En principio parece que esta sordo de pin rx, pero ¿como puede tener sordo el pin rx y funcionar perfectamente por usb?

¿Ghostbusters?
Logged

0
Offline Offline
Full Member
***
Karma: 0
Posts: 200
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Estoy perdidisimo.

¿Me podéis indicar como comunicarme con un arduino a través de los pines tx/rx usando otro arduino sin atmega?
Logged

0
Offline Offline
Edison Member
*
Karma: 16
Posts: 1579
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

has unido las masas de ambas placas???
Logged


0
Offline Offline
Full Member
***
Karma: 0
Posts: 200
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Si. De hecho alimento la una con la otra.
También las he alimentado por separado uniendo las masas
« Last Edit: February 15, 2011, 06:17:35 pm by Jose Francisco » Logged

0
Offline Offline
Edison Member
*
Karma: 16
Posts: 1579
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

ummm!! Los pasos que se me ocurren:
- Masas unidas??
- El Tx del FTDI (Rx de la placa sin micro) unido al RX de la placa Arduino con micro??
- El Rx del FTDI (Tx de la placa sin micro) unido al TX de la placa Arduino con micro??
- Estoy seguro que el programa de Arduino funciona correctamente?? Lo he probado individualmente??
- Por el lado de PC con la placa sin micro tengo el hyperterminal o similar en el puerto correcto, y configurado la velocidad, paridad, bit de stop y control de flujo adecuadamente??
- NO tengo en la placa con micro el puerto serie abierto con el PC, a la vez que estoy haciendo las pruebas??

Yo lo he hecho muchas veces precisamente para el tema de rs485 sin ningún problema....
« Last Edit: February 15, 2011, 06:30:00 pm by Igor R » Logged


0
Offline Offline
Full Member
***
Karma: 0
Posts: 200
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Masas unidas: OK.
Verificación. hago un puente entre 3v3 de una placa  al led 13 de la otra y se enciende. (Ya se que no es sano)

RX de una a RX de la otra, TX de una a TX de la otra.

El programa funciona correctamente cuando lo uso por usb

En el pc uso el terminal de Arduino IDE, que por usb, 115200 bps y NL+CR va al pelo.


... y no chuta.
Logged

0
Offline Offline
Edison Member
*
Karma: 16
Posts: 1579
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Justo cuando has contestado, estaba editando con otro punto mi post.
La placa con micro, no la tienes conectada al PC y abriendo el puerto mientras las pruebas, verdad??

Me refiero, sólo tienes abierto en el PC, el puerto serie correspondiente a la placa SIN micro.
La otra placa CON micro,NO tiene la conexión serie abierta con el PC. Es más, si estás sacando la alimentacion directamente de la otra placa, no tienes ni el usb conectado a dicha placa.

??
« Last Edit: February 15, 2011, 06:36:37 pm by Igor R » Logged


0
Offline Offline
Full Member
***
Karma: 0
Posts: 200
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Solo un usb en uso: el de la placa sin micro.
Logged

0
Offline Offline
Edison Member
*
Karma: 16
Posts: 1579
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Puedes poner un programita super básico que mande cosas de la placa del micro, y que si recibe algo, te saque un OK o algo asi.
Para probar Tx y Rx.

Me refiero, que no espere a recibir algo para empezar a transmitir.
« Last Edit: February 15, 2011, 06:41:42 pm by Igor R » Logged


0
Offline Offline
Full Member
***
Karma: 0
Posts: 200
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
/*
  AnalogReadSerial
 Reads an analog input on pin 0, prints the result to the serial monitor 
 
 This example code is in the public domain.
 */

void setup() {
  Serial.begin(9600);
}

void loop() {
  int sensorValue = analogRead(A0);
  Serial.println(sensorValue, DEC);
}



Obtengo comunicación correcta
Logged

0
Offline Offline
Edison Member
*
Karma: 16
Posts: 1579
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ese esta a 9600 baudios (lo digo porque antes pusistes que estabas a 115200).
Tienes tu placa sin micro configurada a 9600 baudios y lees lo que te manda la placa con micro funcionando con dicho programa??
« Last Edit: February 15, 2011, 06:51:22 pm by Igor R » Logged


0
Offline Offline
Full Member
***
Karma: 0
Posts: 200
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

No, he cambiado la configuración del Serial Monitor.
El otro programa estaba a 115200 y está basado en la librería Messenger la cual, dicho sea de paso, está muy bien. (No se si me tendré que arrepentir de lo dicho)
Logged

Pages: [1] 2 3   Go Up
Jump to: