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)
実行結果です。