A um tempo atrás eu escrevi um post sobre como controlar as portas do Arduino usando um módulo bluetooth JY-MCU. Recentemente, mostrei como enviar dados do Arduino para o Android no post Enviando dados do Arduino para o Android usando bluetooth.
Vou agora usar o mesmo princípio desses artigos, mas dessa vez para controlar um servo motor, um Micro Servo 9G, com ângulo de rotação de 180 graus :
Desta vez, o módulo bluetooth utilizado tem nível de sinal de 3.3 v (verifique no verso do seu módulo BT qual a tensão do nível de sinal) :
O funcionamento deste circuito segue um dos exemplos da biblioteca SERVO, e que eu já utilizei anteriormente para montar o post com o sugestivo nome de Controlando um Servo. No exemplo, é utilizado um potenciômetro para controle do ângulo de rotação do motor.
Seguindo esta idéia, e usando o programa MicrocontrollerBT no Android, vou criar um botão deslizante para fazer a função do potenciômetro e controlar o motor.
Observe na montagem do circuito que eu utilizei 2 resistores no pino RX do módulo Bluetooth. A função desses resistores é atuar como um divisor de tensão, já que o módulo BT que estou utilizando trabalha com 3.3 v no pino de sinal, e se ligarmos diretamente esse pino no Arduino, que trabalha com 5 volts, corremos o risco de danificar o módulo BT. Utilizei 2 resistores, um de 220 ohms e um de 330 ohms, que fizeram com que a tensão do sinal vindo do Arduino caísse para aproximadamente 3 volts.
Você não tem resistores de 220 e 330 ohms ? Não tem problema. Acesse este link, digite 5 para a tensão de entrada, digite os valores dos resistores (R1 e R2) que você possui, e pressione o botão Calcular para verificar a tensão de saída no campo correspondente, lembrando que por segurança esta deve ser, no máximo, de 3.3v.
Monte o circuito e carregue o programa abaixo no Arduino, mas antes desconecte o Vcc do módulo blueooth, pois como ele também utiliza a comunicação serial para transmitir dados ao Arduino, pode gerar algum erro na hora da transmissão pelo computador.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
// Programa : Controle de servo pelo Android utilizando Bluetooth // Autor : Arduino e Cia #include <Servo.h> Servo myservo; int val; void setup() { //Pino de dados do servo ligado na porta 4 myservo.attach(4); Serial.begin(9600); } void loop() { if(Serial.available()>=2) { int key=Serial.read(); int val=Serial.read(); myservo.write(val); } } |
Conecte o Vcc novamente ao módulo BT. Vamos passar agora para a parte de configuração do Android. Carregue o Microcontroller BT :
Clique no botão MENU do seu celular, e escolha a opção NEW LAYOUT :
Adicione um nome ao seu layout. Utilizei Arduino Servo :
Após digitar o nome, o programa volta para a tela anterior, com o layout em branco, e o nome do layout escolhido no canto superior esquerdo :
Clique novamente o botão MENU, e em EDIT MODE :
Note que a parte superior do layout ficará vermelha, indicando que vc está no modo de edição. Arraste a aba na parte inferior, até que aparecam os botões que podem ser adicionados ao layout. Clique no botão deslizante, conforme destacado, e segure até que o mesmo apareça na tela principal do layout :
Agora clique sobre o botão deslizante para configurar suas propriedades. Na parte superior esqueda, selecione Analog Input. em Set Key, escolha 5. Abaixo, em MAX, escolha 180, que é o valor máximo, em graus, que o servo irá rotacionar . A configuração do botão deslizante ficará assim :
Terminada a parte de configuração, basta apertar a teclar RETORNAR, no seu celular. Note que o layout ficara na cor cinza novamente, indicando que você saiu do modo de edição :
Clique agora no botão MENU, depois em Connect :
Escolha o dispositivo bluetooth, que deve estar previamente pareado com o seu aparelho, e após alguns segundos o layout do programa ficará verde, indicando que o mesmo está conectado ao módulo bluetooth no Arduino. Observe no lado direito, no topo do layout, que o meu celular está conectado ao dispositivo LINVOR :
Feito isso, mexa no botão deslizante para ver o servo se movimentar até o ângulo correspondente, lembrando que o botão foi configurado até o valor máximo de 180 graus, que é o ângulo máximo de movimentação deste servo.
Você pode utilizar mais motores no Arduino usando este procedimento. Fique atento apenas ao fato de que esses motores costumam exigir muita corrente da placa, e provavelmente você terá que utilizar uma fonte de alimentação externa para alimentá-los.