Вы находитесь на странице: 1из 22

RESUMEN

Se realizó una comunicación por medio del wi-fi, con un protocolo TCP/IP y un
módulo ESP8266 con ayuda del software de arduino. Este software (IDE) nos permitió
configurar los puertos para transmitir la información al módulo, en el que se logró el
encendido de un led mediante una IP que nos generó el modulo y una interfaz web
para el celular o PC.

OBJETIVO

El objetivo de este trabajo es primeramente explorar diferentes interfaces de


comunicación para el estudio del internet de las cosas y segundo es el de investigar las
características de una plataforma específica para la comunicación de datos. En
nuestro caso se eligió la tecnología Wi-Fi.

1
INDICE

1. Base teórica……………………………………………………………………………………. 4

1.1 ¿Que es un protocolo?............................................................................................4

1.1.2 Protocolo TCP/IP……………………………………………………………………..4

1.1.3 Red TCP/IP………………………………………………………………………………5

1.2 Arquitectura TCP/IP…………………………………………………………………….5

1.3 Módulo ESP8266…………………………………………………………………………7

1.4 Comparación de tarjetas……………………………………………………………..10

2. Desarrollo………………………………………………………………………………………..13

3. Resultados………………………………………………………………………………………. 20

4. Análisis de los resultados ………………………………………………………………… 22

5. Observaciones y conclusiones……………………………………………………………23

6. Bibliografía………………………………………………………………………………………..23

2
1. Base teórica

1.1 ¿Que es un protocolo?

Los protocolos son conjuntos de normas para formatos de mensaje y procedimientos que permiten
a las máquinas y los programas de aplicación intercambiar información.

Un protocolo es un método estándar que permite la comunicación entre procesos (que


potencialmente se ejecutan en diferentes equipos), es decir, es un conjunto de reglas y
procedimientos que deben respetarse para el envío y la recepción de datos a través de una red.
Existen diversos protocolos de acuerdo a cómo se espera que sea la comunicación. Algunos
protocolos, por ejemplo, se especializarán en el intercambio de archivos (FTP); otros pueden
utilizarse simplemente para administrar el estado de la transmisión y los errores (como es el caso
de ICMP), etc.

En Internet, los protocolos utilizados pertenecen a una sucesión de protocolos o a un conjunto de


protocolos relacionados entre sí (figura 1.1.1). Este conjunto de protocolos se denomina TCP/IP.
Entre otros, contiene los siguientes protocolos: HTTP, FTP, ARP, ICMP, IP, TCP, UDP, SMTP,
Telnet, NNTP.

Figura 1.1.1 Protocolos del internet

1.1.2 Protocolo TCP/IP

TCP (Protocolo de Control de Transmisión) es uno de los principales protocolos de la capa de


transporte del modelo TCP/IP. En el nivel de aplicación, posibilita la administración de datos que
vienen del nivel más bajo del modelo, o van hacia él. Cuando se proporcionan los datos al
protocolo IP, los agrupa en datagramas IP, fijando el campo del protocolo en 6. TCP es un
protocolo orientado a conexión, es decir, que permite que dos máquinas que están comunicadas
controlen el estado de la transmisión.

Entre las principales características del protocolo TCP se pueden mencionar las siguientes: permite
poner nuevamente los datagramas en orden cuando vienen del protocolo IP, permite que el
monitoreo del flujo de los datos y así evitar la saturación de la red, permite que los datos se formen
en segmentos de longitud variada para entregarlos al protocolo IP, permite multiplexar los datos, es
decir, que la información que viene de diferentes fuentes (por ejemplo, aplicaciones) en la misma

3
línea pueda circular simultáneamente. Por último, TCP permite comenzar y finalizar la
comunicación amablemente

TCP/IP es un protocolo abierto, lo que significa que se publican todos los aspectos concretos del
protocolo y cualquiera los puede implementar.

TCP/IP está diseñado para ser un componente de una red, principalmente la parte del software.

1.1.3 Red TCP/IP

Las aplicaciones modernas para trabajo en redes requieren de un sofisticado método de transporte
desde una máquina a otra, los cuales desean estar conectados simultáneamente a un servidor
remoto o a una red, necesitará un modo de acceso para que puedan compartir la conexión a la red,
sin que las acciones de cada uno interfieran con las de los demás. La estrategia que un gran
número de protocolos de red utilizan hoy día se llama conmutación de paquetes, (packet-
switching). Un paquete es nada más que un pequeño trozo de datos que se transfiere de una
máquina a otra a través de una red. Esta transferencia ocurre a medida que el datagrama es
transmitido a través de cada enlace en la red. Una red de conmutación de paquetes comparte un
único enlace con muchos usuarios, enviando los paquetes alternadamente, desde un usuario a
otro, a través de ese enlace.

1.2 Arquitectura TCP/IP

TCP/IP tiene una arquitectura de 4 capas (figura 1.21) que tienen la siguiente relación con el
modelo de referencia OSI:

Figura 1.2.1 Capas del modelo TCP/IP y OSI

4
Los niveles superiores (capas de aplicación y transporte) se implementan solamente en los
equipos finales (emisor y receptor) y se encargan de suministrar a los niveles inferiores los bloques
de datos y de comprobar que han llegado a su destino. Mientras que los niveles inferiores (capas
de Internet y acceso a red) se implementan en todos los computadores y dispositivos de
encaminamiento. Estos niveles se encargan de retransmitir datos desde un ordenador a otro
pasando por todos los dispositivos de encaminamiento necesarios.

Para que la comunicación sea posible cada ordenador en la red debe tener una única dirección IP
que permita identificar ese equipo. Cada proceso o aplicación que se ejecuta dentro de un
ordenador en red debe tener una dirección única dentro del mismo, para que los protocolos del
nivel de transporte entreguen los datos a la aplicación adecuada. Estas direcciones se llaman
puertos.
La forma en que se comunican los diferentes niveles es la misma que en el modelo OSI:

-El emisor genera un bloque de datos y realiza una petición de comunicación al protocolo del nivel
de aplicación correspondiente.
-El nivel de transporte divide este bloque en fragmentos más pequeños y le añade una cabecera
de control formando el segmento. En la cabecera de control el nivel de transporte adjunta datos del
puerto correspondiente a la aplicación destino, número de secuencia del bloque y bits para
la comprobación de errores.
-El nivel de Internet añade una cabecera de control a cada segmento para formar el datagrama. En
la cabecera de control se indica la dirección del ordenador de destino e información sobre el tipo de
encaminamiento que se debe seguir.
-El nivel de acceso a red añade su propia cabecera con la dirección de la subred de destino
e información sobre las prestaciones que ofrece, como puede ser un nivel de prioridad, y crea
un paquete o trama, que se transmite a través de la red.

En la recepción, el proceso es el contrario. Cada nivel va quitando las cabeceras de control del
nivel inferior, procesa el bloque de información y lo envía al nivel superior (figura 1.2.2).

Figura 1.2.2 Explicación de las capas

5
1.3 Módulo ESP8266

Se trata de un chip integrado con conexión WiFi y compatible con el protocolo TCP/IP. El objetivo
principal es dar acceso a cualquier microcontrolador a una red. El
uso que le demos dependerá de si lo tenemos como chip o como módulo. Dentro de la gran
cantidad de usos caben destacar los siguientes:

-Electrodomésticos conectados.
-Automatización del hogar.
-Casas inteligente. ITEAD es puntera en este sector.
-Automatización de la industria.
-Monitor de bebés.
-Cámaras IP.
-Redes de sensores.
-Wereables.
-IoT (Internet of Things o Internet de las Cosas)
-IIoT (Industrial Internet of Things o Internet de las Cosas para el sector Industrial)

Especificaciones del chip ESP8266

No me cansaré de repetir que lo primero que debemos hacer cuando adquirimos un nuevo
componente es mirar la hoja de especificaciones técnicas. La empresa Espressif nos facilita dicha
hoja en Inglés. A continuación haré un resumen de lo más importante.

Hardware

-Utiliza una CPU Tensilica L106 32-bit


-Voltaje de operación entre 3V y 3,6V
-Corriente de operación 80 mA
-Temperatura de operación -40ºC y 125ºC

Conectividad

-Soporta IPv4 y los protocolos TCP/UDP/HTTP/FTP


-No soporta HTTPS en un principio. Si que lo hace mediante software tanto en cliente como
servidor TLS1.2. La primera implementación está todavía en desarrollo.

6
Puertos GPIO (de propósito general)

Figura 1.3.1 GPIO chip ESP8266

Tiene 17 puertos GPIO (figura 1.3.1) pero solo se pueden usar 9 o 10. El GPIO16 es especial ya
que está conectado al RTC (Real Time Clock).

Pueden ser configurados con resistencia Pull-up o Pull-down.

Soporta los principales buses de comunicación (SPI, I2C, UART).

Características eléctricas

-Voltaje de trabajo entre 3V y 3,6V.


-Según noticias del propio CEO de Espressif, admite tensiones de entrada de 5V e los puertos
GPIO.
Consumos

Dependerá de diferentes factores como el modo en el que esté trabajando el ESP8266, de los
protocolos que estemos utilizando, de la calidad de la señal WiFi y sobre todo de si enviamos o
recibimos información a través de la WiFi. Oscilan entre los 0,5 μA (microamperios) cuando el
dispositivo está apagado y los 170 mA cuando transmitimos a tope de señal.

Modos de operación

Debido a los sectores a los que va enfocado, wereables, dispositivos del IoT y móviles, el ESP8266
requiere de una gestión de energía eficaz. Dispone de una arquitectura de bajo consumo que
trabaja en 3 modos.

7
-Active mode o modo activo: a pleno rendimiento.
-Sleep mode o modo dormido: solo el RTC (Real Time Clock) está activo para mantener la
sincronización. Se queda en modo alerta de los posibles eventos que le hagan despertar. Mantiene
en memoria los datos de conexión y así no hace falta volver a establecer la conexión con la WiFi.
Consume entre 0,6 mA y 1 mA.
-Deep sleep o modo en sueño profundo: el RTC está encendido pero no operativo. Debe pasar por
el modo dormido antes de despertar. Hay que llevar especial cuidado con los datos ya que en este
estado es como si estuviera apagado y todos los datos que no estén almacenados se pierden.
Consume alrededor de 20 μA.

Módulos ESP-XX

Al igual que con Arduino, donde trabajamos con la placa o circuito integrado, con el ESP8266
ocurre exactamente lo mismo. El fabricante AI-Thinker proporciona la serie ESP con diferentes
modelos para diferentes usos. A parte han ido surgiendo diferentes placas que incorporan algún
módulo ESP como el NodeMCU.

-NodeMCU

El NodeMCU (figura 1.3.2) es el módulo más característico de este tipo. Su precio ronda los
6€. A diferencia de los otros módulos, viene con todo lo necesario para empezar a trabajar de
forma autónoma. Incluye un adaptador serie/USB y se alimenta a través del microusb. Está basado
en el ESP-12 y la última versión oficial es la 2. Lo más interesante de este módulo es que puedes
descargar un firmware que te permite programar en lenguajes como LUA, Python, Basic o
JavaScript. Sin duda alguna este módulo es la mejor opción si queremos adentrarnos en el mundo
del ESP8266.

Figura 1.3.2 Modulo NodeMCU

8
1.4 Comparación de tarjetas

ESP-01

Se trata del módulo más popular aunque en muchas ocasiones, no es el más conveniente (figura
1.4.1). El precio oscila entre los 2€ y los 4€. En la actualidad no es el más utilizado, ha sido
desbancado por el ESP-12 del cual hablaré más tarde. Tiene disponible dos pines GPIO digitales
para controlar sensores y actuadores.

Puedes seguir la guía completa para configurar el módulo ESP01 que publiqué.

También se puede llegar a utilizar para este uso los pines Rx y Tx si no se utilizan para la
comunicación a través del puerto serie. Se puede programar a través de un adaptador serie/USB o
con el cableado adecuado, a través de Arduino. Los conectores que vienen por defecto, no
permiten conectarlo a la protoboard.

Esto dificulta prototipar con este módulo. Sin embargo, podemos utilizar unos conectores en forma
de L para conectarlo a la placa de prototipado. Lo podemos usar como un dispositivo autónomo o
como complemento con Arduino.

Figura 1.4.1 Modulo ESP-01

9
ESP-05

Quizás sea el módulo más simple de toda la gama (figura 1.4.2). Está destinado a ser un Shield
WiFi para Arduino. Su precio ronda los 3€. La disposición de los pines nos permiten un fácil
conexionado con la protoboard. Por el contrario no dispone de ningún puerto GPIO accesible.

Figura 1.4.2 Modulo ESP-05

ESP-12

Este módulo (figura1.4.3) se está convirtiendo en el buque insignia de la empresa. Permite hacer
bastantes más cosas que los módulos anteriores. Su precio ronda los 4€. Tenemos acceso a 11
puertos GPIO de los cuales uno, es analógico con una resolución de 10-bit (1024 valores
posibles). La configuración en modo dormido es muy sencilla. Esto nos permitirá ahorrar mucha
energía. Por el contrario, la conexión con la protoboard no es muy amigable. Necesitamos soldar
los pines o comprar un adaptador por 0,20€, aunque también hay que soldar. Quizás está sea la
mejor opción si queremos hacerlo funcionar de forma autónoma.

10
Figura 1.4.3 Modulo ESP-12

ESP-201

Es el módulo preferido por los Makers para prototipar (figura 1.4.4). Su precio ronda los 6€. En
principio solo podemos acceder a 11 puertos GPIO pero tras unas modificaciones, podríamos
acceder a un par más de ellos. Lo podemos encajar fácilmente en una protoboard y permite el
acople de una antena externa para tener más alcance.

Figura 1.4.4 Modulo ESP-201

NodeMCU

El NodeMCU (figura 1.4.5) es el módulo más característico de este tipo. Su precio ronda los
6€. A diferencia de los otros módulos, viene con todo lo necesario para empezar a trabajar de
forma autónoma. Incluye un adaptador serie/USB y se alimenta a través del microusb. Está basado
en el ESP-12 y la última versión oficial es la 2. Lo más interesante de este módulo es que puedes
descargar un firmware que te permite programar en lenguajes como LUA, Python, Basic o

11
JavaScript. Sin duda alguna este módulo es la mejor opción si queremos adentrarnos en el mundo
del ESP8266.

Figura 1.4.5 Modulo NodeMCU

2. Desarrollo

Primeramente se adquirió el módulo NodeMCU (figura2.1) que está basado en el ESP8266-12E


que es una versión mejorada del ESP-01. Una vez con el dispositivo se investigaron sus
características de funcionamiento.

12
Figura 2.1 Características de los pines de NodeMCU

Se buscó en internet un manual (se nombra en la bibliografía) sobre el manejo básico de esta
tarjeta, en donde se muestra el funcionamiento de un encendido de un led a través de Wi-Fi, con
una dirección IP.

Se optó por la programación mediante el IDE de arduino, como indica el manual. En esta parte
inicial se conecta el dispositivo al pc para que se genere un puerto COM. Como la versión de
nuestra NodeMCU tiene un circuito de comunicación USB-Serial CH340 (figura 2.2), se tienen que
instalar drivers adicionales (este driver no lo incluye el IDE de arduino).

13
Figura 2.2 Instalación del driver CH340 para tarjetas genéricas

Una vez instalado este driver se procede a agregar las librerías al IDE de arduino mediante la
sección de preferencias, como se muestra en la figura 2.3.

Figura 2.3 Especificación de las librerías ESP8266

14
Después se instala desde la ventana de gestor de librerías para descargar todas las
configuraciones del ESP8266 (figura 2.4).

Figura 2.4 Instalación de librerías

Terminado el proceso de instalar drivers, se configura todo el software, para que se conecte con la
tarjeta.

La configuración básicamente es especificar al IDE de arduino las características del ESP8266 en


la sección de herramientas:

1. Asignación de un puerto (COM)

2. Tipo de placa ESP8266 en Herramientas

3. Velocidad de comunicación (baudios)

Con esto se termina la configuración y se procede a cargar el programa de prueba.

#include <ESP8266WiFi.h>

const char* ssid = "Geras";

const char* password = "12345678";

int ledPin = 13; // GPIO13

15
WiFiServer server(80);

void setup() {

Serial.begin(115200);

delay(10);

pinMode(ledPin, OUTPUT);

digitalWrite(ledPin, LOW);

// Connect to WiFi network

Serial.println();

Serial.println();

Serial.print("Connecting to ");

Serial.println(ssid);

WiFi.begin(ssid, password);

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

delay(500);

Serial.print(".");

Serial.println("");

Serial.println("WiFi connected");

// Start the server

server.begin();

Serial.println("Server started");

16
// Print the IP address

Serial.print("Use this URL to connect: ");

Serial.print("http://");

Serial.print(WiFi.localIP());

Serial.println("/");

void loop() {

// Check if a client has connected

WiFiClient client = server.available();

if (!client) {

return;

// Wait until the client sends some data

Serial.println("new client");

while(!client.available()){

delay(1);

// Read the first line of the request

String request = client.readStringUntil('\r');

Serial.println(request);

client.flush();

17
// Match the request

int value = LOW;

if (request.indexOf("/LED=ON") != -1) {

digitalWrite(ledPin, HIGH);

value = HIGH;

if (request.indexOf("/LED=OFF") != -1) {

digitalWrite(ledPin, LOW);

value = LOW;

// Set ledPin according to the request

//digitalWrite(ledPin, value);

// Return the response

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

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

client.println(""); // do not forget this one

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

client.println("<html>");

client.print("Led pin is now: ");

if(value == HIGH) {

client.print("On");

} else {

18
client.print("Off");

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

client.println("<a href=\"/LED=ON\"\"><button>Turn On </button></a>");

client.println("<a href=\"/LED=OFF\"\"><button>Turn Off </button></a><br />");

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

delay(1);

Serial.println("Client disonnected");

Serial.println("");

En el código anterior se configura los siguientes parámetros en el código:

 La placa NodeMCU

 El nombre de la red

 La clave de la red

 El pin de salida para la prueba (GPIO13)

 Velocidad de comunicación

 Configuración del puerto serie (activado desactivado)

 Configuración de la IP

 Encendido y apagado del led

 Configuración de la interfaz (botones y letras)

19
3. Resultados

Se cargó el programa a la tarjeta, se abre la comunicación serial para comprobar la comunicación.


En esta ventana nos indica unos puntos mientras realiza el proceso de conexión. Una vez
conectado la comunicación serial, genera la dirección IP (figura 3.1).

Figura 3.1 Comunicación serial con la tarjeta NodeMCU

Como muestra la imagen anterior el modulo se conecta correctamente a la red especificada, y una
vez conectada genera su dirección para acceder a su interfaz (figura 3.2).

Figura 3.2 Interfaz de control

20
Figura 3.3 Prueba final con el explorador web de la PC

4. Análisis de Resultados

Como se puede apreciar, se logró el objetivo de realizar una aplicación típica con la tarjeta
NodeMCU. Con estos resultados se toma en cuenta el tipo de comunicación que se utilizó, la
interfaz de usuario, facilidad de configuración y las posibilidades que puede tener esta tarjeta, en
cuanto a proyectos a realizar. En este análisis se puede entender mejor como avanza la tecnología
y los protocolos de comunicación que se utilizan. Un ejemplo claro es la tarjeta que se utilizó; es
una copia que se popularizo por su versatilidad y a pesar de tener su software original, se utiliza
mayormente, con la plataforma de arduino. Y además su costo es relativamente bajo.

21
5. Observaciones y Conclusión

En el desarrollo de esta práctica se logró el objetivo de conocer nuevas tecnologías y tendencias


de comunicación. Además se utilizó un estándar muy utilizado hoy en día. Además de tener en
cuenta la teoría y como se utiliza, se logró configurar la conexión entre la tarjeta y el computador.
Con esto se tiene un resultado satisfactorio y además la posibilidad de mejorar los proyectos
futuros.

Algunas de las complicaciones fueron la falta de librerías y la configuración del software por
deficiencias en el internet de la institución. Sin mencionar la restricción de acceso a direcciones IP
mediante la red de la institución. Es realmente lamentable la restricción ya que es para el
desarrollo de los estudios.

Con este panorama se tienen mejores bases para implementar y mejorar los proyectos en la
escuela y en las demás materias. Sin dejar de investigar las tendencias, tecnologías y protocolos
emergentes.

6. Bibliografía

1. Manual tutorial de Luis del Valle por la página ProgramaFacil.com, consultado


el 20 de Febrero de 2018

https://programarfacil.com/esp8266/como-programar-nodemcu-ide-arduino/

2. Hoja de datos del ESP8266-12E

http://www.kloppenborg.net/images/blog/esp8266/esp8266-esp12e-specs.pdf

3. https://es.ccm.net/contents/275-protocolo-de-comunicacion

22

Вам также может понравиться