Está en la página 1de 14

ESP8266

El primer paso es cargar el firmware de micropython en el módulo ESP8266, en este caso

como disponemos de un kit de desarrollo Nodemcu, el cual dispone de una interface USB y

esto nos permitirá realizar el proceso de una forma sencilla, para un mejor resultado se

recomienda primero eliminar el firmware existente en el dispositivo antes de instalar el

micropython.

Para realizar este proceso utilizaremos una herramienta llamada esptool.py la cual se

encuentra en el sitio https://github.com/espressif/esptool/ se realizara la descarga de la

carpeta esptool-master, una vez tenemos la carpeta en nuestro ordenador nos ubicamos

dentro de la mismo y ejecutamos el siguiente comando

Podemos obtener el siguiente error el cual nos indica que la versión de pip no es la

adecuada para nuestra versión de esptool.

Para solucionar este problema debemos actualizar el pip utilizando el siguiente comando
Una vez actualizado el pip, procedemos a ejecutar la instalcion del esptool

Debemos conectar el dispositivo a un puerto USB de nuestro ordenador, una vez conectado

debemos verificar que Windows reconozca en forma correcto el modulo Nodemcu.

Como observamos el dispositivo se agregó a los dispositivos de Windows usando el puerto

COM11, procedemos a descargar el firmware más actualizado desde del sitio web

https://micropython.org/download#esp8266
Una vez descargado el firmware, procedemos primero a borrar el firmware existente en el

módulo Nodemcu.

Para así poder cargar el firmware de micropython


Podemos verificar que el micropython está correctamente instalado, procedemos a utilizar,

la consola REPL (Read-Eval-Print-Loop, bucle Lectura-Evaluación-Impresión), o consola

de lenguaje, es un entorno de programación simple e interactivo que toma las entradas

individuales del usuario, las evalúa y devuelve el resultado al usuario; un programa escrito

en un entorno REPL es ejecutado parte por parte, inicialmente accederemos a esta interface

utilizando una consola de terminal como lo es hyperterminal, el cual configuramos en el

puerto COM11 y en con una velocidad de 115.200 bauds


Importamos la librería sys y procedemos a solicitar la versión instalada, esto nos permitirá

verificar que el firmware quedo instalado correctamente

Adicionalmente por defecto la WiFi del módulo, se configura como un AP irradiando un

SSID con el nombre MicroPython-xxxxxx donde la xxxxxx es parte de la MAC address del

dispositivo
Realizaremos algunas otras comprobaciones de la funcionalidad del modulo

Creando y leyendo archivos:

El ESP8266 soporta una forma estándar de trabajar con archivos usando la función propia

open( ). Podemos crear un archivo y permitir la escritura, de la siguiente forma

Cuando agregamos un texto dentro del archivo lectura.txt se nos muestra el número 21, que

es la cantidad de bytes que fueron agregados al archivo. Si queremos leer el contenido del

archivo, usaremos las siguientes instrucciones


Cuando se abre un archivo por defecto se abre en modo de solo lectura, y como un archivo

de texto.

Leyendo y trabajando con el sistema de archivos

Podemos usar el modulo os, para tener un mejor control del sistema. Por ejemplo, para ver

el sistema de archivos primero importamos el modulo os y después ejecutamos la función

listdir

En el siguiente ejemplo, importamos el modulo os, y creamos un directorio llamado

Lectura, cambiamos el directorio de trabajo a Lectura y creamos un archivo llamado

temperatura, al examinar el directorio observamos el archivo Temperatura, cambiamos de

directorio de trabajo a / (raíz) y observamos los archivos y directorios existentes.


Como podemos observar existe un archivo llamado boot.py que es un script que es

ejecutado primero y una vez se completa se inicia la ejecución de main.py, este archivo

puede ser creado de tal forma que ese código se ejecute siempre que el dispositivo inicie.

CONFIGURACIÓN DE RED

El modulo network es usado para configurar la conexión WiFi. Hay dos interfaces WiFi,

una para la estación (cuando el ESP8266 se conecta a un router) y una para el Access point

(para que otros dispositivos se conecten a el ESP8266)


Podemos revisar cual interface esta activa

También podemos verificar la configuración de red de la interface

Los valores que observamos son: dirección IP, mascara, puerta de enlace y DNS.

Configuración del WiFi

En modo estación

Cuando se realiza la instalación del micropython en el ESP8266 por defecto su

configuración es en modo Access Point, activamos la interface para modo estación, después

definimos el SSID y contraseña al cual queremos conectarnos


Podemos desactivar la interface de Access point si no la vamos a utilizar:

Podemos crear una función y colocarla dentro del boot.py para que se conecte

automáticamente cada vez que energicemos el dispositivo.

Activación del ESP8266 como Access Point

Importamos la librería network, configuramos la interface para accespoint, la activamos y

configuramos los parámetros del Access point:

Podemos trasmitir archivos desde el PC hacia el ESP8266, utilizando diversas formas, pero

la más sencilla es utilizar la interface RPEL WEB Para poder utilizarlo debemos importar el

módulo webrepl_setup, primero nos solicita si queremos habilitarlo (E) o deshabilitarlo


(D), si digitamos E se habilitara el modulo y nos pide que, si queremos cambiar el password

por defecto, para cambiarlo presionamos (y), nos solicita la nueva clave y la confirmación,

para que los cambios se activen es necesario reiniciar

web la cual puede ser usada en línea a través del sitio web http://micropython.org/webrepl,

o se puede instalar localmente desde el repositorio

https://github.com/micropython/webrepl..

Procedemos a conectar el ESP8266 y el computador en la misma red WiFi, y ejecutamos el

archivo el archivo webrpel.html, desde esta interface podemos ejecutar comandos y enviar

y recibir archivos del ESP8266


4.2. Sockets
Once the WiFi is set up the way to access the network is by using sockets. A
socket represents an endpoint on a network device, and when two sockets are
connected together communication can proceed. Internet protocols are built on top
of sockets, such as email (SMTP), the web (HTTP), telnet, ssh, among many
others. Each of these protocols is assigned a specific port, which is just an integer.
Given an IP address and a port number you can connect to a remote device and
start talking with it.

The next part of the tutorial discusses how to use sockets to do some common and
useful network tasks.

5. Network - TCP sockets


The building block of most of the internet is the TCP socket. These sockets provide
a reliable stream of bytes between the connected network devices. This part of the
tutorial will show how to use TCP sockets in a few different cases.

5.1. Star Wars Asciimation


The simplest thing to do is to download data from the internet. In this case we will
use the Star Wars Asciimation service provided by the blinkenlights.nl website. It
uses the telnet protocol on port 23 to stream data to anyone that connects. It’s very
simple to use because it doesn’t require you to authenticate (give a username or
password), you can just start downloading data straight away.

The first thing to do is make sure we have the socket module available:

>>> import socket


Then get the IP address of the server:

>>> addr_info = socket.getaddrinfo("towel.blinkenlights.nl", 23)


The  getaddrinfo  function actually returns a list of addresses, and each address has
more information than we need. We want to get just the first valid address, and
then just the IP address and port of the server. To do this use:

>>> addr = addr_info[0][-1]


If you type  addr_info  and  addr  at the prompt you will see exactly what information
they hold.

Using the IP address we can make a socket and connect to the server:

>>> s = socket.socket()
>>> s.connect(addr)
Now that we are connected we can download and display the data:

>>> while True:


... data = s.recv(500)
... print(str(data, 'utf8'), end='')
...
When this loop executes it should start showing the animation (use ctrl-C to
interrupt it).

You should also be able to run this same code on your PC using normal Python if
you want to try it out there.

5.2. HTTP GET request


The next example shows how to download a webpage. HTTP uses port 80 and you
first need to send a “GET” request before you can download anything. As part of
the request you need to specify the page to retrieve.

Let’s define a function that can download and print a URL:

def http_get(url):
import socket
_, _, host, path = url.split('/', 3)
addr = socket.getaddrinfo(host, 80)[0][-1]
s = socket.socket()
s.connect(addr)
s.send(bytes('GET /%s HTTP/1.0\r\nHost: %s\r\n\r\n' % (path, host), 'utf8'))
while True:
data = s.recv(100)
if data:
print(str(data, 'utf8'), end='')
else:
break
s.close()
Then you can try:

>>> http_get('http://micropython.org/ks/test.html')
This should retrieve the webpage and print the HTML to the console.

5.3. Simple HTTP server


The following code creates an simple HTTP server which serves a single webpage
that contains a table with the state of all the GPIO pins:

import machine
pins = [machine.Pin(i, machine.Pin.IN) for i in (0, 2, 4, 5, 12, 13, 14, 15)]

html = """<!DOCTYPE html>


<html>
<head> <title>ESP8266 Pins</title> </head>
<body> <h1>ESP8266 Pins</h1>
<table border="1"> <tr><th>Pin</th><th>Value</th></tr> %s </table>
</body>
</html>
"""

import socket
addr = socket.getaddrinfo('0.0.0.0', 80)[0][-1]

s = socket.socket()
s.bind(addr)
s.listen(1)

print('listening on', addr)

while True:
cl, addr = s.accept()
print('client connected from', addr)
cl_file = cl.makefile('rwb', 0)
while True:
line = cl_file.readline()
if not line or line == b'\r\n':
break
rows = ['<tr><td>%s</td><td>%d</td></tr>' % (str(p), p.value()) for p in pins]
response = html % '\n'.join(rows)
cl.send('HTTP/1.0 200 OK\r\nContent-type: text/html\r\n\r\n')
cl.send(response)
cl.close()
Next  Previous

También podría gustarte