Arduino com bluetooth e APP Inventor – Controle seu Arduino pelo seu celular

Neste vídeo vamos controlar o Arduino com um módulo bluetooth através de um APP para android.

Apresentação: Júlio Vansan Gonçalves

Materiais:

  • Arduino pró mini
  • Módulo Ultrassom
  • LED RBG
  • Botão
  • Módulo Bluetooth
  • DHT11 – Temperatura e Umidade
  • Fios/Jumpers

PDF dos Blocos usados no APP

Códigos usados no vídeo

/* *************************
 *  Projeto Bacana - 11/2021
 *  www.projetobacana.com.br
 *  Júlio Vansan Gonçalves
 *  
 *  Funções
 *  Bluetooth - 
 *  Temperatura e umidade - 
 *  LED RGB - 
 *  Ultrassom - 
 *  1 Botão - 
 *  
 *  Portas
 *  D 00 Serial USB
 *  D 01 Serial USB
 *  D 02 
 *  D 03  
 *  D 04 
 *  D 05 Botão 
 *  D 06 Ultrasson Trig
 *  D 07 Ultrasson ECHO
 *  D 08 LED R
 *  D 09 LED G
 *  D 10 LED B
 *  D 11 BlueTooth
 *  D 12 BlueTooth
 *  D 13 
 *  A0 14 Sensor Temperatura e umidade    
 */


// ###########  Leitor de temperatura e umidade dht11
#include <dht.h>
#define dht_dpin A0 //Pino DATA do Sensor ligado na porta Analogica A1
dht DHT; //Inicializa o sensor
unsigned long tempoAtualTemp = millis();
unsigned long tempoAnteriorTemp =0;
int tempEstado=LOW;
int umidade=1.1;
int temperatura=1.1;

// ###########  Bluetooth sem usar as portas 0 e 1
#include <SoftwareSerial.h> 
SoftwareSerial mySerial(11, 12); // RX, TX 

int recebeBlue=0 ;
const int esperaAposEnvio=1000;


// ###########  Ultrassom

#include <Ultrasonic.h>

#define TRIGGER_PIN  6
#define ECHO_PIN     7

Ultrasonic ultrasonic(TRIGGER_PIN, ECHO_PIN);
  float distCM; // desiancia em Centrimetros
  long microsec ; // medir o tempo do envio

// ########## Geral

// ##### LED RGB 
const int ledR=8;
boolean estadoledR=false;
//int estadobtledRAnterior=0;

const int ledG=9;
boolean estadoledG=false;
//int estadobtledGAnterior=0;

const int ledB=10;
boolean estadoledB=false;
//int estadobtledBAnterior=0;

boolean estadoLedTodos=false;
//int estadoLedTodosAnterior=0;

// ##### Botao
const int botao=5;
boolean estadoBotao=false;
//int estadobotaoAnterior=0;
int estadobotao=0;


void setup(){  
  Serial.begin(9600); 
  mySerial.begin(9600);  
  pinMode(botao,INPUT_PULLUP); 
  pinMode(ledR,OUTPUT); 
  pinMode(ledG,OUTPUT); 
  pinMode(ledB,OUTPUT); 
 
  delay(1000);
  
  Serial.println("Iniciando  . . . ");  
  randomSeed(analogRead(4));   
  estadobotao=digitalRead(botao);
  } 
    
void loop(){  
   
// ##### Leitura Bluetooth  
  if(mySerial.available())  
  {  
    recebeBlue=mySerial.read();  
    Serial.print("Valor Recebido por Bluetooth =  ");
    Serial.println(char(recebeBlue));
    
   if (recebeBlue=='R') 
      acionaLedR();
    
    if (recebeBlue=='G') 
       acionaLedG();

    if (recebeBlue=='B') 
       acionaLedB();

    if (recebeBlue=='T') 
       acionaTodos();

    if (recebeBlue=='S') 
        enviaStatus();  // Envia Status geral
      
  } // termina leitura Bluetooth 

// ##### Leitura Botões

estadobotao=digitalRead(botao);
delay(50);
 if (estadobotao==!HIGH){
    Serial.println("  Botão Presionado !  ");
        acionaBotao();
} // fim botão Manual pressionado




// ################  Temperatura 

 tempoAtualTemp = millis();

if (tempoAtualTemp-tempoAnteriorTemp>2000) {
    tempoAnteriorTemp=tempoAtualTemp;

    DHT.read11(dht_dpin); //Lê as informações do sensor
      umidade=DHT.humidity;
      temperatura=DHT.temperature;
     //Serial.println(temperatura);
     //Serial.println(umidade);
     if (tempEstado==LOW){  //IF para alternar as informações enviadas entre umid e Temp
            tempEstado=HIGH;
     
            String tempe="tempe=" + String(temperatura)+"=";
            Serial.println(tempe);
           mySerial.print(tempe); // mySerial.write(DHT.temperature);
           delay(esperaAposEnvio);
        }else {
           tempEstado=LOW;
           String umida="umida=" + String(umidade)+"=";
           Serial.println(umida);
           mySerial.print(umida); // mySerial.write(DHT.humidity); 
           delay(esperaAposEnvio);                      
        } //else
} // if do envio de temperatura

// ################  Temperatura 

  microsec = ultrasonic.timing();

  distCM = ultrasonic.convert(microsec, Ultrasonic::CM);
 // Serial.print("Distancia em CM: ");
 // Serial.print(distCM);

  String distancia="dist=" + String(distCM)+"=";
  Serial.println(distancia);
  mySerial.print(distancia); // 
  delay(esperaAposEnvio);



  

} // Fim programa

void enviaStatus(){
  
  delay(esperaAposEnvio);
           
  
  if (estadoledR){
        mySerial.print("LEDR=LIG");
        delay(esperaAposEnvio);
    }
    else{
        mySerial.print("LEDR=DES");
        delay(esperaAposEnvio);
    }
 
      if (estadoledG){
          mySerial.print("LEDG=LIG");
          delay(esperaAposEnvio);
      }
      else{
          mySerial.print("LEDG=DES");
          delay(esperaAposEnvio);
      }

       if (estadoledB){
            mySerial.print("LEDB=LIG");
            delay(esperaAposEnvio);
        }
        else{
            mySerial.print("LEDB=DES");
            delay(esperaAposEnvio);
        }

      
      if (estadobotao==!HIGH){
          mySerial.print("BOTAO=LIG");
          delay(esperaAposEnvio);
      }
      else{
          mySerial.print("BOTAO=DES");
          delay(esperaAposEnvio);
      }

     
} // fim envia status


void acionaLedR(){

    if (estadoledR){
        digitalWrite(ledR,LOW);
        estadoledR=false;
        mySerial.print("LEDR=DES");
        delay(esperaAposEnvio);
    }
    else{
      digitalWrite(ledR,HIGH);
        estadoledR=true;
        mySerial.print("LEDR=LIG");
        delay(esperaAposEnvio);
    }
   } //fim aciona led R


void acionaLedG(){

    if (estadoledG){
        digitalWrite(ledG,LOW);
        estadoledG=false;
        mySerial.print("LEDG=DES");
        delay(esperaAposEnvio);
    }
    else{
      digitalWrite(ledG,HIGH);
        estadoledG=true;
        mySerial.print("LEDG=LIG");
        delay(esperaAposEnvio);
    }
   } //fim aciona led G

   void acionaLedB(){

    if (estadoledB){
        digitalWrite(ledB,LOW);
        estadoledB=false;
        mySerial.print("LEDB=DES");
        delay(esperaAposEnvio);
    }
    else{
      digitalWrite(ledB,HIGH);
        estadoledB=true;
        mySerial.print("LEDB=LIG");
        delay(esperaAposEnvio);
    }
   } //fim aciona led B


  void acionaTodos(){

    if (estadoLedTodos){
        digitalWrite(ledR,LOW); estadoledR=false;
        digitalWrite(ledG,LOW); estadoledG=false;
        digitalWrite(ledB,LOW); estadoledB=false;
        estadoLedTodos=false;
        mySerial.print("LEDT=DES"); delay(esperaAposEnvio);
          
    }
    else{
        digitalWrite(ledR,HIGH); estadoledR=true;
        digitalWrite(ledG,HIGH); estadoledG=true;
        digitalWrite(ledB,HIGH); estadoledB=true;
        estadoLedTodos=true;
        mySerial.print("LEDT=LIG"); delay(esperaAposEnvio);
        
    }
   } //fim aciona TODOS

   

 
 void acionaBotao(){
     
      Serial.print("BOTAO=LIG=");
      mySerial.print("BOTAO=LIG=");
      delay(esperaAposEnvio);
      
      while (estadobotao==!HIGH){ 
          digitalWrite(ledR,random(0,2)); 
          digitalWrite(ledG,random(0,2)); 
          digitalWrite(ledB,random(0,2)); 
          delay(100);
          estadobotao=digitalRead(botao);
      
      }//efeitos

        digitalWrite(ledR,LOW); 
        digitalWrite(ledG,LOW); 
        digitalWrite(ledB,LOW); 


      Serial.print("BOTAO=DES=");
      mySerial.print("BOTAO=DES=");
      delay(esperaAposEnvio);   
      mySerial.print("LEDT=DES"); delay(esperaAposEnvio);
   
      
   } //fim aciona manual

#APPInventor #Bluetooth #Android #APP #DIY #maker #microcontrolador #façavocemesmo #tcc #sugestãoTCC #Projeto #arduino

Curta, compartilhe e inscreva-se para ficar atualizado com os nossos conteúdos!
Para saber mais sobre o Canal Projeto Bacana:
E-mail: contato@projetobacana.com.br
Site: https://www.projetobacana.com.br/
Facebook: https://www.facebook.com/projetobacana.com.br
Instagram: https://www.instagram.com/projetobacana.com.br/
Youtube: https://www.youtube.com/channel/UC0e1bfaL0-gnAP2KQA5vxqQ