RaspberryPi カメラで画像を撮影してLINEで送信する
はじめに
ラズパイは様々なデバイスを組み込んで様々な用途に使用することができます。その応用編として、ラズパイにカメラを取り付けることが可能です。撮影した画像はただ単に保存するだけでなく、インターネットに接続して撮影した画像を自分のLINEアカウント宛に自動送信させることが可能です。今回は、その環境の構築方法を紹介します。
使うのは前回と同様に「Raspberry Pi model 3B」(以下、ラズパイ3)です。なお、現在「Raspberry Pi model 4」が出回っていますが、現在安定して動作検証しているのはmodel3Bですので、こちらでご紹介します。 OSは2020-02-13-raspbian-buster-full を使っています。
ラズパイ3にOSをインストールしてカメラを使えるようにする方法は前回記事を参考にしてください。
LINEのトークンを取得する
まずはLINE側の準備から始めます。これには「LINE Notify」という公式の通知連携サービスを使います。基本的に無料のアカウントで利用することができます。
LINE Notifyにアクセスして自分のLINEアカウントでログインします。
次に「トークンを発行する」を選びます。
トークン名、通知を送信するトークルームを選んでください。
トークンが発行されます(網で塗りつぶしています)。
トークンは必ずコピーして控えてください。これでLINE側の設定は完了です。
ラズパイにプログラムをインストールする
次はラズパイ側の準備です。ラズパイがWIFIに接続されていること、カメラで静止画を撮影できることを確認してください。
Pythonで以下のコードを作成します。
import requests
import time
import picamera
with picamera.PiCamera() as camera:
camera.resolution = (1024, 768)
camera.start_preview()
# Camera warm-up time
time.sleep(2)
camera.capture('my_picture.jpg')
fname='my_picture.jpg'
url = "https://notify-api.line.me/api/notify"
token = "取得したトークン"
headers = {"Authorization" : "Bearer "+ token}
message = "picture"
payload = {"message" : message}
files = {"imageFile": open(fname, "rb")}
r = requests.post(url, headers = headers, params=payload, files=files)
作成したプログラム sendImageLine.py
をラズパイのpiフォルダ直下に置きます。ターミナルで以下のコードを実行します。
>python sendImageLine.py
プログラムが正しく動作すると、カメラで撮影した画像がLINE経由で送られていると思います。
まとめ
今回はラズパイの応用編として、カメラで画像を撮影しLINE経由でおくるというプログラムをご紹介しました。発展編としてラズパイに人感センサーを接続し、人が近づいたら画像をLINEにおくるという使い方も可能ですね。
カメラキットのご案内
この記事でご紹介した、ラズパイ3カメラキットをご用意しております。
オプションでこのsendImage2Line.pyを同梱します。
この記事が気に入ったらサポートをしてみませんか?