Laboratorio_IOT_ESP_2
Laboratorio_IOT_ESP_2
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>
int PinLED = 2;
int estado= LOW;
void setup() {
void loop() {
WiFiClient client= server.available (); // si el servidor no esta disponible no se ejecuta de hay para abajo
if (!client)
{
return;
}
}
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(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)
#include <Servo.h>
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("....................");
}
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 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");
}
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
}
#include <DHT.h>
#include <ESP8266WiFi.h>
void setup() {
Serial.begin(115200);
delay(1000);
Serial.println("Conectando a WiFi...");
Serial.println("Conectado a WiFi");
Serial.println(WiFi.localIP()); // Imprime la IP asignada
void loop() {
if (client) {
Serial.println("Nuevo cliente.");
while (client.connected()) {
if (client.available()) {
char c = client.read();
if (c == '\n') {
if (currentLine.length() == 0) {
float h = dht.readHumidity();
float t = dht.readTemperature();
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.print("Humedad: ");
client.print(h);
client.println("%<br>");
client.print("Temperatura: ");
client.print(t);
client.println("°C<br>");
client.println("</body>");
client.println("</html>");
currentLine = "";
currentLine += c;
Serial.println("Cliente desconectado.");
#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() {
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