Tecnologia vestible

Per començar Elements d'entrada Programació CircuitPython   Recursos CITCEA
Elements no electrònics Elements de sortida Programació Arduino    
Projectes Elements de control Dades pràctiques   Inici

Recollida de dades

Una aplicació força interessant de la tecnologia vestible és la de recollir les dades d'un sensor. Com ha variat la temperatura al llarg del dia o quin recorregut he fet avui en el passeig serien només un parell d'exemples d'aplicació.

Amb CircuitPithon podem recollir dades i guardar-les en un fitxer de text. Cal, però, tenir en compte que l'accés al directori CIRCUITPY no es pot fer simultàniament des de l'ordinador i des del programa. Per solucionar el problema bloquejarem l'accés al directori de manera que només s'hi pugui accedir des del programa. Però després voldrem desbloquejar el directori per poder llegir el que s'ha gravat en el fitxer. Això ho gestionarem des d'un programa especial que s'anomena boot.py.

El programa boot.py s'executa només després d'un reinici del microcontrolador (botó de reinici o nova connexió de l'alimentació) i no s'executa si es guarda una nova versió del programa o si es fa Control-D des de Mu.

Farem servir un interruptor connectat a una entrada per controlar si estem en mode de recollida de dades o en mode d'accés al directori. En l'exemple següent aquest interruptor estarà entre D0 i GND. Quan l'interruptor estigui tancat (D0 connectat a GND) el programa podrà guardar dades, en cas contrari les podrem consultar. En la placa Circuit Playground Express podem fer servir l'interruptor de la placa (connectat a D7) i així ens estalviem de posar cables.

Cada vegada que canviem el mode serà necessàri fer un reinici del microcontrolador després de canvia la posició del commutador. No oblidem, però, que cal extreure la unitat abans de fer el reinici.

El programa boot.py serà el següent:

import digitalio
import board
import storage
control = digitalio.DigitalInOut(board.D0)
# En la CPX podem fer servir l'interruptor de la placa D7
control.direction = digitalio.Direction.INPUT
control.pull = digitalio.Pull.UP
storage.remount("/", control.value)

Quan acabi d'executar-se aquest programa s'executarà el programa code.py que serà l'encarregat de recollir les dades. Per fer un exemple senzill en el que no calgui connectar elements externs el que farem serà recollir la temperatura del microcontrolador. El programa serà el següent:

import board
import digitalio
import microcontroller
import time
led = digitalio.DigitalInOut(board.D13)
led.direction = digitalio.Direction.OUTPUT
try:
    with open("/temperatura.txt", "a") as fitxer:
        # La "a" indica que el fitxer no es sobrescriu
        # sino que s'hi afegeixen dades
        while True:
            temp = microcontroller.cpu.temperature
            fitxer.write('{0:f}\r\n'.format(temp))
            fitxer.flush()
            led.value = not led.value
            time.sleep(1)  # Cada segon si correcte
except:
    while True:
        led.value = not led.value
        time.sleep(0.25)  # Cada quart de segon si falla

 

 

 

En aquest web, les fotografies marcades amb [AF] són del web d'Adafruit, les marcades amb [SF] del web d'Sparkfun i les marcades amb [AU] del web d'Arduino.

 

 

 

 

 

 

 

 

 

 

Llicència de Creative Commons
Aquesta obra d'Oriol Boix està llicenciada sota una llicència no importada Reconeixement-NoComercial-SenseObraDerivada 3.0.