Tengo un Arduino personalizado de 5 V y 16 MHz que ejecuta grbl y esperaba usar uno de los módulos bluetooth HC-05 para controlarlo de forma inalámbrica. Este Arduino se puede conectar a un puerto USB a través de un chip FTDI. Me gustaría que esto funcione con cualquiera de ellos y no con ambos. Esto funciona en su mayor parte y aquí está la 'tabla de verdad' que he experimentado:
USB Bluetooth Works over Works over
ON ON USB? Bluetooth?
--- --------- ---------- ----------
Y Y N Y
Y N Y N
N Y N Y
Supongo que cuando ambos están encendidos, el USB no funciona porque ambos comparten las mismas líneas RX y TX del Arduino y parece que se le está dando prioridad a la conexión bluetooth. ¿Hay alguna manera de que cuando el cable USB esté conectado a la PC host, el módulo bluetooth no se pueda usar y se le dé prioridad a la conexión por cable?
Siguiendo las sugerencias de Chris, aquí hay una solución de multiplexor que tengo la intención de probar. Cuando se desconecta el USB, las líneas de selección son bajas y se seleccionan las líneas Y0, que es el módulo BT. Cuando se conecta el cable USB, las líneas de selección aumentan y se selecciona el chip FTDI. VBUS y 5V son dos fuentes separadas de 5V. Solo el FTDI se alimenta desde el bus USB.
AGREGADO: Mientras estaba en eso, pensé que podía apagar y aislar el módulo BT por completo cuando el USB está enchufado. Usé un p-mosfet que puede manejar alrededor de 130 mA, lo cual es suficiente ya que el módulo BT en sí mismo no consume más de 50 mA.
Cuando el cable USB está conectado a la PC anfitriona, su puerto verá VBUS = 5V. Si no hay cable, VBUS=0V. Puede alimentar esta señal a uno de GPIO (con la traducción de voltaje adecuada, el divisor de resistencia debería estar bien) y usar la señal lógica para cambiar entre USB y BT (apagar BT).
También hay una opción si desea usar dos UART en Arduino, hay soporte de Softwareserial(), cuya biblioteca ayuda a crear su segundo uart. entonces puede usar USB y Bluetooth en una sola vez y de manera fácil sin cambios en el hardware. lea cómo usar la biblioteca Softwareserial() y qué pines son compatibles.
PlasmaHH
electrófilo
chris stratton
electrófilo
chris stratton