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

如何实现按下按钮启动无人机与树莓派时自动运行风速测量Python程序?

解决按钮触发开机+自动启动风速测量代码的方案

我来一步步帮你搞定这个问题,分三个核心部分实现,完美适配你的需求:

1. 配置树莓派GPIO开机按钮

首先得让按钮能触发树莓派开机,这样你可以用同一个按钮同时启动无人机(假设按钮是双联/带两路输出)和唤醒树莓派:

  • 选一个空闲GPIO引脚(比如GPIO3,对应物理引脚第5针),把按钮一端接这个引脚,另一端接GND(物理引脚第6针)。
  • 编辑树莓派启动配置文件:
    sudo nano /boot/config.txt
    
  • 在文件末尾添加一行配置:
    dtoverlay=gpio-shutdown,gpio_pin=3,active_low=1,gpio_pull=up
    
    这行代码的作用是把GPIO3设为开机触发引脚,低电平有效,同时启用内部上拉电阻避免误触发。
  • 保存退出后重启树莓派,之后按下按钮就能正常触发开机了。

2. 开机自动启动Screen会话并运行测量代码

你之前用screen管理进程,那我们用systemd服务实现开机自动创建Screen会话并运行脚本,不用再手动找PID:

具体步骤:

  1. 创建systemd服务文件:
    sudo nano /etc/systemd/system/wind-speed-measurement.service
    
  2. 粘贴以下内容(记得替换成你的实际路径和命令):
    [Unit]
    Description=Wind Speed Measurement Screen Service
    After=multi-user.target  # 确保系统进入多用户模式后再启动
    
    [Service]
    User=pi  # 换成你的树莓派用户名,一般是pi
    Type=forking
    # 创建名为wind_measurement的后台Screen会话,并运行测量脚本
    ExecStart=/usr/bin/screen -dmS wind_measurement /usr/bin/python3 /home/pi/wind_measure.py
    Restart=always  # 脚本意外退出时自动重启
    RestartSec=5
    
    [Install]
    WantedBy=multi-user.target
    
  3. 重新加载systemd配置并启用服务:
    sudo systemctl daemon-reload
    sudo systemctl enable wind-speed-measurement.service
    

后续访问会话的方式:

之后要查看或操作这个测量会话,直接用会话名访问就行,不用找PID:

screen -r wind_measurement

3. 同步无人机启动与测量流程

如果你的按钮是同时控制树莓派开机和无人机启动,只要把按钮做成双联开关:一路接树莓派的GPIO开机触发电路(或电源),另一路接无人机的启动电路。按下按钮后,树莓派开始开机,无人机同步启动,等树莓派开机完成,自动运行测量代码,刚好衔接上测量任务。

额外小提示:

  • 先单独测试GPIO开机功能,确保按钮能正常唤醒树莓派
  • 手动启动服务测试:sudo systemctl start wind-speed-measurement.service,用screen -r确认脚本运行正常后再开自启
  • 如果测量代码依赖网络或硬件模块,可以在[Unit]部分添加After=network.target,确保依赖就绪后再启动脚本

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 09:24:06