MicroPython: ESP8266 Fuentes de activación y suspensión profunda

En este artículo, exploraremos las fuentes de activación y la suspensión profunda en MicroPython para el ESP8266. Descubriremos cómo utilizar estas funcionalidades para optimizar el rendimiento de nuestro dispositivo y maximizar su eficiencia energética. ¡Sigue leyendo para aprender todo lo que necesitas saber sobre este emocionante tema!

Esta guía muestra cómo usar el sueño profundo con el ESP8266 y cómo reactivarlo con un temporizador o activación externa usando el firmware MicroPython.

MicroPython: ESP8266 Fuentes de activación y suspensión profunda

Si tiene un ESP32, le recomendamos leer nuestra guía fuente MicroPython ESP32 Deep Sleep and Wake Up.

requisitos

Para seguir este tutorial necesitará el firmware MicroPython en su ESP8266. También necesitarás un IDE para escribir el código y subirlo a tu placa. Recomendamos utilizar Thonny IDE o uPyCraft IDE:

  • IDE de Thonny:
    • Instalación y primeros pasos con Thonny IDE
    • Actualización del firmware MicroPython con esptool.py
  • IDE de UpyCraft:
    • Comenzando con uPyCraft IDE
    • Instale uPyCraft IDE (Windows, Mac OS X, Linux)
    • Flashear/cargar firmware MicroPython a ESP32 y ESP8266

Introducción al sueño profundo

Cuando el ESP8266 está en modo de suspensión profunda, todo se apaga excepto el reloj de tiempo real (RTC) que el ESP8266 usa para medir el tiempo.

En modo de suspensión profunda, el chip ESP8266 consume aprox.
sólo 20 UA.

MicroPython: ESP8266 Fuentes de activación y suspensión profunda

Sin embargo, debes tener en cuenta que el consumo de energía de una placa ESP8266 equipada es significativamente mayor.

Pudimos construir un registrador de datos de estación meteorológica utilizando ESP8266 y MicroPython que solo consume 7 µA en modo de suspensión profunda: Registrador de datos de estación meteorológica de bajo consumo con ESP8266 y BME280 con MicroPython

Temporizador de despertador

MicroPython: ESP8266 Fuentes de activación y suspensión profunda

Hay formas ligeramente diferentes de despertar el ESP8266 del modo de suspensión profunda mediante un temporizador. Una de las formas más sencillas es utilizar la siguiente función en su código.

def deep_sleep(msecs):
  #configure RTC.ALARM0 to be able to wake the device
  rtc = machine.RTC()
  rtc.irq(trigger=rtc.ALARM0, wake=machine.DEEPSLEEP)
  # set RTC.ALARM0 to fire after Xmilliseconds, waking the device
  rtc.alarm(rtc.ALARM0, msecs)
  #put the device to sleep
  machine.deepsleep()

Recomendamos copiar la función anterior al principio de su script y luego la sueño profundo() Función para poner el ESP8266 en modo de suspensión profunda.

El sueño profundo() La función crea un temporizador que activa el ESP8266 después de una cantidad predeterminada de segundos. Para usar esta función más adelante en su código, solo necesita pasar el tiempo de suspensión en milisegundos como argumento.

guion

En el siguiente código, el ESP8266 está en modo de suspensión profunda durante 10 segundos. Cuando se despierta, un LED parpadea y vuelve a dormir. Este proceso se repite una y otra vez.

# Complete project details at https://RandomNerdTutorials.com/micropython-programming-with-esp32-and-esp8266/

import machine
from machine import Pin
from time import sleep

led = Pin(2, Pin.OUT)

def deep_sleep(msecs):
  # configure RTC.ALARM0 to be able to wake the device
  rtc = machine.RTC()
  rtc.irq(trigger=rtc.ALARM0, wake=machine.DEEPSLEEP)

  # set RTC.ALARM0 to fire after X milliseconds (waking the device)
  rtc.alarm(rtc.ALARM0, msecs)

  # put the device to sleep
  machine.deepsleep()
  
#blink LED
led.value(1)
sleep(1)
led.value(0)
sleep(1)

# wait 5 seconds so that you can catch the ESP awake to establish a serial communication later
# you should remove this sleep line in your final script
sleep(5)

print('Im awake, but Im going to sleep')

#sleep for 10 seconds (10000 milliseconds)
deep_sleep(10000)

Ver código sin formato

Cómo funciona el código

Primero importe las bibliotecas requeridas:

import machine
from machine import Pin
from time import sleep

Crear un… Bolígrafo Objeto que se refiere a GPIO2 llamado CONDUJO. En nuestra placa de circuito se refiere al LED integrado.

led = Pin(2, Pin.OUT)

Luego agrega el sueño profundo() Función para su código:

def deep_sleep(msecs):
  #configure RTC.ALARM0 to be able to wake the device
  rtc = machine.RTC()
  rtc.irq(trigger=rtc.ALARM0, wake=machine.DEEPSLEEP)
  # set RTC.ALARM0 to fire after Xmilliseconds, waking the device
  rtc.alarm(rtc.ALARM0, msecs)
  #put the device to sleep
  machine.deepsleep()

Las siguientes líneas hacen que el LED parpadee.

led.value(1)
sleep(1)
led.value(0)
sleep(1)

Antes de ir a dormir, agregamos un retraso de 5 segundos e imprimimos un mensaje para indicar que el modo está entrando en suspensión.

sleep(5)
print('Im awake, but Im going to sleep')

Es importante añadir este retraso de 5 segundos antes de dormir cuando desarrollamos el guión. Si desea cargar un nuevo código en su tablero, es necesario activarlo. Entonces, si no tiene retraso, será difícil reactivarlo para cargar el código más tarde. Una vez que tengas el código final, podrás eliminar este retraso.

Finalmente, ponga el ESP8266 en suspensión profunda durante 10 segundos (10,000 milisegundos) presionando el botón sueño profundo() Función y pasando el número de milisegundos como argumento.

deep_sleep(10000)

Después de 10 segundos, el ESP8266 se activará y ejecutará el código desde el principio, similar a cuando presiona el botón RESET.

Sube el código

Copie el código proporcionado en el principal.py archivo y cárguelo en su ESP8266.

Si no sabes cómo cargar el script, sigue este tutorial si estás usando Thonny IDE o este si estás usando uPyCraft IDE.

Después de cargar el código, debe conectarse GPIO16 (D0) al pin RST para permitir que el ESP8266 se despierte solo.

MicroPython: ESP8266 Fuentes de activación y suspensión profunda

Importante: Si no conecta GPIO16 al pin RST, el ESP8266 no se activará.

demostración

Después de cargar el código y la conexión. GPIO 16 (D0) al pin RST, el ESP8266 debería hacer parpadear el LED integrado e imprimir un mensaje en el shell.

Luego se duerme durante 10 segundos, se despierta y ejecuta el código nuevamente. Este proceso se repite una y otra vez.

MicroPython: ESP8266 Fuentes de activación y suspensión profunda

Sueño profundo con ESP-01

Si desea realizar una configuración similar con una placa ESP-01, necesitará soldar un cable como se muestra en la siguiente imagen. Este pequeño pin del chip es GPIO16 y debe conectarse al pin RST.

MicroPython: ESP8266 Fuentes de activación y suspensión profunda

Sin embargo, los pines son tan pequeños que es muy difícil soldar un cable de este tipo al GPIO 16 sin dañar el chip.

MicroPython: ESP8266 Fuentes de activación y suspensión profunda

Obtenga más información sobre los GPIO ESP8266: Referencia de distribución de pines ESP8266: ¿Qué pines GPIO debería utilizar?


despertar externo

MicroPython: ESP8266 Fuentes de activación y suspensión profunda

El ESP8266 no admite activación externa como el ESP32. Pero podemos hacer algo al respecto.

Si ponemos el ESP8266 en sueño profundo por un periodo de tiempo indefinido, no volverá a despertarse hasta que se reinicie la placa. Entonces podemos hacer algo al respecto. primero Fije y utilícelo como señal de alarma externa. Esto podría ser, por ejemplo, presionar un botón o cerrar un interruptor de láminas magnético.

El ESP8266 se reinicia cuando el primero El pin pasa a BAJO.

Representación esquemática

Para probar este método, conecte un botón al primero Código PIN. Necesitas los siguientes componentes para el circuito:

Puedes utilizar los enlaces anteriores o ir directamente MakerAdvisor.com/tools ¡Para encontrar todas las piezas para tus proyectos al mejor precio!

MicroPython: ESP8266 Fuentes de activación y suspensión profunda

Si tienes un ESP8266 12-E NodoMCU kitSiga el siguiente diagrama esquemático.

MicroPython: ESP8266 Fuentes de activación y suspensión profunda

Si tienes un ESP-01Puedes seguir el siguiente diagrama esquemático.

MicroPython: ESP8266 Fuentes de activación y suspensión profunda

guion

Cargue el siguiente código al ESP8266 como principal.py.

# Complete project details at https://RandomNerdTutorials.com/micropython-programming-with-esp32-and-esp8266/

from machine import deepsleep
from machine import Pin
from time import sleep

led = Pin (2, Pin.OUT)

#blink LED
led.value(0)
sleep(1)
led.value(1)
sleep(1)

# wait 5 seconds so that you can catch the ESP awake to establish a serial communication later
# you should remove this sleep line in your final script
sleep(5)
print('Im awake, but Im going to sleep')
sleep(1)

#sleep for indefinite time
deepsleep()

Ver código sin formato

En este caso lo único que tienes que hacer es llamar máquina.sueñoprofundo() después de ejecutar el código principal.

Cuando usted llama máquina.sueñoprofundo() sin argumentos, el ESP8266 entrará en modo de suspensión profunda indefinidamente hasta que usted lo haga primero Botón.

demostración

Después de cablear el circuito y cargar el código, puedes probar tu configuración. Cada vez que presiona el botón que viene con el primero Pin el ESP8266 se reinicia y se activa. El LED integrado parpadea y vuelve al modo de espera.

MicroPython: ESP8266 Fuentes de activación y suspensión profunda

Envolver

Esperamos que este proyecto sobre sueño profundo con ESP8266 le haya resultado útil. Tenemos otros tutoriales sobre sueño profundo que te pueden gustar:

  • Registrador de datos de estación meteorológica de bajo consumo (MicroPython)
  • ESP8266 Sueño profundo (Arduino IDE)
  • Fuentes de activación y suspensión profunda ESP32 (Arduino IDE)
  • Fuentes de activación y suspensión profunda ESP32 (MicroPython)

Si desea obtener más información sobre la programación de las placas ESP32 y ESP8266 con MicroPython, consulte nuestro libro electrónico: Programación MicroPython con ESP32 y ESP8266.

Gracias por leer.

Error 403 The request cannot be completed because you have exceeded your quota. : quotaExceeded






MicroPython: ESP8266 Fuentes de activación y suspensión profunda

MicroPython: ESP8266 Fuentes de activación y suspensión profunda

Introducción

Este artículo es una guía detallada sobre cómo utilizar la suspensión profunda con el ESP8266 y cómo despertarlo con un temporizador o activación externa utilizando el firmware MicroPython.

Prerrequisitos

Para seguir este tutorial necesitas tener el firmware MicroPython instalado en tu ESP8266. También necesitas un IDE para escribir y subir el código a tu placa. Te recomendamos utilizar el IDE Thonny o el IDE uPyCraft.

  1. Thonny IDE: Instalación y puesta en marcha con Thonny IDE. Cómo flashear el firmware MicroPython con esptool.py.
  2. uPyCraft IDE: Iniciando con uPyCraft IDE. Instalación de uPyCraft IDE (Windows, Mac OS X, Linux). Flasheo/Subida de firmware MicroPython a ESP32 y ESP8266.

Activación Profunda

La activación profunda consume aproximadamente solo 20uA de corriente. Sin embargo, es importante tener en cuenta que en una placa ESP8266 ensamblada, consume mucha más corriente.

Activación con Temporizador

Una de las formas más sencillas de despertar al ESP8266 con un temporizador después de la suspensión profunda es utilizando la función deep_sleep() en tu código.

Cómo Funciona el Código

Primero, importa las bibliotecas necesarias y crea un objeto Pin que se refiere al pin GPIO 2 llamado led. Luego, agrega la función deep_sleep() a tu código para activar la suspensión profunda. Finalmente, coloca el ESP8266 en suspensión profunda durante 10 segundos. Todo el proceso se repite una y otra vez.

Activación Externa

El ESP8266 no admite activación externa de la misma manera que el ESP32. Sin embargo, puedes conectar un pulsador al pin RST y utilizarlo como activación externa para despertar al ESP8266 del modo de suspensión profunda.

Conclusión

Esperamos que este proyecto sobre la suspensión profunda con el ESP8266 te haya sido útil. Te recomendamos explorar otros tutoriales sobre este tema y seguir aprendiendo sobre MicroPython y las placas ESP32 y ESP8266.

Si deseas obtener más información sobre la programación de las placas ESP32 y ESP8266 con MicroPython, no dudes en consultar nuestro eBook: «Programación de MicroPython con ESP32 y ESP8266».

Gracias por leer.


5 comentarios en «MicroPython: ESP8266 Fuentes de activación y suspensión profunda»

  1. ¡Vaya, aprendí un montón sobre cómo gestionar la activación y suspensión profunda en MicroPython con ESP8266! Gracias por compartir este conocimiento, definitivamente lo probaré en mis proyectos. ¡Genial artículo!

Deja un comentario