0% encontró este documento útil (0 votos)
13 vistas11 páginas

Laboratorio_IOT_ESP_2

El documento describe prácticas de laboratorio utilizando dispositivos ESP32, ESP8266 y ESP12 para encender LEDs, controlar servos y leer datos de un sensor DHT11 a través de una interfaz web. Incluye ejemplos de código para establecer conexiones Wi-Fi, crear servidores web y controlar dispositivos mediante solicitudes HTTP. También se menciona la posibilidad de diseñar un programa que permita controlar LEDs a través de redes Wi-Fi creadas por la ESP.

Cargado por

dabedoyacumbe
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
13 vistas11 páginas

Laboratorio_IOT_ESP_2

El documento describe prácticas de laboratorio utilizando dispositivos ESP32, ESP8266 y ESP12 para encender LEDs, controlar servos y leer datos de un sensor DHT11 a través de una interfaz web. Incluye ejemplos de código para establecer conexiones Wi-Fi, crear servidores web y controlar dispositivos mediante solicitudes HTTP. También se menciona la posibilidad de diseñar un programa que permita controlar LEDs a través de redes Wi-Fi creadas por la ESP.

Cargado por

dabedoyacumbe
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 11

Laboratorio IOT ESP32 / ESP8266 / ESP12

Para iniciar estas prácticas como primera medida vamos a encender los leds de las respectivas tarjetas que cada
uno de ustedes adquirieron; la idea es que ustedes puedan ajustar los códigos con la ayuda de la inteligencia
artificial.

1) Vamos a prender los dos leds de la esp8266; este dispositivo cuenta con dos leds uno rojo y otro blanco;
de tener otra tarjeta cambiar el programa para generara el blink o parpadeo de led en sus respectivas
tarjetas, a continuación, el respectivo código

// Policia

void setup() {
// put your setup code here, to run once:
pinMode(2, OUTPUT);
pinMode(16, OUTPUT);

void loop() {

digitalWrite(2,LOW);
digitalWrite(16,HIGH);
delay(150);
digitalWrite(2,HIGH);
digitalWrite(16,LOW);
delay(1500);

2) Ahora vamos a prender un led de la ESP desde una página web usando wiffi (Servidor web)

Codigo: ESP3266 (apoyarse para mirar código con ayuda de IA a su tarjeta ESP32/ESP32CAM/Pi pico W)
#include <ESP8266WiFi.h>

const char* ssid= "IOT"; // nombre de red


const char* password = "itla2024"; // contreaseña

WiFiServer server (80); // creamos el servidor en el puerto 80

int PinLED = 2;
int estado= LOW;

void setup() {

Serial.begin(115200); // se inicia comunicacion serie

pinMode (PinLED, OUTPUT);


digitalWrite(PinLED, LOW);
WiFi.begin(ssid,password); // usa los dos parametros para accedes a la red de internet

Serial.printf ("\n\nConectando a lared: %s\n", WiFi.SSID().c_str()); // nos muestra el mombre de la red


q estamos conectados gracisa a la funcion WiFi.SSID

while(WiFi.status() != WL_CONNECTED) // si no logramos conectar


{
delay (500);
Serial.print(".");
}
Serial.println(" ");
Serial.println("WiFi conectada");

server.begin(); // inicia el servidor


Serial.println("servidor inicializado");

Serial,printf("\n\nUtiiza esta URL para conectar: http://%s/\n",WiFi.localIP().toString().c_str());

void loop() {

WiFiClient client= server.available (); // si el servidor no esta disponible no se ejecuta de hay para abajo
if (!client)
{
return;
}

Serial.println ("nuevo cliente");


while (!client.available()) {
delay (1);

}
String peticion = client.readStringUntil ('\r'); // guardar la info que se envie de la pg por medio de la url a la
variable peticion
Serial.println(peticion);
client.flush ();

if(peticion.indexOf ('/LED=ON') != -1) // index inspecciona y devuelve la pociciona donde se encuentra


{ estado = LOW; }
if(peticion.indexOf ('/LED=OFF') != -1)
{ estado = HIGH; }

digitalWrite (PinLED, estado);


// configuracion de la pagina
client.println("HTTP/1.1 200 OK"); // para escribir en la pag
client.println("");
client.println("");
client.println("");
client.println("");

client.print("<h1 align=center>CONTROL LED "); // titulo

if(estado == HIGH) //
{client.print("<input type='image' src='https://i.imgur.com/00i0BdB.jpg' style='display:block; margin:auto'
width='30%' onClick=location.href='/LED=ON'>");}
else
{client.print("<input type='image' src='https://i.imgur.com/uQxhFE5.jpg' style='display:block; margin:auto'
width='30%' onClick=location.href='/LED=OFF'>");}

client.println("</html>");
delay(1);
Serial.println("Peticion finalizada"); // Se finaliza la petición al cliente. Se inicializa la espera de una nueva
petición.
Serial.println("");

Ahora vamos a ir al monitor serie para realizar la conexión, primero se sube el programa a la
tarjeta que anteriormente habíamos trabajado, luego abrimos el monitor serie y oprimimos el
botón de reset para que la tarjeta se conecte al wiffi
Pagina que se espera (Puede optimizar la página con ayuda de la IA)

3) Control de servos con servidores web y botón deslizador

Montaje (Servo está conectado en el pin 9)


Código:

#include <Servo.h>

Servo miServo; // Crea un objeto Servo


String ordenes[] = {
"AT+RST",
"AT+CWJAP=\"RED_WIFFI\",\"Contraseña\"", // Cambia por tu red y contraseña
"AT+CWMODE=3",
"AT+CIFSR",
"AT+CIPMUX=1",
"AT+CIPSERVER=1,80",
"END"
};

void setup() {
Serial3.begin(9600); // Cambiar velocidad si es necesario
Serial.begin(115200);
delay(1000);
int index = 0;
while (ordenes[index] != "END") {
Serial3.println(ordenes[index++]);
while (true) {
String s = GetLineWIFI();
if (s != "") Serial.println(s);
if (s.startsWith("OK") || s.startsWith("ready")) break;
}
Serial.println("....................");
}

miServo.attach(9); // Conecta el servo al pin 9 (ajusta según tu conexión)


}

void loop() {
while (Serial3.available() > 0) {
String line = GetLineWIFI();
if (line.startsWith("GET /move?angle=")) {
int angle = line.substring(15).toInt();
moverServo(angle);
}

char c = Serial3.read();
if (c == 71) {
Serial.println("Enviada PETICIÓN Web ");
webserver();
delay(500);
}
}
}

void http(String output) {


Serial3.print("AT+CIPSEND=0,");
Serial3.println(output.length());
if (Serial3.find(">")) {
Serial.println(output);
Serial3.println(output);
delay(10);
while (Serial3.available() > 0) {
if (Serial3.find("SEND OK")) break;
}
}
}

void webserver(void) {
http("<!DOCTYPE HTML>");
http("<html>");
http("<head><title>Control del Servomotor</title>");
http("<meta http-equiv=\"refresh\" content=\"15\"></head>");
http("<body><h1>Control del Servomotor</h1>");
http("<input type='range' min='0' max='180' value='90' id='slider' onchange='sendValue()'>");
http("<button onclick='sendValue()'>Mover Servomotor</button>");
http("<p id='valueDisplay'>Valor: 90</p>");
http("<script>");
http("function sendValue() {");
http("var slider = document.getElementById('slider');");
http("document.getElementById('valueDisplay').innerHTML = 'Valor: ' + slider.value;");
http("var xhttp = new XMLHttpRequest();");
http("xhttp.open('GET', 'move?angle=' + slider.value, true);");
http("xhttp.send();");
http("}");
http("</script>");
http("</body></html>");

delay(1);
Serial3.println("AT+CIPCLOSE=0");
}

void moverServo(int angle) {


if (angle >= 0 && angle <= 180) {
miServo.write(angle);
Serial.print("Servo movido a: ");
Serial.println(angle);
}
}

String GetLineWIFI() {
String S = "";
if (Serial3.available()) {
char c = Serial3.read();
while (c != '\n') {
S = S + c;
delay(25);
c = Serial3.read();
}
return S;
}
return S; // Retorna vacío si no hay datos
}

4) Lectura DTH11 en una página web (Conectado al pin digital 2 )

#include <DHT.h>

#include <ESP8266WiFi.h>

#define DHTPIN 2 // Pin donde está conectado el DHT11

#define DHTTYPE DHT11 // DHT 11

DHT dht(DHTPIN, DHTTYPE); // Inicializa el sensor DHT11

const char* ssid = "RED_WIFFI"; // Cambia por tu red Wi-Fi

const char* password = "Contraseña"; // Cambia por tu contraseña

WiFiServer server(80); // Crea un servidor en el puerto 80

void setup() {

Serial.begin(115200);

dht.begin(); // Inicia el sensor DHT11

WiFi.begin(ssid, password); // Conecta a la red Wi-Fi

while (WiFi.status() != WL_CONNECTED) {

delay(1000);

Serial.println("Conectando a WiFi...");

Serial.println("Conectado a WiFi");
Serial.println(WiFi.localIP()); // Imprime la IP asignada

server.begin(); // Inicia el servidor

void loop() {

WiFiClient client = server.available(); // Escucha a los clientes

if (client) {

Serial.println("Nuevo cliente.");

String currentLine = ""; // Variable para almacenar la línea actual

while (client.connected()) {

if (client.available()) {

char c = client.read();

Serial.write(c); // Muestra el carácter recibido en el monitor serial

if (c == '\n') {

// Si la línea está vacía, significa que se recibió una solicitud HTTP

if (currentLine.length() == 0) {

// Lee la temperatura y la humedad

float h = dht.readHumidity();

float t = dht.readTemperature();

// Comienza a enviar la respuesta HTTP

client.println("HTTP/1.1 200 OK");

client.println("Content-type:text/html");

client.println();

client.println("<!DOCTYPE HTML>");

client.println("<html>");

client.println("<head><title>Datos DHT11</title></head>");

client.println("<body>");

client.println("<h1>Datos del Sensor DHT11</h1>");

client.print("Humedad: ");
client.print(h);

client.println("%<br>");

client.print("Temperatura: ");

client.print(t);

client.println("°C<br>");

client.println("</body>");

client.println("</html>");

break; // Salimos del bucle

} else { // Si hay un contenido en la línea actual, la reiniciamos

currentLine = "";

} else if (c != '\r') { // Agrega el carácter a la línea actual

currentLine += c;

client.stop(); // Cierra la conexión

Serial.println("Cliente desconectado.");

5) ESP como punto de conexión o Access point (Consultar que es un accespoint)

#include <ESP8266WiFi.h>

const char *ssid_AP = "UPN optativa II"; // el asterisco significa que es permisiva
const char *Password_AP = "UNIVERSIDAD2022";

void setup() {
Serial.begin(115200);
delay(10);
WiFi.mode(WIFI_AP); // modo acces point
WiFi.softAP(ssid_AP,Password_AP);

Serial.print("Wifi conectado");
Serial.println();
WiFi.printDiag(Serial); // avisar cuando hay una coneccion
Serial.print("AP direccion IP: "); // mensaje para avisar cuando esta conectado
Serial.println(WiFi.softAPIP()); // para visualizar la IP del la tarjeta
}

void loop() {

Resultado que se espera

6) Con la ayuda de la IA Diseñe un programa que cree una red wi fi y por medio del teléfono controlar led por
microredes creadas por la ESP

También podría gustarte