树莓派控制灯光,轻松调节色温和亮度,打造个性化家居氛围

2026-08-30 0 阅读

在这个数字化时代,智能家居逐渐成为人们生活的一部分。树莓派作为一个低成本、高性能的微型电脑,能够通过简单的编程实现多种功能,其中包括控制灯光。本文将带你了解如何利用树莓派轻松调节灯光的色温和亮度,打造个性化家居氛围。

树莓派硬件准备

首先,你需要准备以下硬件:

  • 树莓派(如树莓派3B+)
  • Micro-USB电源
  • 树莓派底座和散热片
  • HDMI显示器或电视
  • 无线键盘和鼠标
  • 树莓派摄像头模块(可选,用于远程监控)
  • RGBW LED灯条或LED灯泡
  • W5100或ESP8266无线模块(用于无线连接)

树莓派系统安装

  1. 下载并安装树莓派的官方系统Raspbian。
  2. 将系统写入到SD卡中。
  3. 将SD卡插入树莓派,并连接显示器、键盘和鼠标。
  4. 通过树莓派官方固件配置器设置网络和用户信息。

控制灯光的软件

为了控制灯光,你需要安装以下软件:

  • RPi.GPIO:用于控制树莓派的GPIO引脚。
  • pigpio:用于精确控制GPIO引脚的PWM信号。
  • node-red:用于图形化编程,实现灯光控制逻辑。
  1. 在树莓派上安装RPi.GPIO和pigpio:
sudo apt-get update
sudo apt-get install python3-rpi.gpio python3-pigpio
  1. 安装node-red:
sudo apt-get install node-red

控制灯光的代码示例

以下是一个简单的示例,用于控制RGBW LED灯条的色温和亮度:

import pigpio
import time

# 初始化GPIO引脚
led_red = 18
led_green = 19
led_blue = 20
led_white = 21
pi = pigpio.pi()

# 设置GPIO引脚模式为输出
pi.set_mode(led_red, pigpio.OUTPUT)
pi.set_mode(led_green, pigpio.OUTPUT)
pi.set_mode(led_blue, pigpio.OUTPUT)
pi.set_mode(led_white, pigpio.OUTPUT)

# 控制灯光的色温和亮度
def control_leds(temperature, brightness):
    # 根据色温计算RGBW通道的PWM值
    r = 255
    g = 255
    b = 255
    w = 255

    if temperature < 3000:
        r = min(int(temperature / 3000 * 255), 255)
        g = min(int(temperature / 3000 * 255), 255)
        b = min(int(temperature / 3000 * 255), 255)
        w = max(int(255 - temperature / 3000 * 255), 0)
    else:
        r = min(int(255 - (temperature - 3000) / 7000 * 255), 255)
        g = min(int(255 - (temperature - 3000) / 7000 * 255), 255)
        b = min(int(255 - (temperature - 3000) / 7000 * 255), 255)
        w = max(int(temperature - 3000) / 7000 * 255, 0)

    # 设置RGBW通道的PWM值
    pi.set_PWM_dutycycle(led_red, r)
    pi.set_PWM_dutycycle(led_green, g)
    pi.set_PWM_dutycycle(led_blue, b)
    pi.set_PWM_dutycycle(led_white, w)

    # 控制亮度
    pi.set_PWM_dutycycle(led_red, int(r * brightness / 255))
    pi.set_PWM_dutycycle(led_green, int(g * brightness / 255))
    pi.set_PWM_dutycycle(led_blue, int(b * brightness / 255))
    pi.set_PWM_dutycycle(led_white, int(w * brightness / 255))

# 主函数
def main():
    try:
        while True:
            temperature = int(input("请输入色温(K):"))
            brightness = int(input("请输入亮度(0-255):"))
            control_leds(temperature, brightness)
            time.sleep(1)
    except KeyboardInterrupt:
        pi.set_PWM_dutycycle(led_red, 0)
        pi.set_PWM_dutycycle(led_green, 0)
        pi.set_PWM_dutycycle(led_blue, 0)
        pi.set_PWM_dutycycle(led_white, 0)

if __name__ == "__main__":
    main()

使用Node-RED图形化编程

  1. 启动Node-RED,并在左侧工具箱中搜索并添加以下节点:

    • GPIO:用于控制GPIO引脚。
    • in:用于接收输入数据。
    • ui_switch:用于创建开关控件。
  2. 按照以下步骤连接节点:

    • in节点的输出连接到GPIO节点的PWM参数。
    • GPIO节点的GPIO参数连接到RGBW LED灯条的相应GPIO引脚。
    • ui_switch节点的输出连接到in节点的data参数。
  3. 双击ui_switch节点,创建一个开关控件。在弹出的对话框中,设置开关的名称和标签。

  4. 运行Node-RED应用,并使用手机或电脑访问http://localhost:1880,即可通过开关控件控制灯光。

总结

通过以上步骤,你可以在树莓派上轻松控制灯光的色温和亮度,打造个性化家居氛围。你可以根据自己的需求,添加更多功能,如语音控制、定时开关等。希望这篇文章能帮助你实现这个有趣的项目!

分享到: