新型コロナウィルスの猛威が、収まりません。
ということで、毎日体温測定が欠かせない今日この頃ですが、やはり体温測定ってやつは、めんどくさいことこの上ない。
そこで、こんなものを買ってみました。
AMG8833というサーマルセンサー。スイッチサイエンスで購入、お値段5千円ほど。
Panasonic製のセンサーを搭載しており、解像度は8×8、0~80度まで測定可能というセンサーです。
ずっと以前から気にはなってましたが、コロナ禍のご時勢ということもあり、とうとう手を出してしまいました。
で、いきなりRaspberry Pi 3 B+に組み込んでみました。
接続ですが、それぞれRaspberry PiのGPIOの
3.3V ・・・ 1番ピン(3.3V)
GND ・・・ 6番ピン(GND)
SCL ・・・ 5番ピン(GPIO3、SCL)
SDA ・・・ 3番ピン(GPIO2、SDA)
に接続してます。カメラは、先日買った800円のRaspberry Pi Camera V1.3互換カメラ(Raspberry Pi Camera V1.3の「互換カメラ」買ってみた: EeePCの軌跡参照)を使います。
で、下準備ですが、こちらを参考に、
RaspberryPiで赤外線アレイセンサAMG8833(Grid-EYE)からデータ取得 - Qiita
ドライバーをダウンロードします。
あ、その前にあらかじめI2Cを有効にしたり(sudo raspi-configから)、IDを表示(i2cdetect -y 1)させて接続確認をしておいてください。
> sudo pip3 install adafruit-circuitpython-amg88xx
で、上のサイトを参考に、コードを作りました。
コードはこちら(amg8833_plt.py)。
import time
import busio
import board
import cv2
import adafruit_amg88xx
import picamera
import picamera.array
import matplotlib.pyplot as plt
plt.ion()
#plt.figure()
plt.subplots(figsize=(8, 4))
# I2Cバスの初期化
i2c_bus = busio.I2C(board.SCL, board.SDA)
try:
while True:
# センサーの初期化
sensor = adafruit_amg88xx.AMG88XX(i2c_bus, addr=0x68)
# センサーの初期化待ち
time.sleep(.1)
with picamera.PiCamera() as camera:
camera.resolution = (320, 240)
camera.capture('./tmp.jpg')
max_temp = max(max(sensor.pixels))
print(max_temp)
img0 = cv2.imread('./tmp.jpg')
img = img0[0:240,41:280]
img = img[:, :, ::-1].copy()
plt.subplot(1,2,1)
fig = plt.imshow(sensor.pixels, cmap="inferno", interpolation="bicubic",vmin=27,vmax=30)
plt.colorbar()
plt.subplot(1,2,2)
plt.imshow(img)
plt.text(0, 0, str(max_temp) + 'deg',size = 20, color = "red")
plt.draw()
plt.pause(0.01)
plt.clf()
except KeyboardInterrupt:
print("done")
で、これを動かした結果ですが
> python3 amg8833_plt.py
こんな感じのヒートマップと画像、そして温度の最大値が出ます。
3秒間に1枚程度の速度ですが、まあまあ使えます。
ただし、問題はその表示温度でして・・・
私と次男が映ってますが、体温はそれぞれ36.1度、36.5度。
ですが、ごらんの通り30度前後しか表示されません(28.25~30.25)。
1メートルほど離れたところでは大体6度ほど、2、3センチまで近づけば、2度ほどのずれのようでした。
ただ、安定して温度が表示されるので、キャリブレーションをすればまあまあ使えそうかなぁと。
となると、校正用に何人かの人(体温測定済み)が必要かと。
ちょっと、大変ですねぇ……
このまま使うなら、このセンサー上で「31度以上(1メートル)」となった場合は要注意、という運用でもいいかもしれません。
それよりも、なんとかこの2つの画像(ヒートマップとカメラ映像)を重ねたいですが、これもキャリブレーションが必要。
もし本気で作ろうと思ったら、ここからが大変ですね。どうしようか、考え中です。
最近のコメント