项目简介
本项目是一个Wall - E机器人复刻系统,涵盖机器人和控制器代码。Arduino代码用于控制机器人的电机和舵机,实现速度控制、远程控制等功能;Raspberry Pi Web Server基于Python的Flask框架搭建,提供网页界面,用户可通过该界面远程控制机器人运动、播放声音、设置参数等。
项目的主要特性和功能
Arduino部分
- 实现舵机电机速度控制,使加速和减速更平滑。
- 采用非阻塞串口解析,支持远程控制机器人运动。
- 具备电池电量监测功能(待完善),并能控制LED面板显示电池电量。
Raspberry Pi Web Server部分
- 提供JavaScript操纵杆,方便控制机器人运动。
- 支持手动控制所有舵机电机。
- 列出机器人可执行的运动动画列表。
- 提供可播放的声音列表。
- 设有设置页面,可修改电机参数、声音音量和视频选项。
- 支持游戏手柄控制,可使用Xbox或PlayStation控制器。
- 配备简单登录页面,增强访问安全性。
安装使用步骤
Arduino
基本安装
- 确保电子设备接线与图示匹配。
- 在Arduino IDE中打开wall - e.ino,相关文件会自动在不同标签页打开。
- 安装Adafruit_PWMServoDriver.h库:在Arduino IDE中,依次选择Sketch -> Include Library -> Manage Libraries...,搜索“Adafruit Servo”并安装最新版本。
- 用USB线将计算机与微控制器连接,在“Tools”菜单中选择正确的“Board”和“Port”。
- 将草图上传到微控制器。
测试主程序
- 草图上传到Arduino后,在微控制器仍连接计算机时,开启12V电池电源。
- 打开Arduino IDE右上角的“Serial Monitor”,将波特率设置为115200。
- 发送字符 'w'、'a'、's'、'd' 分别控制机器人前进、左转、后退、右转,发送 'q' 停止所有运动。
- 发送字符 'j'、'l'、'i'、'k' 控制头部左右倾斜和眼睛上下移动。
舵机电机校准
- 在Arduino IDE中打开wall - e_calibration.ino。
- 将草图上传到微控制器,打开串口监视器并将波特率设置为115200。
- 根据提示,通过发送字符 'a'、'd'、'z'、'c' 调整舵机位置,发送 'n' 进行校准步骤。
- 校准完成后,将输出的校准值数组复制到wall - e.ino的第116 - 122行。
电池电量检测
- 按图示连接电阻和线路,推荐电阻值为 R1 = 100kΩ,R2 = 47kΩ。
- 取消主Arduino草图wall - e.ino第50行的注释。
- 若使用不同电阻值,根据公式 POT_DIV = R2 / (R1 + R2)修改第54行的电位器分压增益因子。
添加自定义舵机动画
- 打开与主Arduino草图同一文件夹下的animations.ino文件。
- 在switch语句中插入新的case部分,添加动画指令。
- 时间单位为毫秒,舵机位置命令为0 - 100的整数,可使用 -1 禁用特定电机。
Raspberry Pi Web Server
基本安装
- 设置Raspberry Pi运行最新版本的Raspberry Pi OS(Raspbian) - Full。
- 打开Raspberry Pi的命令行终端。
- 更新软件包列表:sudo apt update
- 安装Flask:- 确保pip已安装:sudo apt install python3 - pip
- 安装Flask及其依赖项:sudo pip3 install flask
 
- 确保pip已安装:
- (可选)若使用非Full版本的Raspbian,运行以下命令:
shell sudo apt install git libsdl1.2 libsdl - mixer1.2 sudo pip3 install pygame serial pyserial
- 将仓库复制到Raspberry Pi的主目录:
shell cd ~
- 设置Web服务器密码:- 打开app.py:nano ~/walle - replica/web_interface/app.py
- 在第20行的 put_password_here处插入所需密码。
 
- 打开
- (可选)修改默认音频目录和视频流脚本位置。
- 连接到Arduino微控制器:- 将Arduino插入Raspberry Pi的USB端口。
- 若要在Web界面中默认选择Arduino使用的串口,在app.py第21行将“ARDUINO”替换为设备名称。
- 按 CTRL + O保存,按CTRL + X退出nano编辑器。
 
使用Web服务器
- 确定Raspberry Pi在网络中的当前IP地址:hostname - I
- 启动服务器:python3 ~/walle - replica/web_interface/app.py
- 在同一网络的计算机或设备上打开浏览器,输入Raspberry Pi的IP地址,后跟 :5000,如192.168.1.10:5000
- 按 CTRL + C停止服务器。
- 若要开始控制机器人,先在Web界面的“Settings”选项卡中选择正确的串口,然后点击“Reconnect”按钮。
添加摄像头流
- 确保管理脚本名称和路径正确:/home/pi/mjpg - streamer.sh,若保存位置不同,需更新app.py第22行。
- 使脚本可由Web服务器执行:chmod +x /home/pi/mjpg - streamer.sh
开机自动启动服务器
- 创建.service文件:nano ~/walle.service
- 粘贴以下内容: ```text [Unit] Description=Start Wall - E Web Interface After=network.target
[Service] WorkingDirectory=/home/pi/walle - replica/web_interface ExecStart=/usr/bin/python3 app.py Restart=always StandardOutput=syslog StandardError=syslog SyslogIdentifier=walle User=pi
[Install]
WantedBy=multi - user.target
``
3. 按CTRL + O保存,按CTRL + X退出nano编辑器。
4. 将文件复制到启动目录:sudo cp ~/walle.service /etc/systemd/system/walle.service5. 启用自动启动:sudo systemctl enable walle.service6. 可使用sudo systemctl start walle.service和sudo systemctl stop walle.service` 手动启动和停止服务。
添加新声音
- 确保音频输出到耳机插孔:amixer cset numid=3 1
- 确保所有声音文件为 *.ogg格式。
- 修改文件名格式为 [组名]_[文件名]_[时长(毫秒)].ogg。
- 将声音文件上传到Raspberry Pi的 ~/walle - replica/web_interface/static/sounds/文件夹。
- 若文件未显示,可更改文件夹访问权限:sudo chmod -R 755 ~/walle - replica/web_interface/static/sounds
设置Raspberry Pi为WiFi热点
参考 此网站 的步骤1 - 5进行设置。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】