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

SmartRun

SmartRun és una samarreta que indica, en una tira de leds, el ritme cardíac i la velocitat a la qual es desplaça la persona usuària.

La llista de materials principals és la següent:

1   placa Circuit Playground Express

1   sensor GPS (potes A6 i A7)

1   sensor de ritme cardíac (pota A2)

1   tira de NeoPixel (pota A1)

A continuació tenim el llistat del programa:

import board
import digitalio
import time
import neopixel
import analogio
import adafruit_gps
import busio
#CONFIGURACIÓN DE TODO
#LEDs
cadena = neopixel.NeoPixel(board.A1, 12, brightness=0.2, auto_write=True)
#RITMO CARDÍACO
sensor = analogio.AnalogIn(board.A2)
#GPS
uart = busio.UART(board.TX, board.RX, baudrate=9600, timeout=100)
gps = adafruit_gps.GPS(uart)
gps.send_command(b'PMTK314,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0')
gps.send_command(b'PMTK220,1000')
darrer_valor = time.monotonic()
while True:
    # VELOCIDAD
    gps.update()
    actual = time.monotonic()
    if actual - darrer_valor >= 1.0:    
        darrer_valor = actual
        if not gps.has_fix:
            # Encara no tenim un senyal estable
            print('Esperant un valor estable del gps...')
            for i in range(5):
                cadena[i+7]=(255,255,0)
        else:
            for i in range(5):
                cadena[i+7]=(0,0,0)
            # Tenim un senyal estable
            print('')    # Linia de separacio
            print('Qualitat del senyal bona: ', gps.fix_quality)
            if gps.speed_knots is not None:
                print('Velocitat: ', 1.852*gps.speed_knots, ' km/h')
                numledvel=int((gps.speed_knots*1.852)*(5/30))
                print('Número de LEDs', numledvel)
                for i in range(numledvel):
                    cadena[i+7]=(0,0,255) # AZUL
    # PULSO
    cadena[6]=(255,255,255)
    tant = time.monotonic()
    valmax = 0
    valmin = 65535
    while time.monotonic() - tant < 3:
        gps.update()
        valact = sensor.value
        if valact > valmax:
            valmax = valact
        if valact < valmin:
            valmin = valact
        time.sleep(0.01)
    valmig = (valmax + valmin) / 2
    tant = time.monotonic()
    sobre = False
    numpols = 0
    while time.monotonic() - tant < 15:
        gps.update()
        valact = sensor.value
        if not sobre:
            if valact > valmig:
                numpols += 1
                sobre = True
        else:
            if valact < valmig:
                sobre = False
        time.sleep(0.02)
    bpm = numpols * 4
    print('bpm: ',bpm)
    time.sleep(0.5)
    cadena.fill((0,0,0))
    numled=int((bpm-50)*5/100)
    if numled < 0:
        numled = 0
    if numled > 5:
        numled = 5
    for i in range(numled):
        color = (255, 0, 0)   # ROJO
        cadena[i+1] = color
        time.sleep(0.05)
    time.sleep(0.1)

 

 

 

 

 

 

 

 

 

 

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