pico-earthquake-mon ビルドガイド
Raspberry Pi Pico W と P2P 地震情報(WebSocket)を使って「地震情報と揺れた都道府県」を OLED と LED で表示するインフォメーションモニタ
pico-earthquake-mon
Raspberry Pi Pico W を使って「地震情報をリアルタイム」で表示するインフォメーションモニタです。
地震情報は「P2P 地震情報」が提供している WebSocket で取得しています。
地震情報は、震源地・地震の深さ・発生日時・震度・規模の 5 つが OLED(128×32)に表示されます。
揺れを取得した都道府県は基板上の各 LED に対応しており、揺れた都道府県に対応した LED が点灯します。
リチウムイオン電池(18650)を使うので、スタンドアロンで使用できます。
開発環境
・MicroPython(v1.22.2)
・Thonny(v4.0.2)
動作の様子
実際の動作の様子です。
(上記はテスト用で、受信する地震情報についてはリアルタイムのものではなくダミーとして表示しているものです)
3D プリンタ(光造形)で作製するスタンドもアップロードしています。
STL ファイルはstand_pico-earthquake-mon.stlにあります。
部品リスト
ブロック図
★Raspberry Pi Pico W を P2P 地震情報と WebSocket を使い通信します。
★WebSocket に Connect し、地震情報の受信を待機します。
★ 受信した情報をパースし、OLED に地震情報を表示します。
★ 受信した情報をパースし、揺れた都道府県を取得し、基板上で対応する LED を点灯させます。
★47 都道府県なので、LED は 47 個あります。LED の制御はシフトレジスタ(74HC595)を用います。
★ 上記 47 個に加えて、緊急地震速報を示す LED と機器の接続状況を示す LED の 2 個が設定されています。
★ スタンドアロンで使用するため、TP4056 モジュールを介して Raspberry Pi Pico W の Vsys ピンへ電源を供給します。
回路図
★ シフトレジスタはカスケード接続させています。
★Raspberry Pi Pico W の Vsys に電源供給し動作させる場合、ショットキーバリアダイオードが必須です。
★ ショットキーバリアダイオードは一般的なダイオード特性に加え、順方向電圧(Vf)が低い点が特徴です。
ガーバーデータ(基板発注のためのデータ)
ガーバーデータはここから DL できます。
JLCPCBでの発注を想定しています。
接続
PicoW | OLED | 74HC595 | TP4056 Module | Other |
---|---|---|---|---|
VSYS | VCC | OUT+ | ||
3V3 | VCC | SRCLR | ||
GND | GND | GND OE | OUT- | |
RUN | GND | |||
GPIO16 | SER | |||
GPIO17 | RCLK | |||
GPIO18 | SRCLK | |||
GPIO20 | SDA | |||
GPIO21 | SCL | |||
B+ | Li-Battery+ | |||
B- | Li-Battery- | |||
Vin | USB+ | |||
GND | USB- |
・GPIO10 に緊急地震速報表示用の LED を接続
・GPIO11 に Status 表示用の LED を接続
ファイル構成
pico-earthquake-mon/Raspberry Pi Pico/
- Thonny から Python Package Index(PyPI)からインストールするライブラリ
ssd1306
- 外部から追加するライブラリ
uwebsocketsclient
https://github.com/underMHz/uwebsockets-client/blob/main/uwebsocketsclient.py
P2P地震情報(https://www.p2pquake.net/)の証明書(www.p2pquake.net.crt)
取得方法はディレクトリ構成図の下に記載。
- 使用するフォント
misakifont
(美咲フォント)
https://github.com/Tamakichi/pico_MicroPython_misakifont/tree/main/misakifont
❓ 美咲フォントについて https://littlelimit.net/misaki.htm
Raspberry Pi Pico/
├── lib/
│ ├── ssd1306.py
│ ├── uwebsocketsclient.py
│ └── www.p2pquake.net.crt
├── misakifont/
│ ├── misakifont.py
│ ├── misakifontdata.py
│ ├── tma_jp_utl.py
│ └── __init__.py
├── all_led_test.py