Está en la página 1de 20

- Diana Isabel Huanqui Chirme

- Valía Gabriela Olayunca Quispe


Alumnos: - Mishel Shiomara Gomez Ventura
- Tatiana Brissette Bejar Noa

Grupo : D Profesor: Juan Melgar Nota:


Semestre : IV Cari
Fecha de entrega : 27 11 23
Índice

I. Objetivo........................................................................................................ 3
Objetivo Específicos........................................................................................ 3
II. Preparar el ATS......................................................................................... 3
III. Desarrollo: Lectura y control de la temperatura utilizando la
pantalla OLED................................................................................................ 5
IV. Reto de programación (para máximo puntaje).................................... 17
V. Observaciones y conclusiones................................................................. 19
Medición y Control de variables

I. Objetivo

Medir variables, manipular actuadores y controlar variables con dispositivos IoT, mostrando la
información en indicadores.

Objetivo Específicos

1. Identificar los sensores, actuadores y controlador de un sistema.


2. Medir temperatura usando un sensor y mostrar el valor en un display.
3. Controlar la temperatura de una cámara térmica, usando un sensor, un controlador,
dos lámparas incandescentes, y un ventilador.

II. Preparar el ATS


DESARROLLO DE 2DA. ACTIVIDAD: MEDICIÓN DE TEMPERATURA
CON MODULO IOT

III. Desarrollo: Lectura y control de la temperatura utilizando la pantalla OLED

En la segunda parte de la experiencia usaremos los elementos actuadores, la interfaz para los
actuadores y la pantalla OLED para mostrar información del proceso.

Paso 1 Transcriba el código


mostrado para mostrar
información en la pantalla
OLED. Para esto es
necesario utilizar las librerías
previamente descargadas e
instaladas en el IDE Arduino.

Paso 2 Compile nuevamente el


programa para que descarte
que no tiene errores. Para ello
use el icono marcado.
Si al término de la
compilación no se han
generado errores, realice la
descarga del programa al
microcontrolador.
De caso contrario revise y
corrija los errores y realice
nuevamente el procedimiento
mencionado anteriormente.
Paso 3 Luego de descargar el Pegue Foto de pantalla OLED AQUÍ:
programa este
empieza a ejecutarse y ya #include <SPI.h>
podremos ver en la pantalla
OLED el texto “Temperatura #include <Wire.h>
25 C”. Añada código para #include <Adafruit_GFX.h>
mostrar apellidos de #include <Adafruit_SSD1306.h>
integrantes en la propia #define OLED_RESET 4
pantalla OLED
Adafruit_SSD1306 display(OLED_RESET);
#define SSD1306_LCDHEIGHT 32
int lectura = 25;

void setup(){
display.begin(SSD1306_SWITCHCAPVCC,
0x3C);
display.clearDisplay();
display.display();
display.setTextColor(WHITE);
}

void loop(){
display.setTextSize(1);
display.setCursor(0,0);
display.print("Temperat.Gomez,Bejar,
Huanqui,Olayunca");
display.setTextSize(2);
display.setCursor(6,18);
display.print(lectura);
display.print(" C ");
display.display();
}
Paso 4 Añada a este código el Pegue Código AQUÍ:
código anterior (control de \\Diana Isabel Huanqui
lámparas y ventilador y
\\Tatiana Brissette Noa
lectura de temperatura y
humedad con DHT11) de \\Valia Gabriela Olayunca
tal manera que estos datos \\Mishel Gomez
se muestren en la pantalla #include <Wire.h>
OLED y presionando los #include <Adafruit_GFX.h>
pulsadores podamos
#include <Adafruit_SSD1306.h>
manipular dichos valores.
#include <Adafruit_Sensor.h>
#include "DHT.h"

#define PULSADOR1 9
#define PULSADOR2 10
#define PULSADOR3 11
#define PULSADOR4 12
#define PULSADOR5 13
#define LAMPARA1 33
#define LAMPARA2 35
#define LAMPARA3 37
#define LAMPARA4 39
#define VENTILADOR1 47
#define VENTILADOR2 48
#define VENTILADOR3 49
#define VENTILADOR4 50
#define SCREEN_WIDTH 128 // OLED display
width, in pixels
#define SCREEN_HEIGHT 64 // OLED display
height, in pixels
#define OLED_RESET 4
Adafruit_SSD1306 display(SCREEN_WIDTH,
SCREEN_HEIGHT);

#define BLUE 0x001F

#define DHTTYPE DHT11 // DHT 11


DHT dht(DHTPIN, 34);

void setup() {

pinMode(PULSADOR1,INPUT);
pinMode(PULSADOR2,INPUT);
pinMode(PULSADOR3,INPUT);
pinMode(PULSADOR4,INPUT);
pinMode(PULSADOR5,INPUT);
pinMode(LAMPARA1,OUTPUT);
pinMode(LAMPARA2,OUTPUT);
pinMode(LAMPARA3,OUTPUT);
pinMode(LAMPARA4,OUTPUT);
pinMode(VENTILADOR1,OUTPUT);
pinMode(VENTILADOR2,OUTPUT);
pinMode(VENTILADOR3,OUTPUT);
pinMode(VENTILADOR4,OUTPUT);
digitalWrite(VENTILADOR1, HIGH);
digitalWrite(VENTILADOR2, HIGH);
digitalWrite(VENTILADOR3, HIGH);
digitalWrite(VENTILADOR4, HIGH);
Serial.begin(115200);
dht.begin();
display.begin(SSD1306_SWITCHCAPVCC,
0x3C);
delay(2000);
display.clearDisplay();
display.setTextColor(SSD1306_WHITE);
}
void loop() {

if (digitalRead(PULSADOR1)==HIGH)
digitalWrite(VENTILADOR1,LOW);
if (digitalRead(PULSADOR2)==HIGH)
digitalWrite(VENTILADOR2,LOW);
if (digitalRead(PULSADOR3)==HIGH)
digitalWrite(VENTILADOR3,LOW);
if (digitalRead(PULSADOR4)==HIGH)
digitalWrite(VENTILADOR4,LOW);
if(digitalRead(PULSADOR5)==HIGH){
digitalWrite(VENTILADOR1,HIGH);
digitalWrite(VENTILADOR2,HIGH);
digitalWrite(VENTILADOR3,HIGH);
digitalWrite(VENTILADOR4,HIGH);
}
delay(2000);
float t = dht.readTemperature();
float h = dht.readHumidity();
if (isnan(h) || isnan(t)) {
Serial.println("Failed to read from DHT
sensor!");
}
Serial.println(t);
Serial.println(h);
display.clearDisplay();

display.setTextSize(1);
display.setCursor(0,7);

display.print("Temperature: ");
display.setTextSize(2);
display.setCursor(0,16);
display.print(t);
display.print(" ");
display.setTextSize(1);
display.cp437(true);
display.write(167);
display.setTextSize(2);
display.print("C");
display.setTextSize(1);
display.setCursor(0, 37);
display.print("Humidity: ");
display.setTextSize(2);
display.setCursor(0, 50);
display.print(h);
display.print(" %");

display.display();
}

Paso 5 Active las 2 lámparas y Pegue Foto de pantalla OLED AQUÍ:


verifique que la temperatura
suba hasta 50 grados (rango
máximo del sensor).

#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define LAMPARA1 33
#define LAMPARA2 35

#define OLED_RESET 4
Adafruit_SSD1306
display(OLED_RESET);
#define SSD1306_LCDHEIGHT 32
int lectura = 25;
int humedadMaxima = 30; // Establece
el valor máximo de humedad

// Pines para controlar las lámparas


int lampara1Pin = 8;
int lampara2Pin = 9;

void setup() {

display.begin(SSD1306_SWITCHCAP
VCC, 0x3C);
display.clearDisplay();
display.display();
display.setTextColor(WHITE);

// Configura los pines de las lámparas


como salidas
pinMode(LAMPARA1,OUTPUT);
pinMode(LAMPARA2,OUTPUT);

void loop() {
// Simula la lectura de humedad
(deberás reemplazar esto con la lectura
real del sensor)
lectura = random(20, 35); // Genera
un valor aleatorio entre 20 y 35 para
simular la lectura de humedad

display.setTextSize(1);
display.setCursor(0, 0);

display.print("Temperat.Gomez,Bejar,
Huanqui,Olayunca");
display.setTextSize(2);
display.setCursor(6, 18);
display.print(lectura);
display.print(" C ");
display.display();

// Verifica si la humedad supera el


límite establecido
if (lectura < humedadMaxima) {
// Activa las lámparas
digitalWrite(lampara1Pin, HIGH);
digitalWrite(lampara2Pin, HIGH);
} else {
// Apaga las lámparas
digitalWrite(lampara1Pin, LOW);
digitalWrite(lampara2Pin, LOW);
}

// Agrega un breve retraso para evitar


cambios rápidos en la lectura de
humedad
delay(1000);
}

CORRECTO:
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define OLED_RESET 4
Adafruit_SSD1306
display(OLED_RESET);
#define SSD1306_LCDHEIGHT 32
#include <DHT11.h>
#define pin 34
DHT11 dht11(pin);
float temp, humi;
#define PULSADOR1 9
#define PULSADOR2 10
#define PULSADOR3 11
#define PULSADOR4 12
#define PULSADOR5 13
#define LED1 33
#define LED2 35
#define LED3 37
#define LED4 39

void setup(){

display.begin(SSD1306_SWITCHCAP
VCC, 0x3C);
display.clearDisplay();
display.display();
display.setTextColor(WHITE);
pinMode(PULSADOR1,INPUT);
pinMode(PULSADOR2,INPUT);
pinMode(PULSADOR3,INPUT);
pinMode(PULSADOR4,INPUT);
pinMode(PULSADOR5,INPUT);
pinMode(LED1,OUTPUT);
pinMode(LED2,OUTPUT);
pinMode(LED3,OUTPUT);
pinMode(LED4,OUTPUT);

Serial.begin (9600);
}

void loop(){
display.setTextSize(1);
display.setCursor(0,0);
display.print("Temperat.Gomez,Bejar,
Huanqui,Olayunca");
humi=dht11.readHumidity();
temp=dht11.readTemperature();
digitalWrite(LED1,HIGH);
digitalWrite(LED3,HIGH);
digitalWrite(LED2,HIGH);
digitalWrite(LED4,HIGH);
display.setTextSize(1);
display.setCursor(6,18);
display.print("T:");
display.print(temp,0);
display.print("C H:");
display.print(humi,0);
display.display();
Serial.print("PULSADOR1");
delay(300);

Paso 6 Añada una condición de tal Pegue Código añadido AQUÍ:


manera que si la #include <SPI.h>
temperatura excede 40 #include <Wire.h>
grados, se apaguen las
#include <Adafruit_GFX.h>
lámparas y se encienda el
ventilador. #include <Adafruit_SSD1306.h>
#define OLED_RESET 4
Adafruit_SSD1306
display(OLED_RESET);
#define SSD1306_LCDHEIGHT 32
#include <DHT11.h>
#define pin 34
DHT11 dht11(pin);
float temp, humi;
#define PULSADOR1 9
#define PULSADOR2 10
#define PULSADOR3 11
#define PULSADOR4 12
#define PULSADOR5 13
#define LED1 33
#define LED2 35
#define LED3 37
#define LED4 39
#define VENTILADOR1 47
#define VENTILADOR2 48
#define VENTILADOR3 49
#define VENTILADOR4 50

void setup(){

display.begin(SSD1306_SWITCHCAP
VCC, 0x3C);
display.clearDisplay();
display.display();
display.setTextColor(WHITE);
pinMode(PULSADOR1,INPUT);
pinMode(PULSADOR2,INPUT);
pinMode(PULSADOR3,INPUT);
pinMode(PULSADOR4,INPUT);
pinMode(PULSADOR5,INPUT);
pinMode(LED1,OUTPUT);
pinMode(LED2,OUTPUT);
pinMode(LED3,OUTPUT);
pinMode(LED4,OUTPUT);
pinMode(VENTILADOR1,OUTPUT);

pinMode(VENTILADOR2,OUTPUT);

pinMode(VENTILADOR3,OUTPUT);

pinMode(VENTILADOR4,OUTPUT);

digitalWrite(VENTILADOR1,
HIGH);
digitalWrite(VENTILADOR2,
HIGH);
digitalWrite(VENTILADOR3,
HIGH);
digitalWrite(VENTILADOR4,
HIGH);

Serial.begin (9600);
}

void loop(){
display.setTextSize(1);
display.setCursor(0,0);
display.print("Temperat.Gomez,Bejar,
Huanqui,Olayunca");
humi=dht11.readHumidity();
temp=dht11.readTemperature();
Serial.println(humi);
digitalWrite(LED1,HIGH);
digitalWrite(LED3,HIGH);
digitalWrite(LED2,HIGH);
digitalWrite(LED4,HIGH);
display.setTextSize(1);
display.setCursor(6,18);
display.print("T:");
display.print(temp,0);
display.print("C H:");
display.print(humi,0);
display.display();
delay(300);

if (temp>=40){
digitalWrite(VENTILADOR1,LOW);
digitalWrite(VENTILADOR2,LOW);
digitalWrite(VENTILADOR3,LOW);
digitalWrite(VENTILADOR4,LOW);
digitalWrite(LED1,LOW);
digitalWrite(LED3,LOW);
digitalWrite(LED2,LOW);
digitalWrite(LED4,LOW);
}
}

Paso 7 Añada otra condición de tal Pegue Código añadido AQUÍ:


manera que, si la #include <SPI.h>
temperatura disminuye por #include <Wire.h>
debajo de 39 grados, se
#include <Adafruit_GFX.h>
apague el ventilador y
enciendan las lámparas. Si #include <Adafruit_SSD1306.h>
conseguimos esto, habremos #define OLED_RESET 4
realizado un CONTROL Adafruit_SSD1306
ON-OFF. display(OLED_RESET);
#define SSD1306_LCDHEIGHT 32
#include <DHT11.h>
#define pin 34
DHT11 dht11(pin);
float temp, humi;

void setup(){

display.begin(SSD1306_SWITCHCAP
VCC, 0x3C);
display.clearDisplay();
display.display();
display.setTextColor(WHITE);

pinMode(48,OUTPUT);
pinMode(49,OUTPUT);
pinMode(53,OUTPUT);

Serial.begin (9600);
}

void loop(){
humi=dht11.readHumidity();
temp=dht11.readTemperature();
Serial.println(humi);
display.setTextSize(1);
display.setCursor(6,18);
display.print("T:");
display.print(temp,0);
display.print("C H:");
display.print(humi,0);
display.display();
delay(1000);

if (temp > 40.0) {


digitalWrite(LAMPARA1, HIGH);
digitalWrite(LAMPARA2, HIGH);
digitalWrite(LAMPARA3, HIGH);
digitalWrite(LAMPARA4, HIGH);

digitalWrite(VENTILADOR1,
HIGH);
digitalWrite(VENTILADOR2,
LOW);
digitalWrite(VENTILADOR3,
HIGH);
digitalWrite(VENTILADOR4,
HIGH);

} else if (temp< 39.0) {


digitalWrite(LAMPARA1, HIGH);
digitalWrite(LAMPARA2, HIGH);
digitalWrite(LAMPARA3, HIGH);
digitalWrite(LAMPARA4, HIGH);
digitalWrite(VENTILADOR1,
LOW);
digitalWrite(VENTILADOR2,
HIGH);
digitalWrite(VENTILADOR3,
LOW);
digitalWrite(VENTILADOR4,
LOW);
}

Paso 8 Registre el valor de Pegue Foto de PLOTTER AQUÍ:


temperatura de forma
GRAFICA utilizando la
herramienta SERIAL
PLOTTER en el menú
Herramientas del IDE
Arduino.

Paso 9 Registre en formato de Pegue LINK DEL VIDEO AQUÍ:


video la experiencia
realizada explicando el https://youtube.com/shorts/6sGq8X_9lNk
funcionamiento del mismo.
IV. Reto de programación (para máximo puntaje)

Realice un programa de control de temperatura que se vea parecido al controlador


SCHNEIDER, en el cual debe verse: PV, SV, led indicador y pulsadores de control. El SET
POINT y la HISTERESIS debe poder ingresar por medio de los pulsadores.

#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);
#define SSD1306_LCDHEIGHT 32
#include <DHT11.h>
#define pin 34
DHT11 dht11(pin);
float temp, humi;

void setup(){
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
display.display();
display.setTextColor(WHITE);

pinMode(48,OUTPUT);
pinMode(49,OUTPUT);
pinMode(53,OUTPUT);
pinMode(9,INPUT);
pinMode(10,INPUT);
int SP;
Serial.begin (9600);
}

void loop(){
humi=dht11.readHumidity();
temp=dht11.readTemperature();
Serial.println(humi);
display.setTextSize(1);
display.setCursor(6,18);
display.print("SV:");
display.print(SP);
display.print("PV:");
display.print(temp,0);
display.display();
delay(1000);

if (temp>SP){
humi=dht11.readHumidity();
temp=dht11.readTemperature();
Serial.println(humi);
digitalWrite(49,LOW);
digitalWrite(53,LOW);
digitalWrite(48,HIGH);
}
else if (temp<SP){
digitalWrite(49,HIGH);
digitalWrite(53,HIGH);
digitalWrite(48,LOW);
}
if (9==HIGH){
SP++;
}
if (10==HIGH){
SP--;
}
}

V. Observaciones y conclusiones

Observaciones:

1. Se destaca la necesidad de utilizar la librería proporcionada por el docente para el sensor


DHT11, ya que está específicamente diseñada para este sensor. Usar otra librería puede
generar errores en la salida del sensor.

2. Se hace hincapié en la importancia de identificar y declarar correctamente los pines de


los componentes utilizados al principio del documento. Esta acción es crucial para su
correcto funcionamiento en el código de programación.

3. Se señala la importancia de declarar todas las variables necesarias, tanto digitales como
analógicas, entradas o salidas, para permitir al Arduino leer o escribir datos en estas
variables. También se destaca la configuración específica de los relés como normalmente
cerrados (NC), lo que requiere declararlos como activados (HIGH) para desactivarlos y
viceversa.
Conclusiones:

1. Se logró identificar y emplear eficazmente varios componentes del módulo de medición


y control de variables, incluyendo sensores, actuadores (pulsadores, relés, LEDs) y el
sensor DHT11 de temperatura y humedad.

2. Se logró la utilización exitosa del sensor DHT11 para medir la temperatura y la


humedad, mostrando los valores obtenidos en el monitor serial del Arduino.

3. Se logró implementar un controlador de temperatura que opera en un modo on-off,


manteniendo la temperatura dentro de un rango preestablecido mediante el uso de un
ventilador y lámparas incandescentes como actuadores. Esta automatización proporciona
un control efectivo de la temperatura.

4. Se pudo manipular los actuadores para controlar variables usando dispositivos IoT,
presentando la información obtenida en indicadores como una pantalla OLED o el monitor
serial del Arduino.

5. Se logró implementar un control on-off con arduino haciendo uso de diferentes


actuadores, en donde la variable de proceso es la temperatura, del mismo modo se
añadieron funciones de análisis de este control.

VI. Bibliografía

IoT_Pub via QR - Google Drive. (2013). Google.com.

https://drive.google.com/drive/folders/1lGarPrIekPHMJrvEgXUb1EN9pPEsd77K

También podría gustarte