見出し画像

行先掲示板

部屋の扉に掛ける行先掲示板をIoT化しました。

Slackと連携する

Slackのステータス表示は自分の状況をプロフィールに表示することで、他のメンバーに知らせる機能です。
今回は定期的にSlackのステータスにアクセスすることで、行先掲示板のLED表示を変更することにしました。
Slackにアクセルすることができればどこにいても、いつでもステータスを変更することができます。

ハードウェア

制御用PC

Raspberry Piシリーズ中最小のPico Wを使いました。
Raspberry Pi Pico Wは無線チップが搭載され、無線LAN機能が利用できるにもかかわらず、1,200円程度で購入可能な安価なシングルボードコンピュータです。
LEDを接続するディジタル専用のGPIOピンが23本と必要十分な数を備えています。
無線通信モジュール使用時でも最大約300mA程度の電力消費と省エネを実現しており、バッテリー駆動による長期稼働も可能です。

その他の部品

全ての部品はAmazonで簡単に入手できます
LED5mm

LED3mm

LEDホルダー5mm

LEDホルダー3mm

抵抗

アクリル板2mm厚

組ネジ4mm

ソフトウェア

microPythonのプログラム作成は初めてだったので、ChatGPTに作ってもらいました。
便利な世の中になったもんです・・・

Q : Slackのステータスを取得するpythonプログラムをurequestsモジュールを使用して、Slack APIにHTTPリクエストを送信するプログラムは
A : urequestsモジュールを使って、Slack APIにHTTPリクエストを送信し、Slackのステータスを取得するPythonプログラムを以下のように書くことができます。ただし、この例ではRaspberry Pi Picoとの連携を想定していますが、urequestsモジュールは他のMicroPython環境でも使用できます。

import urequests
import json

SLACK_API_TOKEN = "xoxb-your-bot-token"
USER_ID = "your-user-id"

url = f"https://slack.com/api/users.profile.get?user={USER_ID}"
headers = {
    "Content-Type": "application/x-www-form-urlencoded",
    "Authorization": "Bearer " + SLACK_API_TOKEN,
}

response = urequests.get(url, headers=headers)

if response.status_code == 200:
    data = json.loads(response.text)
    if data["ok"]:
        profile = data["profile"]
        status_text = profile["status_text"]
        status_emoji = profile["status_emoji"]
        print(f"Slack status: {status_emoji} {status_text}")
    else:
        print(f"Error getting status: {data['error']}")
else:
    print(f"Error getting status: {response.status_code}")

response.close()

制作の手順

アクリル板の加工

3mm厚のアクリル板をレーザー加工機で加工しました。同じものを2枚作ります。
レーザー加工機が無い場合はカッターとドリルで加工が可能です。

表示紙の印刷と穴あけ

インクジェットプリンタで厚めの光沢写真用紙に印刷して、カッターでLEDの穴を開けました。

組み立て

2枚のアクリル板の間にLED用の穴を開けた紙を挟み、組ネジでとめます。
LEDホルダーをネジ留めし、LEDを差し込めば組み立ては完了です。

LEDの配線

LEDの+側(アノード)は抵抗を介してRaspberry Pi PicoのGPIOピンにつなぎます。
LEDのー側(カソード)はRaspberry Pi PicoのGNDピンにつなぎます。


LEDの配線

プログラムのインストール




参考にしたサイト


この記事が気に入ったらサポートをしてみませんか?