CircuitPython 10行プログラミング Step4 (3) 搭載センサ

 Adafruit Feather nRF52840 Senseボード上には、下記のセンサが搭載されています。

  • STマイクロ 6軸IMU(慣性計測装置)- LSM6DS33(0x6A):Accel(加速度)/Gyro(ジャイロ・センサ) + 3軸の磁気センサLIS3MDL(0x1C):magnetometer
  • APDS9960(0x39):Proximity(近接)、Light、Color、ジェスチャ・センサ
  • PDM:マイク、サウンド・センサ(D34;PDMデータ、D35;PDMクロック
  • SHT30(0x44):温度、湿度センサ
  • BMP280(0x77):温度、気圧、高度センサ

 これらのセンサから、データを読み出します。センサの後ろに書いてあるのはスレーブ・アドレスです。

examplesからプログラムを抜き出す

 PDM出力のマイクを除いて、それぞれ、examplesのサンプルからプログラムを抜き出します。6.0.0 Beta 0番のlibフォルダにはLSM6DS33のライブラリが含まれていなかったので利用できせん。
 照度センサapds9960は出力が0だったので、データは出力していません。
 湿度センサSHT30はSHT31と湿度の温度範囲の確度が異なるだけで、読み書きのタイミングは同じなので、ライブラリのあるSHT31dを利用します。

 湿度センサから温度℃と湿度%、気圧センサから温度℃と気圧hPa、磁気センサからx、y、zのμT(マイクロテスラ)を表示します。

import time
import board
import adafruit_bmp280
import adafruit_sht31d
import adafruit_apds9960.apds9960
import adafruit_lis3mdl
import adafruit_lsm6ds

i2c = board.I2C()

# Define sensors:
# Accelerometer/gyroscope:
#lsm6ds = adafruit_lsm6ds.LSM6DS33(i2c)

# Magnetometer:
lis3mdl = adafruit_lis3mdl.LIS3MDL(i2c)
#current_rate = adafruit_lis3mdl.Rate.RATE_155_HZ
#lis3mdl.data_rate = current_rate

# DGesture/proximity/color/light sensor:
# TODO: How do we get the light level?
apds9960 = adafruit_apds9960.apds9960.APDS9960(i2c)
apds9960.enable_color = True

# Humidity sensor:
sht31d = adafruit_sht31d.SHT31D(i2c)

# Barometric pressure sensor:
bmp280 = adafruit_bmp280.Adafruit_BMP280_I2C(i2c)

while True:
    print("Temp={:.1f} Press={:.0f}".format(bmp280.temperature, bmp280.pressure))
    print("Temp={:.1f} Humi={:.0f}".format(sht31d.temperature, sht31d.relative_humidity))
    mag_x, mag_y, mag_z = lis3mdl.magnetic
    print("X:{0:10.2f}, Y:{1:10.2f}, Z:{2:10.2f} uT".format(mag_x, mag_y, mag_z))
    #print(lis3mdl.magnetic[0], lis3mdl.magnetic[1], lis3mdl.magnetic[2])
    print('=====')
    time.sleep(10)

 実行結果です。