0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ラズパイ入門まとめ:フルカラーLED & リレーでヒーター制御

0
Posted at

ラズパイ入門まとめ:フルカラーLED & リレーでヒーター制御

Raspberry Pi の定番テーマを、実際にコードを動かしながらまとめて解説します。この記事では フルカラーLED/リレーでヒーター制御 の2テーマを扱います。

各テーマは ブラウザ上の仮想Raspberry Piシミュレーターで、コードを編集しながら自分で動かせます。

1. フルカラーLED

概要

R/G/BをPWMで混ぜて、色相を連続的に変化させる。ブラウザ上の仮想Raspberry Piで、実際にコードを動かしながら挙動を確認できます。

プログラムの内容(ざっくり)

色相環をたどってR・G・Bそれぞれの明るさをPWMで変化させ、フルカラーLEDの色を連続的に変えます。

# === フルカラーLED(PWM混色)===
# 色相環をたどってR/G/Bの明るさを変え、色を連続的に変化させる。

import time

def wheel(p):
    p = p % 256
    if p < 85:
        return (p * 3, 255 - p * 3, 0)
    if p < 170:
        p -= 85
        return (255 - p * 3, 0, p * 3)
    p -= 170
    return (0, p * 3, 255 - p * 3)

i = 0
while True:
    r, g, b = wheel(i)
    rgb.color(r, g, b)
    if i % 30 == 0:
        print(f"色 = ({r}, {g}, {b})")
    i = (i + 4) % 256
    time.sleep(0.06)

配線

配線図(RGB LED カソードコモン)

GPIO17 ──[220Ω]── R(赤)
GPIO27 ──[220Ω]── G(緑)
GPIO22 ──[220Ω]── B(青)
共通カソード ── GND

シェルの出力

実行すると、Pi側と相手デバイス側に次のような出力がリアルタイムで流れます。

🍓 Raspberry Pi シェル

pi@raspberrypi:~ $ python app.py
色 = (0, 255, 0)
色 = (180, 75, 0)
色 = (150, 0, 105)
色 = (0, 30, 225)
色 = (0, 210, 45)
色 = (0, 255, 0)
色 = (180, 75, 0)
色 = (150, 0, 105)
色 = (0, 30, 225)

コードを編集したらどうなるか

wheel()の式を変えれば色の変化パターンを、sleepを変えれば速さを調整できます。特定の色で固定することもできます。

まとめ

3色のPWM混色でフルカラーを作る基本です。イルミネーションや状態表示に応用できます。


Raspi 仮想シミュレーターのライブ実行結果から生成。ブラウザ上で自分でコードを編集して試せます。


2. リレーでヒーター制御

概要

温度が目標より低いとリレーでヒーターをON。温まると自動でOFF。ブラウザ上の仮想Raspberry Piで、実際にコードを動かしながら挙動を確認できます。

プログラムの内容(ざっくり)

温度が目標TARGET未満ならリレーでヒーターをONにし、達したらOFFにします。温まると自動で止まり、冷えると再び入る自動温度調整です。

# === リレーでヒーター制御(サーモスタット)===
# 温度がTARGET未満ならリレーでヒーターをON、達したらOFF。

import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BCM)
GPIO.setup(18, GPIO.OUT)          # リレー

TARGET = 25.0

while True:
    t = sensor.temperature
    if t < TARGET:
        GPIO.output(18, GPIO.HIGH)  # ヒーターON
        print(f"{t}C < {TARGET}C -> ヒーターON")
    else:
        GPIO.output(18, GPIO.LOW)   # ヒーターOFF
        print(f"{t}C >= {TARGET}C -> ヒーターOFF")
    time.sleep(1)

配線

配線図(リレー + ヒーター)

GPIO18 ── リレーモジュール IN
リレー COM/NO ── ヒーター電源(AC/DC)
I2C BME280 (0x76) ── 温度センサ

シェルの出力

実行すると、Pi側と相手デバイス側に次のような出力がリアルタイムで流れます。

🍓 Raspberry Pi シェル

pi@raspberrypi:~ $ python app.py
19.59C < 25.0C -> ヒーターON
20.15C < 25.0C -> ヒーターON
20.73C < 25.0C -> ヒーターON
21.33C < 25.0C -> ヒーターON
21.95C < 25.0C -> ヒーターON
22.58C < 25.0C -> ヒーターON
23.16C < 25.0C -> ヒーターON

計測値(温度(℃))の推移:

chart

コードを編集したらどうなるか

TARGETを上げると高い温度で安定し、下げると低い温度で安定します。ヒステリシス(ON/OFFの差)を設けるとリレーの頻繁な切り替えを防げます。

まとめ

リレーで大電力機器をON/OFF制御する基本です。エアコンや電気ポットなど身近な自動制御の仕組みです。


Raspi 仮想シミュレーターのライブ実行結果から生成。ブラウザ上で自分でコードを編集して試せます。


おわりに

どちらもラズパイの基礎として役立つテーマです。気に入ったらLGTM・ストックしていただけると励みになります。他のテーマも順次まとめていきます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?