
キャリテク!マガジン
- TOP
- キャリテク!マガジン
- 【おうちSEになろう!】玄関で活躍するお知らせボードをつくる(池澤あやか氏 連載)
【おうちSEになろう!】玄関で活躍するお知らせボードをつくる(池澤あやか氏 連載)

みなさんこんにちは。池澤あやかです。
前回は Raspberry Pi Zero を小さな自宅サーバーとして使ってみました。これで、サーバーレンタルのお値段も気にせずにいつでも自分のアプリケーションがデプロイできますね。
とはいえ、Raspberry Pi をサーバーとして使うだけでは、Raspberry Pi を楽しみきれていません。Raspberry Pi の醍醐味はなんといっても電子パーツとつながるところです!
ということで、今回は Raspberry Pi を活用して、玄関におけるデジタルお知らせボードを作ろうと思います。
私はいつもお出かけするときに傘を忘れたり、ゴミを出し忘れたりしているので、そういったこまごましたお知らせを表示します。
完成したものを先にお見せすると、こんな感じです。

構成はこんな感じにする予定です。

今回は前回いじって遊んだ Raspberry Pi Zero 2 W に加えて、Raspberry Pi Pico も導入します。
Raspberry Pi Zero 2 W では Linux OS が動きますが、Raspberry Pi Pico はもっとシンプル。MicroPython という軽量版の Python で記述した特定のプログラムを動かすマイコンになります。
Raspberry Pi Pico につながる電子ペーパー部品を購入したので、こちらを活用します。モニターよりも低電力で動いてくれるので、おうちIoTでは便利に活用できます。

Fast API で API をつくる
まずは情報をとりまとめる API を開発して、Raspberry Pi Zero 2 W にデプロイします。Fast API は Python で高速かつ簡単に API を構築するためのWebフレームワークです。
以下のような1つのファイルで簡単に API を構築できます。
main.py |
---|
from fastapi import FastAPI app = FastAPI() @app.get("/api/notice_board") async def read_root(): return {"message": "hello world!"} |
FastAPIをインストールして、実行してみましょう。
bash |
---|
$ pip install fastapi uvicorn |
以下のコマンドでサーバーを起動します。
bash |
---|
$ uvicorn main:app --reload |
ブラウザで http://127.0.0.1:8000/ にアクセスすると、{"message": "hello world!"} が表示されます。
この API に玄関で知りたい情報を集めてきてもらいます。
私は今日のお天気情報と、以前の連載「【おうちSEになろう!】おうちチャットで動くBotをつくる」の中でチャットに配信していた今日の我が家のお知らせ情報を集めてきてもらいます。我が家のお知らせ情報は、ゴミ出し日や資料の提出期限などの情報を Google カレンダーに登録しています。(なので、ここのコードはほぼ使いまわしでOK!)
お天気情報は「天気予報 API(livedoor 天気互換)」がとても便利そうなので、これを使います。この API ではお天気のアイコンも配信してくれているみたいなので、便利に使えそうです。
ただ、お天気アイコンはsvgで公開されているので、電子ペーパーに表示できるバイナリデータに変換したものも API で配信できるようにしておきます。
また、今日の我が家のお知らせ情報は、Google カレンダーからひっぱってきます。少し長いコードになるので、プログラムはおうちSE の GitHub レポジトリに載せました。
Raspberry Pi Zero 2 W にデプロイ
作成した API を Raspberry Pi Zero 2 W にデプロイします。Raspberry Pi Zero 2 W でPython と必要なライブラリをインストールします。
Poetry で簡単にインストールできるようにしているので、ぜひリポジトリを参照してみてください。詳しいインストール方法はREADMEに記述しています。
GitHub からレポジトリを git clone して、以下のコマンドを実行し、Fast API サーバーを起動します。
bash |
---|
$ cd 04 $ uvicorn ouchi_se_04.notice_board_api:app --host 0.0.0.0 --port 8000 --reload |
--host 0.0.0.0` を指定することで、同じネットワーク内の他のデバイスからアクセス可能になります。
そして、外部からアクセスできるように、ファイアウォールもポート8000を開放します。
bash |
---|
$ sudo apt install ufw $ sudo ufw enable $ sudo ufw allow 8000 $ sudo ufw reload |
以下のコマンドで、Raspberry Pi Zero 2 W のIPアドレスを確認します。
bash |
---|
$ hostname -I |
ここで表示されたIPアドレスが `192.168.1.100` だとすると、同じネットワークにつながった他の端末からは、`http://192.168.1.100/api/notice_board` でアクセスすることができます。これは Raspberry Pi Pico 側のプログラムで使用するので、メモしておいてくださいね。
Raspberry Pi Pico をセットアップ
Raspberry Pi Pico へのプログラムの書き込み方は Raspberry Pi の公式サイトにまとまっているため、そちらをご参照ください。
公式サイトでは、Raspberry Pi Pico をPCに繋いで、ファームウェアを焼いて、プログラムを実行するまでの手順がまとめられています。
今回書き込むプログラムは、自作APIを叩いて情報を取得して、電子ペーパーに表示させるというとてもシンプルなものです。
今回私は WAVESHARE 社の 2.13 インチ の電子ペーパーをスイッチサイエンスで購入しました。Picoのピン配置と互換性があるため、ピンヘッダをはんだづけして挿し込むだけで利用できます。

私が購入した電子ペーパーはサンプルコードが公開されているので、それをすこしいじって、自分が表示したい情報を表示することにします。
使用する電子ペーパーによって、多少コードが異なると思うので、ご自身がご購入された電子ペーパーの取扱説明書を参照しつつコードをカスタマイズしてくださいね!
こちらも、少し長いコードになるので、コードの全容は GitHub のリポジトリに載せました。
このプログラムを書き込むとこんな感じで動きます!

玄関に置けるようにする
今回は、このお知らせボードを玄関に置きたいので、スタンドアロンで動くように、電池とつなぎます。リチウム電池だとより軽量にはなるのですが、素人が長期運用すると爆発する危険性もあるかもなと思い、電池にしました。
Raspberry Pi Pico はいろいろな電源供給方法がありますが、ピンはディスプレイに占拠されているので、電池からUSB経由で電源をとることにします。
スイッチサイエンスで5Vの昇圧回路つきの電池基板が売っていたので、これを使うことにしました。

電池基板を含めて、ちょうどトレーディングカードくらいのサイズなので、セリアやキャンドゥで売っているトレーディングカードのケース(プチプラケース ショート)を調達し、玄関の扉は磁石がくっつくので、後ろにシール磁石を仕込みました。
これで完成です!おうちが便利になるぞー!

まとめ
今回は玄関におけるデジタルお知らせボードをつくりました。Raspberry Pi を使うと、こうしたオリジナルIoTデバイスを自作することができます。
ぜひみなさんもおうちSEとして、オリジナルIoTデバイスに挑戦してみてください!
AltXからのお知らせ
池澤あやか氏のコラムはいかがでしたでしょうか?
当社のIT未経験者向け育成研修「キャリテク!」を趣味でパソコンを活用している方にもぜひ知っていただきたく、池澤あやか氏に「おうちSE」のコラムを執筆いただきました。
当社の「キャリテク!」はITエンジニア未経験の方でも2~3ヶ月間の研修を通してゼロからITエンジニアとしてのキャリアをスタート出来るようにサポートする入社時研修です。
「キャリテク!」については個別説明会を実施しています。
少しでも興味がある方は、まずは以下の個別説明会でざっくばらんにお話しましょう!
https://www.altx.co.jp/careetec/seminar/tokyo/