Esercizi MicroPython avanzati con la scheda di espansione IKS01A3
Avrai bisogno della scheda di espansione IKS01A3 per questi esercizi.
Il codice sorgente di ogni esercizio / sensore è disponibile inarea download
Avviare
La scheda di espansione IKS01A3 è una scheda dimostrativa di diversi sensori MEMS di ST Microelectronics. La sua versione A3 contiene i seguenti sensori:
- LSM6DSO : Accelerometro 3D + giroscopio 3D
- LIS2MDL : Magnetometro 3D
- LIS2DW12 : Accelerometro 3D
- LPS22HH : Barometro (260-1260 hPa)
- HTS221 : Sensore di umidità relativa
- STTS751 : Termometro (–40 °C to +125 °C)
Questi sensori sono collegati al bus * I2C * della scheda NUCLEO-WB55.
La scheda di espansione * IKS01A3 * dispone anche di uno slot in formato DIL a 24 pin per aggiungere ulteriori sensori I2C (ad esempio, il giroscopio A3G4250D)
Avviare
Collegare la scheda * IKS01A3 *, fare attenzione a rispettare le marcature sui connettori: CN9 -> CN9, CN5 -> CN5, ecc.
Una volta collegata correttamente la scheda di espansione, ecco l’elenco dei sensori con i quali è possibile comunicare tramite I2C.
Utilizzo dell’accelerometro LIS2DW12
Per questa dimostrazione, abbiamo scelto di utilizzare l’accelerometro a 3 assi (LIS2DW12).
La dimostrazione consiste nell’accendere un LED lungo l’asse su cui viene rilevata l’accelerazione (-1g) dovuta alla gravità.
Ecco la configurazione degli assi di accelerazione / colori dei LED:
- Asse x : LED verde
- Asse y : LED blu
- Asse z : LED rosso
Come per ogni utilizzo di una libreria esterna, copia il file LIS2DW12.py (disponibile nell’esempio LIS2DW12) nella directory del disco USB : PYBFLASH.
Ora modifica lo script main.py:
from machine import I2C
import LIS2DW12
import pyb
import time
i2c = I2C(1) # I2C n ° 1 della scheda NUCLEO-W55 è utilizzato per comunicare con il sensore LISDW12
accelerometro = LIS2DW12.LIS2DW12(i2c)
led_blu = pyb.LED(1)
led_verde = pyb.LED(2)
led_rosso = pyb.LED(3)
while(1):
time.sleep_ms(500)
if abs(accelerometro.x()) > 700 : # Se il valore assoluto dell'accelerazione sull'asse X è maggiore di 700 mG, allora
led_verde.on()
else:
led_verde.off()
if abs(accelerometro.y()) > 700 : # Se il valore assoluto dell'accelerazione sull'asse Y è maggiore di 700 mG allora
led_blu.on()
else:
led_blu.off()
if abs(accelerometro.z()) > 700 : # Se il valore assoluto dell'accelerazione sull'asse Z è maggiore di 700 mG allora
led_rosso.on()
else:
led_rosso.off()
Altri sensori
È possibile utilizzare gli altri sensori sulla scheda di espansione grazie alle librerie e agli script di esempio disponibili in area download
Nota, i seguenti 3 sensori vengono utilizzati per costruire le basi di una stazione meteorologica collegata.
- STTS751 : Termometro (–40 °C to +125 °C)
- HTS221 : Sensore di umidità relativa
- LPS22HH : Barometro (260-1260 hPa)
Elementi di base dei sensori:
In questa sezione sono elencati per ogni sensore:
- Importazioni di librerie e dichiarazione del nome del sensore che deve essere all’inizio del programma
- Funzioni che consentono l’accesso ai valori di misura
LSM6DSO - accelerometro e giroscopio 3D
Dichiarazioni iniziali:
from machine import I2C
import LSM6DSO
i2c = I2C(1) # L'I2C n ° 1 della scheda NUCLEO-W55 serve per comunicare con il sensore
intertial_sensor = LSM6DSO.LSM6DSO(i2c) # il nome del sensore
Mesures :
intertial_sensor.ax() # risultato in mg (g intensità di gravità)
intertial_sensor.ay()
intertial_sensor.az()
intertial_sensor.gx() # risultato in rad / s
intertial_sensor.gy()
intertial_sensor.gz()
LIS2MDL - Magnetometro 3D
Dichiarazioni iniziali :
from machine import I2C
import LIS2MDL
i2c = I2C(1) # L'I2C n ° 1 della scheda NUCLEO-W55 serve per comunicare con il sensore
bussola = LIS2MDL.LIS2MDL(i2c) # il nome del sensore
Mesures :
bussola.x() # risultato in µT
bussola.y()
bussola.z()
LPS22HH - Barometro (260-1260 hPa) e sensore di temperatura
Dichiarazioni iniziali :
from machine import I2C
import LIS2MDL
i2c = I2C(1) # L'I2C n ° 1 della scheda NUCLEO-W55 serve per comunicare con il sensore
bussola = LIS2MDL.LIS2MDL(i2c) # il nome del sensore
Le misure:
sensor.temperature() # risultato in ° C
sensor.pressione() # risultato in hPa
HTS221 - Sensore di temperatura e umidità relativa
Dichiarazioni iniziali :
from machine import I2C
import HTS221
i2c = I2C(1) # L'I2C n ° 1 della scheda NUCLEO-W55 serve per comunicare con il sensore
sensor = HTS221.HTS221(i2c) # il nome del sensore
Le misure:
sensor.temperatura() # risultato in ° C
sensor.umidità() # risultato in%
STTS751 - Termometro (–40 °C à +125 °C)
Dichiarazioni iniziali :
from machine import I2C
import STTS751
i2c = I2C(1) # L'I2C n ° 1 della scheda NUCLEO-W55 serve per comunicare con il sensore
sensor = STTS751.STTS751(i2c) # il nome del sensore
Le misure:
sensor.temperatura() # risultato in ° C