Arduino Nano: Multiplexar puerto serie por hardware


¡Saludos! Para iniciar diré que este no es el mejor método, o que este sea el único, simplemente fue la forma en la que yo resolví esto. Hace tiempo me vi en la necesidad de usar dos módulos que se comunican con el puerto serie (en ese tiempo fue un bluetooth y un modulo MP3, para este ejemplo uso un FT232 para reemplazar el MP3 ya que no tengo este a la mano, pero la mecánica es similar), prácticamente recibimos un carácter por el bluetooth (para enviar el dato se puede usar otro monitor serial con el bluetooth de la computadora o un adaptador, o simplemente usar la aplicación antes mostrada aquí en el blog), si es "a" encendemos el LED, si es "b" lo apagamos y en ambos casos mandamos un mensaje por el FT232 para visualizarlo en el monitor serial de arduino.


Circuito:
El diagrama utilizado para multiplexar se muestra a continuación, básicamente usamos transistores para esta tarea, dos de ellos se activan dependiendo del modulo a usar, debo decir que el modulo bluetooth tiene la prioridad y que no es posible transmitir o recibir por ambos módulos al mismo tiempo.


Código: 
El código que hace posible esto es el siguiente:
/*******************************************************************************
*
* Multiplexar puerto serie
*
*******************************************************************************
* FileName: NANO_CtrlServo_potentiometer.ino
* Processor: ATmega328
* Complier: Arduino v1.8.3
* Author: Pedro Sánchez (MrChunckuee)
* Blog: http://mrchunckuee.blogspot.com/
* Email: mrchunckuee.psr@gmail.com
* Description: Programa para multiplexar el puerto serie del arduino nano,
* su funcion es basica, enviamos un dato por el modulo bluetooth
* y dependiendo de este realizamos una accion y enviamos un
* mensaje a la terminal serial de arduino por medio de un FT232
* (esta mas que claro que la prioridad la tiene el bluetooth,
* aclaro que no pueden estar trabajando los dos modulos al
* mismo tiempo).
*******************************************************************************
* Rev. Date Comment
* v1.00 20/10/2017 Creación del firmware
******************************************************************************/
unsigned char inputByte = 0; // incoming serial byte
const int LED_Status = 13; //pin del LED
const int enableBluetooth = 2; //pin de control bluetooth
const int enableFT232 = 3; //pin de control FT232
void setup(){
Serial.begin(9600);
pinMode(LED_Status, OUTPUT);
pinMode(enableBluetooth, OUTPUT);
pinMode(enableFT232, OUTPUT);
digitalWrite(enableBluetooth,HIGH); //Activamos opcion de bluetooth
digitalWrite(enableFT232,LOW); //Apagamos opcion de FT232
}
void loop(){
if (Serial.available() > 0) {
inputByte = Serial.read(); // get incoming byte
switch(inputByte){
case 'a':
digitalWrite(LED_Status,HIGH);
digitalWrite(enableBluetooth,LOW); //Apagamos bluetooth
delay(3);
digitalWrite(enableFT232,HIGH); //Activamos FT232
delay(3);
Serial.print("LED Rojo encendido\n"); //Enviamos por puerto del FT232
delay(50);
digitalWrite(enableFT232,LOW); //Apagamos opcion de FT232
delay(3);
digitalWrite(enableBluetooth,HIGH); //Activamos opcion de bluetooth
break;
case 'b':
digitalWrite(LED_Status,LOW);
digitalWrite(enableBluetooth,LOW); //Apagamos bluetooth
delay(3);
digitalWrite(enableFT232,HIGH); //Activamos FT232
delay(3);
Serial.print("LED Rojo apagado\n"); //Enviamos por puerto del FT232
delay(50);
digitalWrite(enableFT232,LOW); //Apagamos opcion de FT232
delay(3);
digitalWrite(enableBluetooth,HIGH); //Activamos opcion de bluetooth
break;
default:
digitalWrite(LED_Status,LOW);
break;
}
}
}
Descargas:
Aquí el enlace directo para DESCARGAR los archivos disponibles, también puedes revisar o descargar la información desde mi repositorio en GitHub, si no sabes como descargarlo puedes checar aquí, bueno por el momento es todo si tienes dudas, comentarios, sugerencias, inquietudes, traumas, etc. dejarlas y tratare de responder lo mas pronto posible.


Donaciones:
Si te gusta el contenido o si los recursos te son de utilidad, comparte el enlace en tus redes sociales o sitios donde creas que puede ser de interés y la otra puedes ayudarme con una donación para seguir realizando publicaciones y mejorar el contenido del sitio. También puedes hacer donaciones en especie, ya sea con componentes, tarjetas de desarrollo o herramientas. Ponte en contacto para platicar, o puedes volverte uno de nuestros sponsors.


Pido una retroalimentación avisando cada que un enlace no sirva o tenga errores al momento de abrirlo, así también si una imagen no se ve o no carga, para corregirlo en el menor tiempo posible.

Publicar un comentario

0 Comentarios