前へ⇒ 水害・熱中症・防犯対策を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ディスプレイ
価格:950円~ |
[PR]ジャンパーワイヤー
【お手頃40本】ジャンパー ワイヤー ブレッドボード 用 【メス-オス】 20cm 40本束 価格:480円 |
2. 配線方法
SSD1306 の4本のピンを Raspberry Pi に接続します。
| SSD1306ピン | Raspberry Piピン | 説明 |
|---|---|---|
| VCC | Pin 1(3.3V) | 電源 |
| GND | Pin 6(GND) | グラウンド |
| SDA | Pin 3(GPIO2) | データライン |
| SCL | Pin 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 Options → I2C → Enable を選択し、再起動します。


再起動後に確認
ターミナルを開きます。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)

入力が終わったら、以下の手順で保存します。
Ctrl + Oを押す(ファイルを保存)Enterを押す(ファイル名を確定)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 error | SDA/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)一覧はこちら
ラズベリーパイを始めるならこれ!本体・モニター・センサー類の商品リスト
X(旧twitter) 今日のイケオジ
イケオジのキング・オブ・アスリートへの道はこちら
電気がなくても炊きたてごはん:[PR]タイガー魔法瓶の新発明、電気やガスを使わない新聞紙一部でおいしいごはんが炊ける「魔法のかまどごはん」。なぜ今の時代に、タイガーがこのような物を作ったのか。それは、エネルギー不足や環境負荷への一つのアンサー。また新聞紙一部で炊けるからキャンプで便利に使え、かつ自然災害の多い日本においては防災グッズにもなる。
ゲオ:[PR]ゲオあれこれレンタルはカメラや家電製品、スマホやPCなどのレンタルサービスです。ネットで注文、自宅までお届け。返却はお近くのコンビニから出すだけだから楽チン。失敗したくないものもレンタルでお試し。かんたん&スピーディーにレンタル! 買うよりも経済的! 24時間お申し込み受付・高級・人気家電多数・万一の故障も安心。
AIアシスタント:[PR]PLAUD.AIは、音声録音から文字起こし、要約、マインドマップ作成までを自動化するAI搭載のハイテクボイスレコーダーブランドです。主に通話も対面も録音できる「PLAUD NOTE」と、ウェアラブル型の「PLAUD NotePin」の2モデルがあり、ビジネスや教育、医療など多様な現場で活用されています。

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

OM SYSTEM公式:[PR]2021年オリンパスの映像事業を事業継承し、デジタルカメラ/ICレコーダー/双眼鏡を製造、販売する光学機器メーカー。OM SYSTEMは1936年から続くOLYMPUSブランドのモノづくりDNAを引き継ぎ、「人生にもっと冒険を」をブランドメッセージとして掲げ 「どこにでも持ち歩ける」「感じたものが思ったままに撮れる」を実現します。
家電・家具もサブスク:[PR]すべて新品の商品を提供し、設置・配送の初期費用が不要です。また、最大5年の保証が付いています。豊富な品ぞろえと1年から5年の契約年数から選べる柔軟なプランで契約年数の選択肢を提供します。
さあ、勇気を出してイケオジブログをシェアしよう!
コメントを残す