Chaque matériel Oxocard dispose de différents capteurs. Le tableau montre un aperçu des valeurs disponibles.
Fonction | Connect | Artwork/Galaxy | Science | Science+ |
getButton | oui | oui | oui | oui |
getButtons | oui | oui | oui | oui |
getAcceleration | - | oui | oui | oui |
getAccelerationXY | - | oui | oui | oui |
getTemperature | avec AIR | - | oui | oui |
getHumidity | avec AIR | - | oui | oui |
getHumidityAbsolute | avec AIR | - | oui | oui |
getPressure | - | - | oui | oui |
getAmbientRGB | - | - | oui | oui |
getAmbientIR | - | - | oui | oui |
getAmbientLux | - | - | oui | oui |
getCO2 | avec AIR | - | calculé | oui |
getIAQ | avec AIR | - | oui | oui |
getTVOC | avec AIR | - | oui | oui |
getETOH | - | - | oui | - |
getVOC | avec AIR | - | - | oui |
getVOCIndex | avec AIR | - | - | oui |
getNOx | avec AIR | - | - | oui |
getNOxIndex | avec AIR | - | - | oui |
getMicrophoneAmplitude | - | - | oui | oui |
getMicrophoneDecibel | - | - | oui | oui |
getMicrophoneFrequency | - | - | oui | oui |
getTOF8x8 | avec ToF | - | - | oui |
getTOF4x4 | avec ToF | - | - | oui |
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()->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()->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.
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.
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.
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.
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:
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()->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()->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()->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()->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()->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()->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()->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()->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()->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()->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()->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()->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()->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()->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()->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()->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()