Emular pines Serial de Arduino con la librería NewSoftSerial

En ocasiones queremos conectar varios módulos al mismo tiempo al Arduino. Esto no es problema siempre y cuando usen diferentes pines, el problema esta cuando dichos pines son capaces de soportar un protocolo de comunicación y el resto no, ejemplos de ello tenemos el puerto SPI, I2C o Serial.

En el caso del I2C tampoco hay problema pues cada dispositivo se identifica con un número que lo identifica del resto de módulos (de distinto tipo, por ejemplo un termómetro y un lcd, «no pueden» ser idénticos). Sin embargo no sucede lo mismo con el puerto SPI y Serial.

Para solucionar este problema podemos elegir un Arduino con más prestaciones, como el Mega que cuenta con más puertos Serial, o emularlos mediante una librería, así podremos usar otros pines para ello.

Y eso es lo que es capaz de hacer la librería NewSoftSerial (más documentación aquí). Usándola podremos emplear el resto de pines como puertos serial, ya sea para conectarnos al ordenador, o a un LCD, o quizás un modulo bluetooth.

Además es tremendamente sencilla de usar. En entradas anteriores puse un ejemplo para usar con el modulo bluetooth, concretamente este:

Que usa los pines 0 y 1. Si quisiéramos usar otros pines, por ejemplo el 2 y 3, el código seria ahora así:

Como vemos solo hay que instanciar la clase NewSoftSerial y después usar el objeto creado para establecer la velocidad de comunicación, imprimir, leer, etc. tal y como haríamos con la librería Serial original.

5 comentarios en “Emular pines Serial de Arduino con la librería NewSoftSerial”

  1. Buen dia yo he tenido problemas con los pines del puerto serial de arduino porque manejo un modulo hc 05 y cuando voy a programar el arduino pues tengo que desconectar el modulo bluetooth de la placa, ¿de casualidad tu sabes si con esta libreria yo me podria despojar de este problema programando otros puertos como seriales que seria donde conectaria el modulo bluetooth y asi no tener que desconectar el modulo cada que voy a reprogramar el arduino?

    SALUDOS.
    Muchas gracias

    1. Si, usando esta librería podrías conseguir que a la hora de programar el Arduino no te haga falta desconectar el módulo bluetooth, de hecho yo tengo un Arduino con dos módulos bluetooth conectados, sin la librería eso no se podría hacer!

      Saludos.

  2. Hola buen post!

    Estoy haciendo un proyecto de la universidad y tambien necesito conectar 2 bluetooth especificamente los HC-06 a un solo Arduino, veo que tu comentas que pudistes hacerlo, mi pregunta es, ese codigo que colocastes arriba lo puedes enviar solamente para crear un nuevo puerto serie o puedes colocar todo el codigo del proyecto que quieras hacer?, es decir, si yo envio solamente el codigo para el nuevo puerto serie y despues quiero enviar otro codigo para controlar: IMU, servos, sensores etc no habra problemas? no se borrara el codigo del puerto serie?

    1. Obviamente debes mantener el código que permite usar varios puertos serie + el código que necesites para controlar lo demás.

      Te recomiendo que virtuales dos puertos serie y el físico lo dejes sólo para el USB, así te evitarás problemas.

      Saludos

    2. Hola como estas!

      Decidi mejor no emular los puertos ya que voy a utilizar los pines PWM y la libreria que voy a utilizar para emular otros puertos seriales me inutiliza los PWM no puedo escribir salidas en ellos, la libreria es AltSoftSerial.

      Te queria hacer otra pregunta, sabes que quiero hacer un Cuadricoptero y no estoy seguro si puedo utilizar el modulo bluetooth HC-06 o HC-05 para controlor el drone (sistema de control de vuelo), esto lo voy a realizar mediante una aplicacion android utilizando el giroscopio y acelerometro del smarthphone, la pregunta es puedo utilizar un unico modulo bluetooth hc-06-05 para controlor el drone y al mismo tiempo enviar informacion desde ese bluetooth a una base de datos en la pc? Es que va a tener un modulo de camara y un slot SD para guardar las fotos tomadas, entonces no estoy seguro si este mismo bluetooth pueda hacer dos tareas a la ves, controlar el drone y enviar las imagenes de la camara a una base de datos en la pc.

      Cual de los dos bluetooth me recomendarias o cual de los dos pueden enviar y recibir simultaneamente.

      Gracias!

Escriba aquí su comentario