quarta-feira, abril 23, 2014

Comunicação Bluetooth entre Arduino e Android - Hardware

Praticamente todos os celulares e tablets Android possuem interface Bluetooth. Módulos Bluetooth conectáveis ao Arduino são facilmente encontráveis nas lojinhas chinesas a preços abaixo de US$15. Temos, potencialmente, uma boa solução para monitorar ou controlar um Arduino a partir de um device Android, sem fios e a vários metros de distância. Como veremos nesta série de posts, existem algumas pequenas dificuldades no caminho.



Como mostrei no link acima, existe uma quantidade razoável de opções, não necessariamente equivalentes. Eu optei por este módulo, particularmente por tem um preço atraente e já vir com um conector. Provavelmente a maior parte do que vamos ver se aplica aos outros módulos (principalmente os baseados no HC-06), mas não tenho como garantir. Este módulo tem a característica de operar somente como slave, por enquanto ainda não teste módulos capazes de operar também como master.

Se você observar com cuidado, verá que este modelo consiste em um módulo Bluetooth HC-06 soldado em uma placa. Além do conector, a placa contém alguns componentes, entre eles um regulador de tensão.

Como quase todas estas "traquitanas" chinesas, documentação é um grande problema. O lado debaixo da placa indica os sinais presentes no conector.



Embora existam seis sinais disponíveis, foi soldado um conector de quatro pinos, ignorando os sinais KEY e STATE.

Como indicado na placa, a alimentação (VCC) pode ser entre 3.6 e 6V. No meu caso, liguei direto aos 5V do Arduino.

O pino TXD é uma saída.Também trabalha com 3.3V, mas isto não atrapalhará a comunicação com o Arduino.

O pino RXD é uma entrada, e aceita tensões de até 3.3V. Como os pinos do Arduino trabalham com 5V, usei um divisor resistivo (um resistor de 33K entre este pino e terra e outro de 22K entre este pino e o Arduino).

O ideal é  ligar os pinos RXD e TXD do módulo aos pinos Rx e Tx do Arduino, para usar a UART do ATmega (normalmente usada para comunicação com o PC via USB). Se quisermos comunicar simultaneamente com o módulo e o PC, podemos conectar os sinais do módulo a dois pinos de E/S digital e usar o recurso de "software UART" da biblioteca do Arduino (ou usar um Arduino Mega, que tem quatro UARTs).
Um detalhe curioso é que o pino TXD necessita de um pull-up. As rotinas de "software UART" ativam o pull-up da entrada digital; se for usar um UART do ATmega você precisará colocar externamente este pull-up (um resistor de 15K entre TXD e VCC é suficiente).

No próximo post veremos como configurar o módulo.

2 comentários:

Ronaldinho disse...

Acho que em "usa boa solução", você queria dizer: uma boa solução ;)

Daniel Quadros disse...

Corrigido! Aproveitei e coloquei a informação de que este módulo funciona somente como slave.