Go Down

Topic: Controle remoto via bluetooth HC 05 por arduino via serial (Read 1 time) previous topic - next topic

willindows

Olá pessoal, estou com um projeto de controle remoto via Bluetooth ligando 2 arduinos.
 
Estou utilizando:
 
2 Bluetooths HC 05
1 Arduino Uno
1 Arduino Micro

 
Bem, no arduino Uno estou usando ele como transmissor de dados (No caso o controle remoto) e no arduino Micro estou usando ele como receptor de dados. Ambos possuem um bluetooth pareados e configurados (Bluetooth Mestre no arduino Uno e Bluetooth Escravo no arduino Micro).
 
No arduino Uno (transmissor) esta assim:
 
#include <SoftwareSerial.h>
 
void setup() {
 
   
pinMode(6,INPUT_PULLUP);
pinMode(7,INPUT_PULLUP);
 
 
Serial.begin(9600);
 
 
}
 
void loop(){
 
  if(!digitalRead(6)){
 
  delay(37);
  Serial.print("A");
 
  }
 
  if(!digitalRead(7)) {
 
  delay(37);
   
  Serial.print("B");
 }

 
 
}
 
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 No arduino Micro (receptor) esta assim:
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 
#include <SoftwareSerial.h> 
     
 
void setup(){
   Serial1.begin(9600);
   Serial.begin(9600);
 
   Keyboard.begin();
}
 
void loop(){
   if (Serial1.available() > 0) {
 
     char myData = Serial1.read();   
      Keyboard.write(myData);
       
 
   }
   }
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 
Bem, as conexões estão funcionando. Eu consigo enviar para o computador os caracteres A e B (conforme Sketch do arduino transmissor), porém, eu gostaria muito de melhorar o VOID LOOP do meu arduino transmissor.
 
Apesar de tudo funcionar corretamente, eu preciso que a VELOCIDADE DA TAXA DE ENVIO DE CARACTERES seja exatamente igual a velocidade padrão que temos nos nossos teclados independentemente do sistema operacional. Porém, a velocidade SERIAL do arduino é uma padrão que precisa ser ajustado.
 
O que já tentei até o momento:
 
1º Alterar o Delay do transmissor ou retirar o mesmo
2º Já modifiquei as velocidades e tentei todas as velocidades seriais possiveis desde 300,....até 115200
3º Já alterei a velocidade do Bluetooth HC 05 com comandos AT desde 300,...até 115200

 
 
Se eu conseguir ajustar a velocidade serial para que se iguale a mesma taxa de repetição de caracteres do windows apenas do arduino transmissor sem precisar conectar com o outro está de ótimo tamanho.
 
^_^

luisilva

O que é o "Keyboard" do receptor?
Os delay do programa do transmissor para que servem?
Qual é a taxa os teclados?
Para que serve a linha:
Code: [Select]
   Serial.begin(9600);
no programa do receptor?

bubulindo

Não usar a função digitalRead será bastante interessante...
Tirar os delays é boa prática de programação... aliás, não percebo de onde vem o delay(37)...

Como sabes que não é a comunicação bluetooth que está a atrasar tudo?
Já experimentaste tirar os módulos bluetooth e experimentar sem eles para ver o que acontece?
This... is a hobby.

willindows

O que é o "Keyboard" do receptor?
Os delay do programa do transmissor para que servem?
Qual é a taxa os teclados?
Para que serve a linha:
Code: [Select]
  Serial.begin(9600);
no programa do receptor?
O Keyboard serve para digitar o valor A e B no computador. e o Serial.Begin é a velocidade de trasmissão, no caso eu estou usando a velocidade padrão apesar de ter testado com outros valores tbm.

Mas a parte do receptor não importa tando em relação a questão, pois usando o um arduino apenas sem conexões não consigo chegar a mesma taxa de velocidade de repetição de caracteres quando abro o serial monitor.

E a taxa de repetição do teclado é dificil falar o numero, pois é testando no serial monitor para ver se iguala em teste.

willindows

Não usar a função digitalRead será bastante interessante...
Tirar os delays é boa prática de programação... aliás, não percebo de onde vem o delay(37)...

Como sabes que não é a comunicação bluetooth que está a atrasar tudo?
Já experimentaste tirar os módulos bluetooth e experimentar sem eles para ver o que acontece?
Os delays são uns atrasos pequenos para tentar simular a velocidade da taxa de repetição de caracteres, porém sem sucesso, já tentei sem os delays e com os delays . Quando tiro os delays a velocidade fica Hiper rápida e com delay não consigo nem simular a velocidade de transmissão.

Mas já tentei sem os bluetooths sim.


bubulindo

Desculpa, mas se calhar tens de explicar o que pretendes...

Sem delays fica rápido, com delay não funciona... afinal o que pretendes? Podes explicar?
This... is a hobby.

willindows

Desculpa, mas se calhar tens de explicar o que pretendes...

Sem delays fica rápido, com delay não funciona... afinal o que pretendes? Podes explicar?
É uma manete sem fio, consigo enviar a serial, porem nao consigo regular...quando vou jogar não consigo mover ou direcionar perfeitamente como no teclado.

bubulindo

E exactamente o que é que vês que não funciona?
This... is a hobby.



Go Up