viernes, 7 de junio de 2019

Domotica + Arduino + Bluetooth + Apagador escalera y Relay Facil

Hola amigos hoy les traigo este pequeño proyecto con el cual podremos controlar de manera remota y de manera manual algun foco de nuestra casa, bueno empecemos. para esto se utilizara un interruptor  de 3 vías, que junto con otro de iguales características se utiliza para controlar una lámpara desde 2 lugares distintos según lo que se requiera. como en el caso de las habitaciones con escalera que se requiere que se iluminen los escalones indistintamente de donde nos  encontremos a continuación veremos un diagrama de dos apagadores en escalera típico con el que se controla el encendido y apagado de un foco. 


Conexión en escalera

Bien explicando lo básico de un apagador escalera ahora imaginemos que controlamos algún foco o aparato del hogar mediante algún sistema electronico que este conectado a internet o bluetooth que en nuestro caso es un arduino, imaginemos que nuestra tarjeta falla, se quema o no responde esto que nos provocaria ? claro que no podamos encender nunca mas nuestro foco, pero esto lo podemos solucionar agregando un relevador y un apagador escalera veamos el diagrama de un relevador típico usado por un arduino 
Esquematico Relay


Podemos observar el esquemático del relevador tenemos 5 pines  los cueles 2 son las bobinas, 1 común, NA y NC si comparamos el esquematice con el del apagador escalera es lo mismo entonces con esto ya podremos controlar el encendido del foco de manera remota y de manera manual, a continuación les muestro el diagrama del circuito 


En el proyecto utilizamos el siguiente material:
  • 1 Arduino Uno
  • 1 Modulo Bluetooth hc-05
  • 1 Relevador 5V 10A
  • 1 Apagador escalera 

Codigo 


El código es muy sencillo lo que hacemos es recibir un byte por el puerto serial del arduino y se compara para determinar una acción, podemos enviar este dato desde cualquier dispositivo que tenga bluetooth mediante alguna aplicación móvil, pc , etc.

byte data;
void setup() {
  pinMode(8,OUTPUT);
  Serial.begin(9600);
}

void loop() {
  if(Serial.available()>0){
    data=Serial.read();
  }

  if (data=='a'){
    digitalWrite(8,HIGH);
  }
 if (data=='b'){
    digitalWrite(8,LOW);
  }
}

Cualquier duda no duden en escribirme 

Arduino + Reloj Digital (RTC Tiny - DS1307 )+LCD Encendido y Apagado De un Led Automaticamente

Hola Amigos mucha gente me a estado pidiendo el diagrama de este proyecto, a continuación muestro una imagen del diagrama
Diagrama de Conexiones RTC Tyni - DS1307

Para este proyecto se utilizo :
  • 1 Arduino nano
  • 1 LCD 16x2
  • 1 Led 
  • 1 Potenciometro de 10K para ajustar el contraste
  • 1 Resistencia de 220 Ohm
  • 1 Modulo RTC DS1307
Una vez armado el circuito descargaremos los archivos del programa y copearemos la carpeta RTClib a C:\Program Files (x86)\Arduino\libraries.

Código


#include <Wire.h> 
#include "RTClib.h"
#include <LiquidCrystal.h>
RTC_DS1307 RTC;
LiquidCrystal lcd(7, 8, 9, 10, 11 , 12);
int hora=0; // Variable donde se guardara la hora
int minutos=0; // Variable donde se guardaran los minutos
int segundos=0; // Variable donde se guardaran los segundos
int salida=3; // Salida donde se conectara el relevador
void setup () {
  //Inicializamos el puerto serie, wire y el modulo RTC
    Serial.begin(9600); // Se inicia la comunicacion Serial a 9600 baud
    Wire.begin(); // Se inicia la libreria Wire
    RTC.begin(); // Iniciamos la libreria del RTC
    //Si quitamos el comentario de la linea siguiente, se ajusta la hora y la fecha con la del ordenador
    RTC.adjust(DateTime(__DATE__, __TIME__));
        
  lcd.begin(16, 2);
  lcd.setCursor(0,0);
  lcd.write("Control Caldera Noel & Erick");
  lcd.setCursor(0,1);
  lcd.write(" Por Noel & Erick");
  delay(10000);
  lcd.clear();
  pinMode(salida,OUTPUT);
  
  }
  
void loop () {
    DateTime now = RTC.now();
  hora=(now.hour(),DEC);
  minutos=(now.minute(),DEC);
  segundos=(now.second(),DEC);
    //Imprimimos el dia
    Serial.print(now.day(), DEC);
    Serial.print('/');
    //Imprimimos el mes
    Serial.print(now.month(), DEC);
    Serial.print('/');
    //Imprimimos el año
    Serial.print(now.year(), DEC);
    Serial.print(' ');
    //Imprimimos la hora
    Serial.print(now.hour(), DEC);
    Serial.print(':');
    //Imprimimos los minutos
    Serial.print(now.minute(), DEC);
    Serial.print(':');
    //Imprimimos los segundos
    Serial.print(now.second(), DEC);
    Serial.println();
   
  lcd.clear();   
  lcd.setCursor(0,1);
  lcd.print(now.hour(), DEC);
  lcd.setCursor(2,1);
  lcd.print(":");
  lcd.setCursor(3,1);
  lcd.print(now.minute(), DEC);
  lcd.setCursor(5,1);
  lcd.print(":");
  lcd.setCursor(6,1);
  lcd.print(now.second(), DEC);
  lcd.setCursor(5,0);
  lcd.print(now.day(), DEC);
  lcd.setCursor(7,0);
  lcd.print("/");
  lcd.setCursor(8,0);
  lcd.print(now.month(), DEC);
  lcd.setCursor(10,0);
  lcd.print("/");
  lcd.setCursor(11,0);
  lcd.print(now.year(), DEC);
  
  if (now.hour()== 23 && now.minute() ==10)
  {
  lcd.clear();
  lcd.setCursor(2,0);
  lcd.print("Encendido");
  digitalWrite(salida,HIGH);
  }
   if (now.hour()== 23 && now.minute() ==12)
  {
  lcd.clear();
  lcd.setCursor(2,0);
  lcd.print("Apagado");
  digitalWrite(salida,LOW);
  }
  delay(1000);
  //Comprobamos la hora y la enviamos por el puerto serie cada 1s
       
}

Les dejo los links de descarga de los archivos

Link de descarga incluye la librería necesaria -- http://adf.ly/1ABCgY Diagrama de conexiones-- http://adf.ly/1SuCQO