Conecte varios dispositivos Arduino esclavos a un dispositivo Arduino maestro

2

Quiero utilizar la comunicación en serie entre un maestro y varios esclavos.

Ya he conectado el RX del maestro a los pines TX de ambos esclavos, y viceversa (por lo tanto, conecté el pin TX del maestro a los pines RX de ambos esclavos). También conecté los pines GND.

Pero ahora tengo caracteres extraños cuando abro la ventana del monitor serie.

Ahora, ¿cómo conecto correctamente un dispositivo Arduino maestro con al menos dos dispositivos Arduino esclavos utilizando los pines RX y TX? ¿Necesito conectar pines de 5V?

PS: Veo muchas palabras como "SPI" e "I2C", y la gente comienza a usar terminología. Pero no tengo experiencia, así que, si utiliza los términos, explíquelos.
Otro PS: quiero que los dispositivos Arduino usen la energía del dispositivo Arduino maestro.

    
pregunta MC Emperor

3 respuestas

5

No conecte los pines TX juntos. Cuando un arduino esclavo está conduciendo su TX a lógica alta y el otro arduino está conduciendo su TX a lógica baja, el voltaje resultante no es un nivel lógico válido, por eso está obteniendo caracteres no válidos.

Instalado, compre un RS-485 arduino shield prebuilt para cada uno de sus dispositivos. Detalles abajo ...

El TX / RX no está diseñado para admitir varios dispositivos esclavos; Es solo una conexión entre dos puntos. La salida de TX siempre se controla y solo puede haber un controlador.

Para conectar correctamente varios dispositivos esclavos, necesita una interfaz que realmente esté diseñada para admitir varios controladores.

Los pines Arduino TX / RX que estás usando, comúnmente se llaman RS-232 , aunque eso no es del todo exacto. RS-232 es un tipo de red muy simple que conecta dos dispositivos. Un dispositivo se llama DCE y el otro dispositivo se llama DTE . No te preocupes por lo que significan esos nombres; solían significar algo en la Edad Oscura cuando las personas conectaban los teléfonos con cable a los módems de teléfono acústico ( enlace ) Lo único es que un dispositivo transmite en el cable TXD y escucha en el cable RXD , mientras que el otro dispositivo transmite en RXD y escucha en TXD . Esto se vuelve confuso, ya que nos gusta conectar cables que tienen nombres similares, por lo que a menudo usamos un tipo de conexión llamada Null Modem : la salida de TX de un dispositivo controla la entrada de RX del otro dispositivo, y viceversa.

(Estoy saltando algunos detalles sobre cómo las señales RS-232 utilizan voltajes más altos que los niveles lógicos de CMOS, no es solo una conexión lógica directa).

Pero la limitación de un módem nulo es que solo conecta dos dispositivos. No puede admitir una red de tres dispositivos, porque la conexión por cable no puede saber qué dispositivo está señalando datos válidos y qué dispositivo está inactivo. Eso requiere un nuevo tipo de red en serie llamada 'RS-485'.

El estándar RS-485 requiere el uso de un tipo especial de traductor de nivel, no solo conecta las señales de nivel lógico TX / RX. Este traductor de nivel RS-485 se encarga de conducir la interconexión de tal manera que permita compartir la conexión entre múltiples dispositivos. Aún debe tener cuidado de no permitir que los dispositivos transmitan al mismo tiempo (llamado Collision ), pero dado que ha designado un dispositivo como maestro y los otros dispositivos como esclavos, eso no debería ser un problema. El dispositivo maestro decide qué dispositivo puede hablar en el bus.

Ya que eres un usuario de Arduino y no tienes mucha experiencia con la electrónica, la forma más sencilla para ti será comprar un RS-485 arduino shield creado previamente.

Usted mencionó I2C (que también se abrevia con menos frecuencia como IIC ), que es un estándar de interfaz de drenaje abierto de 2 cables originalmente definido por la corporación Philips. Google i2c bus specification para más detalles. Probablemente podría lograr lo que está tratando de hacer con RS-485 o I2C, pero RS-485 está más cerca de lo que está usando ahora.

Usted mencionó que desea alimentar los dispositivos esclavos desde la misma fuente de alimentación que alimenta el dispositivo maestro. (En cualquier caso, ya deberían estar usando la misma conexión de retorno a tierra). Si el arduino maestro está recibiendo alimentación desde un USB, eso debería estar bien siempre que la corriente de suministro total extraída por las tres placas no exceda la corriente de carga nominal. Si eso sucede, sabrá porque su PC con Windows apagará el puerto USB.

    
respondido por el MarkU
4
  

Ahora, ¿cómo conecto correctamente un dispositivo Arduino maestro con al menos dos dispositivos Arduino esclavos utilizando los pines RX y TX? ¿Necesito conectar pines de 5V?

Red de personas pobres:

El circuito a continuación es "malo" en extremo, pero puede funcionar "lo suficientemente bien". Puedes hacer lo mismo usando puertas formales.

Circuito superior:

Master + N secundarias.
El maestro siempre es oído por todos los secundarios.
Maestro puede escuchar cualquier secundaria.
Los secundarios no pueden escuchar otros secundarios.
Múltiples secundarias transmitiendo simultáneamente ambas señales corruptas.

Master RX es levantado por la resistencia.
Cualquiera de los esclavos puede bajar el Master RX estableciendo su TX bajo.
Solo un esclavo puede: "hablar" a la vez si se deben evitar las transmisiones corruptas. Max limitado por la constante de tiempo de R más capacitancia del circuito.
Demasiado bajo, una R no se puede bajar correctamente mediante TX.

Circuito inferior: todos los pares.

Cualquiera puede enviar (uno a la vez).
Todos recibirán todo lo enviado.
El remitente recibirá su propia transmisión y podrá juzgar si la transmisión está dañada.

Útil para, por ejemplo, operación de ALOHAnet puro o ALOHAnet con ranura . O para el caso token ring, round robin o la mayoría de los otros sistemas de red. Incluso CSMA / CD

El valor de la resistencia Pullup se deja como ejercicio para el alumno.

La polaridad mostrada supone que el nivel de inactividad de TX es alto.
Invierta las polaridades de los diodos y use el pulldown para TX inactivo es bajo.

    
respondido por el Russell McMahon
-3

enlace

va sobre la configuración de otros pines digitales en otros pines TX y RX.

Frosty0_0

    
respondido por el Frosty0_0

Lea otras preguntas en las etiquetas