En el mundo de la programación de microcontroladores, el uso de plataformas como ESP32 y ESP8266 se ha vuelto cada vez más popular debido a su versatilidad y facilidad de uso. En este artículo, exploraremos cómo medir valores analógicos utilizando MicroPython, una variante de Python diseñada específicamente para microcontroladores. Descubre cómo puedes aprovechar al máximo estas plataformas para realizar mediciones precisas y crear proyectos innovadores.
Este tutorial muestra cómo leer valores analógicos con las placas ESP32 y ESP8266 usando el firmware MicroPython. Como ejemplo, leemos los valores de un potenciómetro.
Obtener lecturas analógicas con ESP32 y ESP8266 es ligeramente diferente, por lo que hay una sección para cada placa en este tutorial.
requisitos
Para seguir este tutorial, debe tener instalado el firmware MicroPython en sus placas ESP32 o 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:
- Instale uPyCraft IDE (Windows, Mac OS X, Linux)
- Flashear/cargar firmware MicroPython a ESP32 y ESP8266
Lecturas analógicas – ESP8266
ESP8266 solo tiene un pin analógico llamado A0. El pin analógico del ESP8266 tiene una resolución de 10 bits. Lee el voltaje de 0 a 3,3V y luego asigna un valor entre 0 y 1023.
Nota: Algunas versiones del ESP8266 solo leen un máximo de 1 V en el pin ADC. Asegúrese de no exceder el voltaje máximo recomendado para su placa.
Medidas analógicas – ESP32
Hay varios pines en el ESP32 que pueden actuar como pines analógicos; se denominan pines ADC. Todos los siguientes GPIO pueden actuar como pines ADC: 0, 2, 4, 12, 13, 14, 15, 25, 26, 27, 32, 33, 34, 35, 36 y 39.
Obtenga más información sobre los GPIO ESP32: Referencia de distribución de pines ESP32: ¿Qué pines GPIO debería utilizar?
Los pines ESP32 ADC tienen una resolución predeterminada de 12 bits. Estos pines leen voltajes entre 0 y 3,3 V y luego devuelven un valor entre 0 y 4095. La resolución se puede cambiar en el código. Por ejemplo, es posible que solo desee tener una resolución de 10 bits para obtener un valor entre 0 y 1023.
La siguiente tabla muestra algunas diferencias entre la lectura analógica en el ESP8266 y el ESP32.
ESP8266 | ESP32 | |
pines analógicos | A0 (CAD 0) | GPIO: 0, 2, 4, 12, 13, 14, 15, 25, 26, 27, 32, 33, 34, 35, 36, y 39. |
resolución | 10 bits (0-1023) | 12 bits (0-4095) |
Cambiar resolución | NO | Sí |
Esquema
La lectura analógica funciona de manera diferente para ESP32 y ESP8266. Hay un esquema y un guión diferentes para cada placa.
Para seguir este tutorial necesitarás conectar un potenciómetro a tu placa ESP8266 o ESP32.
Piezas requeridas
Aquí hay una lista de las piezas que necesitará para construir el circuito:
Puedes utilizar los enlaces anteriores o ir directamente MakerAdvisor.com/tools ¡Para encontrar todas las piezas para tus proyectos al mejor precio!
Diagrama de cableado – ESP32
Siga el siguiente diagrama esquemático si está utilizando una placa ESP32:
En este ejemplo utilizamos GPIO34 para leer valores analógicos del potenciómetro, pero puede elegir cualquier otro GPIO que admita ADC. Lea nuestra guía de configuración de pines ESP32 para obtener más información sobre los GPIO ESP32.
Diagrama de circuito – ESP8266
Siga el siguiente esquema si está utilizando una placa ESP8266:
El ESP8266 admite lectura analógica solo en el A0 Bolígrafo.
guion
Existen algunas diferencias en el código al leer analógico en ESP32 y ESP8266. Dependiendo de la placa que utilices, deberás escribir un script ligeramente diferente. Asegúrate de seguir el código de tu placa específica.
Guión – ESP32
El siguiente script para el ESP32 lee valores analógicos GPIO34.
# Complete project details at https://RandomNerdTutorials.com/micropython-programming-with-esp32-and-esp8266/
from machine import Pin, ADC
from time import sleep
pot = ADC(Pin(34))
pot.atten(ADC.ATTN_11DB) #Full range: 3.3v
while True:
pot_value = pot.read()
print(pot_value)
sleep(0.1)
Así es como funciona el código
Para leer entradas analógicas, importe el CAD clase además de la Bolígrafo clase de la máquina Módulo. También los importamos dormir Método.
from machine import Pin, ADC
from time import sleep
Luego crea uno CAD Objeto llamado olla GPIO34.
pot = ADC(Pin(34))
La siguiente línea define que queremos leer el voltaje en todo el rango.
pot.atten(ADC.ATTN_11DB)
Esto significa que queremos medir un voltaje de 0 a 3,3V. Esto corresponde a establecer la relación de atenuación de 11 dB. Eso es lo que usamos diez() Método y pasado como argumento: ADC.ATTN_11DB.
El diez() El método puede tomar los siguientes argumentos:
- ADC.ATTN_0DB — el voltaje de rango completo: 1,2 V
- ADC.ATTN_2_5DB — voltaje de rango completo: 1,5 V
- ADC.ATTN_6DB — el voltaje de rango completo: 2,0 V
- ADC.ATTN_11DB — voltaje de rango completo: 3,3 V
En el mientras Bucle, lea el valor del potenciómetro y guárdelo en valor_pot Variable. Para leer el valor del potenciómetro, simplemente use el leer() método en el Maceta Objeto.
pot_value = pot.read()
Luego imprima el valor del bote.
print(pot_value)
Agregue un retraso de 100 ms al final.
sleep(0.1)
Cuando giras el potenciómetro, obtienes valores de 0 a 4095; esto se debe a que los pines del ADC tienen una resolución de 12 bits de forma predeterminada. Es posible que desee obtener valores en otras áreas. Puedes cambiar la resolución con el Ancho() Método de la siguiente manera:
ADC.width(bit)
El un poco El argumento puede ser uno de los siguientes parámetros:
- ADC.WIDTH_9BIT: Rango 0 a 511
- ADC.WIDTH_10BIT: Rango 0 a 1023
- ADC.WIDTH_11BIT: Rango 0 a 2047
- ADC.WIDTH_12BIT: Rango 0 a 4095
Por ejemplo:
ADC.width(ADC.WIDTH_12BIT)
En total:
- Para leer un valor analógico, debe CAD Clase;
- Cómo crear uno CAD Simplemente usa el objeto ADC (Pin (GPIO))en el cual GPIO es el número del GPIO del cual desea leer los valores analógicos;
- Para leer el valor analógico, simplemente use el leer() método en el CAD Objeto.
Guión – ESP8266
El siguiente script para el ESP8266 lee valores analógicos A0 Bolígrafo.
# Complete project details at https://RandomNerdTutorials.com/micropython-programming-with-esp32-and-esp8266/
from machine import Pin, ADC
from time import sleep
pot = ADC(0)
while True:
pot_value = pot.read()
print(pot_value)
sleep(0.1)
Así es como funciona el código
Para leer entradas analógicas, importe el CAD clase además de la Bolígrafo clase de la máquina Módulo. También los importamos dormir Método.
from machine import Pin, ADC
from time import sleep
Luego crea uno CAD Objeto nombrado Maceta En A0 Bolígrafo.
pot = ADC(0)
Nota: ADC0 (A0) es el único pin del ESP8266 que admite lectura analógica.
Lea el valor del potenciómetro en el bucle y guárdelo en valor_pot Variable. Para leer el valor del potenciómetro, utilice el leer() método en el Maceta Objeto.
pot_value = pot.read()
Entonces imprime eso valor_pot.
print(pot_value)
Agregue un retraso de 100 ms al final.
sleep(0.1)
En total:
- Utilice para leer un valor analógico CAD Clase;
- Cómo crear uno CAD Simplemente llama al objeto CAD(0). El ESP8266 solo admite lectura de ADC A0 Bolígrafo.
- Utilice para leer el valor analógico. leer() método en el CAD Objeto.
demostración
Después de guardar el código en su placa ESP usando Thonny IDE o uPyCraft IDE, gire el potenciómetro.
Verifique el shell de su IDE MicroPython para leer los valores del potenciómetro. Si está utilizando un ESP32, debería obtener valores entre 0 y 4095, o valores entre 0 y 1023 con un ESP8266.
Envolver
En este tutorial, le mostramos cómo usar MicroPython para leer valores analógicos con las placas ESP32 y ESP8266. Hay varios GPIO en el ESP32 que pueden leer valores analógicos. Por otro lado, el ESP8266 solo admite mediciones analógicas en el A0 (ADC0) pin.
Leer valores analógicos con ESP32 y ESP8266 es un poco diferente, pero en resumen necesitas uno CAD objeto y luego utilizar el leer() Método para obtener los valores.
Esperamos que este tutorial te haya resultado útil. Si recién está comenzando con MicroPython, es posible que también le interesen los siguientes recursos:
- [eBook] Programación MicroPython con EPS32/ESP8266
- GPIO ESP32/ESP8266 explicados con MicroPython
- ESP32/ESP8266 Entradas digitales y salidas digitales con MicroPython
- ESP32/ESP8266 PWM con MicroPython – Atenuación de LED
- Servidor web ESP32/ESP8266 MicroPython: salidas de control
Gracias por leer.
Valores medidos analógicos con MicroPython en ESP32/ESP8266
Este tutorial muestra cómo leer valores analógicos con las placas ESP32 y ESP8266 utilizando el firmware MicroPython. Como ejemplo, leeremos los valores de un potenciómetro.
Preguntas Frecuentes
-
¿Qué se necesita para seguir este tutorial?
Para seguir este tutorial necesitas tener instalado el firmware MicroPython en tus placas ESP32 o ESP8266. También necesitas un IDE para escribir y subir el código a tu placa. Recomendamos usar Thonny IDE o uPyCraft IDE.
Para más detalles sobre los IDEs:
-
¿Cómo se realizan las lecturas analógicas en ESP8266 y ESP32?
Las lecturas analógicas con ESP32 y ESP8266 son un poco diferentes, por lo que hay una sección para cada placa en este tutorial.
-
¿Qué pines se utilizan para las lecturas analógicas en ESP8266 y ESP32?
ESP8266 solo tiene un pin analógico llamado A0, mientras que ESP32 tiene varios pines que pueden actuar como pines analógicos (ADC). En ESP8266, el pin analógico tiene una resolución de 10 bits, mientras que en ESP32 la resolución es de 12 bits por defecto.
-
¿Cuáles son las diferencias entre la lectura analógica en ESP8266 y ESP32?
Las principales diferencias radican en los pines utilizados, la resolución de bits y la forma de realizar las lecturas. En ESP8266 se usa el pin A0 con resolución de 10 bits, mientras que en ESP32 se pueden usar varios pines con resolución de 12 bits.
-
¿Cómo crear un esquemático para la lectura analógica?
Para seguir este tutorial, necesitas conectar un potenciómetro a tu placa ESP8266 o ESP32. Se proporciona un esquema detallado en el tutorial.
-
¿Cómo utilizar el código de lectura analógica en ESP8266 y ESP32?
Se incluyen scripts detallados para realizar lecturas analógicas con ESP8266 y ESP32 en el tutorial. Cada placa tiene un script específico que debe ser seguido para obtener los valores correctos.
Para más detalles sobre cada pregunta frecuente, se recomienda leer detenidamente el contenido del tutorial original.
¡Gracias por leer!
¡Interesante artículo! Me encanta cómo MicroPython facilita la medición de valores analógicos en ESP32/ESP8266. ¡Gracias por compartir!
¡La manera en que MicroPython simplifica la medición de valores analógicos en ESP32/ESP8266 es impresionante! ¡Gracias por compartir este conocimiento! ¡A seguir investigando y experimentando!
¡Vaya, esto es justo lo que necesitaba! MicroPython hace que medir valores analógicos en ESP32/ESP8266 sea pan comido. Gracias por la información. ¡A seguir aprendiendo y experimentando!
¡Qué útil! Me gusta cómo MicroPython simplifica la medición de valores analógicos en ESP32/ESP8266. ¡Gracias por el aporte! ¡A seguir aprendiendo!