災害時も一目で状況把握:小さなディスプレイに情報を表示しよう!


前へ⇒ 水害・熱中症・防犯対策を1台で!Raspberry Piでつくるオールインワン防災システム

※当サイトは、アフィリエイトプログラムを利用して商品を紹介しています。

Raspberry Piでセンサーのデータや状態を「見える化」したいと思ったことはありませんか?

近年、線状降水帯による豪雨や地震、火災などの自然災害が増え、日常の中でも「いざという時に情報をすぐ確認できる環境」が求められています。

今回は、人気の グラフィックディスプレイ「SSD1306」 を使って、小さな画面に表示する仕組みを作ってみましょう!

このSSD1306は、I2C通信で簡単に接続できる 0.96インチの有機ELディスプレイ。白文字や青文字でくっきり見やすく、電子工作にぴったりです。

1. 用意するもの

・Raspberry Pi 5

・SSD1306 OLEDディスプレイ:I2C接続タイプ(4ピン:VCC / GND / SCL / SDA)

・ジャンパーワイヤー 4本(オス-メス)

[PR]SSD1306 OLEDディスプレイ

【2個入】OLEDディスプレイモジュール 0.96インチ 128×64ドット I2C接続 SSD1306搭載 有機EL LCD表示モジュール ピンはんだ済み 発光色選択可 Arduino/Raspberry Pi対応

価格:950円~
(2025/10/8 09:43時点)
感想(2件)

[PR]ジャンパーワイヤー

【お手頃40本】ジャンパー ワイヤー ブレッドボード 用 【メス-オス】 20cm 40本束

価格:480円
(2025/9/11 11:42時点)
感想(2件)

2. 配線方法

SSD1306 の4本のピンを Raspberry Pi に接続します。

SSD1306ピンRaspberry Piピン説明
VCCPin 1(3.3V)電源
GNDPin 6(GND)グラウンド
SDAPin 3(GPIO2)データライン
SCLPin 5(GPIO3)クロックライン

Raspberry Pi 5 GPIOピン配置

 3.3V  (1) (2)  5V
 GPIO2 (3) (4)  5V
 GPIO3 (5) (6)  GND
 GPIO4 (7) (8)  GPIO14
  GND  (9) (10) GPIO15
 GPIO17(11)(12) GPIO18
 GPIO27(13)(14) GND
 GPIO22(15)(16) GPIO23
 3.3V  (17)(18) GPIO24
 GPIO10(19)(20) GND
 GPIO9 (21)(22) GPIO25
 GPIO11(23)(24) GPIO8
  GND  (25)(26) GPIO7
 ID_SD (27)(28) ID_SC
 GPIO5 (29)(30) GND
 GPIO6 (31)(32) GPIO12
 GPIO13(33)(34) GND
 GPIO19(35)(36) GPIO16
 GPIO26(37)(38) GPIO20
  GND  (39)(40) GPIO21

I2C通信を使うので、Raspberry PiのI2C機能を有効化しておきましょう。ターミナルで次を実行します。

ターミナルを開きます。Ctrl + Alt + T を同時に押す。

sudo raspi-config

Interface OptionsI2CEnable を選択し、再起動します。

再起動後に確認

ターミナルを開きます。Ctrl + Alt + T を同時に押す。

以下を入力します。

ls /dev/i2c-*

/dev/i2c-1 が表示されていればOKです!

3. Python仮想環境の準備

仮想環境を使うことで、Pythonのモジュール管理が簡単&安全になります。

ターミナルを開きます。Ctrl + Alt + T を同時に押す。

以下を入力します。

# 仮想環境を作成(ホームディレクトリ内)
python3 -m venv ~/myenv

# 仮想環境を有効化
source ~/myenv/bin/activate

→ プロンプトの先頭に (myenv) と表示されればOK!

次に、必要なモジュールをインストールします。

以下を入力します。

pip install --upgrade pip setuptools wheel
pip install luma.oled

インストールの確認方法

ターミナルを開きます。Ctrl + Alt + T を同時に押す。

仮想環境を有効にします。

source ~/myenv/bin/activate

→ プロンプトの先頭に (myenv) と表示されればOK!

仮想環境が有効になっている状態で、以下を実行します。

pip show luma.oled

これで Name: luma.oled と表示されれば、インストール成功です。

もし表示されなければ、もう一度次のコマンドを実行してください。

pip install luma.oled

そして、日本語フォントを入れます(仮想環境外でもOK)

sudo apt install fonts-takao

フォントはシステム全体に導入されるので、1回だけ実行すれば大丈夫です。

ディスク容量の消費で、続行しますか?と表示されるので、Yを選択

4. プログラムを作成

新しいPythonファイルを作ります。

ターミナルを開きます。Ctrl + Alt + T を同時に押す。

以下を入力します。

nano shikoshikodisp.py

nanoエディタで以下のプログラムを入力します。

from luma.core.interface.serial import i2c
from luma.oled.device import ssd1306
from luma.core.render import canvas
from PIL import ImageFont
import time

I2C_ADDR = 0x3C  # SSD1306のI2Cアドレス(確認: sudo i2cdetect -y 1)
FONT_PATH = "/usr/share/fonts/truetype/takao-gothic/TakaoGothic.ttf"

# I2C初期化
serial_interface = i2c(address=I2C_ADDR, port=1)
dispdev = ssd1306(serial_interface)

# 画面を一度クリア
dispdev.clear()

# フォント設定
font_10 = ImageFont.truetype(FONT_PATH, 10, encoding='unic')
font_14 = ImageFont.truetype(FONT_PATH, 14, encoding='unic')

# 描画
with canvas(dispdev) as draw:
    draw.rectangle([3, 5, 126, 30], outline="white", fill="black")
    draw.text((8, 10), "イケオジブログ", fill="white", font=font_14)
    draw.text((10, 35), "ラズベリーパイ", fill="white", font=font_10)
    draw.text((30, 45), "電子ライフ", fill="white", font=font_10)
    draw.ellipse([90, 50, 103, 63], fill="white", outline="white", width=1)

while True:
    time.sleep(1)

入力が終わったら、以下の手順で保存します。

  1. Ctrl + O を押す(ファイルを保存)
  2. Enter を押す(ファイル名を確定)
  3. Ctrl + X を押す(エディターを終了)

保存後に実行します。

もし、仮想環境を抜けてるようならば、プログラムを実行する前に、仮想環境を有効化する必要があります。

ターミナルを開きます。Ctrl + Alt + T を同時に押す。

下記を入力します。

source ~/myenv/bin/activate

 (myenv) と表示されれば仮想環境が有効化されます。

下記を入力し実行します。

python shikoshikodisp.py

5. 実際の表示

起動すると、SSD1306の画面に「イケオジブログ」「ラズベリーパイ」などの日本語テキストと簡単な図形が表示されます。

6. よくあるトラブル

症状対処法
I2Cが認識されないsudo raspi-config → I2Cを有効化
OSError: [Errno 121] Remote I/O errorSDA/SCL配線を確認、I2Cアドレス(0x3Cか0x3D)を変更
日本語が表示されないTakaoフォントのパスを再確認
文字が小さいfont_14 の数字を変更してサイズ調整

プログラムの動作確認が終わったら、仮想環境を抜けます。

deactivate

これで元のシステム環境に戻ります。

(myenv) の表示が消えれば、仮想環境から抜けた状態です。

毎回実行する手順

プログラムは仮想環境(myenv)の中にあるライブラリを使うので、毎回プログラムを実行する前に、仮想環境を有効化します。

ターミナルを開きます。Ctrl + Alt + T を同時に押す。

下記を入力します。

source ~/myenv/bin/activate

 (myenv) と表示されればOK!

python shikoshikodisp.py を入力すれば表示されます。

応用アイデア

SSD1306は小さいながらも高機能。こんな使い方ができます。

  • 温度・湿度表示パネル(ADT7410などのセンサーと連携)
  • 水位センサーの値表示(HC-SR04の距離結果を表示)
  • カメラステータス表示(撮影時に「撮影中」を表示)
  • 時計・タイマー(リアルタイムクロックを表示)

Raspberry Piと小型ディスプレイを組み合わせることで、災害時でも一目で確認できる“情報表示モニター”を自分で作ることができます。たとえば、停電時の簡易メッセージ表示や、避難情報・警報の表示、将来的には水位や温度などのセンサー連携にも発展可能。


まずは「見える防災」から始めることで、家庭の安全意識を高め、次の防災・防犯IoTづくりへの第一歩を踏み出しましょう。

次回は、家庭でできる災害監視!Raspberry Piで構築する表示付き防災システムです。

イケオジ流!ラズベリーパイ(Raspberry Pi)一覧はこちら

ラズベリーパイを始めるならこれ!本体・モニター・センサー類の商品リスト

(旧twitter) 今日のイケオジ 

イケオジのキング・オブ・アスリートへの道はこちら

電気がなくても炊きたてごはん:[PR]タイガー魔法瓶の新発明、電気やガスを使わない新聞紙一部でおいしいごはんが炊ける「魔法のかまどごはん」。なぜ今の時代に、タイガーがこのような物を作ったのか。それは、エネルギー不足や環境負荷への一つのアンサー。また新聞紙一部で炊けるからキャンプで便利に使え、かつ自然災害の多い日本においては防災グッズにもなる。

ゲオ:[PR]ゲオあれこれレンタルはカメラや家電製品、スマホやPCなどのレンタルサービスです。ネットで注文、自宅までお届け。返却はお近くのコンビニから出すだけだから楽チン。失敗したくないものもレンタルでお試し。かんたん&スピーディーにレンタル! 買うよりも経済的! 24時間お申し込み受付・高級・人気家電多数・万一の故障も安心。

AIアシスタント:[PR]PLAUD.AIは、音声録音から文字起こし、要約、マインドマップ作成までを自動化するAI搭載のハイテクボイスレコーダーブランドです。主に通話も対面も録音できる「PLAUD NOTE」と、ウェアラブル型の「PLAUD NotePin」の2モデルがあり、ビジネスや教育、医療など多様な現場で活用されています。

PLAUD AI

モバイルプロジェクター:[PR]Adget(アジェット)は2023年9月に誕生した東京発のデジタルガジェットブランドです。第一弾としてモバイルプロジェクター(アジェットポケットプロジェクター)をローンチ。

OM SYSTEM公式:[PR]2021年オリンパスの映像事業を事業継承し、デジタルカメラ/ICレコーダー/双眼鏡を製造、販売する光学機器メーカー。OM SYSTEMは1936年から続くOLYMPUSブランドのモノづくりDNAを引き継ぎ、「人生にもっと冒険を」をブランドメッセージとして掲げ 「どこにでも持ち歩ける」「感じたものが思ったままに撮れる」を実現します。

家電・家具もサブスク:[PR]すべて新品の商品を提供し、設置・配送の初期費用が不要です。また、最大5年の保証が付いています。豊富な品ぞろえと1年から5年の契約年数から選べる柔軟なプランで契約年数の選択肢を提供します。

さあ、勇気を出してイケオジブログをシェアしよう!


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


PAGE TOP