行先掲示板(LEDバージョン)
部屋の扉に掛ける行先掲示板を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ピンにつなぎます。
プログラムのインストール
参考にしたサイト
この記事が気に入ったらサポートをしてみませんか?