2020年8月2日日曜日

Raspberry Pi 4B + APDS9660使用光学式ジェスチャーセンサモジュールキット


【余談】
APDS9660をラズパイ上で動作させるので、スクリプトの方が何かと都合が良さそう。
Arduino用は秋月のサイトのサンプルプログラムはArduino用。

あちこち探して見つかったのは、Python用のライブラリであるhttps://github.com/liske/python-apds9960だった。
Pythonは書いたことがないのだが、まぁ仕方ない。

【ソフトウエアの準備】
# apt install python3-smbus python3-pip
# python3 -m pip install apds9960
# python3 -m pip install  RPi.GPIO

pipというパッケージマネージャで、ライブラリをインストールしてくれるのね。
便利だな。
jsのnpmと言い、pythonのpipと言い、あえてOSのパッケージマネージャと
別に用意するのは、今の流行というか、OS非依存にしてポータビリティを
上げる方針なんだろうな。

【スクリプト】his.ambient.py
https://github.com/liske/python-apds9960の中のテストスクリプトを元に、下記をでっち上げた。
[code]
#!/usr/bin/python3

from apds9960.const import *
from apds9960 import APDS9960
import RPi.GPIO as GPIO
import smbus
import datetime, time
from time import sleep

port = 1
bus = smbus.SMBus(port)

apds = APDS9960(bus)

def intH(channel):
    print()

GPIO.setmode(GPIO.BOARD)
GPIO.setup(7, GPIO.IN)
try:
    # Interrupt-Event hinzufuegen, steigende Flanke
    GPIO.add_event_detect(7, GPIO.FALLING, callback = intH)
    apds.enableLightSensor()
    sleep(1)
    outstring = "{ place : \"home\" ,"
    outstring += "  time : \"{}\" ,".format(datetime.datetime.utcnow().strftime(
"%Y-%m-%dT%H:%M:%SZ"))
    outstring += "  AmbientLight : {} ,".format(apds.readAmbientLight())
    outstring += "  red :{} ,".format(apds.readRedLight())
    outstring += "  green :{} ,".format(apds.readGreenLight())
    outstring += "  blue :{} ".format(apds.readBlueLight()) + "}"
    print(outstring)

finally:
    GPIO.cleanup()

[/code]
【実行結果】
下記1行を標準出力に出して終わる。
{ place : "home" ,  time : "2020-08-02T11:58:17Z" ,  "AmbientLight" : 151 ,  "red" :33 ,  "green" :28 ,  "blue" :26 }
【今後の予定】
  • crontabで10分ごとに動作させて、ファイルにためておく。
  • node.jsとmongoDBで作ったサービスに結果を登録し、Chart.jsなどでグラフ化する。
  • もともとAPDS9660はジェスチャーセンサーなんだが、その機能は使う予定なし。



0 件のコメント:

コメントを投稿