Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Conectando coisas via Bluetooth / Android / Arduino

Componentes e suprimentos

Arduino UNO
× 1
LED (genérico)
× 1

Aplicativos e serviços online

Arduino IDE
MIT App Inventor 2

Sobre este projeto




Uma rede local sem fio (e pessoal) muito boa é, sem dúvida, o Bluetooth (BT). Hoje no nosso dia-a-dia é comum nos encontrarmos usando celulares, aparelhos de som, câmeras, etc., interligados com a ajuda da famosa “luzinha azul”.

No mundo da IoT e da automação em geral, é muito comum encontrar controles remotos via telefones celulares com tecnologia BT. Isso se deve a dois componentes básicos, mas muito importantes:
  • Plataformas de desenvolvimento simples para aplicativos ANDROID (como MIT AppInventor2) e
  • Módulos BT acessíveis (como HC-06)

Neste tutorial, desenvolverei algumas ideias sobre como controlar as saídas do Arduino por meio de um dispositivo móvel para mover um robô, acender as lâmpadas de uma casa, etc.





Etapa 1:o módulo Bluetooth e o Arduino


No mercado é muito comum encontrar módulos BT 3.0 "Master-Slave" como o HC-05 e módulos "Slave" como o HC-06. Mais recentemente, surgiram o HC-08 e o HC-10 trabalhando com a tecnologia BT 4.0 ou BLE ("Bluetooth Low Energy"). Os módulos BLE são os únicos que podem ser conectados a um iPhone, pois infelizmente a Apple não oferece suporte para BT 3.0.

Para os projetos discutidos aqui, usarei um HC-06 que é muito popular e barato (tchau, tchau, iPhone! Androids são reis aqui!). O módulo BT é alimentado com 5V o que o torna facilmente conectado a um Arduino UNO, por exemplo. Seus pinos de transmissão (Tx) e recepção (Rx) podem ser conectados diretamente ao UNO, sem a necessidade de divisores de tensão como vemos no caso do ESP8266. Normalmente o HC-06 deve ser conectado diretamente aos pinos 0 e 1 do Arduino (“Serial 0”):
  • HC06-Tx para Arduino pino 0 (Rx)
  • HC06-Rx para Arduino pino 1 (Tx)

Ao usar entradas "Serial 0" (única porta Serial HW no UNO), é muito importante lembrar que o HC-06 pode não ser conectado fisicamente aos pinos 0 e 1 durante o carregamento do programa, pois a porta USB também usa o mesma série. Uma maneira simples de contornar este pequeno problema (se o seu projeto não usa muitos GPIOs UNO) é usar uma “porta serial SW” através da biblioteca SoftwareSerial. Em nosso caso aqui, usaremos os pinos 10 e 11 do UNO (Tx, Rx respectivamente).





Etapa 2:Teste e configuração do HC-06


O próximo passo será escrever um código simples para testar, programar e inicializar o HC-O6:Para começar, inclua o Library Software Serial, configurando a variável "BT" para a nova porta serial.
  #include  SoftwareSerial BT (10, 11); // RX, TXString command =""; // Armazena a resposta do bluetooth devicevoid setup () {Serial.begin (9600); Serial.println ("Comandos do tipo AT"); BT.begin (9600); // HC-06 Normalmente taxa de transmissão padrão}  

Em seguida, vem o corpo principal do código que simplesmente espera pelos dados vindos do BT. Ao chegar, os dados são gravados no Monitor Serial. Da mesma forma, comandos AT podem ser enviados do monitor serial para o módulo HC-06.
  void loop () {if (BT.available ()) // recebe dados se disponíveis. {while (BT.available ()) // "continuar recebendo". {atraso (10); // Atraso adicionado para tornar a coisa estável char c =BT.read (); // Conduzir o comando de leitura serial + =c; // Construir a string. } Serial.println (comando); comando =""; // Sem repetições} if (Serial.available ()) {delay (10); BT.write (Serial.read ()); }}  

Uma vez que o programa é carregado, usando o monitor Serial faça alguns testes básicos, por exemplo:
  • Envie "AT", o módulo deve responder "OK".
  • Pergunte a versão do firmware:"T + VERSION", o módulo deve responder, por exemplo:"linvorV1.8".
  • Com HC-06 você pode definir um nome para o módulo, por exemplo:"The T + NAMEMJRoBot_BT_HC06". Mas, ao contrário de outros módulos, você não pode saber qual é o nome definido para o módulo. Ao enviar o comando anterior, o HC-06 simplesmente responde:"OKsetname".

Em geral, o HC-O6 vem com a senha padrão (ou PIN):1234. Você pode definir uma nova com o comando AT:
  • AT + PIN xxxx onde 'xxxx' será 4 números.

Abaixo do código do Arduino para o teste HC-06:
F08H931IL8LGG7U.ino





Etapa 3:o dispositivo Android


OK! Módulo conectado ao UNO e funcionando. É hora de apresentar o dispositivo Android.

Existem muitos aplicativos na Google Store que podem ser usados. Vou usar um aplicativo que foi desenvolvido por mim com a ferramenta MIT Application2 e disponível gratuitamente na loja do Google:MJRoBot BT Digital Analog Voice Control

O aplicativo envia comandos digitais (através de botões ou voz) e comandos analógicos para controlar dispositivos PWMs como servos (enviar dados na faixa de 0 a 255).
  • Baixe o aplicativo
  • Vá para a configuração do dispositivo Android e procure o módulo BT e faça a conexão (digite o PIN 1234 ou qualquer outro definido por você). Isso deve ser feito uma vez, pois o dispositivo manterá os dados de conexão.
  • Assim que o dispositivo e o HC-06 estiverem conversando, inicie o aplicativo. Em uma segunda vez, ao iniciar o aplicativo, o módulo BT deve ser conectado automaticamente.
  • Selecione o nome do módulo (no meu caso é aquele com o HC-06 no final).

O App mostrará então "CONECTADO", informando que está "pareado" com o HC-06. Neste ponto, teste os botões do App e observe, no Monitor Serial do PC, quais dados o App está enviando. Por exemplo, pressionando os botões "ON" e "OFF" sequencialmente para os 4 Dispositivos, o resultado seria:
  dev1ondev1offdev2ondev2offdev3ondev3offdev4ondev4off  

Agora que temos um App para Android falando com o módulo BT, vamos criar algo útil !.





Etapa 4:controlando as saídas do Arduino.


Vamos construir o circuito conforme mostrado acima. A ideia é usar o App para ligar e desligar os LEDs e também controlar sua intensidade.

Conexões:
  • Dispositivo 1:"dev1on / dev1off" ==> LED vermelho ==> Pino 3 UNO
  • Dispositivo 2:"dev2on / dev2off" ==> LED amarelo ==> Pino 5 UNO
  • Dispositivo 3:"dev3on / dev3off" ==> LED Verde ==> Pino 6 UNO
  • Dispositivo 4:"dev4on / dev4off" ==> LED azul ==> Pino 9 UNO

Ou seja, para acionar o "ON" relacionado ao botão "Device 1", a mensagem de texto "dev1on" será enviada para o Arduino. Ao receber esta mensagem, o LED vermelho deve acender e assim por diante.

Observe que os 4 pinos são os pinos capazes de gerar PWM (nem todos os pinos digitais UNO podem fazer isso. Procure aqueles no mercado com “ ~ ”. Isso é importante para o uso de "controles deslizantes" no App, para enviar dados numéricos para controlar a intensidade dos LEDs através do PWM:
  • Dev A0:"r / 0-255" ==> LED vermelho ==> Pino 3 UNO
  • Dev A1:"y / 0-255" ==> LED amarelo ==> Pino 5 UNO
  • Dev A2:"g / 0-255" ==> LED Verde ==> Pino 6 UNO
  • Dev A3:"b / 0-255" ==> LED Azul ==> Pino 9 UNO

No caso de controles deslizantes, antes do valor dos dados PWM (0 a 255), um caractere é enviado ao Arduino para informá-lo que um comando de “controle deslizante” está chegando.

No vídeo abaixo, uma demonstração da parte acima do programa (Botões e Slider):

Abaixo do Código Arduino completo:
FA44NBUIL8LGGAY.ino





Etapa 5:controle os dispositivos IoT por comandos de voz


Para controle de dispositivos IoT, a voz é uma tendência hoje em dia. Obter esse tipo de controle usando Arduino / HC-06 / Android é extremamente simples. Dispositivos Android já possuem esse recurso de "fábrica". No aplicativo que desenvolvi, foi adicionado um botão que faz o Android "ouvir" um comando e enviá-lo em formato de texto para o Arduino. O código é responsável por "ler" a string que vem.

Eu adicionei alguns exemplos em meu código. Quando o Arduino recebe um comando "Conectar TV", por exemplo, o LED verde (correspondente ao dispositivo 3) acende (ao invés do LED, você poderia ter um relé que conectaria a TV).

Você deve alterar as strings que estão na parte Loop do código, com comandos em seu idioma. Usei o português que é a minha língua materna e foi mais fácil de administrar no Google devido ao sotaque diferente com o meu inglês. Você deve usar frases curtas ou apenas palavras. O importante é uma combinação perfeita entre o que você escreveu e o que o aplicativo de reconhecimento de voz do Google retorna.

Aqui você pode encontrar um link para o arquivo .aia que pode ser executado diretamente no MIT AppInventor2. No vídeo abaixo, uma pequena demonstração do comando de voz:





Etapa 6:Conclusão


Bem, acredito que com este tutorial, é possível perceber o enorme potencial de controlar "coisas" usando BT / Android / Arduino. Como sempre, espero que este projeto possa ajudar outras pessoas a encontrarem seu caminho no emocionante mundo da eletrônica. , robótica e IoT! Para mais projetos, visite meu blog:MJRoBot.org

Saludos do sul do mundo!

Vejo vocês no meu próximo tutorial!

Obrigada

Marcelo

Código

  • Snippet de código # 1
  • Snippet de código # 2
  • Snippet de código # 3
Snippet de código # 1 Texto simples
 #include  SoftwareSerial BT (10, 11); // RX, TXString command =""; // Armazena a resposta do bluetooth devicevoid setup () {Serial.begin (9600); Serial.println ("Comandos do tipo AT"); BT.begin (9600); // HC-06 Normalmente taxa de transmissão padrão} 
Snippet de código # 2 Texto simples
 void loop () {if (BT.available ()) // recebe dados se disponíveis. {while (BT.available ()) // "continuar recebendo". {atraso (10); // Atraso adicionado para tornar a coisa estável char c =BT.read (); // Conduzir o comando de leitura serial + =c; // Construir a string. } Serial.println (comando); comando =""; // Sem repetições} if (Serial.available ()) {delay (10); BT.write (Serial.read ()); }} 
Snippet de código # 3 Texto simples
 dev1ondev1offdev2ondev2offdev3ondev3offdev4ondev4off 

Processo de manufatura

  1. Robô Raspberry Pi controlado por Bluetooth
  2. Programação da série Atmel AT89 via Arduino
  3. Controle remoto universal usando Arduino, 1Sheeld e Android
  4. Brinquedo controlado pelo Android usando Raspberry Motor Shield
  5. Arduino com Bluetooth para controlar um LED!
  6. Dispositivos Bluetooth controlados por voz com OK Google
  7. Arduino - Enviar temperatura para a Web via serial
  8. Controle de circuito sensível a movimento via Intel Curie
  9. LEDs piscando no Arduino do iOS e Android
  10. Arduino Uno + Dispositivo elétrico (Bulb) + Telefone Android