casa domótica app bluetooth – Itinerario aprendizaje proyecto 18

Nuestro Itinerario de aprendizaje maker esta desarrollado para aprender todos los fundamentos y un poco más acerca de electrónica y programación.

Si completas el itinerario serás capaz de crear casi cualquier proyecto que imagines. En cada proyecto se introducen nuevos conceptos, de modo que aprenderás haciendo o creando de una manera amena y divertida.

Te mostramos como controlar tu placa 4in1 desde tu dispositivo andorio via bluetooth. Crea una casa domótica y contrólala desde una App.

Project 18
Smart Home

Control your board with your smartphone using a bluetooth connection. Cool!

BEFORE TO START

DIFFICULTY LEVEL: Advanced
DURATION OF THE ACTIVITY: 120 min.

MATERIALS:
4in1 board
Battery holder & wires
Battery holder & wires
Battery holder & wires
Battery holder & wires
Battery holder & wires
Battery holder & wires

1 - Build&Code 4in1 board
1 - Android smartphone or tablet
2 - Monochromatic Led
1 - PIR sensor module
1 - Button

1 - Buzzer
1 - Servomotor
1 - LDR module
1 - Humidity sensor
Battery holder, USB cable and wires.

18 - Bluetooth

The bluetooth module included in your 4in1 board is used to create a wireless serial comunication between the board and smartphone. You will need to code your board so it responds to messages sent by smartphone, and create an APP so your smartphone can send the message needed in your board.

You can define your own protocol. The protocol defines the rules, syntax, semantics and synchronization of communication and possible error recovery methods.

You will learn to use a third party APP to control your devices according messags received, and also to create your own APP easily using APPInventor

18 - Circuit

We can use bluetooth in all projects done with the 4in1 board, so it's included. We can design an App to control any output, and read through our smartphone or tablet any input.

Combinations are endless!

Connect components to 4in1 board to make next exercices:

  1. DIO2: External LED
  2. DIO4:Internal LED
  3. DIO6: Button
  4. DIO8: PIR Sensor
  5. DIO 10: Buzzer
  6. DIO 12: Servomotor
  1. A0: LDR Sensor
  2. A1: Humidity sensor
18.1 - Turn on LED with mobile APP

We code in Arduino IDE the 4in1 board to be able to receive bluetooth commands via serial port. Not possible to use block programming.

Arduino Coding
//PROGRAMA PARA EL CONTROL DE UNA LÁMPARA CON BLUETOOTH
//Cambio de nombre dirección Bluetooth 4in1
char nombre[10] = "4in1_ACADE"; //El nuevo nombre del modulo Bluetooth
char password[10] = "0000"; //El nuevo password del modulo Bluetooth 
char baud = '4'; //4 = 9600 baud

//Variables programa Bluetooth y LED
char data = 0; //Variable de lectura Bluetooth
int PLED = 5; //Puerto de conexión del LED

void setup() {
  Serial.begin(9600); //Abre puerto serial a 9600 bps

  pinMode(13, OUTPUT); //LED placa como salida 
  digitalWrite(13, LOW); //LED placa apagado

  Serial.print("AT"); //Iniciar la configuración
  delay(1000); //Espera 1000 mseg (1 segundo)
   
  Serial.print("AT+NAME"); Serial.print(nombre); //Cambiar el nombre
  delay(1000);
   
  Serial.print("AT+PIN"); Serial.print(password); //Cambiar contrasena
  delay(1000);   
   
  Serial.print("AT+BAUD"); Serial.print(baud); //Cambiar baudios
  delay(1000);

  digitalWrite(13, HIGH); //LED placa encendido
  delay(3000);
  digitalWrite(13, LOW); 

  pinMode (PLED, OUTPUT); //LED como salida 
}
void loop() {

// LECTURA DE DATOS POR BLUETOOTH
   
   if (Serial.available() > 0) 
  {
   data = Serial.read(); //Guarda en la variable “data” el dato recibido por Bluetooth

    switch (data){

      case 'A': //Botón ON
      
      digitalWrite(PLED, HIGH);
    
      break;

      case 'B': //Botón OFF
      
      digitalWrite(PLED, LOW);
    
      break;
     }
   }
}

Once the code has been uploaded, you need to change the switch to BLT position.

18.1 - Turn on LED with mobile APP

4in1 board is ready. We need install the program in your Android device. First we willl use our designed app, later we will show how you can make your own app. Download and install the Ebotics_LEDcontrol.apk file application. You may have to grant permissions in your Android device.

Turn on Bluetooth in your device. In Bluetooth settings select “Search”. Select the available device that corresponds to the name of the board you have written in the programming (failing “4in1_A01”). Also “HC-06” may appear. Type the password of the device we want to link ( “0000” or "1234" by default).

Open the installed application and press the “Connect” button. Select the device with the name corresponding to the board.

You can use the App buttons to turn the LED on and off. You can also press the microphone icon to control the LED by voice. As configured in the App you can say “turn light on” or “turn light off” to turn the LED on and off

18.2 - App Inventor

We used App Inventor platform to create previous APP. Download Ebotics_LEDcontrol.aia to modify the appearance of the App, notification messages, voice commands, etc. You must import it from the AppInventor edition website http://ai2.appinventor.mit.edu If is the first time you use it, you will need to register as user there.

Visual Design
Blocks Coding

Here you have Getting started with App Inventor page. Review the code of our app and you will see how we send "A" or "B" character to actuate over 4in1 board .

Final project - Smart Home

Example how to create a smart home with our products. Automatic doors, remote lighting...

Arduino code
//PROGRAMA PARA EL FUNCIONAMIENTO Y CONTROL DE UNA CASA DOMÓTICA

int PLED_i = 4; // LED INTERIOR CONECTADO AL PUERTO DIGITAL 4
int PLDR = A0; // SENSOR DE LUZ (LDR) CONECTADO AL PUERTO ANALÓGICO A0
int ValueLDR; // VARIABLE QUE ALMACENARÁ VALORES DEL SENSOR DE LUZ (LDR)
int PIR = 8, ValuePIR; // SENSOR DE MOVIMIENTO PIR CONECTADO AL PUERTO DIGITAL 8; VARIABLE DE LECTURA
int PLED_e = 2; // LED EXTERIOR CONECTADO AL PUERTO DIGITAL 2
byte BUZZERpin = 10; // ZUMBADOR CONECTADO AL PUERTO DIGITAL 10
int PButton = 6, ValueButton; // BOTÓN CONECTADO AL PUERTO DIGITAL 6; VARIABLE DE LECTURA DEL BOTÓN

// LIBRERIA SERVOMOTOR
#include 
Servo motor; // DECLARAR SERVOMOTOR
int PHUM = A1; // SENSOR DE HUMEDAD CONECTADO AL PUERTO ANALÓGICO A1
int ValueHUM; // VARIABLE QUE ALMACENARÁ VALORES DEL SENSOR DE HUMEDAD

char data = 0; // VARIABLE DE LECTURA BLUETOOTH;

void setup() {
  // put your setup code here, to run once:
Serial.begin(9600); // ABRE EL PUERTO SERIAL A 9600 bps

  // CONFIGURACIÓN LED INTERIOR
  pinMode (PLED_i, OUTPUT); // LED COMO SEÑAL DE SALIDA

 // CONFIGURACIÓN DEL SENSOR DE MOVIMIENTO PIR
  pinMode (PIR, INPUT); // PIR COMO SEÑAL DE ENTRADA
  
  // CONFIGURACIÓN DEL LED EXTERIOR
  pinMode (PLED_e, OUTPUT); // LED COMO SEÑAL DE SALIDA
  
  // CONFIGURACIÓN DEL ZUMBADOR
  pinMode(BUZZERpin, OUTPUT); // ZUMBADOR COMO SEÑAL DE SALIDA

 // CONFIGURACIÓN DEL BOTÓN
  pinMode (PButton, INPUT); // BOTÓN COMO SEÑAL DE ENTRADA
  
  // CONFIGURACIÓN DEL SERVOMOTOR
  motor.attach (12);     
  motor.write (170); 
}


void LUZ(){
  ValueLDR = analogRead(PLDR);
  if(ValueLDR < 300) {
   digitalWrite(PLED_i, HIGH);
  }
  else
  {
   digitalWrite(PLED_i, LOW);
  }
}


void ALARMA(){
 ValuePIR = digitalRead(PIR); // ASIGNACIÓN A LA VARIABLE LA LECTURA DEL PIR 
  if(ValuePIR == 1) { // SI DETECTA MOVIMIENTO

    Serial.println(" INTRUSO DETECTADO ");

    for(int i=0; i<6; ++i) {
    digitalWrite(PLED_e, HIGH); // ENCENDIDO DE LA LUZ EXTERIOR
    tone(BUZZERpin,100, 500); // SONIDO ON (VAR, FRECUENCIA, DURACIÓN 1/2 DE SEGUNDO (1 SEG. = 1000))
    delay(750);
    digitalWrite(PLED_e, LOW);
    delay(500); // ESPERA 1/2 SEG.
    }
  }
}


void PUERTA(){
   ValueButton = digitalRead(PButton); // ASIGNACIÓN A LA VARIABLE LA LECTURA DEL ESTADO DEL BOTÓN 
  if(ValueButton == HIGH) { // SI EL BOTÓN ESTÄ PULSADO
    for(int i=0; i<2; ++i) {
    tone(BUZZERpin,900, 125); // SONIDO ON (VAR, FRECUENCIA, DURACIÓN 1/8 DE SEGUNDO (1 SEG. = 1000))
    delay(250); //ESPERA 1/4 SEG.
    }
    digitalWrite(PLED_e, HIGH);
    motor.write (90); 
    delay (5000);
    for(int i=0; i<3; ++i){
    tone(BUZZERpin,200, 250); // SONIDO ON (VAR, FRECUENCIA, DURACIÓN 1/4 DE SEGUNDO (1 SEG. = 1000))
    delay(1000); // ESPERA 1 SEG.
    }
    digitalWrite(PLED_e, LOW);
    motor.write (170); 
  }
}


void LLUVIA(){

 ValueHUM = analogRead(PHUM);

  int degree = motor.read(); // DECLARAR LA VARIABLE degree Y ASIGNAR LA INSTRUCCIÓN DE LECTURA DE GRADOS DEL SERVOMOTOR motor.read()
 
   if((ValueHUM > 500) && (degree == 90)) {
 
    Serial.println("ALERTA LLUVIA: CERRANDO PUERTA");

    for(int i=0; i<4; ++i) {
    digitalWrite(PLED_e, HIGH); // ENCENDIDO DE LA LUZ EXTERIOR
    tone(BUZZERpin,1000, 1000); // SONIDO ON (VAR, FRECUENCIA, DURACIÓN 1 SEGUNDO (1 SEG. = 1000))
    delay(1000);
    digitalWrite(PLED_e, LOW);
    delay(1000); // ESPERA 1 SEG.
    }
    
    motor.write (170); // LA PUERTA SE CIERRA SI ESTABA ABIERTA
  }
}


void CONTROL(){
 // LECTURA DE DATOS POR BLUETOOTH
   
 if (Serial.available() > 0) {
    
    data = Serial.read(); // GUARDAR EN LA VARIABLE data EL DATO RECIBIDO POR BLUETOOTH
        
   switch (data){


    case 'A':      // ABRIR PUERTA
      
    for(int i=0; i<2; ++i) {
    tone(BUZZERpin,900, 125); // SONIDO ON (VAR, FRECUENCIA, DURACIÓN 1/8 DE SEGUNDO (1 SEG. = 1000))
    delay(250); //ESPERA 1/4 SEG.
    }
  
    motor.write (90); // PUERTA SE ABRE
    
    Serial.println(" PUERTA ABIERTA ");
    
    break;


    case 'B':      // CERRAR PUERTA
      
    for(int i=0; i<3; ++i) {  // AVISO CIERRE PUERTA
    tone(BUZZERpin,200, 250); // SONIDO ON (VAR, FRECUENCIA, DURACIÓN 1/4 DE SEGUNDO (1 SEG. = 1000))
    delay(1000); // ESPERA 1 SEG.
    }
    
    motor.write (170); // PUERTA SE CIERRA

    Serial.println(" PUERTA CERRADA ");
    
    break;


    case 'C':      // ENCENDER LUZ EXTERIOR

    digitalWrite(PLED_e, HIGH);
    
    Serial.println(" LUZ EXTERIOR ON ");

    break;   


    case 'D':      // APAGAR LUZ EXTERIOR

    digitalWrite(PLED_e, LOW);
    
    Serial.println(" LUZ EXTERIOR OFF ");
    
    break; 


    case 'E':      // SONIDO ALARMA

    Serial.println(" SONIDO ALARMA ");
    
    for(int i=0; i<6; ++i) {
    tone(BUZZERpin,100, 500); // SONIDO ON (VAR, FRECUENCIA, DURACIÓN 1/2 DE SEGUNDO (1 SEG. = 1000))
    delay(750);
    }
        
    break;


    case 'F':      // LUZ INTERIOR - MODO MANUAL (ON) 

    digitalWrite(PLED_i, HIGH);
    
    Serial.println(" LUZ INTERIOR ON ");

    break;


    case 'G':      // LUZ INTERIOR - MODO MANUAL (ON) 

    digitalWrite(PLED_i, LOW);
    
    Serial.println(" LUZ INTERIOR OFF ");

    break;   


    case 'H':      // MOSTRAR VALOR LUZ AMBIENTAL EN LA APP 
    
    Serial.print(" LUZ AMBIENTAL: ");
    Serial.println(ValueLDR);

    break;   


    case 'I':      // MOSTRAR VALOR HUMEDAD EN LA APP 
    
    Serial.print(" HUMEDAD: ");
    Serial.println(ValueHUM);

    break;   
        
   }
 }
}


void loop() {
  // put your main code here, to run repeatedly:
 
  LLUVIA();
  ALARMA();
  PUERTA();
  CONTROL();
  
  if ((data != 'F') && (data != 'G')){ //SI NO SE ENVÍA SEÑAL PARA ENCENDER Y APAGAR LA LUZ
  LUZ();
  }

}
Final project - Smart Home

Download aia and apk files to open with AppInventor or install it directly in your device.

Expand this program adding sensors like:

  1. PIR : Intruder detector
  2. Rain sensor
  3. Microphone
  4. ....
Unleash your creativity
FINISHED
previous arrow
next arrow
Slider

El Mega Maker Kit te ofrece el todo el material que necesitas para completar el itinerario, pero si dispones de otro kit, también puedes realizar algunos proyectos. Te animamos a que los revises todos, o que compres los componentes que necesites. Puedes verificar que actividades puedes realizar en nuestra página del Itinerario de aprendizaje.

0 0

0