Usar un transistor como interruptor entre RX y TX

Tengo un microcontrolador (arduino) conectado a través de su salida serial (RX/TX) a un módulo bluetooth. Quiero poder programar el microcontrolador cuando los dos todavía están conectados, pero a menos que desconecte el controlador RX, el programa no se cargará. Pregunta: ¿es posible usar un transistor para que actúe como un interruptor entre el controlador RX y el bluetooth TX? mis intentos han sido infructuosos hasta ahora... gracias.

¿Te importaría mostrarnos los intentos particulares que hiciste, para que podamos tratar de ayudarte a revisarlos para que funcionen?
Creo que un interruptor analógico está más en línea con lo que desea: en.wikipedia.org/wiki/Analogue_switch . Está compuesto por FET.
con la base como el pin de activación/desactivación, probé el colector a arduino RX y el emisor a bluetooth TX y viceversa. He oído hablar de esos interruptores analógicos antes, pero estaba interesado en saber si era posible lograr esto con un solo transistor...
Además: casi todos los Arduinos son capaces de admitir más de una línea serie, si no en hardware, en software. ¿Qué Arduino tienes? ¿Tienes líneas de repuesto?
estoy usando un atmega328p en una placa de pruebas. No creo que este chip tenga 2 líneas seriales... el software serial no es preferible ya que entra en conflicto con la biblioteca de servos que estoy usando (es un circuito bastante complejo en general)

Respuestas (3)

Esto funcionaría bien, MAX4544. Haga que la posición predeterminada sea COM a NC con un menú desplegable en IN, cuando el boceto de Arduino se active, puede conducir IN a High para conectar COM a NO y habilitar la conexión BT.

https://datasheets.maximintegrated.com/en/ds/MAX4541-MAX4544.pdf

O uno de estos si desea cambiar ambos en el mismo paquete

https://hojas de datos.maximintegrated.com/en/ds/MAX4528.pdf

Con esto, tal vez pueda detectar cuándo está presente la alimentación USB y hacer el cambio (ya sea a través de hardware o software) para deshabilitar su comunicación BT. Si está utilizando un arduino normal, puede consultar este enlace [ forum.arduino.cc/index.php?topic=120693.0 ] sobre cómo detectar la presencia de energía desde el puerto USB

La solución IME más fácil para este problema es evitarlo por completo: la mayoría de las placas arduino tienen un encabezado que se puede usar para conectar un dispositivo programador AVRisp, lo que hace que no sea necesario usar la interfaz serial para programar. Los dispositivos son baratos (hay clones de muy bajo costo en eBay) y el IDE de arduino admite su uso. Si lo hace, también le permite sobrescribir el cargador de arranque de arduino, lo que puede brindarle una pequeña cantidad de almacenamiento adicional para su programa, lo que a menudo encuentro útil.

gracias por esto, pero me gustaría usar una sola interfaz para cargar, programar y enviar comandos a través de la serie.
@ user2105725 ¿Cómo indicará en qué estado debe estar el autobús? Si no usa un tiempo de espera (similar al gestor de arranque integrado), lo más probable es que invente algún tipo de canal lateral ad-hoc. Es decir, ¡una segunda interfaz! Esto es más propenso a errores que el uso de interfaces dedicadas y apropiadas para las tareas individuales. Si su circuito es complejo, este nivel adicional de separación se ocupa de muchos detalles y códigos propensos a errores asociados con la multiplexación de comunicaciones en serie con varios "maestros".

El dispositivo que canaliza dos o más señales en la misma línea se llama multiplexor . Puede obtener uno en forma de IC, implementarlo con puertas lógicas o implementarlo con transistores.

Si puede asegurarse de que ambas fuentes nunca transmitan datos al mismo tiempo, puede usar el hecho de que UART tiene un nivel inactivo de '1' lógico para simplificar el circuito a una sola puerta AND, que puede implementarse razonablemente con transistores:

esquemático

simular este circuito : esquema creado con CircuitLab

¿Cuál es el motivo de R4 y R5?
@aml Tienes razón, se pueden omitir por seguridad