You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

树莓派3 USB端口定时控制乐高灯光及手机远程控制求助

树莓派USB端口自动化控制+远程手动控制方案

一、自动化定时流程实现

1. 获取所在地区黄昏时间

用sunwait工具专门处理日出日落/黄昏时间,比手动计算靠谱。先安装:

sudo apt update && sudo apt install sunwait

自己查下所在地区的经纬度(比如用地图APP定位后查看坐标),格式是「纬度N/S 经度E/W」,比如上海是31.2N 121.4E。

2. 编写USB开关脚本

创建一个可复用的脚本usb_light.sh,替换成你自己的uhubctl参数(用uhubctl命令能查到对应的总线和端口号):

#!/bin/bash
case "$1" in
    on)
        uhubctl -l 1-1 -p 2 -a on  # 这里的-l和-p根据你的树莓派USB总线调整
        ;;
    off)
        uhubctl -l 1-1 -p 2 -a off
        ;;
esac

给脚本加执行权限:

chmod +x usb_light.sh

3. 配置定时任务

用系统自带的cron来实现每日重复执行:
打开crontab编辑界面:

crontab -e

添加以下两行(替换成你的经纬度和脚本路径):

# 黄昏时刻自动开启USB
@daily sunwait sun down 31.2N 121.4E && /home/pi/usb_light.sh on
# 凌晨2:30自动关闭USB(选凌晨2-3点之间的任意时间即可)
30 2 * * * /home/pi/usb_light.sh off

保存退出后,cron会自动生效。

二、手机远程手动控制方案

1. SSH直接控制

树莓派先开启SSH:打开raspi-config → 选「Interfacing Options」→ 开启SSH。
手机装个SSH客户端(比如Termius、JuiceSSH),输入树莓派的局域网IP,登录后直接执行./usb_light.sh on或./usb_light.sh off就能手动控制。如果要外网访问,需要在路由器上做端口转发(转发22端口到树莓派IP)。

2. 极简Web界面控制(可选,更直观)

用Python写个简单的网页,手机打开浏览器就能点按钮控制:
先安装Flask:

pip install flask

创建app.py文件:

from flask import Flask, render_template_string
import subprocess

app = Flask(__name__)

def control_usb(state):
    subprocess.run(["./usb_light.sh", state])

HTML_TEMPLATE = """
<!DOCTYPE html>
<html>
<body style="text-align:center; margin-top:50px;">
    <h1>乐高灯光控制</h1>
    <form method="post" action="/on">
        <button style="padding:10px 20px; font-size:18px;" type="submit">开启灯光</button>
    </form>
    <br>
    <form method="post" action="/off">
        <button style="padding:10px 20px; font-size:18px;" type="submit">关闭灯光</button>
    </form>
</body>
</html>
"""

@app.route('/')
def index():
    return render_template_string(HTML_TEMPLATE)

@app.route('/on', methods=['POST'])
def turn_on():
    control_usb('on')
    return render_template_string(HTML_TEMPLATE)

@app.route('/off', methods=['POST'])
def turn_off():
    control_usb('off')
    return render_template_string(HTML_TEMPLATE)

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)

运行脚本:

python app.py

手机在局域网访问http://你的树莓派IP:5000就能直接点按钮控制了。外网访问同样需要路由器转发5000端口。

内容的提问来源于stack exchange,提问作者AmongTheShadows

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 13:35:33