martes, 27 de septiembre de 2016

Entradas Digitales. Conexión de Pulsadores a arduino.


Muy buenas ;) En entradas anteriores vimos como encender y apagar aparatos desde el ordenador. Sin embargo, cuando tu entras a una habitación lo mas normal es que para encender la luz, por ejemplo, le des al interruptor o conmutador. Bien aunque son 2 elementos muy prácticos en una instalación eléctrica normal son muy limitados en una instalación domótica.. ya que solo tienen 2 posiciones: On - Off. Por eso yo siempre prefiero el Pulsador.. que a diferencia de estos dos tiene la particularidad de que mientras esta pulsado esta en On y cuando lo sueltas esta en Off. Que ventaja tiene esto?? pues a simple vista ninguna, debido a que para que la luz este encendida tendremos que estar apretando constantemente el pulsador, ya que al soltarlo se va a apagar.

Ahora imaginemos que a través de programación creamos un programa que detecte cada vez que el pulsador a sido apretado y nos guarde la información en una memoria. entonces la cosa ya cambia.. se abre un mundo lleno de posibilidades. solo por poner un ejemplo:

- apretamos una vez y encendemos la luz, volvemos a apretar y la luz se apaga.

- apretamos una vez y encendemos una luz, volvemos a apretar y se enciende el ventilador, volvemos a apretar y nos lo apaga todo.

- apretamos menos de 2 segundos y se enciende una luz, apretamos mas de 2 segundos y se enciende la calefacción.

Como vemos, con un interruptor solo podemos controlar un único elemento, con un único pulsador podemos controlar todos los elementos que queramos. ventajas?? donde??

Bien, hay 2 formas de conectar un pulsador a arduino, a través de una resistencia pull-up o a través de una resistencia pull-down. No os preocupéis si os habéis quedado con cara de locos sin entender nada ya que es electrónica pura y dura y no es mi intención daros la brasa con explicaciones teóricas. Así que solo conectarlo como os diré y os va a funcionar. Decir que las 2 formas de conexión son correctas pero en esta entrada me centrare a la conexión a través de la resistencia pull-up. Si alguien se anima a conectarlo de la otra forma va a tener que modificar la programación para que le funcione correctamente. (No es difícil, pero para alguien que no sabe programar puede dar lugar a dolores de cabeza serios). A continuación los esquemas.

Conexión pull-up

Conexión pull-down
A continuación os dejo el código de programación para que lo podáis subir a vuestro arduino y ver su funcionamiento. De momento os dejaré el ejemplo mas fácil que se trata de encender y apagar una luz mediante pulsaciones.

CÓDIGO DE PROGRAMACIÓN:

const int buttonPin = 2;  
const int ledPin = 13;    
int ledState = HIGH;      
int buttonState = LOW;          
int lastButtonState = LOW;
long lastDebounceTime = 0;
long debounceDelay = 50;  

void setup() {
  pinMode(buttonPin, INPUT);
  pinMode(ledPin, OUTPUT);
  digitalWrite(ledPin, ledState);
}

void loop() {
  int reading = digitalRead(buttonPin);
  if (reading != lastButtonState) {
    lastDebounceTime = millis();
  }
  if ((millis() - lastDebounceTime) > debounceDelay) {
    if (reading != buttonState) {
      buttonState = reading;
      if (buttonState == HIGH) {
        ledState = !ledState;
      }
    }
  }
  digitalWrite(ledPin, ledState);
  lastButtonState = reading;
}

El código no tiene ningún secreto, de hecho es uno de los ejemplos que trae el programa Arduino, mas adelante vamos a ver como modificar este código para darle mas funcionalidad y que se adapte mas a una instalación real. También recordar que para que la luz se encienda o apague esta deberá ir conectada a través de un rele conectando sus terminales al pin GND y Pin 13 de Arduino como vimos en una entrada del blog anterior.

PREGUNTA??

Que pasa si en vez de conectar el rele al Pin 13 quiero conectarlo al 12?? se puede??

- Claro que se puede, de hecho por ejemplo la placa "Arduino Uno" dispone del pin 0 al pin 13 para conectarle lo que quieras, aunque el pin 0 y 1 se recomienda utilizarlos para fines de transmisión rx - tx. Tan solo tendrás que modificar el código descrito arriba para que funcione de la siguiente manera:

En la linea de código const int ledPin = 13; deberás cambiar el 13 por un 12 y listo!! que fácil!! lo mismo si quieres conectar tu pulsador en otro pin que no sea el numero 2. cambias el valor de la linea de código const int buttonPin = 2; por el numero del pin al que lo quieras conectar.

Y POR ULTIMO...

Comentar que una instalación normal, dependiendo del país, los interruptores o conmutadores manejan voltajes en su interior de 220v por lo que el cableado suele ser de 1,5 mm para controlar el alumbrado. En caso de una instalación domotica hecha con Arduino los pulsadores se conectan a la placa y esta, es la que controla el encendido o el apagado. Debido a que esta placa maneja voltajes y intensidades muy inferiores nos permite reducir la sección del cableado a cable telefónico por ejemplo, reduciendo así el gasto económico de la instalación.  











miércoles, 25 de mayo de 2016

CONECTAR UN RELE A NUESTRA PLACA ARDUINO.

Debido que aun soy un novato y no se como funciona esto de los derechos de autor... me he tomado la libertad de dibujaros el esquema de conexión con paint xD. Muy poco profesional... lo se. 

Bueno al lío. En la entrada anterior vimos la forma de conectar un diodo led a nuestra placa y hacer que se encendiera y apagara desde nuestro ordenador. Al principio me lo flipé, pero luego me dije, vale funciona pero no hace nada útil. Tendría mas sentido si en vez de una simple bombilla pudiera encender una estufa, o un ventilador o porque no.. las luces de casa. El problema es que esta placa solo proporciona un voltaje de 5v y todos los electrodomésticos de la casa funcionan a 220v. (como veis le falta muchísimo voltaje). Pero para eso se inventaron los reles, para poder hacer funcionar algo que requiere mucho voltaje a partir de algo que te da poco. 

Hoy en dia.. en el año 2016, aun he ido a instalaciones de casas inteligentes y me he dado cuenta que algunos electricistas no han evolucionado, y cuando se ven con la necesidad de colocar un rele, aun optan por reles mecánicos. ( Funcionan muy bien pero ya están desfasados tecnológicamente). 

Ejemplo de rele mecánico.

La principal desventaja que en mi humilde opinión veo es que son ruidosos, los escuchas en todo momento cuando se activan o desactivan, lo que puede llegar a ser molesto, sobretodo de noche. 
Hoy en día, existe una variante y son los reles de estado solido. la diferencia es que no son mecánicos, sino electrónicos por lo que hacen lo mismo pero en silencio. 

Ejemplo de rele de estado solido.

Podemos utilizar cualquier rele?? obviamente no, el que manda aquí es sobretodo la potencia. Y para eso estudiamos matemáticas en el colegio.. hay una formula que relaciona el voltaje de nuestra casa con la potencia del electrodoméstico que es la siguiente: Potencia(W) = Intensidad(A) * Voltaje(V). 
Sabiendo la potencia y el voltaje podemos despejar la intensidad y con eso podemos comprar el rele deseado. por ejemplo si tenemos un ventilador de 700(w) de potencia conectado a 220(v) voltios... despejamos la intensidad y nos da... 3,18(A) amperios, así que tendremos que elegir un rele que aguante mas de 3,18 amperios, de lo contrario lo quemaríamos. 

Bueno después de un poco de teoría sobre el rele, vamos a la practica.. aquí tenéis la forma simplificada de conectar el rele a vuestra placa: 


Este rele es uno de los muchos modelos de estado solido que existen, como vemos tiene 4 terminales, numerados del 1 al 4. Este en concreto aguanta hasta 40(A) amperios soportando una carga de 8.800(W) vatios.. una burrada vamos. Al terminal 1 y 2 le conectaremos nuestra lampara, ventilador, o lo que queramos. El terminal 4 ira conectado al pin GND de nuestra placa y el terminal 3 al pin que tengamos configurado como salida, si seguimos el ejemplo de la entrada anterior lo conectaríamos al pin 13. Espero que os haya servido de ayuda y... nos vemos en la próxima entrada ;)



Primer proyecto. Encender una luz desde nuestro ordenador por cable usb

Muy buenas gente, en el anterior vídeo hicimos un pequeño programa para nuestra placa, que era capaz de saber que dato se le había mandado y en función del valor recibido enviar un mensaje u otro. En esta entrada vamos a ir un poco mas allá y modificando un poco el programa conseguiremos encender o apagar una luz desde nuestro ordenador.

El montaje físico de esta practica es realmente sencillo.  Los materiales que necesitaremos son los siguientes:


  1. Placa arduino.
  2. cable usb.
  3. diodo led (cualquier color).
Nota: en caso de querer encender una luz a 220v (una lampara de casa) necesitaremos tambien un modulo de relés para poder controlar una salida de alto voltaje a partir de los 5v que nos proporciona nuestra placa.

Nota2: mencionar que en la electrónica muchas veces hablaremos de polaridad, o positivo y negativo, PRESTANDOLE MÁXIMA ATENCIÓN, a la hora de su conexión.. ya que de ello dependerá su correcto funcionamiento. 


Diodo Led Verde
Modulo de 4 relés de estado solido.

El montaje físico es muy sencillo:
Vemos que el led tiene 2 patillas o terminales, una mas larga que la otra. El terminal mas largo corresponde al terminal positivo(+) y el corto al negativo(-). Dicho esto conectaremos el terminal positivo al pin 13 de nuestra placa arduino y el terminal negativo al pin GND de la placa que corresponde al pin 14 como se muestra en la siguiente imagen. Con esto ya tendremos el montaje listo.


El código de programación seria el siguiente: 

void setup() {
  Serial.begin(9600); // inicializamos la conexion serial.
  Serial.println("hola yo soy arduino."); // imprimimos en pantalla hola yo soy arduino.
  pinMode(13, OUTPUT); // configuramos el pin 13 como salida digital.
}

void loop() {
  while(Serial.available() > 0){ // mientras haya datos disponibles...
      char c = Serial.read(); // leemos los datos y los guardamos en formato caracter en una variable llamada c.
      if(c == '0'){ // si c = 0
          Serial.println("Luz apagada."); // imprime en pantalla luz apagada.
          digitalWrite(13, LOW); // mandamos 0v al pin 13.
        }else if(c == '1'){ // si c = 1
            Serial.println("Luz encendida."); // imprime en pantalla luz encendida.
            digitalWrite(13, HIGH); // mandamos 5v al pin 13.
          }else{ // sino ...
              Serial.println("Comando incorrecto.. por favor, introduzca 0 para apagar o 1 para encender."); // imprime este codigo.
            }
    }
}

Solo tenéis que copiar todo el código y cargarlo en vuestra placa a través del cable usb y estará listo para recibir ordenes desde vuestro ordenador como hicimos en la entrada del bloc anterior.  

Para los que les guste el tema de la programación hoy hemos aprendido 2 nuevas instrucciones:

  • pinMode(); Sirve para definir si lo que esta conectado a nuestra placa es una entrada o una salida. Entre paréntesis se le pasa como primer parámetro el pin que queremos configurar, y como segundo parámetro le decimos si va a ser una entrada "INPUT" o una salida "OUTPUT".

  • digitalWrite(); Con esta instrucción activamos o desactivamos el pin. Entre paréntesis le pasamos como primer parámetro el pin que queremos manipular, y como segundo parámetro le decimos si queremos activar el pin "HIGH" o desactivarlo "LOW".

Decir que nosotros hemos utilizado este pequeño programa para encender o apagar una luz, pero si nosotros en lugar de una luz conectamos un ventilador, un enchufe, una estufa, o cualquier cosa que queramos encender o apagar... también nos va a servir (Siempre y cuando lo hagamos a través de un rele).  Un placer gente y nos vemos en la próxima entrada :P

miércoles, 16 de septiembre de 2015

Primeros pasos con el software

Llegados a este punto ya debemos tener instalado el software Arduino en nuestro ordenador. Para que Arduino nos haga caso tenemos que escribirle lo que queremos que haga, pero hay que escribirlo con un lenguaje que el entienda, si no te mirara con cara de loco y no hará absolutamente nada.

IMPORTANTE!! : Si queréis probar todo lo que aquí se explica tendréis que gastaros un poco de dinero jajaja pero os aseguro que no os arrepentiréis. Como de momento no quiero hacer publicidad a ninguna tienda en especial os recomiendo poner en el buscador "Arduino" y seguro que os saldrá alguna tienda que venda estas placas que oscilan entre 10 y 60 € según el modelo elegido. Por su versatilidad para empezar recomiendo la placa "ARDUINO UNO" y adicionalmente comprar un cable usb para conectarla al ordenador.

Aprender el lenguaje de programación no debería ser demasiado difícil, ya que es muy intuitivo. Es mucho mas fácil que aprender alemán por ejemplo jaja. De todas formas para el que no le interese aprender a programar, basta que copie el código y funcionará perfectamente.

¿QUE APRENDEREMOS HOY?

1 - Vista general del software arduino.

2 - Partes principales de un programa arduino:
   - Void setup();
   - Void loop();

3 - Enviar y recibir mensajes de texto desde la placa arduino al software mediante puerto serie.

4 - Añadir comentarios de texto para hacer comprensible para los humanos el programa.

Os dejo unos enlaces a los vídeos de mi canal en youtube para que veáis como se hace.
nota: no puedo colgarlos directamente aquí porque pesan mas de 100 megas :(

https://youtu.be/MOdFb2KYV2M ( Parte 1)
https://youtu.be/sC3spP25MdA (Parte 2)


PALABRAS CLAVE APRENDIDAS EN ESTA ENTRADA:

Recordar que se deben escribir igual como las escribo. Aquí las mayúsculas y minúsculas SI importan. no es lo mismo Serial que serial ;) y muy importante al final de cada comando se le coloca un punto y coma.

- Serial.begin() : Este comando inicializa la comunicación serie. La velocidad de comunicación se coloca dentro de los paréntesis.

- Serial.print() : Este comando envía lo que esta dentro de los paréntesis a través del puerto serie.

- Serial.println() : Hace lo mismo que Serial.print() pero añadiendo un salto de linea al final de lo que haya en el interior del paréntesis.

- Serial.available() : Este comando mira si hay datos disponibles a recibir en el puerto serie y devuelve un valor entero de cuantos hay. 

- Serial.read() : Este comando lee los datos uno a uno que hayan por recibir en el puerto serie y devuelve el dato en formato código ASCII devolviendo un -1 cuando el puerto esta vacío.

- delay() : Este comando añade un retraso. El tiempo se coloca dentro de los paréntesis en milisegundos. 1000 milisegundos equivale a 1 segundo.


miércoles, 9 de septiembre de 2015

INTRODUCCIÓN

Mucha gente piensa que tener una casa inteligente es algo solo para unos pocos. Que aun es una tecnología muy nueva y muy cara. Y en parte no les falta razón. Hoy por hoy, la domotica comercial aunque funcione muy bien y estéticamente sea una preciosidad, para un usuario de clase media esta por las nubes.. yo mismo un día pedí presupuesto y casi me sale espuma por la boca.

Así que me pregunte: Tan difícil sería hacer una casa inteligente yo mismo?? y en realidad es mucho mas fácil de lo que imaginaba. Ese día descubrí Arduino.. y me enamore de ella. 

Placa ARDUINO UNO R3
Se trata de una placa re-programable que dispone de varias entradas a las que puedes conectarle todo tipo de sensores y estos mediante un código de programación activan o desactivan las salidas a las que se pueden conectar luces, motores, etc..

Debido a su facilidad de programación y montaje este blog ira enfocado a ella, veremos como podemos darle inteligencia a una casa y hacerla mas segura.

¿OBJETIVO DE ESTE BLOG?

1 - Control de luces de la casa desde diferentes sensores (Interruptores, pulsadores, mandos, ordenador, etc. ).

2 - Control de acceso (Teclados, huella dactilar, etc. ).

3 - Seguridad (Control de alarmas, cámaras de vídeo, etc. ).

4 - Eficiencia energética (Control de climatización, estación meteorológica, riego automático, etc. ).

Así que hoy os enseñare como descargaros el programa para programar esta placa desde cualquier pc y poder empezar a darle vida.

Lo primero es ir a esta dirección: https://www.arduino.cc/en/Main/Software. Y deberia apareceros una pagina parecida a esta:




Como veis en la parte derecha hay diferentes instaladores ( para windows, mac y linux). Escogéis vuestro sistema operativo y le dais clic. entonces os aparecerá esta otra pantalla:


Bueno.. aquí si queréis podéis hacer una donación a arduino o simplemente dais clic en JUST DOWNLOAD y empezará a descargarse el programa. Una vez finalizado es lo de siempre... aceptar por todo, decir que si y ya esta. Una vez terminada la instalación os deberá aparecer un icono en el escritorio parecido a este:


Nada gente!! Nos vemos en futuras entradas donde os enseñare como programar y conectar esta placa ;)