Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Robótica Educativa
Partiendo de la base que ya tenemos instalado el IDE de Arduino, será necesario agregar las librerías
correspondientes al nuevo microcontrolador para poder utilizarlo.
Es posible encontrar mayor documentación en el siguiente link: https://arduino-
esp8266.readthedocs.io/en/latest/installing.html
Existen dos formas de hacerlo, una por medio del propio IDE de Arduino y otra por fuera.
Lic.
Mariela V. Burghardt 1
UNaM - Tecnicatura Universitaria en Tecnologías de la Información 2022
Robótica Educativa
http://arduino.esp8266.com/stable/package_esp8266com_index.json
Con esto le indicamos al IDE de Arduino que busque los datos de la tarjeta en esa url y agregue las
tarjetas dentro de la lista del Gestor de Tarjetas.
Lic.
Mariela V. Burghardt 2
UNaM - Tecnicatura Universitaria en Tecnologías de la Información 2022
Robótica Educativa
Seleccionamos el mismo, y presionamos el botón Instalar, esta operación puede demorar algunos
minutos.
6. Por último, solo nos queda verificar que se haya instalado adecuadamente, para ello
ingresamos al menú Herramientas – Placa y buscamos “NodeMCU 1.0” en la lista:
Lic.
Mariela V. Burghardt 3
UNaM - Tecnicatura Universitaria en Tecnologías de la Información 2022
Robótica Educativa
Luego solo es cuestión de seleccionar el Puerto por el cual el equipo reconoció a la placa.
No es raro que, en ciertas ocasiones, puede ocurrir que el enlace desde donde el IDE detecta que
archivos debe descargar no esté funcionando, o los vínculos no estén activos; de manera que para
poder configurar el entorno en estas circunstancias se debe realizar por fuera del Arduino IDE.
Será necesario contar con algunas herramientas antes de comenzar:
Lic.
Mariela V. Burghardt 4
UNaM - Tecnicatura Universitaria en Tecnologías de la Información 2022
Robótica Educativa
cd %USERPROFILE%\Documents\Arduino\hardware\esp8266com\esp8266\tools python
get.py
Esto va a demorar algunos minutos, concluido el proceso podemos iniciar el IDE de Arduino y
corroborar dentro del menú Herramientas – Placas si “NodeMCU 1.0” está en la lista.
Ejercicio 1: Blink
El objetivo de este ejercicio es corroborar el funcionamiento de la placa y del entorno de trabajo
que se instaló.
Lic.
Mariela V. Burghardt 5
UNaM - Tecnicatura Universitaria en Tecnologías de la Información 2022
Robótica Educativa
El voltaje de operación del NodeMCU es de 3.3V, utilice la Ley de Ohm para calcular el
valor de la resistencia
𝑉=𝐼*𝑅
Una pequeña ayuda:
Lic.
Mariela V. Burghardt 6
UNaM - Tecnicatura Universitaria en Tecnologías de la Información 2022
Robótica Educativa
Si seguimos el diagrama de cómo conectamos los componentes, vemos conectamos el led al puerto
D6 que se corresponde con el GPIO12, por lo tanto, en el código debemos indicar que pinLed = 12.
También es posible utilizar la sigla D6.
Una vez que se reemplaza este valor, podemos compilar y el led comenzará el ciclo de prenderse y
apagarse.
Lic.
Mariela V. Burghardt 7
UNaM - Tecnicatura Universitaria en Tecnologías de la Información 2022
Robótica Educativa
Será necesario utilizar una biblioteca llamada ESP8266WiFi, que se encarga de gestionar la conexión
a la red inalámbrica. Por medio del método begin(), que recibe como argumentos el nombre de la
red y la contraseña, el dispositivo se conecta a la red inalámbrica.
Luego de compilar y subir el programa a la placa, en el monitor serie se puede ver cual es la dirección
IP que toma la placa.
Lic.
Mariela V. Burghardt 8
UNaM - Tecnicatura Universitaria en Tecnologías de la Información 2022
Robótica Educativa
Conocer la dirección IP de la placa dentro de la red, nos permitirá conectarnos a la misma para
solicitar información.
El objetivo de este ejercicio es generar una página web en el dispositivo que muestre un mensaje.
Al igual que en el ejercicio 2, utilizaremos la librería ESP8266WiFi para que el dispositivo pueda
conectarse a la red inalámbrica.
Se pueden utilizar otros puertos que son estándares de otros servicios: FTP, SSH, HTTPS, NTP; puede
leer más aquí: https://es.wikipedia.org/wiki/Anexo:N%C3%BAmeros_de_puertos_de_red
Lic.
Mariela V. Burghardt 9
UNaM - Tecnicatura Universitaria en Tecnologías de la Información 2022
Robótica Educativa
1 #include <ESP8266WiFi.h>
2
3 const char* ssid = "Nombre_red";
4 const char* password = "clave";
5
6 WiFiServer server(80);
7
8 void setup() {
9
10 Serial.begin(115200);
11 WiFi.begin(ssid, password);
12 Serial.println("Conectando");
13
14 while (WiFi.status() != WL_CONNECTED) {
15 Serial.print(".");
16 delay(500);
17 }
18
19 Serial.println("Conectado");
20 Serial.print("Direccion: ");
21 Serial.println(WiFi.localIP());
22
23 //Se inicia el servidor
24 server.begin();
25
26 }
27
28 void loop() {
29
30 WiFiClient client = server.available();
31 if(!client) { //No se detecto ningun cliente
32 return;
}
33
Lic.
Mariela V. Burghardt 10
UNaM - Tecnicatura Universitaria en Tecnologías de la Información 2022
Robótica Educativa
34
35 Serial.println("Ingreso un nuevo cliente/requerimiento");
36 //Se espera hasta que el cliente haya enviado todos los
37 requerimientos
38 while(!client.available()) {
39 delay(1);
40 }
41
42 String req = client.readStringUntil('\r');
43 Serial.print("Requerimiento: ");
44 Serial.println(req);
45
46 client.flush();
47
String respuesta = "HTTP/1.1 200 OK\r\nContent-Type:
text/html\r\n\r\n<!DOCTYPE
HTML>\r\n<html>\r\n<h1>Hola Mundo</h1></html> ";
48
client.print(respuesta);
49 delay(1);
50 Serial.println("Cliente desconectado");
51 }
El objetivo de este ejercicio es poder controlar el encendido de un led desde una página
web, para ello construimos el siguiente circuito:
Calcule los valores de las resistencias utilizando la Ley de Ohm, como se realizo en el
ejercicio 1.
1 #include <ESP8266WiFi.h>
2
3 const char* ssid = "nombre_red"; const
4 char* password = "clave_red";
5
6 WiFiServer server(80);
7
8 int pinLed1 = 12;
9
10 void setup() {
11
12 Serial.begin(115200);
13 WiFi.begin(ssid, password);
14 Serial.println("Conectando");
15
16 while (WiFi.status() != WL_CONNECTED) {
17 Serial.print(".");
18 delay(500);
19 }
20
21 Serial.println("Conectado");
22 Serial.print("Direccion: ");
23 Serial.println(WiFi.localIP());
24
25 //Se inicia el servidor
26 server.begin();
27
28 //Se configura el pin como salida
29 pinMode(pinLed1,OUTPUT); digitalWrite(pinLed1,LOW);
30 }
31 void loop() {
32
33 WiFiClient client = server.available();
34 if(!client) { //No se detecto ningun cliente
35 return;
36 }
37 Serial.println("Ingreso un nuevo cliente/requerimiento");
//Se espera hasta que el cliente haya enviado todos los
38
requerimientos
39 while(!client.available()) {
40 delay(1);
41 }
42 String requerimiento = client.readStringUntil('\r');
43 Serial.print("Requerimiento: ");
44 Serial.println(requerimiento);
45 client.flush();
46
47 //Se evalúa el requerimiento
48 int nroPin;
49 if(requerimiento.indexOf("/D6/0") != -1) {
50 digitalWrite(pinLed1,LOW);
51 } else if(requerimiento.indexOf("/D6/1") != -1) {
52 digitalWrite(pinLed1,HIGH);
}
53
54
String respuesta = "HTTP/1.1 200 OK\r\nContent-Type:
55
text/html\r\n\r\n<!DOCTYPE HTML>\r\n<html>\r\n<h1>LED</h1>";
56
respuesta+= "<p>LED 1 esta ";
57 int estado = digitalRead(pinLed1);
58 respuesta+= (estado) ? "Encendido <a
59 href=\"/D6/0\">Apagar</a>" : "Apagado <a
60 href=\"/D6/1\">Encender</a></p>";
61 respuesta+="</html>\n";
62 client.print(respuesta);
delay(1);
63
Serial.println("Cliente desconectado");
64
}
65
Conecte un sensor a la placa, puede ser cualquier tipo de sensor que disponga y muestre
los datos por medio de una pagina web. Extendiendo el desarrollo del modelo de programa:
https://gist.github.com/gsampallo/9cf807bc4b14fdf2e8b46b60cebce68c
Extienda el desarrollo del programa del ejercicio 5 para poder encender los tres leds.
Tip:
La respuesta del dispositivo al navegador es una página web, la misma está
construida con lenguaje HTML, HTML utiliza una serie de etiquetas para indicar el
tipo de contenido.
<p></p> establece que el contenido es un párrafo; utilice las mismas para indicar el bloque
de cada led.
Para saber más: https://es.wikipedia.org/wiki/HTML
El objetivo de este ejercicio será utilizar servicios provistos por la nube para obtener datos
dinámicos y mostrarlos en una página web dentro de nuestro dispositivo.
Para ello realizamos:
#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>
const char* ssid = "Nombre_Red";
const char* password = "Clave_red";
WiFiServer server(80);
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password);
Serial.println("Conectando");
Serial.println("Conectado");
Serial.print("Direccion: ");
Serial.println(WiFi.localIP());
obtenerDatos();
server.begin();
}
const char *host =
"https://www.gsampallo.com/wp-content/uploads/2022/12/dog.txt";
String pagina;
void obtenerDatos() {
HTTPClient http;
http.begin(host);
return;
}
Serial.println("Ingreso un nuevo cliente/requerimiento");
while(!client.available()){
delay(1);
}
client.print(pagina);
delay(1);
Serial.println("Cliente desconectado");
Luego de compilar el programa, debemos abrir el Monitor Serie para saber cual es la IP del
dispositivo y utilizar el navegador para conectarnos a dicha IP, será similar a
http://192.168.1.XXX
Existen otro tipo de webservice que utilizan el formato JSON para devolver los datos; JSON
facilita poder manipular los datos, para ello es necesario utilizar la librería ArduinoJSON en
conjunto con el código indicado.
Un webservice muy popular es OpenWeatherMap https://openweathermap.org/ que
ofrece datos del clima y pronostico del tiempo de manera gratuita, solo es necesario
registrarse para obtener acceso a la misma.
Ejercicio 9: Sensores
Comenzamos importando las librerías que vamos a utilizar y definiendo los parámetros
globales:
1 #include <ESP8266WiFi.h>
2 #include <WiFiClient.h>
3 #include <ESP8266WebServer.h>
4
5 const char *ssid = "Nombre_Red"; //Nombre de la red inalámbrica
6 const char *password = "Clave"; //Clave de la red
7 //Creamos un servicio que atiende las solicitudes de los clientes.
8 ESP8266WebServer server(80);
9
WiFi, cuál será la función que atenderá los requisitos de los clientes:
10 void setup() {
11 Serial.begin(115200);
12
13 WiFi.softAP(ssid,password);
14
15 IPAddress ip = WiFi.softAPIP();
16 Serial.print("Direccion IP: ");
17 Serial.println(ip);
18
19 server.on("/",handleTemp);
20
21 server.begin();
22 Serial.println("Servidor iniciado");
23 }
24
En la función loop()invocamos a una función de server para que se ocupe de los requisitos
de los clientes:
25
26 void loop() {
27 server.handleClient();
28 }
29
Por último nos queda definir la función handleTemp() , la cual se hará cargo de obtener
el valor del sensor, convertirlo a grados celsius y devolvernos una página web para que
sea leído desde nuestro navegador:
30
31 void handleTemp() {
32 //Se debe tener en cuenta que el voltaje de operacion es de 3.3V.
33 float resolution=3.3/1023;
34
35 float temp = ((analogRead(A0) * resolution) * 100)+23.89;
36
37 String respuesta = "<h1>"+String(temp)+"°C<h1>";
38
39 server.send(200, "text/html", respuesta);
40 }
41