【余談】
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 件のコメント:
コメントを投稿