Serie de hardware Arduino Uno R3: ¿el periférico interfiere con el convertidor USB/serie?

Me gusta usar el puerto serial del hardware (pin 0 RXy 1 TX) para conectar un módulo bluetooth. Internamente, estos pines también están conectados al microcontrolador convertidor de USB a serie integrado que se usa para flashear el ATMega328 usando el código de arranque.

ingrese la descripción de la imagen aquí(De http://arduino.cc/en/uploads/Main/Arduino_Uno_Rev3-schematic.pdf )

Ahora estas dos señales interferirían, creo.

  • ¿Se pueden usar los pines RX/TX para interactuar con un periférico UART?
  • Si, ¿qué se debe hacer para evitar la colisión de señales?

No pude encontrar ejemplos en mis libros de Arduino y con Google que usaran el puerto serie de hardware del Uno R3 para conectar periféricos.

Edición 1:

Permítanme agregar lo siguiente: no quiero usar el monitor Serial (del IDE de Arduino) y el periférico (módulo Bluetooth) al mismo tiempo. No espero que se pueda usar al mismo tiempo. El dispositivo debe funcionar sin USB conectado. El módulo Bluetooth, en este caso, se utilizará para controlar de forma remota e inalámbrica el Arduino.

Incluso cuando no se usan ambos juntos, sospecho que el ATMega16U y el periférico podrían interferir.

Y: lo sé, hay un escudo y también un "ArduinoBT", pero no quiero usarlos siempre que sea posible hacerlo con el puerto serie del hardware del Uno.

Edición 2:

El módulo periférico (Bluetooth) funciona a 3,3 V, mientras que el Arduino funciona a 5 V.

Respuestas (2)

Esas dos resistencias, marcadas RN4A y RN4B, se utilizan para proteger la línea uart de conflictos, al tiempo que asignan prioridad al encabezado externo. Actúan como pullups débiles, en el sentido de que cualquier cosa antes (en este caso, a la izquierda) de las resistencias solo afectará la línea después de ellas, si las líneas no se están utilizando.

Cualquier conexión en serie conectada al encabezado tendrá prioridad sobre la conexión usb/serie de Arduino, ya que pueden alimentar directamente las líneas.

Pero esto también generará problemas durante la programación, así que use un pin de habilitación o un interruptor de encendido, o simplemente retire el módulo bluetooth mientras programa.

¿Esto hace alguna diferencia si el módulo Bluetooth se alimenta con 3.3V?
De la especificación Atmega16U2 (18.4, página 152): "Cuando se transmite un cuadro completo, puede ser seguido directamente por un nuevo cuadro, o la línea de comunicación puede establecerse en un estado inactivo (alto)". ¿El estado alto inactivo de 5V causa problemas?
Eso es un poco de un área gris. La pregunta sería si el dispositivo de 3.3v tiene diodos de protección (probablemente) y si la corriente a través de las resistencias a través de esa diferencia de voltaje está dentro de la clasificación de esos diodos, y si el suministro de 3.3v está clasificado para absorber la corriente inyectada. en el riel de suministro. Una cosa que puede intentar es usar resistencias aún más grandes en el punto donde conecta su dispositivo de 3.3v. Si sus resistencias son demasiado grandes, obtendrá errores de datos, mientras que es en el extremo demasiado pequeño de las resistencias donde el daño es una posibilidad teórica.
También podría considerar agregar sus propios diodos zener (con polarización inversa, a tierra) si quiere estar seguro. Algunas personas incluso han usado LED (con su caída de voltaje directo relativamente grande ) como abrazadera; por ejemplo, vea algunos de los circuitos de interfaz para el software USB hack.
@ try-catch-finally sin una hoja de datos para el módulo bluetooth, me equivocaría en el lado de "lo matarás". Deberá utilizar la traducción de niveles. Un par de transistores harían eso muy bien. Sin embargo, algunos módulos tienen traducciones de nivel. Pero esta es una pregunta diferente, y ha sido respondida antes, use la búsqueda.

No puedo pensar en una razón por la cual su UART periférico y el USB-UART interfieran. Probablemente desee desconectar su periférico UART durante la programación, ya que puede interferir con la programación.

Además, no me sorprendería si pudiera escuchar el tráfico entre ATmega y UART periférico e insertar datos en ATmega a través de USB. Por lo tanto, probablemente desee desconectar la computadora mientras su dispositivo está operativo.

El hecho de que ambos estuvieran tratando de controlar el mismo pin de recepción sería razón suficiente. La resistencia en serie puede proporcionar cierta protección eléctrica limitada, pero está lejos de ser un multiplexor real cuando ambos están conectados con los controladores habilitados. Es común usar una implementación serial de software en un pin GPIO no utilizado cuando se conectan periféricos seriales al tipo de placas Arduino de UART de hardware único (en contraste con las placas de estilo Arduino MEGA con múltiples UART de hardware)
En uno de mis proyectos posteriores, no hay suficiente espacio en el puerto para usar el software en serie (de hecho, usaré el software en serie, pero estará conectado a otro dispositivo). Incluso si hay suficiente espacio en el puerto, no quiero usar ese método siempre que haya un puerto serie que se pueda usar (¿o por qué se conectó a dos conectores? Creo que es una especie de desperdicio). Al menos yo Piense, puede corregirme, que la implementación en serie del software, incluso el "nuevo", ocupará más espacio en la memoria flash.