Casas inteligentes con Arduino

Publicado por Loli Diéguez en

Arduino está de moda por controlar los sistemas de una casa inteligente o smart house.

Eso se debe principalmente a que Arduino es fácil de usar, hace que el control de entradas y salidas o sensores sea mucho más simple que nunca.

Ahora vamos a ver las dos funciones de Arduino para leer entradas y una función de Arduino para crear salidas. 

Las funciones de Arduino que aprenderás a continuación son tan fundamentales para utilizar las potentes funciones de un microcontrolador, que te recomiendo que memorices su uso.

Arduino y E / S

El primer conjunto de funciones de Arduino que te enseraremos son funciones para leer entradas. Pero antes de empezar quiero asegúrarme de tener una base preparada para comprender Arduino.

Arduino son realmente tres cosas en uno:

  1. Hardware 
  2. Software que utiliza para programar el hardware (el IDE de Arduino),
  3. Y es el ecosistema más amplio de bibliotecas de códigos disponible para usar fácilmente cosas como módulos bluetooth y wifi, y muchos tipos diferentes de sensores y motores.

Vamos a centrarnos en el número 1: el hardware. Cada placa Arduino utiliza un microcontrolador. Y como mencioné antes, un microcontrolador es una placa súper barata y muy pequeña.

Los microcontroladores están magníficamente diseñados para leer entradas y salidas ya sean analogicas o digitales.

El universo de Arduino se centra en esta interfaz de la placa. En términos de un microcontrolador, las entradas y salidas son cambios en los niveles de voltaje. 

Las entradas son cuando un microcontrolador puede "ver" un cambio de voltaje, y las salidas son cuando un microcontrolador crea un cambio de voltaje.

Así que hablemos de las funciones de Arduino que pueden ayudarnos a leer los cambios de voltaje.

Leer entradas con Arduino

La mayoría de los programas de automatización del hogar implicarán la lectura de entradas en un sistema. Es probable que las entradas provengan de sensores que hayas conectado a tu placa Arduino.

Generalmente, las entradas vendrán en dos variedades separadas : binarias (encendido / apagado, entradas digitales) o un rango de valores ( entradas analógicas).

Dicho de otra manera, algunos sensores producen una señal de encendido / apagado, y otros sensores producen una gama de señales. Aprender la diferencia es bastante intuitivo. Solo tienes que preguntarte: ¿Qué me dice este sensor?

Si la respuesta solo puede ser una de dos opciones, es una entrada digital. Si la respuesta puede ser un rango completo de valores, es una entrada analógica.

Hagamos una práctica rápida:

  • Tienes un contacto marnetico que detecta si una puerta está abierta o cerrada. ¿Producirá esto una entrada digital o analógica?
Es una entrada digital , porque solo hay dos opciones.
  • Tienes un sensor de temperatura que mide entre -50 ° a 150 ° grados. ¿Producirá esto una entrada digital o analógica?
Es una entrada analógica, porque hay un rango completo de valores posibles.

 

El Arduino tiene 2 funciones separadas para leer estos diferentes tipos de entradas.

Arduino analogRead () 

Para leer entradas analógicas, existe la función llamada analogRead (). Seria algo de este estilo:

analigRead(numero de pin)

 

Si deseas utilizar la función analogRead (), deberás conectar el sensor a uno de los pines analógicos de tu Arduino.

Todas las placas Arduino tienen pines de entrada analógica. Por ejemplo, el Arduino UNO tiene 6 pines analógicos, el Arduino Nano tiene 8 pines analógicos y el Arduino Mega tiene 16 pines analógicos.

Los pines analógicos de una placa Arduino utilizan el convertidor analógico a digital (ADC) que está integrado en el microcontrolador de la placa. El ADC toma la señal de entrada analógica y la convierte en una señal digital que le permite leer fácilmente los diferentes valores de la entrada.

Para que la función analogRead () funcione, necesitas saber qué pin deseas usar. Este será uno de los pines analógicos donde tienes conectado tu sensor.

Podría ser algo parecido a esto:

const byte tempSensor = A4; int rawTemp = 0;

void setup() {
}

void loop() {

/* Leer entrada analogica*/
rawTemp = analogRead(tempSensor);

/* Hacer algo con el valor leido... */

}

 

En el código anterior, tenemos nuestro sensor de temperatura conectado al pin A4 del Arduino. Cuando usamos la función analogRead (), guardamos el valor en la variable rawTemp. ¿Por qué rawTemp ,en lugar de solo temp ?

Recuerda que una entrada es en realidad una señal de voltaje. La mayoría de las veces, la señal de voltaje que lee el Arduino ADC deberá convertirse de la señal sin procesar al valor real. Esto se hace usando un factor de conversión que está disponible en el fabricante del sensor, o simplemente haciendo una simple búsqueda en Google.

Pero, ¿qué pasa con esas entradas de encendido / apagado?, ¿cómo leemos las de Arduino?

Arduino digitalRead ()

Para las entradas digitales, Arduino tiene una función llamada digitalRead ().

En código Arduino, esto es lo que parece:

digitalRead(numero de pin)

 

Para usar la función digitalRead (), debes tener tu sensor conectado a uno de los pines digitales en tu placa Arduino. (Consejo: la mayoría de los pines analógicos también se pueden usar como pines digitales; consulta la documentación en tu placa Arduino para asegurarte ).

Todo lo que la función digitalRead () necesita saber es dónde (qué pin) está conectado tu circuito.

Podría verse algo parecido a esto:

cont byte reedSwitch = 5;

boolean estado = 0;

void setup(){}

void loop (){

/*leemos la entrada digital */

estado = digitalRead(reedSwitch);

/*hacemos algo con el valor leido*/

}

En el código anterior, la placa Arduino lee el "estado" de la puerta y lo almacena en la variable doorState.

Dependiendo del tipo de interruptor de lengüeta utilizada, y según el circuito que hayas configurado, la función digitalRead () devolverá un 0 o un 1 si la puerta está abierta o cerrada.

Saber si una puerta está abierta o cerrada, o determinar la temperatura de algo es bastante útil, pero solo si realmente puedes hacer algo con esos datos.

Para hacer que las cosas sucedan usando nuestro Arduino, necesitamos comenzar a crear salidas.

 

Creando salidas con Arduino

Al igual que una entrada en un microcontrolador es realmente solo un voltaje, una salida de un microcontrolador también es un voltaje. El voltaje que emite un Arduino desde cada pin depende del tipo de placa Arduino que estés utilizando. Es probable que sea de 5 voltios o 3,3 voltios.

El voltaje que emite se puede usar para controlar algo que hayas conectado a tu Arduino. Es importante comprender que un microcontrolador está diseñado para controlar circuitos, pero no necesariamente para alimentarlos.

Esta es una distinción importante porque un Arduino solo puede suministrar cierta corriente a través de cada pin antes de que se caliente demasiado y se rompa.

Entonces, si tienes la tentación de ir más allá de los límites de los pines de salida de Arduino, sería más prudente encontrar un circuito de control simple utilizando uno de los muchos módulos prefabricados disponibles para hacerlo (o simplemente cablear el tuyo).

Entonces, ¿cómo creamos realmente una salida con Arduino?

 

Arduino digitalWrite ()

Para crear una salida con Arduino, usamos la práctica función digitalWrite ().

En código Arduino seria asi:

digitalWrite (numero de pin)

 

La función digitalWrite () necesita saber dos cosas:

  • ¿En qué pin poner el voltaje de salida?
  • Qué voltaje de salida, ALTO o BAJO

Para que la función digitalWrite () funcione, necesitas usar un pin digital en tu placa Arduino (al igual que antes asegúrate de verifica la documentación de tu placa para saber usar los pines analógicos como pines digitales). 

También debes decirle al Arduino que pin se utilizará como salida. Para hacer esto, usa otra función llamada pinMode ().

Podría verse algo parecido a esto:

const  byte rele = 8;

void setup (){

/*ponemos el pin de salida en modo OUTPUT*/

pinMode (rele, OUTPUT);

}

void loop(){

digitalWrite (rele, HIGH); // esto encendera el rele

}

En el código anterior, la función pinMode () le dice a la placa Arduino que queremos que el pin del relé actúe como una SALIDA. 

La función digitalWrite () le dice al pin que emita un voltaje ALTO. Que será de 5 voltios o 3.3 voltios dependiendo de tu placa Arduino.

El voltaje en el pin permanecerá ALTO hasta que le digamos lo contrario. Para cambiarlo a un voltaje bajo, usaríamos esto:

digitalWrite (rele, LOW)

El código anterior establecería el voltaje en el pin del relé en 0 voltios.

  • Ahora puede que te preguntes por qué no tuvimos que decirle a los pines que fueran entradas. Podemos usar la función pinMode () para decirle a un pin que sea una entrada, pero Arduino predetermina todos los pines para que actúen como entradas, por lo que no tienes que hacerlo explícitamente.

Ahora la verdadera diversión sucede cuando combinamos nuestras funciones recién aprendidas y creamos algo lógico.

Lee el código a continuación y verás cómo hemos combinado la lectura de una entrada y la creación de una salida en función del estado de la puerta:

const byte relay = 8;
const byte reedSwitch = 5;
boolean doorState = 0;

void setup() {
/* Ponemos el pin en modo salida*/
pinMode(relay, OUTPUT);
}

void loop() {

/* leemos la entrada*/
doorState = digitalRead(reedSwitch);

/* encendemos el rele cuando la puerta se cierra*/
if (doorState == HIGH)
{
digitalWrite(relay, HIGH); //rele ENCENDIDO 
}
else
{
digitalWrite(relay, LOW); //rele APAGADO
}

}

Conoce las funciones principales de E / S de Arduino

Con la gran cantidad de módulos de sensores y bibliotecas de códigos útiles, existe una variedad casi infinita de sistemas que puedes usar para automatizar tu hogar usando Arduino.

Y mientras aprende otras funciones de Arduino para hacer que funcionen cosas como wifi, bluetooth y control de motor, siempre volverás a usar estas 3 funciones básicas de Arduino.

Resumimos aquí:

  • analogRead (): lee una entrada analógica (un rango de valores posibles)
  • digitalRead (): lee una entrada digital (ya sea encendida o apagada)
  • digitalWrite (): crea una salida de voltaje ALTO o BAJO en un pin

Como puedes imaginar, las posibilidades son infinitas, por lo que Arduino es una opción tan común al construir proyectos de automatización del hogar de bricolaje.

AQUÍ TIENES OTROS ARTÍCULOS INTERESANTES


Compartir esta publicación



← Publicación más antigua Publicación más reciente →