手把手教你做浏览器可控的智能机器人


ChangeCode
转载
发布时间: 2025-08-01 18:01:52 | 阅读数 0收藏数 0评论数 0
封面
本教程介绍如何用树莓派和摄像头改造报废 Roomba,使其可通过浏览器远程控制。改造仅用到原 Roomba 的电机、底盘和电池,也可用其他电机、轮子和底盘替代。 改造使用树莓派 3 A + 和 Riorand 电机控制器,代码基于 Dexter Industries 的浏览器控制机器人代码修改,新增 GPIO 引脚支持、浏览器按钮或 ESC 键关机功能,优化控制页面以 iframe 显示视频流,方便在同一页面操控。树莓派设静态 IP,便于局域网设备连接。教程旨在展示简单低成本的机器人底座制作方法。

准备工作:

材料:

  1. 树莓派 3 A+
  2. Riorand 双电机驱动控制器
  3. 电机用 12V 电池
  4. 树莓派用 5V 电池
  5. 8GB micro SD 卡
  6. 杜邦线
  7. Roomba 500 系列


1

安装 Raspbian 系统并设置静态 IP

我用的是 Raspbian Stretch Lite 系统,没必要装桌面版,当然你想装也可以。


先假设你已经会装 Raspbian 了(不会的话可以查树莓派基金会的官方指南)。系统装好后,登录并运行 raspi-config 配置工具:

pi@raspberrypi:~ $ sudo raspi-config
  1. 配置 WiFi:选 “2 Network Options”→“N2 Wi-fi”,选国家、输 WiFi 名称(SSID)和密码。
  2. 开启 SSH:回到主菜单,选 “5 Interfacing Options”→“P2 SSH”,选 “是”。
  3. 完成后选 “<Finish>” 退出。


验证网络连接:

pi@raspberrypi:~ $ ifconfig


会显示 IP 地址(比如 192.168.1.18),记下来。再 ping 一下谷歌验证联网:

pi@raspberrypi:~ $ ping google.com


设置静态 IP(确保每次连接地址不变):

打开 dhcp 配置文件:

pi@raspberrypi:~ $ sudo nano /etc/dhcpcd.conf


找到 “#Example static IP configuration”,去掉注释并修改(按自己的网络填):

interface wlan0
static ip_address=192.168.1.18
static routers=192.168.1.1
static domain_name_servers=192.168.1.1 8.8.8.8


保存退出,重启后用 SSH 连接(Windows 可用 PuTTY 或 WSL):

ian@computer:~$ ssh pi@192.168.1.18
2

安装并配置 Motion(视频流工具)

Motion 是个常用于安防摄像头的程序,我们用它让摄像头通过 8081 端口输出视频流。


先测试摄像头:插好摄像头,列 USB 设备(可能需要重启):

pi@raspberrypi:~ $ lsusb


如果显示类似 “Logitech C210”,说明摄像头正常;没显示的话可能不兼容或需要装驱动。


安装 Motion:

pi@raspberrypi:~ $ sudo apt-get update
pi@raspberrypi:~ $ sudo apt-get install motion -y


修改配置文件:

pi@raspberrypi:~ $ sudo nano /etc/motion/motion.conf


改这些参数:

daemon on
width 640
height 480
framerate 100
output_pictures off
ffmpeg_output_movies off
stream_port 8081
stream_quality 100
stream_localhost off
webcontrol_localhost off


设置开机启动:

pi@raspberrypi:~ $ sudo nano /etc/default/motion


改 “start_motion_daemon=yes”,保存后重启:

pi@raspberrypi:~ $ sudo reboot


测试视频流:在浏览器输入 “http:// 你的静态 IP:8081”(比如http://192.168.1.18:8081),能看到画面就成功了。

3

安装 Apache 并设置网页控制界面

Apache 是机器人控制页面的 web 服务器。我们要把默认的 index.html 换成从 GitHub 下载的文件,再改几行代码让它显示视频流和发送控制命令。


安装 Apache 和 Git:

pi@raspberrypi:~ $ sudo apt-get install apache2 git -y


下载代码:

pi@raspberrypi:~ $ git clone https://github.com/stuntunicorns/roombarobot.git


进入文件夹,把 index.html 复制到 Apache 的网页目录:

pi@raspberrypi:~ $ cd roombarobot
pi@raspberrypi:~/roombarobot $ sudo cp index.html /var/www/html


修改 index.html:

pi@raspberrypi:~/roombarobot $ sudo nano /var/www/html/index.html


找到这两行,把 “YOURIPADDRESS” 换成步骤 1 设的静态 IP:

<iframe src="http://192.168.1.18:8081" width=640px height=480px frameborder="0">
var host = "ws://192.168.1.18:9093/ws";


测试:在其他设备浏览器输入树莓派 IP,左边会显示摄像头画面,右边是控制按钮,就对了。

4

设置并测试控制代码

控制代码是 Python 写的,需要 Tornado 库,它会通过 9093 端口的 WebSocket 接收网页的控制命令。


安装依赖:

pi@raspberrypi:~ $ sudo apt-get install python-pip
pi@raspberrypi:~ $ sudo pip install tornado



运行程序并测试:

pi@raspberrypi:~$ sudo python /home/pi/roombarobot/roombabot.py


终端显示 “Ready” 后,在浏览器打开控制页面,点 “连接”,再点方向按钮(或按键盘箭头),终端会显示类似 “Running Forward”“Turning Left” 的反馈,说明成功。按 ctrl+c 停止程序,关机用:

pi@raspberrypi:~$ sudo poweroff


小问题:网页的 “关机” 按钮偶尔没反应, workaround 是刷新页面、重新连接后再点。

5

组装

如前所述,不一定非要用 Roomba,有两个电机、两个轮子和底盘的都能用。我把 Roomba 拆开,只留了轮组和电池。


  1. 轮组:Roomba 的轮子和电机是一体模块,每个模块有蓝色外壳,内含电机、齿轮箱、轮子、悬架弹簧和接口板。
  2. 接口板:每个板有 6 根线(电机正负极、霍尔传感器线、掉轮检测线、5V 线、地线)。我拆到电机部分,直接给电机焊了新的正负极线(传感器可保留也可拆)。
  3. 悬架弹簧:拆了吸尘器部分后,Roomba 重心会偏,没弹簧会倾斜;但留着弹簧能更好地过地毯,我最后装回去了。


电机与控制器接线:


  1. 电源:12V 正极接 Roomba 电池正极,12V 负极接电池负极。
  2. 电机 2(左):黑色接左电机负极,红色接左电机正极。
  3. 电机 1(右):黑色接右电机负极,红色接右电机正极。


控制器与树莓派接线:



电机控制器引脚

线色

树莓派引脚

GND

黑色

GND

PWM 2

蓝色

GPIO 18

DIR 2

绿色

GPIO 23

PWM 1

黄色

GPIO 24

DIR 1

橙色

GPIO 25

5V

红色

5V


安装电子元件:拆光 Roomba 外壳后,剪掉原有塑料柱,钻孔固定元件;电机线从原有孔穿出,电池接口用原有缺口。


电池:树莓派用 5V 手机充电宝,电机用原 Roomba 电池。电池正负极没标,先用电表测电压。我用 4 块钕磁铁接电池:两块焊在电线上,另外两块粘在电池端子上(焊接会消磁,但外层镀层仍能导电),这样插拔很方便。


测试:把机器人架起来(防止乱跑),开机后登录并运行程序:

pi@raspberrypi:~$ sudo python /home/pi/roombarobot/roombabot.py


在网页控制页面测试,轮子能按指令转就没问题。

6

设置开机启动代码

最后一步:让树莓派开机时自动运行控制程序。用脚本加 crontab 实现。


创建脚本:

pi@raspberrypi:~ $ sudo nano startrobot.sh


输入以下内容:

#!/bin/sh
#startrobot.sh
cd /
cd /home/pi/roombarobot
sudo python roombabot.py
cd /


保存后设为可执行:

pi@raspberrypi:~$ sudo chmod 755 startrobot.sh


测试脚本(按 ctrl+c 停止):

pi@raspberrypi:~$ sh startrobot.sh


设置开机启动:

pi@raspberrypi:~$ sudo crontab -e


在文件末尾加一行:

@reboot sh /home/pi/startrobot.sh


保存后,树莓派重启或通电时,程序会自动运行。


==========================================


结语

到这一步,你就有了一个能在局域网内通过浏览器控制的机器人。我后来还加了 VPN,方便出门时远程控制。未来打算让它实现自主导航,或者能跟拍移动目标,同时保留手动控制功能。


阅读记录0
点赞0
收藏0
禁止 本文未经作者允许授权,禁止转载
猜你喜欢
评论/提问(已发布 0 条)
评论 评论
收藏 收藏
分享 分享
pdf下载 下载
pdf下载 举报