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