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

如何通过互联网使用Raspberry Pi远程控制伺服电机?

用Raspberry Pi + WiFi实现手机远程控制伺服电机

完全可以实现这个需求,不用连接电脑,靠电池供电就能搞定。下面是一步步的操作说明,都是适合非专业人士的简单步骤:

一、硬件准备

  • Raspberry Pi(推荐3B+/4,自带WiFi,不用额外买WiFi模块;如果是老型号,再配个USB WiFi适配器就行)
  • 伺服电机(比如常见的SG90,便宜好用)
  • 供电电池:5V移动电源(直接给树莓派供电,最省事),或者锂电池+5V升压模块(续航更长)
  • 杜邦线若干(公对公、公对母)
  • 可选:面包板(方便接线,不用焊接)

二、硬件接线(务必断电操作!)

伺服电机一般有3根线,对应树莓派引脚连接:

  • 红色线(VCC):接树莓派的5V引脚(物理引脚2或4)
  • 棕色/黑色线(GND):接树莓派的GND引脚(物理引脚6、9等都可以)
  • 黄色/橙色线(信号):接树莓派的GPIO引脚,比如GPIO18(对应物理引脚12)

接线时一定要断电,接完检查一遍再通电,避免烧坏元件。

三、树莓派系统初始配置(不用显示器!)

  1. 刷系统:用官方的「Raspberry Pi Imager」工具,选择「Raspberry Pi OS Lite」(无桌面版,省资源,适合远程控制)
  2. 刷系统前点击「齿轮图标」做以下设置:
    • 输入家里的WiFi名称和密码
    • 开启SSH(允许远程登录)
    • 设置自定义用户名和密码(别用默认的pi/raspberry,不安全)
  3. 刷完系统后把SD卡插到树莓派,接上电池,树莓派会自动连接WiFi。
  4. 找树莓派的IP:登录家里的路由器后台,在「已连接设备」里找树莓派的IP地址(名字一般是raspberrypi开头)

四、远程连接树莓派并安装依赖

用手机APP(比如Termius)或者电脑的SSH工具连接树莓派,输入刚才的IP、用户名和密码。

连接成功后,先更新系统并安装控制伺服的库:

sudo apt update && sudo apt install pigpio python3-pigpio -y

然后启动pigpio服务并设置开机自启:

sudo systemctl enable pigpiod
sudo systemctl start pigpiod

五、编写远程控制代码

创建一个Python脚本,比如server.py:

import pigpio
from http.server import BaseHTTPRequestHandler, HTTPServer

# 初始化GPIO
pi = pigpio.pi()
SERVO_PIN = 18  # 对应刚才接线的GPIO引脚
pi.set_mode(SERVO_PIN, pigpio.OUTPUT)

# 伺服电机角度转脉冲宽度(SG90的范围大概500-2500)
def angle_to_pulse(angle):
    return 500 + (angle / 180) * 2000

class RequestHandler(BaseHTTPRequestHandler):
    def do_GET(self):
        self.send_response(200)
        self.send_header('Content-type', 'text/html')
        self.end_headers()
        
        # 解析请求路径
        if self.path.startswith('/set'):
            # 比如/set?angle=90
            params = self.path.split('?')[1]
            angle = int(params.split('=')[1])
            if 0 <= angle <= 180:
                pi.set_servo_pulsewidth(SERVO_PIN, angle_to_pulse(angle))
                self.wfile.write(f"设置角度为{angle}度".encode())
            else:
                self.wfile.write("角度范围只能是0-180度".encode())
        elif self.path == '/stop':
            pi.set_servo_pulsewidth(SERVO_PIN, 0)  # 停止电机供电
            self.wfile.write("伺服电机已停止".encode())
        else:
            self.wfile.write("可用指令:<br>/set?angle=xx(0-180)<br>/stop".encode())

if __name__ == '__main__':
    server_address = ('', 8000)
    httpd = HTTPServer(server_address, RequestHandler)
    print("服务器启动,端口8000")
    httpd.serve_forever()

运行脚本:

python3 server.py

现在树莓派上的HTTP服务器就启动了,端口是8000。

六、实现手机远程访问(内网穿透)

因为树莓派在你家的内网里,上班时在外网没法直接访问,需要用内网穿透工具,比如ngrok(免费版足够测试):

  1. 在树莓派上下载ngrok:
    wget https://bin.equinox.io/c/bNyj1mQVY4c/ngrok-v3-stable-linux-arm.tgz
    tar -xvzf ngrok-v3-stable-linux-arm.tgz
    
  2. 注册ngrok账号,获取authtoken,然后在树莓派上设置:
    ./ngrok config add-authtoken 你的authtoken
    
  3. 启动内网穿透,把8000端口映射到公网:
    ./ngrok http 8000
    
    启动后会看到一个类似https://xxxx-xx-xx-xx-xx.ngrok.io的公网地址,复制下来。

七、手机控制伺服电机

打开手机浏览器,访问刚才的ngrok地址:

  • 转到90度:https://xxxx.ngrok.io/set?angle=90
  • 转到0度:https://xxxx.ngrok.io/set?angle=0
  • 停止电机:https://xxxx.ngrok.io/stop

如果觉得输入URL麻烦,可以自己写个简单的HTML页面,存到手机里,点击按钮就能控制:

<!DOCTYPE html>
<html>
<body>
    <button onclick="sendRequest('/set?angle=0')">0度</button>
    <button onclick="sendRequest('/set?angle=90')">90度</button>
    <button onclick="sendRequest('/set?angle=180')">180度</button>
    <button onclick="sendRequest('/stop')">停止</button>
    
    <script>
        function sendRequest(path) {
            fetch('https://xxxx.ngrok.io' + path)
                .then(res => res.text())
                .then(msg => alert(msg));
        }
    </script>
</body>
</html>

注意事项

  • 供电要稳定:如果伺服电机动作时树莓派重启,说明供电不足,换个电流大的移动电源。
  • 长期使用:可以把server.py设置成开机自启(比如用systemd服务);另外可以用动态DNS替代ngrok,避免每次重启ngrok域名变化。
  • 安全问题:如果长期暴露公网,建议给HTTP服务器加密码验证,或者用VPN连接家里的内网,更安全。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 22:25:56