CUEBiC TEC BLOG

キュービックTECチームの技術ネタを投稿しております。

ラズパイでエンジョイするズラ

SREのkmsn17です。みなさんいかがお過ごしですか?今年は非常に暑くて家に篭って、ずーっとラズパイを触ってました。 だんだん秋になったので、頑張って出かけようと思います。そう、今日はラズパイ!ラズベリーパイについて書きます。

ラズパイとは!?

Raspberry Piとは、小さいコンピュータのことです。OSを入れれば自分のパソコンとしても日常的に使えます。

ラズパイで何ができるの?

主に電子工作です。ラジコン、ドローンなどを動かしたり、最近ですとChatGPTと喋るおもちゃを繋げたりして開発した海外の学生さんとかもいましたね。

今回は何を作ったの?

焦電型赤外線センサーを作りました。所謂、人感センサーです。

なぜ、作ったの?

会議室予約されているけど、使用されていない会議室とかありませんか?例えば、緊急で会議室を使いたい時、カレンダーを使って調べたり、会議室を一室一室見て調べるのって大変じゃありませんか?そういった小さいストレスを無くして、少しでも快適に働いていただくために開発しました。名前はkmsnセンサーです。

必要な部品

秋月電子で購入しました。ラズパイ、焦電型赤外線センサー、ジャンパーワイヤー(ラズパイとセンサーを繋ぐワイヤ)

部品の設置

コンピュータが熱くならないようにファンを設置。人の動きが分かるように焦電型赤外線センサーを設置。注意したいのが、必ずどのVで動くのか確認してください。プラス極には 電源が入るVピンに設置、マイナス極は電流の終点としてGNDピンに刺します。実物、設計図を載せておきます。

全体の実物

ファン

焦電型赤外線センサーの裏面

左から、マイナス、OUT、プラスと表記されています。

トリマ抵抗(ポテンショメータ)の調整

オレンジの部分はトリマ抵抗(ポテンショメータ)です。感度、ホールドタイムを調整します。回すときは、時計回りで画像の設定は一番上に調整してます。感度は、動作を検出することができまして、上げると早い動作も検出しますが誤検知が増える場合もあります。ホールドタイムは、人感センサーが人の動きを検知したときに、その出力がアクティブになりますが、ホールドタイムの間はその出力をアクティブに保ち続けます。短い間隔での微小な動きや誤検出を防ぐために、一定時間出力を持続させることができます。

GPIOの配線図

ラズパイの背面図

pinoutコマンドを打てば表示されます。

GPIOの背面図

人感センサー、ファンをGPIOに刺した背面図

プログラムの中身

Pythonで書きました。プログラムの中身はこれです

##人感センサープログラム
import RPi.GPIO as GPIO
import requests

## Slack設定
SLACK_API_TOKEN = ""  # トークンをこちらにセット
CHANNEL_ID = ""  # チャンネルIDをこちらにセット

GPIO_PIN = 17

GPIO.setmode(GPIO.BCM)
GPIO.setup(GPIO_PIN, GPIO.IN)

def send_slack_message(text):
    url = "https://slack.com/api/chat.postMessage"
    headers = {
        "Authorization": "Bearer " + SLACK_API_TOKEN,
        "Content-Type": "application/json; charset=utf-8"
    }
    data = {
        "channel": CHANNEL_ID,
        "text": text
    }
    response = requests.post(url, headers=headers, json=data)
    return response.json()

last_state = None

try:
    while True:
        current_state = GPIO.input(GPIO_PIN)

        if current_state != last_state:
            if current_state == GPIO.HIGH:
                print("【ラズパイテスト】会議室使用中")
                send_slack_message("【ラズパイテスト】会議室使用中")
            else:
                print("【ラズパイテスト】空室")
                send_slack_message("【ラズパイテスト】空室")

            last_state = current_state

except KeyboardInterrupt:
    GPIO.cleanup()

総括

ラズパイの開発ですが、とにかく楽しくて業務そっちのっけで触りたいぐらいです笑 AWSと繋げればAWSの勉強、Linuxを入れて自分のPCとして使えばLinux周りの勉強にもなります。 IoTに興味ある方は、是非是非ラズパイを使ってエンジョイしてください!! ではでは〜

お知らせ!!

キュービックでは、一緒に働いてくれる仲間を募集しています。興味がある方はカジュアル面談Webエンジニアから応募をお願いします。ご応募お待ちしております。 herp.careers