Instalar un dispositivo de almacenamiento externo a la placa con el microcontrolador ESP32 presenta tres ventajas sustanciales:
- Amplia sustancialmente la capacidad de almacenamiento total, ya que de los habituales 4Mb disponibles (de los 16Mb posibles) de la memoria flash, 2Mb están reservados para el intérprete y únicamente 2Mb están disponibles.
- Evita el deterioro de la memoria flash del microcontrolador, puesto que el número de ciclos de escritura está limitado entre 10.000 y 100.000.
- Permite realizar la carga de ficheros al dispositivo desde un ordenador, lo que mucho más rápido y versátil.
MicroPython implementa la clase machine.SDCard para dar soporte a las tarjetas SD, tarjetas MMC y dispositivos eMMC utilizando el controlador SDMMC o el controlador SD SPI que incorporan los microcontroladores ESP32. Estos controladores proporcionan una aceleración radical respecto a las implementaciones realizadas por software.
Utilizar la clase machine.SDCard puede ser algo tan simple como escribir:
import os, machine os.mount(machine.SDCard(), "/sd")
machine.SDCard( )
El constructor de clase machine.SDCard es:
class machine.SDCard(slot=1, width=1, cd=None, wp=None, sck=None, miso=None, mosi=None, cs=None)
Los parámetros y sus valores son los siguientes:
- slot selecciona la interfaz a utilizar:
- 0 y 1 Utilizan el controlador SDMMC con un bus de hasta 8-bit(s) en el slot 0 y hasta 4-bit(s) en el slot 1. Los pines asignados por defecto son:
-
- 2 y 3 Utiliza el controlador SD SPI con un bus de 1-bit. Los pines asignados por defecto (puertos SPI2 -HSPI- y SPI3 -VSPI-) son:
- width selecciona el ancho del bus de la interfaz:
- slot 0, admite 1, 4 u 8-bit(s).
- slot 1, admite 1 ó 4-bit(s).
- slot 2 y 3 únicamente admiten 1-bit.
- sck – pin de reloj SCK (Serial Clock) en modo SPI.
- cs – pin de selección de chip CS (Chip Select) en modo SPI.
- miso – pin MISO (Master Input Slave Output) en modo SPI.
- mosi – pin MOSI (Master Output Slave Intput) en modo SPI.
- cd – pin de detección de tarjeta CD (Card Detect).
- wp – pin de protección contra escritura WP (Write Protect).
FORMATO DE LA TARJETA - FAT32
La mayoría vienen preformateados con este sistema de archivos, pero si no es el caso, en Windows se puede hacer desde el administrador de archivos, haciendo clic con el botón derecho en la unidad y seleccionando Formatear. En macOS, se puede formatear utilizando el programa Disk Utility.
EJEMPLOS DE USO
Un ejemplo típico de lo anterior sería la conexión de una tarjeta SD en los pines del slot 2 (cs=5, sck=18, miso=19, mosi=23).
Este ejemplo es extensible para las tarjetas MMC en modo SPI (tienen la misma configuración, con la siguiente equivalencia de nombres de pines CS=DAT3, SCK=CLK, MISO=D0 y MOSI=D1).
E incluso es extensible para los dispositivos eMMC en modo SPI, con la equivalencia de nombre de pines que aparece en la tabla:
En cualquiera de los tres casos bastaría con el siguiente script para habilitarlas:
import os, machine os.mount(machine.SDCard(), "/sd")
O el siguiente que es equivalente:
import os, machine os.mount(machine.SDCard(slot=2, width=1, sck=18, cs=5, miso=19, mosi=23), "/sd")
En el caso de las placas que disponen de ranura para leer tarjetas microSD, lo habitual es que únicamente tengan conectado 1 pin para el bus de comunicaciones – modo SPI- como el modelo TTGO-T8 V-1.7, aunque hay modelos como el TTGO – T8 V-1.8 que tienen 4 pines (D0, D1, D2 y D3) permitiendo leer tarjetas SD con un bus de 1 bit y MMC con un bus de 4 bit(s). Es siempre recomendable revisar la documentación técnica de la placa para saberlo si se utiliza algún adaptador para compatibilizar la ranura con otros modelos de tarjeta. La alternativa es utilizar los pines de la placa para conectarla.
Para las tarjetas microSD en El TTGO – T8 V-1.8 se puede utilizar el siguiente script (1 bit – modo SPI):
import os, machine os.mount(machine.SDCard(slot=2, width=1, sck=14, mosi=15, miso=2, cs=13), "/sd")
Para tarjetas MMC se puede recurrir al script utilizado por defecto (4 bit(s)):
import os, machine os.mount(machine.SDCard(), "/sd")
MAIN.PY
Es muy útil iniciar los sistemas de almacenamiento en el fichero main.py, para que estén disponibles cuando se inicia el microcontrolador. Así se verá en Thonny:
Leave a Reply
Tu correo electrónico está seguro.
You must be logged in to post a comment.