Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Domotica Arduino

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 15

Certificación En Baja Tensión IEC 60364

Álvaro Javier Amaya Santos

Escuela Tecnológica Instituto Técnico Central

E12A Trabajo De Investigación De Ingeniería

Carlos Manuel Romero

09 de Marzo de 2023
OBJETIVOS

OBJETIVO GENERAL: realizar un documento escrito, el cual contenga las


diferentes aplicaciones en domótica, con un controlador lógico programable (ARDUINO).

OBJETIVOS ESPECIFICOS:
 Realizar la debida investigación sobre las aplicaciones de domótica con Arduino
 Realizar códigos los cuales estén destinados a la domótica doméstica.
MARCO TEORICO

 ARDUINO: es una plataforma de creación de electrónica de código abierto, la


cual
está basada en hardware y software libre, flexible y fácil de utilizar para los
creadores y desarrolladores. Esta plataforma permite crear diferentes tipos de
microordenadores de una sola placa a los que la comunidad de creadores puede
darles diferentes tipos de uso.

 AUTOMATIZACIÓN: Se denomina automatización al acto y la consecuencia de


automatizar. Este verbo, por su parte, alude a hacer que determinadas acciones
se vuelvan automáticas (es decir, que se desarrollen por sí solas y sin la
participación directa de un individuo).
 AUTÓMATA (O CONTROLADOR LÓGICO PROGRAMABLE): es un sistema
secuencial, aunque en ocasiones la palabra es utilizada también para referirse a
un robot. Puede definirse como un equipo electrónico programable en lenguaje
no informático y diseñado para controlar, en tiempo real y en ambiente industrial,
procesos secuenciales.

 CÓDIGO ARDUINO: es una serie de comandos de programación que le dirán a


nuestro microcontrolador como configurarse al iniciarse y qué acciones tiene que
realizar mientras esté en funcionamiento. Estos comandos utilizados en Arduino
son sentencias muy fáciles e intuitivas.

 COMPILAR: La tarea de compilar se refiere al proceso de traducción del código


fuente, entendiéndose por código fuente las líneas de código que se han escrito
en un lenguaje de programación, en este caso un lenguaje de programación de
alto nivel. Esta compilación del código fuente de un programa se realiza debido a
que el código trabajado por el lenguaje de programación no es ejecutable
directamente por la computadora, es por ella la necesidad de traducir las
instrucciones contenidas en el texto al llamado “lenguaje de máquina” o código
binario, la única manera posible de que la computadora entienda y luego ejecute
las sentencias las órdenes e instrucciones determinadas por el código fuente.
Para realizar esta traducción, mejor llamada compilación, el desarrollador de
software se vale de una herramienta llamada compilador.

 DEPURAR: La depuración (debugging) es el nombre del proceso que utilizan los


codificadores para descubrir por qué su código no funciona. Cuando hiciste los
Desafíos del Código, es posible que ya hayas topado con algo que te haya
obligado a volver sobre tu código y descubrir dónde cometiste un error. Esta es la
esencia de la depuración. A veces es posible que ya sepas cómo codificar algo,
pero aún te llevará mucho tiempo hacerlo. Los grandes codificadores aún
cometen errores, incluso cuando saben exactamente lo que están haciendo, por
lo que es importante crear una caja de herramientas con técnicas de depuración
que puedan ayudarte cuando no estas segura de lo que salió mal.

 DOMÓTICA: hace referencia al conjunto de sistemas y tecnologías capaces de


automatizar una vivienda, mediante la gestión inteligente de la energía, las
comunicaciones, la iluminación, la seguridad y todos los elementos de una
vivienda o edificación con el fin de aportar seguridad, bienestar y confort.
Entonces, ¿Qué es la domótica? básicamente es una tecnología que nos permite
gestionar una vivienda de forma inteligente y automática. Estos sistemas pueden
estar integrados por medio de redes interiores y exteriores de comunicación,
cableadas o inalámbricas, y cuyo control goza de cierta ubicuidad, desde dentro y
fuera del hogar.

DESARROLLO
Arduino es una plataforma de creación de electrónica de código abierto, la cual está
basada en hardware y software libre, flexible y fácil de utilizar para los creadores y
desarrolladores. Esta plataforma permite crear diferentes tipos de microordenadores de una
sola placa a los que la comunidad de creadores puede darles diferentes tipos de uso.

En pocas palabras, puedes decirle a la placa qué hacer enviándole instrucciones


mediante el lenguaje de programación de Arduino (basado en Wiring) y el software de
Arduino (IDE, basado en Processing). El programa se implementará haciendo uso del entorno
de programación propio de arduino y se transferirá empleando un cable USB. Si bien en el caso
de la placa USB no es preciso utilizar una fuente de alimentación externa, ya que el propio
cable USB la proporciona, para la realización de algunos de los experimentos prácticos sí que
será necesario disponer de una fuente de alimentación externa ya que la alimentación
proporcionada por el USB puede no ser suficiente. El voltaje de la fuente puede estar entre 6 y
25 Voltios.
 Estructura básica de un programa:
la estructura básica de programación de Arduino es bastante simple y divide la
ejecución en dos partes: setup y loop. Setup () constituye la preparación del
programa y loop() es la ejecución. En la función Setup () se incluye la declaración de
variables y se trata de la primera función que se ejecuta en el programa. Esta
función se ejecuta una única vez y es empleada para configurar el pinMode (p. ej. si
un determinado pin digital es de entrada o salida) e inicializar la comunicación serie.
La función loop() incluye el código a ser ejecutado continuamente (leyendo las
entradas de la placa, salidas, etc.).

Entradas y salidas Digitales


Una señal digital es un tipo de señal generada por algún tipo de fenómeno
electromagnético en que cada signo que codifica el contenido de la misma puede ser analizado
en término de algunas magnitudes que representan valores discretos, en lugar de valores
dentro de un cierto rango. Por ejemplo, el interruptor de la luz sólo puede tomar dos valores o
estados: abierto o cerrado, o la misma lámpara: encendida o apagada.

presentados por dos niveles de tensión eléctrica, uno alto, H y otro bajo, L (de High y Low,
respectivamente, en inglés). Por abstracción, dichos estados se sustituyen por ceros y unos, lo
que facilita la aplicación de la lógica y la aritmética binaria. Si el nivel alto se representa por 1 y
el bajo por 0, se habla de lógica positiva y en caso contrario de lógica negativa.
Cabe mencionar que, además de los niveles, en una señal digital están las transiciones de alto
a bajo y de bajo a alto, denominadas flanco de bajada y de subida, respectivamente. En una
señal digital, se denomina flanco a la transición del nivel bajo al alto (flanco de subida) o del
nivel alto al bajo (flanco de bajada).

 Características de las Señales Digitales

Los pines de Arduino (Atmega) se establecen de forma predeterminada en las entradas, por lo
que no es necesario declararlos explícitamente como entradas con pinMode() cuando los usa
como entradas. Se dice que los pines configurados de esta manera están en un estado de alta
impedancia. Los pines de entrada hacen demandas extremadamente pequeñas en el circuito
que están muestreando, equivalentes a una resistencia en serie de 100 megaohmios frente al
pin. Esto significa que se necesita muy poca corriente para mover el pin de entrada de un
estado a otro, y puede hacer que los pines sean útiles para tareas como implementar un sensor
táctil capacitivo, leer un LED como un fotodiodo o leer un sensor analógico con un esquema.
como RCTime.
Sin embargo, esto también significa que los pines configurados como pinMode(pin, INPUT) sin
nada conectado a ellos, o con cables conectados a ellos que no están conectados a otros
circuitos, reportarán cambios aparentemente aleatorios en el estado del pin, captando ruido
eléctrico del entorno, o acoplar capacitivamente el estado de un pin cercano.
PARTES DE LA PLACA DE UN ARDUINO.

La familia de microcontroladores de Arduino es bastante amplia y está compuesta por


diferentes modelos y variaciones. En esta ocasión, describiremos las partes de Arduino UNO,
que es bastante similar a otros modelos, para que puedas hacerte una idea de la estructura de
la placa electrónica (hardware).

 (1 y 2) Alimentación USB/5VDC
Arduino UNO puede ser alimentado desde un cable USB tipo B o mini conectado a tu
ordenador, o desde una fuente de alimentación entre 6V y 18V. En la imagen de arriba, la
conexión USB está etiquetada (1) y el conector de la fuente de alimentación (2).
Ademas, la conexión USB sirve para cargar código en la placa de Arduino desde donde se
pueden enviar datos de la programación e instrucciones a la placa.

 (3) Regulador de voltaje


Este componente controla la cantidad de voltaje que entra en la placa de Arduino, evitando que
un voltaje excesivo dañe el circuito.

 (4) Conexiones
Los pines de Arduino se utilizan para conectar los cables necesarios para construir un circuito.
Este tipo de conexiones tiene varios pines, cada uno de los cuales está impreso en la placa y se
utilizan para diferentes funciones:

 Reset: Permite el reseteo del micro controlador.


 5V y 3.3V: la clavija de 5V suministra 5 voltios de energía, y la clavija de 3.3V suministra
3.3 voltios de energía. La mayoría de los componentes simples usados con el Arduino
funcionan bien con 5 o 3.3 voltios.
 GND: Hay varios pines GND en Arduino, se usan para conectar a tierra el circuito.
 VIN: Se usa para conectar la alimentación de la placa con una fuente externa de entre 6
y 12VDC.

 (5) Puertos de entrada Analógicos


Estos pines bajo la etiqueta ‘Analog In’ (A0 a A5 en la UNO) pueden leer la señal de un sensor
analógico y convertirla en un valor digital que podemos interpretar.

 (6) Micro-controlador Atmega 328


Es el circuito integrado que actúa como cerebro o procesador de la placa de Arduino, donde se
implementa la programación.

 (7) Entrada ICSP (In Chip Serial Programmer)


Permite grabar programas en el circuito directamente desde el ordenador sin necesidad de
utilizar el puerto USB.

 (8) Indicador LED de alimentación


Este LED se enciende para indicar que el microprocesador está activo.
 (9) LED TX RX
TX es la abreviatura de transmisión de datos y RX es la abreviatura de recepción de datos.
Estas marcas comunes aparecen con regularidad en la electrónica para indicar los pines
responsables de la comunicación serie. Estos LED se activan visualmente cuando la placa
recibe o transmite datos.

(10) Puertos Digitales


Estos pines se pueden utilizar tanto para la entrada digital (como para detectar la pulsación de
un botón) como para la salida digital (como para alimentar un LED).

(11) Puerto de conexiones

 5 entradas o salidas auxiliares (de la 8 a la 12).


 3 salidas 9, 10 y 11 que permiten la modulación por ancho o de pulso.
 Salida 13 que sirve para conectar un led directamente a tierra.
 Salida a tierra GND.
 Pin AREF que se utiliza para fijar una tensión de referencia externa (entre 0 y 5 voltios)
como límite superior de las clavijas de entrada analógica.

 (12) Chip de Arduino


Permite identificar un dispositivo USB por el ordenador, es como su tarjeta de identificación o
D.N.I. personal

 (13) Botón de RESET : Al presionarlo conectará temporalmente el pin de reset a


tierra y reiniciará cualquier código que esté cargado en el micro-controlador de
Arduino.

FUNCIONES DE UN CODIGO EN ARDUINO: Una función es un conjunto de


instrucciones que realizan una tarea específica. Además, puede ser diseñada e
implementada de forma independiente al resto del código.

Las funciones sirven principalmente para ordenar tu código y hacer que unas partes del
programa sean independientes de otras. Esto te facilita mucho el trabajo cuando tienes
que buscar y solucionar errores. Además, evitan repetir las mismas instrucciones de
código una y otra vez.
Primero void setup () . Dentro de esta función principal escribiremos las sentencias de
configuración que necesitaremos para que Arduino trabaje correctamente. Éstas se ejecutarán
al iniciar Arduino y una única vez. Con ellas, por ejemplo, asignaremos la característica de
entrada/salida a los pines, el modo de comunicación serial, activaremos los sensores que
vayamos a necesitar, escribiremos órdenes de inicio del programa…etc. Algunas de estas
sentencias pueden ser: pinMode (, ), Serial. Begin (,), sensors. begin(,)…

La segunda función principal es void loop () . Ésta debe ir siempre después de void setup (). En
ella escribiremos todas las sentencias, bucles y llamadas a funciones que necesitemos que
nuestro Arduino repita constantemente. Se escribirán en orden de ejecución. Ejemplo de éstas
pueden ser digitalWrite (, ), Serial.print(“ “), if( )…

EJEMPLOS DE CÓDIGO

Salida digital

En este ejemplo el LED conectado al pin 13 parpadea cada segundo.

int ledPin = 13; // LED que se encuentra en el pin 13


void setup(){
pinMode(ledPin, OUTPUT); // El p1n 13 será una salida digital
}
void loop(){
digitalWrite(ledPin, HIGH); // Enciende el LED
delay(1000); // Pausa de 1 segundo
digitalWrite(ledPin, LOW); // Apaga el LED
delay(1000); // Pausa de 1 segundo
}

Salida digital II

En este ejemplo el LED conectado al pin 13 parpadea en un intervalo de tiempo variable que
depende del número de veces que se ejecuta el programa (función loop)

int ledPin = 13; // LED que se encuentra en el pin 13


int n = 0; //Entero que contará el paso por la función loop
void setup(){
pinMode(ledPin, OUTPUT); // El p1n 13 será una salida digital
}
void loop(){
digitalWrite(ledPin, HIGH); // Enciende el LED
delay(1000); // Pausa de 1 segundo
digitalWrite(ledPin, LOW); // Apaga el LED
n++; //Incrementamos n
delay(delayVal(n)); //Pausa de un tiempo variable
}

//Función que devuelve un valor tipo entero según el parámetro pasado

int delayVal(int f){


return f*100;
}

Entrada digital

Este ejemplo lee el valor de un interruptor conectado en el pin 2. Cuando el interruptor está
cerrado en el pin de entrada habrá un estado alto (HIGH) y se encenderá el LED.

int ledPin = 13; // Pin de salida para el LED


int inPin = 2; // Pin de entrada (donde está conectado el interruptor)
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(inPin, INPUT);
}
void loop() {
if (digitalRead(inPin) == HIGH){ // Si se activa interruptor
digitalWrite(ledPin, HIGH); // Enciende el LED
delay(1000); // Pause de 1 segundo
digitalWrite(ledPin, LOW); // Apaga el LED
delay(1000); // Pausa de 1 segundo
}
}

Salida PWM

Modulación por ancho de pulso (PWM) puede emplearse, por ejemplo, para establecer el brillo
de un led o controlar un servomotor. En el siguiente ejemplo se va aumentando y
decrementando el brillo del pin 9 mediante PWM.

int ledPin = 9; // Pin controlado por PWM


void setup(){}
void loop() {
for (int i=0; i<=255; i++){
analogWrite(ledPin, i); // Establece el brillo a i
delay(100); // Pausa de 100 ms
}
for (int i=255; i>=0; i--) {
analogWrite(ledPin, i);
delay(100);
}
}

Entrada a partir de un potenciómetro

En el siguiente código se emplea arduino para controlar la frecuencia de parpadeo de un LED.

int potPin = 0; // Pin de entrada para el potenciómetro


int ledPin = 13; // Pin de salida para el LED
void setup() {
pinMode(ledPin, OUTPUT); // Declara el pin del LED como de salida
}
void loop () {
digitalWrite (ledPin, HIGH); // Enciende el LED
delay(analogRead(potPin)); // Lee el valor del potenciómetro
digitalWrite (ledPin, LOW); // Apaga el LED
delay(analogRead(potPin));
}
INTERRUPTOR HORARIO CON ARDUINO
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd (0x27, 16, 2);
#include "Sodaq_DS3231.h"
char DiaSemana [][4] = {"Dom", "Lun", "Mar", "Mie", "Jue", "Vie", "Sab"};
void setup() {

pinMode(2,OUTPUT);

rtc.begin();
Wire.begin();
lcd.init();
lcd.backlight();
lcd.setCursor (0,0);
lcd.print ("JAVIER");
delay(2000);
lcd.clear();
}

void loop() {
DateTime now = rtc.now();
lcd.setCursor(0,0);
lcd.print(DiaSemana[now.dayOfWeek()]);
lcd.print(' ');
lcd.print(now.date(), DEC);
lcd.print('/');
lcd.print(now.month(), DEC);
lcd.print('/');
lcd.print(now.year(), DEC);
lcd.print('/');
lcd.setCursor(4,1);
lcd.print(now.hour(), DEC);
lcd.print(':');
lcd.print(now.minute(), DEC);
lcd.print(':');
lcd.print(now.second(), DEC);
delay(1000);
lcd.clear();
int hora =now.hour();
int minuto =now.minute();
int segundo = now.second();
if(minuto >=10 && minuto <=11 ){
digitalWrite(2,true);
}
else {
digitalWrite(13,false);
}
}

SENSOR DE PROXIMIDAD PARA PARQUEADERO

int TRIG = 10;

int ECO = 9;

int LED = 3;

int DURACION;

int DISTANCIA;

void setup(){

pinMode(TRIG, OUTPUT);

pinMode(ECO, INPUT);

pinMode(LED, OUTPUT);

Serial.begin(9600);

void loop(){
digitalWrite(TRIG, HIGH);

delay(1);

digitalWrite(TRIG, LOW);

DURACION = pulseIn(ECO, HIGH);

DISTANCIA = DURACION / 58.2;

Serial.println(DISTANCIA);

delay(200);

if(DISTANCIA <=20 && DISTANCIA >= 0){

digitalWrite(LED, HIGH);

delay(DISTANCIA * 10);

digitalWrite(LED, LOW);

SENSOR NIVEL DE AGUA


const int echo=A1;
const int trigger=A0;
long tiempo;
float distancia;
int leds[]={1,2,3,4,5,6,7,8,9,10};

void setup()
{
for(int pin=2;pin<=11;pin++)
pinMode(pin,OUTPUT);

pinMode(echo,INPUT);
pinMode(trigger,OUTPUT);
Serial.begin(9600);
delay(100);
}
void loop()
{

También podría gustarte