Conectar un módulo Bluetooth HC-05 al Arduino. Parte I

Hoy vamos a ver como conectar un HC-05 con nuestro Arduino.

En primer lugar vamos a determinar qué es lo que queremos conectar. En mi caso va a ser una configuración mínima, ya que solo quiero reemplazar un cable serie (o el propio cable USB del Arduino) por el enlace bluetooth.

Por tanto, en primer lugar necesitaré conectar la alimentación del módulo (patillas 12 y 13).

Estos módulos como sabemos funcionan a 3.3V, así que utilizaremos las patillas de 3.3V y GND que tenemos en nuestro Arduino y que nos vienen perfectas para no tener que buscarle una alimentación adicional al módulo, ya sea con un adaptador de corriente o con un regulador a partir de los 5V del Arduino.

Con esto tenemos resuelto el “encender” el módulo, ahora lo que nos hace falta es poder comunicarnos con él.

Para ello conectaremos dos pines digitales del Arduino (podemos utilizar el RX y TX que tenemos en los pines 0 y 1 respectivamente) con los pines de TX y RX del módulo, pero aquí nos encontramos con el problema de que nuestro Arduino está trabando a 5V y el módulo bluetooth trabaja a 3.3V, y, aunque hay gente que los ha conectado directamente y asegura que le funciona perfectamente yo prefiero no arriesgarme y hacer una adaptación de niveles, aunque sea muy simple.

En primer lugar tenemos la salida del módulo (TX, pin 1) en ella tendremos un nivel de 0 para el nivel lógico 0 y aproximadamente 3.3V para el nivel 1. Como según las características del ATMega328P el Vih es 0.6Vcc, y nuestro Vcc es de 5V, tendremos que Vih es aproximadamente de 3V y por tanto es perfectamente válido conectar el TX del HC-05 con el RX del Arduino.

Algo totalmente diferente es la salida del Arduino hacia la entrada (RX, pin 2) del módulo. En el datasheet del HC-05 no he visto que indique que las entradas sean tolerantes a 5V, y por otro lado en el datasheet del ATMega328P indica que Voh es, como mínimo, de 4.2V, por lo que, por precaución, deberíamos adaptar los niveles.

Hay muchos métodos para hacer la adaptación de niveles, aunque, para mí, en este caso la solución más fácil es realizar un divisor resistivo, de forma que solo le entreguemos una parte de la tensión que esté dentro de sus margenes de tolerancia al módulo bluetooth.

Para poder utilizar un divisor resistivo con señales lo primero que tenemos que tener en cuenta es a quien vamos a conectar la salida del divisor, ya que si tiene una impedancia en el mismo orden de magnitud (o inferior) que la resistencia de salida el paralelo de ambas hará que los cálculos que hayamos realizado estén mal.

Para este paso nos iremos al datasheet del módulo y vemos que la entrada RX es de tipo CMOS con weak internal pull-down, esto significa que tendrá una impedancia de entrada alta.

Llegados a este punto está claro queremos realizar un divisor de tensión que tenga una entrada de 5V y una salida de 3.3V, con una impedancia de salida que no sea muy alta.

La disposición sera así:

Divisor de tensión

La fórmula a utilizar es:

Cuando no es muy relevante la resistencia que hay que poner en una conexión uno de los valores típicos es 10KΩ, por lo que empezaremos por ese valor como resistencia de salida del divisor y vemos si nos sale algo razonable.

Si tomamos como valores R2=10K, Vi=5V, Vo=3.3V y despejamos R1, tendremos:

Donde R1 nos da un valor 5151.515Ω de forma que llevándolo a valores estándar podremos poner una resistencia de 4K7Ω o de 5K6Ω, en el primer caso tendremos una salida de 3.4V y en el segundo de 3.2V.

Y eso es todo lo necesario para conectar el módulo, otro día veremos como comunicarnos con él.