Hola. Estoy trabajando sobre dos dispositivos seriales (SIM800L y Bluetooth HC05), al comprobar las comunicaciones con mi Placa Arduino. Descubro que al crear dos conexiones seriales (la cosa se complico).
Mi bluetooth había dejado de responder.
Comencé a leer los apuntes de la librería SoftwareSerial.h y comprendí la limitación que tenía.
Probé la opción
TWOSoftwareSerial.h la que
NO me dejó conforme en lo absoluto.
Debía presionar muchas veces la TECLA de mi CELULAR y en modo
errático JUSTO la captaba mi Sketch y ahí tomaba la orden enviada.
Pensaba; como resolver el problema de origen. De este modo me pregunté (
Y si conecto dos dispositivos a un mismo puerto serie???).
¿Quemaré algo? y ¿Cómo sabré de quien recibo información (Dispositivo1 o Dispositivo2)?
PUSE MANOS A LA OBRA:
1. Configuré los dos dispositivos Bluetooth como Esclavos
2. Asigne un Nombre para cada uno
3. Vinculé a ambos en mi Celular para reconocerlos
4. Vinculé los Rx y Tx al mismo puerto de Arduino y No quemé nada
5. Lancé mi aplicación Android (que me había Programado) y ANDUVO PERFECTA y VELOZMENTE bien.
Ahora
Arduino y mi Celular Recibían y Transmitían al Puerto Serie de mi Arduino Muy Bien. Con solo UNA CONEXIÓN.Quedaba solo responder como sabré de quien recibo la Información y a cual le ENVÍO la Respuesta.
En el caso de los Bluetooth no tengo problema ya que al aparearse; solo transmitirá al que esté enlazado.
Pero en el caso de un SIM800L y un Bluetooth menos problema; ya que uno enviará de acuerdo al comando que yo quiera ejecutar.
Bth.println("leí tu mensaje"); para el caso de mi Bluetooth
Sim.write("ATD+3446999999\n\r"); para el caso de mi SIM800L
Creo haber resuelto todas mis dudas. Por eso quise compartirlo con Uds. Tal vez les sea de utilidad como lo ha sido en mi caso personal.
Pero esta práctica
despertó una nueva pregunta: Qué pasaría si vinculo los Rx(s) al Pin2 y los Tx(s) por separado?
Ej. Bth.begin(2,3); y Sim(2,4); .
Al fin y al cabo; los componentes son solo eso. Componentes que solo piensan a través de los que su fabricante y los usuarios le decimos que hagan ¿NO?.
Complicando todo:
En algún momento pensé en agregar un par de diodos para canalizar el buffer de Rx. Y un PnP para el canal de Tx. Vere en el tiempo si lo pruebo y aplico.
Ahora me resta volver a mi Placa de Origen para probar; finalmente el Módulo Bluetooth con el SIM800L y ver que pasa ahora.
Un Cordial Saludo a Uds.
Aquí les dejo mis resultados de esta primera prueba.