Primal Display:Raspberry Pi LCD温度モニターの構築
このガイドでは、HD44780互換16x2 LCDをRaspberry Pi 3に接続し、DHT11センサーからのライブ温度と湿度読み取り値を表示する方法を紹介します。ハードウェア選定、配線(4ビットと8ビットモード両方)、必要なライブラリ、完全なPythonスクリプトをカバーします。
ストーリー
導入
LCDディスプレイはあらゆるRaspberry Piプロジェクトの汎用的なアドオンです。HD44780互換画面をGPIOピンに直接配線することで、I2CやSPIアダプターなしでセンサーデータやカスタムメッセージを表示できます。
ハードウェア
- HD44780互換16x2 LCD(費用 < $10)
- Raspberry Pi 3(以降)
- DHT11温湿度センサー
- Raspbian OS搭載Micro-SDカード
- 1-2個の10kΩポテンショメーター(コントラスト/輝度用)
- ブレッドボード、ジャンパーワイヤー、5V電源
LCDに6つのGPIOピンを使用。この直接方式ではPiのシリアルポートをフリーに保ち、I2Cドライバーの必要性を排除します。
配線
2つの配線オプションがあります:
- 4ビットモード - 4データライン使用、コントラスト用ポテンショメーター1個。
- 8ビットモード - 8データライン使用、ポテンショメーター2個(コントラストと輝度)。
4ビットモードでは8ビットコマンドバイトが2つの4ビット半分に分割されるため、データバス幅は半分。実際にはLCDの内部処理時間が8ビットモードの速度優位を隠すため、利用可能ピンに基づいて選択してください。
LCDピン接続(4ビット)
- ピン1 (GND) - グランド
- ピン2 (+5V) - 電源
- ピン3 (Vo) - ポテンショメーター中央タップ(コントラスト)
- ピン4 (RS) - GPIO 37
- ピン5 (RW) - グランド(書き込み専用)
- ピン6 (EN) - GPIO 35
- ピン7-10 - 未使用
- ピン11 (D4) - GPIO 33
- ピン12 (D5) - GPIO 31
- ピン13 (D6) - GPIO 29
- ピン14 (D7) - GPIO 23
- ピン15 (LED+) - +5V
- ピン16 (LED−) - グランド
LCDピン接続(8ビット)
- ピン1 - グランド
- ピン2 - +5V
- ピン3 - ポテンショメーター中央タップ(コントラスト)
- ピン4 - GPIO 37 (RS)
- ピン5 - グランド (RW)
- ピン6 - GPIO 35 (EN)
- ピン7 (D0) - GPIO 40
- ピン8 (D1) - GPIO 38
- ピン9 (D2) - GPIO 36
- ピン10 (D3) - GPIO 32
- ピン11 (D4) - GPIO 33
- ピン12 (D5) - GPIO 31
- ピン13 (D6) - GPIO 29
- ピン14 (D7) - GPIO 23
- ピン15 - +5V
- ピン16 - グランド
DHT11センサー配線
DHT11は3ピン使用:VCC、Data、GND。VCCを3.3V(ピン1)に接続。読み取りが不安定な場合は5V(ピン2)に切り替え。DataピンをGPIO 18(物理ピン12)に配線。プルアップ抵抗(4.7kΩ)をVCCとData間に推奨。
必要なライブラリ
システムにビルドツールとPythonヘッダーがあることを確認:
sudo apt-get update
sudo apt-get install build-essential python-dev
RPLCDをLCD制御用にインストール:
sudo apt-get install python-pip
sudo pip install RPLCD
GitHubからAdafruit DHT11ライブラリをインストール:
sudo apt-get install git
git clone https://github.com/adafruit/Adafruit_Python_DHT.git
cd Adafruit_Python_DHT
sudo python setup.py install
Pythonスクリプト(8ビット)
お好みのエディタ(例:nano)でtemperature.pyを作成:
#!/usr/bin/env python3
import RPi.GPIO as GPIO
import time
import Adafruit_DHT
from RPLCD import CharLCD
GPIO.cleanup()
# LCD設定 - 8ビットモード
lcd = CharLCD(
numbering_mode=GPIO.BOARD,
cols=16,
rows=2,
pin_rs=37,
pin_e=35,
pins_data=[40, 38, 36, 32, 33, 31, 29, 23]
)
while True:
humidity, temperature = Adafruit_DHT.read_retry(11, 18)
if humidity is None or temperature is None:
print('Failed to retrieve data from sensor')
continue
print(f'Temp: {temperature:.1f} C Humidity: {humidity:.1f} %')
lcd.clear()
lcd.cursor_pos = (0, 0)
lcd.write_string(f'Temp: {int(temperature)} C')
lcd.cursor_pos = (1, 0)
lcd.write_string(f'Humidity: {int(humidity)} %')
time.sleep(5)
スクリプトを実行可能にして実行:
chmod +x temperature.py
./temperature.py
4ビットモードの代替
pins_dataリストを4つのGPIOピン(例:[33, 31, 29, 23])に置き換え、LCD初期化を調整。
まとめ
これらの手順に従うことで、リアルタイム温度と湿度を表示する完全機能のLCDディスプレイが完成。気象観測ステーション、IoTダッシュボード、教育プロジェクトに最適です。
詳細を読む
LCDドライバーと高度な設定についてより深い洞察を得るには、Adafruit DHTリポジトリとRPLCDドキュメントを参照してください。
製造プロセス
- ローラーピン:エトルリア起源から現代の職人技へ
- 現代ボウリングピンの進化と職人技
- 液晶ディスプレイ(LCD):技術、製造、将来展望
- Drone Pi:スマートフォンとリモコンのデュアル操作対応 Multiwii & Raspberry Pi クアッドコプター
- Arduino LCDプロジェクト: 16x2ディスプレイとプッシュボタンで作るサッカーゲーム
- アナログからLCDへ:スペースシャトル・グラスコックピットの進化
- 74LS74 デュアルDフリップフロップ:完全リファレンスとピンアウト
- アトラスコプコ、2017年WINエキスポでNGP+窒素発生装置を展示
- アトラスコプコ、NPE2018で先進的プラスチック製造ソリューションを展示
- 携帯型点字ディスプレイの理解:主要洞察と革新
- Linux デバイスドライバーのためのピン制御サブシステムをマスターする