IOT

Reloj y domótica usando STONE Display

Contenido

  1. Descripción
  2. Diseño de GUI

3 .Diagrama de circuito

  1. Código
  2. Video

Descripción

En este proyecto vamos a diseñar un reloj y un sistema de automatización con esta ayuda podemos encender o apagar la luz de la casa y también hay un reloj que mostrará la hora y la fecha.

Para esto estamos usando Pantalla TFT (STONE-HMI), esta pantalla tiene un software que es un software GUI, con esta ayuda vamos a diseñar una interfaz que contendrá tanto el reloj de la sección como la automatización. haga clic aquí

Diseño de piezas de reloj: -

Primero diseñemos la parte del reloj, primero tenemos que agregar todas las imágenes que se dan en la carpeta haga clic aquí .

Como puede ver en el lado izquierdo, todas las imágenes se han agregado en la sección de archivo de imagen.Ahora haga clic en la imagen '14' y obtendrá esta interfaz como ve en la imagen.Ahora seleccione 'RTC' desde la configuración táctil para configurar la hora. y la fecha y hacer toda la configuración para esto primero agregue la imagen 'en la página' como la imagen número 6 que se usará en el momento de la configuración.Ahora vaya a la imagen número 6 y agregue todos los botones y sus valores de clave.Este valor se estar en este formato.

Para '1' - 0031

Para '2' - 0031

Para '3' - 0031

Para '4' - 0031

Para '5' - 0031

Para '6' - 0031

Para '7' - 0031

Para '8' - 0031

Para '9' - 0031

Para '0' - 0030

Para "OK" - 00F1

Después de eso, agregue el efecto de botón como imagen nimber-7 para todos los botones, por lo que en esta parte se realizará la configuración del reloj.

De manera similar, agregue Marcar reloj desde la parte superior y agregue todas las manecillas de hora, minutos y segundos para esto primero tenemos que hacer el ícono para estas manecillas, así que para esto vaya al generador de íconos y seleccione estas imágenes, encontrará una nueva carpeta en la sección de 'archivo de icono' desde aquí tiene que seleccionar todos los iconos de acuerdo con los requisitos de las manecillas. Después de eso, seleccione todos los iconos de acuerdo con los requisitos de las manecillas del reloj, y no olvide seleccionar el centro de cada manecilla para el reloj, con este procedimiento esto se hará ahora tenemos que ir a la parte de automatización y para esto hemos agregado un símbolo de automatización como puede ver en la imagen de arriba, para este botón de selección y coloque ese botón en el área de este icono de autómata y luego seleccione el ' cambio de página 'como imagen-1 porque esta es la imagen para la automatización, luego seleccione la imagen-1 para un diseño posterior.

Diseño de piezas de automatización: -

Diseñemos la parte de automatización para esto, requerimos que Arduino envíe un valor de clave particular a través de una dirección, aquí estamos usando '0001' para todo el valor de clave.Para el botón Fan (ON) estamos enviando el valor de la clave '0001' y para Fan (OFF ) estamos enviando el valor de la clave '0002' de manera similar, estamos enviando para todos los valores particulares de todos los dispositivos. Aquí también agregamos un botón para cambiar a la GUI de reloj que ayudará a pasar de esta interfaz a la interfaz de reloj.

Para el cambio de página, estamos usando el 'botón' que se coloca en la parte superior izquierda y para el botón de automatización estamos usando la función 'devolver el valor de la tecla de presión' que tiene dos parámetros, primero el valor de la dirección y otro es el valor de la clave, como hemos mencionado anteriormente, estamos utilizando diferentes valores de clave diferentes para cada botón de automatización.

Diagrama de circuito

Como puede ver en la conexión, hay tres LED light-1, light-2 y para Fan aquí estamos usando solo LED, pero puede conectar dispositivos reales a esto. Light-1 conecte al pin -D6 de Arduino, light- 2 conecte al pin-D7 de Arduino, Fan similar conecte con D5 con Arduino.Y haga la conexión para Rx y Tx según el diagrama del circuito.Aquí hemos conectado Tx con pin-2 y Rx con pin-3 de Arduino como según el código de Arduino.Vamos más allá de cómo funciona con el código.

Existen diferentes tipos de Comunicaciones Serie. Cuando usa una placa Arduino en un proyecto, puede elegir los pines seriales estándar como software Arduino serial Rx Tx, desde el UART dentro de la placa Arduino, por lo que se llama Serial TTL. En ese caso, estamos usando la biblioteca Hardware serial.h, pero algunos pines adicionales pueden funcionar como Rx o Tx. Por ejemplo, los pines de comunicación SPI pueden funcionar como MISO, MOSI y Select (SC), pero también son pines que pueden funcionar como entrada digital o salida digital, o si lo necesita, puede usar esos pines como Rx, Tx usando el software serial .h Biblioteca. 

Avancemos más para saber cómo funciona el código. 

Código: - 

#incluir // biblioteca de serie de software

SoftwareSerial max232 (2,3);

datos de char; 

Cadena micadena;

int f = 5; // Pin para Fan

int l1 = 6; // Pin para luz-1

int l2 = 7; // Pin para luz-2

configuración vacía ()

{

Serial.begin(115200); // Aquí la tasa de baudios es 115200

max232.begin (115200);

pinMode (f, SALIDA);     

escritura digital (f, BAJA); 

pinMode (l1, SALIDA);    

digitalWrite (l1, BAJO);

pinMode (l2, SALIDA);    

digitalWrite (l2, BAJO);

}

bucle vacío ()

{

si (max232.available ()> 0)

 {

   datos = max232.read ();

   mystring = mystring + byte (datos); 

   retraso (10);

 }

else if (mystring.endsWith(“101”)) //condición para Fan ON

  {

    micadena = “”; 

   escritura digital (f, ALTA);

  }

else if (mystring.endsWith(“102”)) //condición para Fan OFF

  {

   micadena = “”; 

   escritura digital (f, BAJA);

  }

else if (mystring.endsWith(“103”)) //condición para Light-1 ON

  {

  micadena = “”; 

  escritura digital (l1, ALTA);

  }

else if (mystring.endsWith(“104”)) //condición para Light-1 OFF

  {

   micadena = “”; 

   escritura digital (l1, BAJA);

  }

else if (mystring.endsWith(“105”)) //condición para Light-2 ON

  {

  micadena = “”; 

  escritura digital (l2, ALTA);

  }

else if (mystring.endsWith(“106”)) //condición para Light-2 OFF

  {

   micadena = “”; 

   escritura digital (l2, BAJA);

  }

else if (mystring.endsWith(“107”)) //condición para Todos los dispositivos ON

  {

   micadena = “”; 

   escritura digital (l1, ALTA);

   escritura digital (l2, ALTA);

   escritura digital (f, ALTA);

  }

else if (mystring.endsWith(“108”)) //condición para Todos los dispositivos APAGADOS

  {

   micadena = “”; 

   escritura digital (l1, BAJA);

   escritura digital (l2, BAJA);

   escritura digital (f, BAJA);

  }

}

Laboral :-

Como hemos comentado, estamos usando una biblioteca de software en serie para transferir el valor de la clave a través de una dirección, para esto hemos agregado en este código, esto proporciona la interfaz para conectar Arduino y la pantalla STON-HMI.Después de eso, declaramos todos los pines de salida, lo que sea que estemos usando para los LED y el ventilador, para estos dispositivos declaramos estos pines como SALIDA y luego establecemos la velocidad en baudios. para la biblioteca de software-serial. Todo esto hecho en la parte de configuración de vacío ahora vamos a movernos para hacer la condición para los dispositivos que estamos usando, esta parte se agrega en el bucle de vacío porque esto se repetirá muchas veces ya que presionaremos el en la pantalla.

En la sección de bucle vacío hay cuatro condiciones para los dispositivos: la primera condición es para el ventilador encendido y apagado, aquí estamos enviando el valor de clave '0001' para la condición de encendido y '0002' para la condición de apagado sobre la dirección '0001', esta dirección es Lo mismo para todos los dispositivos. Para el segundo dispositivo que es para la luz-1 estamos enviando '0003' para la condición de ENCENDIDO y '0004' para la condición de apagado, de manera similar para la luz-2 '0005' para ENCENDIDO y '0006' para la condición de apagado, por lo que de esta manera, estas condiciones funcionan para dispositivos individuales.

Hay una condición más para APAGAR o ENCENDER todos los dispositivos a la vez, para esto estamos usando '0007' para ENCENDER y '0008' para APAGAR.

Video de salida: -

Este es el video de salida de este proyecto en este video que muestra primero la configuración del reloj y hay un trabajo de automatización como puede ver en el video.

Este es el video de salida que puede descargar haciendo clic en ese video.Hemos agregado todos los datos relacionados con esto.Si tiene alguna duda sobre el diseño de la GUI, puede descargar el archivo del proyecto y abrirlo directamente en este caso, no es necesario. diseñe cualquier GUI obtendrá ese diseño que hemos construido. Pero si desea diseñar una GUI diferente, debe seguir todos los pasos.

Código

// Para obtener más información sobre este proyecto, visite: - wwww.electrocircuit.net //

#incluir

SoftwareSerial max232 (2,3);

datos de char; 

Cadena micadena;

entero f = 5; 

int l1 = 6; 

int l2 = 7;  

configuración vacía ()

{

Serial.begin (115200); 

max232.begin (115200);

pinMode (f, SALIDA); /////////ROJO////////

escritura digital (f, BAJA); 

pinMode (l1, SALIDA); ////////VERDE///////

digitalWrite (l1, BAJO);

pinMode (l2, SALIDA); ///////AZUL/////////

digitalWrite (l2, BAJO);

}

bucle vacío ()

{

si (max232.available ()> 0)

 {

   datos = max232.read ();

   mystring = mystring + byte (datos); 

   retraso (10);

 }

else if (mystring.endsWith ("101"))

  {

    micadena = “”; 

   escritura digital (f, ALTA);

  }

else if (mystring.endsWith ("102"))

  {

   micadena = “”; 

   escritura digital (f, BAJA);

  }

else if (mystring.endsWith ("103"))

  {

  micadena = “”; 

  escritura digital (l1, ALTA);

  }

else if (mystring.endsWith ("104"))

  {

   micadena = “”; 

   escritura digital (l1, BAJA);

  }

else if (mystring.endsWith ("105"))

  {

  micadena = “”; 

  escritura digital (l2, ALTA);

  }

else if (mystring.endsWith ("106"))

  {

   micadena = “”; 

   escritura digital (l2, BAJA);

  }

else if (mystring.endsWith ("107"))

  {

   micadena = “”; 

   escritura digital (l1, ALTA);

   escritura digital (l2, ALTA);

   escritura digital (f, ALTA);

  }

else if (mystring.endsWith ("108"))

  {

   micadena = “”; 

   escritura digital (l1, BAJA);

   escritura digital (l2, BAJA);

   escritura digital (f, BAJA);

  }

}

Fuente: Platón Data Intelligence