Almacenamiento en CircuitPython

Las tarjetas CircuitPython aparecen como una unidad de disco USB, permitiéndote editar el código directamente en la tarjeta. Ya hasta estado haciendo esto por un buen rato. Es posible que te hayas preguntado, "¿Puedo escribir datos de CircuitPython hacia la unidad de disco para que funcione para bitácoras de datos (o un datalogger)?" ¡La respuesta es !

Sin embargo, tiene algo de truco. Necesitas agregar un código especial a boot.py, no solo en code.py. Esto es porque hay que definir que el sistema de archivos va a ser de solo lectura cuando necesitas editar el código desde tu computadora, pero lo define para escritura cuando deseas que el núcleo de CircuitPython pueda escribir.

Solo puedes tener edición ya sea desde tu computadora para editar archivos en la unidad de disco CIRCUITPY, o para que CircuitPython escriba. No es posible que ambos escriban al mismo sistema de archivos. (Malas Cosas Van a Suceder, ¡así que no lo permitimos!)

A continuación es como se va a ver tu archivo boot.py. Copia y pega el código hacia boot.py utilizando tu editor preferido. Es posible que tengas que crearlo como un archivo nuevo.

import board
import digitalio
import storage

# For Gemma M0, Trinket M0, Metro M0/M4 Express, ItsyBitsy M0/M4 Express
switch = digitalio.DigitalInOut(board.D2)

# For Feather M0/M4 Express
# switch = digitalio.DigitalInOut(board.D5)

# For Circuit Playground Express, Circuit Playground Bluefruit
# switch = digitalio.DigitalInOut(board.D7)

switch.direction = digitalio.Direction.INPUT
switch.pull = digitalio.Pull.UP

# If the switch pin is connected to ground CircuitPython can write to the drive
storage.remount("/", switch.value)

Para las Gemma M0, Trinket M0, Metro M0 Express, Metro M4 Express, ItsyBitsy M0 Express y ItsyBitsy M4 Express, no es necesario realizar cambios al código inicial.

Para las Feather M0 Express y Feather M4 Express, comente switch = digitalio.DigitalInOut(board.D2), y descomente switch = digitalio.DigitalInOut(board.D5).

Para las Circuit Playground Express y Circuit Playground Bluefruit, comente switch = digitalio.DigitalInOut(board.D2), y descomente switch = digitalio.DigitalInOut(board.D7). Recuerde, D7 es el interruptor integrado, así que no se requieren cables extra o clips de lagarto.

Recuerda: Para "comentar" una línea, le pones un # y un espacio antes. Para "descomentarla", le remueves el # y el espacio al inicio de la línea.

A continuación está el código para tu code.py. Copia y pega el código hacia code.py utilizando tu editor favorito.

import time

import board
import digitalio
import microcontroller

led = digitalio.DigitalInOut(board.D13)
led.switch_to_output()

try:
    with open("/temperature.txt", "a") as fp:
        while True:
            temp = microcontroller.cpu.temperature
            # do the C-to-F conversion here if you would like
            fp.write('{0:f}\n'.format(temp))
            fp.flush()
            led.value = not led.value
            time.sleep(1)
except OSError as e:
    delay = 0.5
    if e.args[0] == 28:
        delay = 0.25
    while True:
        led.value = not led.value
        time.sleep(delay)

Bitácora de Temperatura

La forma en como trabaja boot.py es revisando si el pin que dijiste a la hora de definir el interruptor en tu código, está conectado a tierra. Si lo está, cambia el estado de lectura-escritura del sistema de archivos, de forma que el núcleo de CircuitPython puede comenzar a escribir la temperatura en la tarjeta.

Como ayuda para encontrar los pines correctos, observe los diagramas e información en la sección de Encuentre los Pines de la guía de Entradas y Salidas Digitales con CircuitPython. En lugar de conectar un swtich, vas a conectar el in a tierra directamente con un cable de lagarto o con cables.

boot.py solo se ejecuta cuando el dispositivo inicia, no si recargas la consola serial con ctrl+d o si salvas un archivo. ¡Debes expulsar la unidad de disco USB y luego presionar físicamente el botón de reset!

Una vez que haz copiado los archivos a la tarjeta, la expulsas y desconectas de tu computadora. Si está utilizando una Circuit Playground Express, todo lo que tienes que hacer es asegurarte que el interruptor esté del lado derecho. De otra manera, utilizar clips de lagarto o cables para conectar el pin designado hacia tierra. Ahora, conectar la tarjeta de nuevo a tu computadora.

¡Ya no vas a poder editar código en CIRCUITPY!

El LED rojo debería parpadear una vez por segundo, y vas a ver un nuevo archivo llamado temperature.txt en la unidad de disco CIRCUITPY.

El archivo se actualiza una vez por segundo, pero no vas a ver los datos escribiéndose en vivo. En cambio, cuando estés listo para obtener los datos, expulsa y desconecta tu tarjeta. Para CPX, mueva el interruptor hacia la izquierda, de otra forma desconecte el cable que has conectado hacia tierra. Ahora va a ser posible escribir al sistema de archivos de nuevo, pero no vas a poder grabar datos.

Tenemos una guía más detallada sobre este proyecto disponible aquí: Grabadora de Bitácoras de CPU con CircuitPython. Si te gustaría conocer más detalles, ¡revísela!

This guide was first published on Jun 24, 2020. It was last updated on Jun 24, 2020.
This page (Almacenamiento en CircuitPython) was last updated on Jun 24, 2020.