Oxoscript se transforme en NanoPy - plus d'infos

Fonctions du capteur

Overview

Chaque matériel Oxocard dispose de différents capteurs. Le tableau montre un aperçu des valeurs disponibles.

FonctionConnectArtwork/GalaxyScienceScience+
getButtonouiouiouioui
getButtonsouiouiouioui
getAcceleration-ouiouioui
getAccelerationXY-ouiouioui
getTemperatureavec AIR-ouioui
getHumidityavec AIR-ouioui
getHumidityAbsoluteavec AIR-ouioui
getPressure--ouioui
getAmbientRGB--ouioui
getAmbientIR--ouioui
getAmbientLux--ouioui
getCO2avec AIR-calculéoui
getIAQavec AIR-ouioui
getTVOCavec AIR-ouioui
getETOH--oui-
getVOCavec AIR--oui
getVOCIndexavec AIR--oui
getNOxavec AIR--oui
getNOxIndexavec AIR--oui
getMicrophoneAmplitude--ouioui
getMicrophoneDecibel--ouioui
getMicrophoneFrequency--ouioui
getTOF8x8avec ToF--oui
getTOF4x4avec ToF--oui

getTOF4x4

  getTOF4x4()->int[16]

Cartouche Oxocard- Science+, Connect+ToF seulement

Le VL53L5CX de STMicroelectronics est un capteur Time-of-Flight (ToF) 8 x 8 multizones. Il permet de réaliser des images en profondeur jusqu’à 4m avec une résolution de 64 pixels.

Les domaines d’application sont multiples. On peut s’en servir pour balayer l’environnement et créer une image 3D, reconnaître des gestes, mesurer des distances ou programmer des détecteurs de mouvement.

const THRESHOLD_DISTANCE = 500 # en mm

def onDraw():
    data = getTOF4x4()# lit les 64 (8x8) données du capteur
    clear()
   
    for i in 16:
        distance = data[i]
            if distance < THRESHOLD_DISTANCE:
                x = 48*(i/4)
                y = 48*(i%4)
                drawRectangle(24+x, 24+y, 48, 48)
    update()
    delay(5)

getTOF8x8

  getTOF8x8()->int[64]

Cartouche Oxocard- Science+, Connect+ToF seulement

Le VL53L5CX de STMicroelectronics est un capteur Time-of-Flight (ToF) 8 x 8 multizones. Il permet de réaliser des images en profondeur jusqu’à 4m avec une résolution de 64 pixels.

Les domaines d’application sont multiples. On peut s’en servir pour balayer l’environnement et créer une image 3D, reconnaître des gestes, mesurer des distances ou programmer des détecteurs de mouvement.

const THRESHOLD_DISTANCE = 500 # en mm

def onDraw():
    data = getTOF8x8()# lit les 64 (8x8) données du capteur
    clear()
    for i in 8+1:
        drawLine(24, 24+i*24, 240-24, 24+i*24)
        drawLine(24+i*24, 24, 24+i*24, 240-24)
    stroke(50,50,50)
    fill(255,0,0)
    for i dans 64:
        distance = data[i]
            if distance < THRESHOLD_DISTANCE:
                x = 24*(i/8)
                y = 24*(i%8)
                drawRectangle(24+x, 24+y, 24, 24)
    update()
    delay(5)

getNOxIndex

  getNOxIndex()->float

Uniquement Oxocard-Science+, Cartouche Connect+AIR

Renvoie la valeur actuelle de l’indice NOx entre 0 et 500.

NOx représente les composés d’oxyde d’azote, tels qu’ils sont produits par la fumée ou le feu.

Cette carte respecte le capteur Sensirion SGP41 de haute qualité et très précis. Les valeurs sont affichées en quelques secondes.

Exemple:

def onDraw():
    v = getNOxIndex()
    print(v)
    delay(10000)

Cet exemple affiche la valeur toutes les 10 secondes dans le terminal.

Pour plus de détails sur la valeur, voir la fiche technique.

(source)

getNOx

  getNOx()->float

Uniquement Oxocard-Science+, Cartouche Connect+AIR

Renvoie la valeur brute actuelle de NOx.

NOx représente les composés d’oxyde d’azote tels qu’ils sont produits par la fumée ou le feu.

Cette carte respecte le capteur Sensirion SGP41 de haute qualité et très précis. Les valeurs sont affichées en quelques secondes.

Exemple:

def onDraw():
    v = getNOx()
    print(v)
    delay(10000)

Cet exemple affiche la valeur toutes les 10 secondes dans le terminal.

Pour plus de détails sur la valeur, voir la fiche technique.

(source)

getVOCIndex

  getVOCIndex()->float

Uniquement Oxocard-Science+, Cartouche Connect+AIR

Renvoie la valeur actuelle de l’indice COV entre 0 et 500.

COV signifie Composés Organiques Volatils et décrit la quantité de substances d’origine organique présentes dans l’air sous forme de gaz et de vapeur.

Cette carte respecte le capteur Sensirion SGP41 de haute qualité et très précis. Les valeurs s’affichent en quelques secondes.

Exemple:

def onDraw():
    v = getVOCIndex()
    print(v)
    delay(10000)

Cet exemple affiche la valeur toutes les 10 secondes dans le terminal.

Pour plus de détails sur la valeur, voir la fiche technique.

(source)

getVOC

  getVOC()->float

Oxocard-Science+ uniquement

Renvoie la valeur COV brute actuelle.

COV signifie Composés Organiques Volatils et décrit la quantité de substances d’origine organique présentes dans l’air sous forme de gaz et de vapeur.

Cette carte respecte le capteur Sensirion SGP41 de haute qualité et très précis. Les valeurs s’affichent en quelques secondes.

Exemple:

def onDraw():
    tvoc = getVOC()
    print(tvoc)
    delay(10000)

Cet exemple affiche la valeur VOC toutes les 10 secondes dans le terminal.

Pour plus de détails sur la valeur, voir la fiche technique. Le fabricant recommande la fonction getVOCIndex pour les mesures.

(source)

getHumidityAbsolute

  getHumidityAbsolute()->float

Cartouche Oxocard-Science, Science+, Connect+AIR uniquement

Renvoie l’humidité absolue actuelle de l’air en g/m^3. Cette valeur indique la quantité de vapeur d’eau (humidité) dans l’air, indépendamment de la température.

L’humidité absolue maximale de l’air chaud à 30°C est d’environ 30g de vapeur d’eau.
L’humidité absolue maximale de l’air froid à 0°C est d’environ 5 g de vapeur d’eau.

L’humidité absolue de l’air a été calculée à l’aide de la formule suivante:

image (Source)

getAmbientLux

  getAmbientLux()->long

Oxocard-Science uniquement, Science+

Renvoie l’intensité lumineuse en lux.

Lux Surfaces
0,0001 Ciel de nuit sans lune, couvert (lumière des étoiles)
0,002 Ciel nocturne sans lune, clair avec lueur d'air
0.05-0.3 Pleine lune dans une nuit claire
3.4 Limite d'obscurité du crépuscule civil par ciel clair
20-50 Les lieux publics avec un environnement sombre
50 L'éclairage du salon familial (Australie, 1998)
80 Bâtiment de bureaux éclairage couloir/toilettes
100 Jour très sombre et couvert
150 Quai de gare
320-500 Éclairage de bureau
400 Lever ou coucher du soleil par temps clair.
1000 Jour de surexposition; éclairage typique d'un studio de télévision
10'000–25'000 Plein jour (pas de soleil direct)
32'000–100'000 Lumière directe du soleil

getAccelerationXY

  getAccelerationXY()->vector

Même chose que la fonction getAcceleration(), mais sans l’axe Z.

La valeur de retour est de type vector. Cette classe contient deux variables objet x et y qui sont de type float.

v:vector
v = getAccelerationXY()

getMicrophoneFrequency

  getMicrophoneFrequency()->int

Uniquement Oxocard-Science, Science+

Renvoie la fréquence la plus dominante actuelle en Hz.

La fréquence est calculée à l’aide de la transformation de Fourier rapide (fft). Les valeurs possibles sont: 250Hz, 375Hz, 500Hz, …, 15375Hz

getMicrophoneDecibel

  getMicrophoneDecibel()->byte

Oxocard-Science uniquement, Science+

Renvoie le niveau sonore actuel sous forme d’octet en décibels.

Le niveau sonore est calculé à partir de l’amplitude du microphone:

noise = 20 * log10(micAmp) - 20

Exemple:

def onDraw():
    db = getMicrophoneDecibel()
    h = map(db, 0, 150, 0, 255)
    clear()
    fill(255,255,255)
    drawRectangle(110, 240-h, 20, 240)
    update()

Cet exemple dessine une barre sur l’écran dont la hauteur dépend du niveau sonore actuel. Souffle sur le micro ou couvre-le pour voir l’effet.

getMicrophoneAmplitude

  getMicrophoneAmplitude()->long

Oxocard-Science uniquement, Science+

Renvoie l’amplitude du microphone actuellement la plus dominante sous forme de valeur longue.

L’amplitude est calculée à l’aide de la transformation de Fourier rapide (fft).

Exemple de calcul:

def onDraw():
    amp = getMicrophoneAmplitude()
    h = map(amp, 0, 50000, 0, 255)
    clear()
    fill(255,255,255)
    drawRectangle(110, 240-h, 20, 240)
    update()

Cet exemple dessine une barre sur l’écran avec une hauteur qui dépend de l’amplitude du microphone. Souffle sur le micro pour voir l’effet.

getETOH

  getETOH()->float

Oxocard-Science uniquement

Renvoie l’ETOH actuel en ppm.

L’ETOH (respectivement l’éthanol) est un liquide volatil, inflammable, incolore et appartient au composé chimique organique.

Notez que le capteur ZMOD4410 a besoin d’un temps de chauffe d’environ 2 minutes. Pendant ce temps, la valeur -1 est renvoyée.

Exemple:

def onDraw():
    etoh = getETOH()
    print(etoh)
    delay(10000)

Cet exemple imprime la valeur ETOH toutes les 10 secondes dans le terminal.

getTVOC

  getTVOC()->float

Uniquement Oxocard-Science, Science+

Renvoie le COVT actuel en mg/m3.

COVT signifie Composés Organiques Volatils Totaux et décrit la quantité de substances d’origine organique présentes dans l’air sous forme de gaz et de vapeur.

Comme référence:

Valeur Etat
<0.3 Très bon
0.3-1.0 Bien
1.00-3.00 Moyen
3.0-10.0 Mauvaise
>10.0 Très mauvais

Oxocard Science: Note que le capteur ZMOD4410 nécessite un temps de préchauffage d’environ 2 minutes. Pendant ce temps, il renvoie toujours -1.

Oxocard Science+: Cette carte respecte le capteur Sensirion SGP41 de haute qualité et très précis. Les valeurs sont affichées en quelques secondes.

Exemple de données:

def onDraw():
    tvoc = getTVOC()
    print(tvoc)
    delay(10000)

Cet exemple affiche la valeur TVOC toutes les 10 secondes dans le terminal.

getIAQ

  getIAQ()->float

Uniquement Oxocard-Science, Science+

Renvoie la classification IAQ actuelle.

IAQ signifie Indoor Air Quality et prend normalement une valeur entre 0 et 5:

Valeur Niveau état
≤1,99 1 Très bon
2,00-2,99 2 Bien
3.00-3.99 3 Moyen
4.00-4.99 4 Mauvaise
≥5.00 5 Très mauvais

Notez que le capteur ZMOD4410 de la carte Science nécessite un temps de préchauffage d’environ 2 minutes. Pendant ce temps, -1 est toujours renvoyé. La carte Science+ réagit en l’espace de quelques secondes.

Exemple: la réponse:

def onDraw():
    iaq = getIAQ()
    print(iaq)
    delay(10000)

Cet exemple affiche la valeur IAQ toutes les 10 secondes dans le terminal.

getCO2

  getCO2()->float

Cartouche Oxocard-Science, Science+, Connect+AIR uniquement

Renvoie la valeur actuelle de CO2 en ppm.

L’Oxocard Science contient le capteur ZMOD4410. Celui-ci a un temps de préchauffage d’environ 2 minutes. Pendant ce temps, il renvoie toujours -1. Avec ce capteur, la valeur de CO2 n’est pas mesurée directement, mais à l’aide d’un algorithme spécial. La valeur de départ est toujours de 400ppm et change avec le temps. Les valeurs inférieures à 1000ppm sont bonnes et les valeurs inférieures à 800ppm sont excellentes. L’algorithme s’améliore au fur et à mesure des mesures (à partir de plusieurs heures).

L’Oxocard Science + et la cartouche AIR disposent d’un capteur Sensirion (SCD41). Celui-ci est très précis et fournit des valeurs exactes en quelques secondes.

Exemple:

def onDraw():
    co2 = getCO2()
    print(co2)
    delay(10000)

Cet exemple affiche la valeur de CO2 toutes les 10 secondes dans le terminal.

getAmbientIR

  getAmbientIR()->long

Oxocard-Science uniquement, Science+

Donne un nombre en fonction de l’intensité du rayonnement infrarouge (plage de valeurs de 0 à 2^18).

Comme la plupart des télécommandes de téléviseurs communiquent par infrarouge, un simple programme permet de visualiser ces signaux:

def onDraw():
    ir = getAmbientIR()
    clear()
    textFont(FONT_ROBOTO_32)
    drawText(10,10,ir)
    update()

getAmbientRGB

  getAmbientRGB()->color

Oxocard-Science uniquement, Science+

Renvoie la lumière ambiante actuelle sous forme de valeurs de couleur rouge, verte et bleue (RVB). La lumière ambiante est mesurée par le capteur APDS-9251 et calculée de manière à entrer dans la plage 0… 255.

Exemple:

def onDraw():
    ambient:color
    ambient = getAmbientRGB()
    print("R = " + ambient.r + "; G = " + ambient.g + "; B = " + ambient.b)
    delay(5000)

Cet exemple affiche les couleurs RVB mesurées toutes les 5 secondes dans le terminal.

getPressure

  getPressure()->float

Uniquement Oxocard-Science, Science+

Renvoie la pression barométrique actuelle en mbar. La pression barométrique est mesurée avec le capteur MS560702BA03-50 avec une précision de ±1,5 mbar.

Exemple::

def onDraw():
    pres = getPressure()
    print(pres)
    delay(10000)

Cet exemple affiche la pression atmosphérique mesurée toutes les 10 secondes dans le terminal.

getHumidity

  getHumidity()->float

Cartouche Oxocard-Science, Science+, Connect+AIR uniquement

Renvoie l’humidité actuelle de l’air en %RH. L’humidité est mesurée par le capteur SHTC3 avec une précision de ±2 %RH.

Comme les capteurs d’humidité peuvent généralement avoir un décalage important, il est recommandé de calibrer le décalage via le menu de réglage de l’Oxocard-Science.

Exemple de réglage:

def onDraw():
    humi = getHumidity()
    print(humi)
    delay(10000)

Cet exemple affiche le taux d’humidité mesuré toutes les 10 secondes dans le terminal.

getTemperature

  getTemperature()->float

Cartouche Oxocard-Science, Science+, Connect+AIR uniquement

Renvoie la température actuelle sous forme de float en °C. La température est mesurée avec une précision de ±0,2 °C par le capteur SHTC3.

Comme les capteurs de température peuvent généralement avoir un décalage important, il est recommandé de calibrer le décalage via le menu de configuration sur l’Oxocard-Science.

Exemple:

def onDraw():
    temp = getTemperature()
    print(temp)
    delay(10000)

Cet exemple affiche la température mesurée toutes les 10 secondes dans le terminal.

getAcceleration

  getAcceleration()->vector3D

Détermine les valeurs d’accélération actuelles sur les trois axes x,y et z. Les valeurs sont exprimées en G (G ~ 9.81m/s^2). Selon la direction, les valeurs >0 ou <0 sont indiquées.

La valeur de retour est de type vector3D. Cette classe contient trois variables objet x,y, et z qui sont de type float.

Exemple:

def onDraw():
    push()
    fond(0,0,0)
    stroke(255,255,255)
    v:vector3D
    v = getAcceleration()
    v1 = vector(x=v.x,y=v.y)
    v1.mulScalar(90)
    translate(120,120)
    noStroke()
    fill(100,100,100)
    drawCircle(0,0,28)
    noFill()
    stroke(255,255,255)
    drawCircle(-v1.x,v1.y,30)
    update()
    delay(50)
    pop()

Cet exemple dessine une horloge à eau. Lorsque la carte est bien alignée horizontalement, les deux cercles sont centrés.

getButton

  getButton()->byte

Vérifie si un bouton a été pressé.

0 = pas de bouton 1 = au milieu 2 = sur 3 = à droite 4 = vers le bas 5 = à gauche

b = getButton()

Cette fonction ne permet d’interroger qu’UN seul bouton à la fois.

getButtons

  getButtons()->buttons

Vérifie si plusieurs boutons ont été pressés.

La fonction crée un objet de la classe buttons.

La classe est a les variantes d’objet suivantes: up, down, left, right, middle. Ces valeurs ont toutes le type “bool”, c’est-à-dire qu’elles peuvent être true ou false.

Cette fonction permet d’interroger simultanément plusieurs clics de bouton.

def onDraw():
    background(0,0,0)
    b:boutons = getButtons()
    if b.left and b.right:
        background(255,0,0)
    update()

(L'écran ne s'allume en rouge que si l'on appuie à gauche et à droite en même temps).