亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

Wi-fi 控制的 FPV Rover 机器人(带有 Arduino 和 ESP8266)

组件和用品

Arduino UNO
× 1
Arduino Proto Shield
× 1
乐鑫 ESP8266 ESP-01
× 1
28BYJ 步进电机
× 2
ULN2003 步进驱动器
× 1
Android 设备
× 1
电阻 1k ohm
× 1
电阻 100k ohm
× 2
移动电源
× 1
带橡胶胎面轮胎的 42x19mm 车轮
× 2
49x20x32mm 钢球万向轮
× 1
M2 x 10mm 螺栓
× 12
M2 x 1,5mm 螺母
× 12
M3 x 10mm 螺栓
× 8
M3 x 1,5mm 螺母
× 8
5/32" x 1" 螺栓
× 3
5/32" 坚果
× 6
手持自拍杆夹
× 1
3 x 3 cm 铝制支架
× 2
2mm 亚克力板
× 1

必要的工具和机器

钻孔机
手锯

应用和在线服务

IP 网络摄像头
Autodesk Fusion 360
Draftsight
Arduino IDE
Notepad++

关于这个项目

本教程展示了如何使用连接到 ESP8266 Wi-fi 模块的 Arduino Uno 和两个步进电机,通过 Wi-Fi 网络设计远程控制的两轮机器人漫游车。可以使用 HTML 设计的界面从普通的互联网浏览器控制机器人。 Android智能手机用于将机器人的视频和音频广播到操作员的控制界面。

网上有很多形状、尺寸和价格各异的机器人套件。但是,根据您的应用,它们都不适合,您可能会发现它们对于您的实验来说太昂贵了。或者,也许您只是想制作您的机械结构,而不是购买完整的机械结构。本教程还展示了如何为您自己的机器人项目设计和构建低成本的亚克力框架,对于那些没有的人,只需使用普通工具使用那些昂贵的 3D 打印机或激光切割机。展示了一个简单的机器人平台。

本指南可能会进行调整以更改其形状或控制界面。它适用于我的其他机器人项目(“Robô da Alegria”),您可以查看以下链接:

https://hackaday.io/project/12873-rob-da-alegria-...

https://github.com/ferauche/RoboAlegria

https://hackaday.io/project/12873-rob-da-alegria-...

[警告:部分照片已经过时,因为设计进一步改进。然而,这里提出的想法仍然有效。]

第 1 步:工具

构建这个原型需要以下工具:

  • 手锯(用于对亚克力板进行初步切割)
  • 螺丝刀(用于放置螺栓和螺母)
  • 标尺(用于尺寸测量)
  • 美工刀(用于切割亚克力板)
  • 钻孔机(为螺栓钻孔)
  • 砂纸(平滑粗糙的边缘)

第二步:机械结构和材料

要构建定制机器人,首先您必须设计机械结构。这可能很容易,具体取决于您的应用程序,或者充满细节和限制。根据模型的复杂程度,您可能需要在 3D CAD 软件中对其进行设计或仅在 2D 中进行绘制。

如果您不想构建自己的机械结构,也可以在线购买完整的结构。网上有很多机器人套件。在这种情况下,您可能会跳到第 6 步。

在本教程中,我们设计了一个低成本的亚克力框架,用于连接电机和其他组件。本教程中介绍的结构是使用 123D Design CAD 软件进行 3D 设计的。每个零件后来都使用 Draftsight 软件进行了 2D 转换。

使用了以下材料:

  • 2mm亚克力板
  • 42x19mm 车轮,带橡胶胎面轮胎 (x2)
  • 49x20x32mm 钢球全向轮 (x1)
  • M2 x 10mm 螺栓 (x12)
  • M2 x 1,5mm 螺母 (x12)
  • M3 x 10mm 螺栓 (x8)
  • M3 x 1,5mm 螺母 (x8)
  • 5/32" x 1" 螺栓 (x3)
  • 5/32" 螺母 (x6)
  • 手持自拍杆夹
  • 3 x 3 厘米铝制支架 (x4)

基地结构的搭建分为以下几个步骤:

  • 根据二维图纸中的尺寸切割亚克力底座;
  • 在二维图中所示位置钻孔;
  • 根据 3D 图纸使用螺栓和螺母安装组件。

不幸的是,步进电机轴的直径大于轮子上的孔口。因此,您可能需要使用胶水来连接这些组件。在本教程中,我在电机轴和车轮之间临时搭建了一个木联轴器。

FMAR9JBITKJE83H.123dx F21RD24ITKJE8AJ.dwg FPTGSODITKJE8AN.pdf

第三步:切割结构

首先,您需要将模型的尺寸转移到亚克力板上。使用普通打印机在不干胶纸上打印您的 2D 绘图,然后将纸张剪成合适的尺寸并将该遮罩贴在亚克力表面上。

您可以使用手锯根据您的尺寸切割亚克力或使用下面描述的断裂技术。

用美工刀和尺子或刻度尺,沿直线切割亚克力。您不需要一直切割整张纸,只需对其进行评分以创建一些轨道,以便稍后切割该作品。

将亚克力放在平坦的表面上,用一些夹子将其固定到位并施加一些压力,直到板材断裂成两半。重复此过程,直到完成所有切割。之后,您可以使用砂纸打磨粗糙的边缘。

第 4 步:钻孔基础

用钻孔机在二维图(面罩中所示)所示位置钻孔。

亚克力相对容易钻孔。因此,如果您不处理钻孔机,则可以使用锋利的工具(如美工刀)手动钻孔。您也可以用它来扩大小孔以适应螺栓尺寸。

取下面具,你的基地就准备好了。

第五步:组装结构

根据图片用螺栓和螺母安装组件,您的结构就准备好了。

M3螺栓用于安装步进电机,5/32"螺栓用于安装前轮和手机夹。

现在休息一下,开始按照以下步骤组装电路...

第 6 步:电子产品

您将需要以下电子元件:

  • Arduino Uno(购买)
  • ESP8266(购买)
  • Protoshield(用于更紧凑的版本)或普通面包板(购买)
  • 1 kohm 电阻器 (x2)
  • 10 kohm 电阻器 (x1)
  • 一些跳线
  • 带 ULN2003driver 的步进电机 (x2)(购买/购买)
  • 一台电脑(用于编译和上传 Arduino 代码)
  • 移动电源(购买)
  • USB 数据线

您不需要特定的工具来组装电路。所有组件都可以在您最喜欢的电子商务商店在线找到。该电路由连接到 Arduino 的 USB 端口的移动电源供电。

根据原理图连接所有组件。您需要一些跳线来连接 ESP-8266 模块和步进电机。您可以使用 protoshield(用于更紧凑的电路)、普通面包板,或设计您自己的 Arduino 扩展板。将 USB 电缆插入 Arduino Uno 板并继续下一步。

第 7 步:Arduino 代码

安装最新的 Arduino IDE。在这个项目中 stepper.h 库用于控制步进电机。与 ESP-8266 模块通信不需要额外的库。请检查您的ESP8266的波特率并在代码中正确设置。

下载 Arduino 代码 (stepperRobot.ino) 并用您的 wifi 路由器 SSID 替换 XXXXX,用路由器密码替换 YYYYY。将 Arduino 板连接到您的计算机 USB 端口并上传代码。

FG1K5KJITKJFW2R.ino

第 8 步:Android 网络摄像头

使用 Android 智能手机将来自机器人的视频和音频广播到控制界面。您可以在 Google Play 商店 (https://play.google.com/store/apps/details?id=com.pas.webcam) 上找到该应用。

安装它并进入下一步。

第 9 步:将电路放入机器人中

使用一些 M1 螺栓将电路安装在机器人顶部,如图所示。

之后,用双面胶将移动电源粘在机器人背面(因为以后很容易取下),然后将智能手机放入夹子中。

第 10 步:基于 Web 的控制界面

设计了一个html界面来控制机器人。

下载 interface.rar 并将所有文件解压到指定文件夹。然后在 Firefox 上打开它。

在该界面中使用文本框形式输入 ESP 模块和视频/音频服务器的 IP 地址(来自 Android IP 网络摄像头应用程序)。

有一个测试但是,它将使机器人旋转,直到收到另一个命令。键盘方向键用于向前或向后移动机器人,向左或向右旋转。

FQTAWF5ITKJFW4O.rar

第 11 步:使用

当 Arduino 重新启动时,它会尝试自动连接您的 Wi-Fi 网络。使用串行监视器检查连接是否成功,并获取路由器分配给 ESP-8266 的 IP。在 Internet 浏览器 (Firefox) 中打开 html 文件并在文本框中告知此 IP 地址。

您还可以通过其他方式找出路由器分配给设备的 IP 地址。

断开 Arduino Uno 与计算机的连接并将其连接到移动电源。等待它再次连接。

在连接到机器人的智能手机中启动 IP 网络摄像头应用程序。在您的控制界面上输入视频/音频 IP 并连接到服务器,您就可以开始使用了。您可能需要降低应用中视频的分辨率,以减少传输过程中的延迟。

点击并按住键盘上的箭头按钮来旋转机器人或向前/向后移动机器人,享受探索环境的乐趣。

代码

  • 阿杜诺
  • html 控制界面
ArduinoArduino
Arduino 代码。
//include libraries#include #include SoftwareSerial esp8266(3, 2); //RX pin =3, TX pin =2//定义变量#define DEBUG true //在串口中显示ESP8266和Arduino之间的消息const int stepsPerRevolution =500;int state =5;Stepper rightStepper(stepsPerRevolution, 8,10, 9,11);Stepper leftStepper(stepsPerRevolution, 4,6,5,7);//*****//SETUP/*****void setup(){ //开始通信Serial.begin(9600) ); esp8266.begin(19200); sendData("AT+RST\r\n", 2000, DEBUG); //重置模块sendData("AT+CWMODE=1\r\n", 1000, DEBUG); //设置电台模式 sendData("AT+CWJAP=\"XXXXX\",\"YYYYY\"\r\n", 2000, DEBUG); //连接无线网络 while(!esp8266.find("OK")) { //等待连接 } sendData("AT+CIFSR\r\n", 1000, DEBUG); //显示IP地址sendData("AT+CIPMUX=1\r\n", 1000, DEBUG); //允许多个连接 sendData("AT+CIPSERVER=1,80\r\n", 1000, DEBUG); // 在端口 80 上启动 Web 服务器 //定义电机速度 rightStepper.setSpeed(60); leftStepper.setSpeed(60); }void loop(){ if (esp8266.available()) //验证传入数据 { if (esp8266.find("+IPD,")) //如果有消息 { String msg; esp8266.find("?"); //寻找消息 msg =esp8266.readStringUntil(' '); //读取整个消息 String command =msg.substring(0, 3); //前 3 个字符 =命令 String valueStr =msg.substring(4); //接下来的 3 个字符 =value int value =valueStr.toInt();如果(调试){ Serial.println(命令); Serial.println(值); } //向前移动 if(command =="cm1") { state =1; } //向后移动 if(command =="cm2") { state =2; } //右转 if(command =="cm3") { state =3; } //左转 if(command =="cm4") { state =4; } //什么都不做 if(command =="cm5") { state =5; } } } //向前移动 if (state ==1) { rightStepper.step(1); leftStepper.step(-1); } //向后移动 if (state ==2) { rightStepper.step(-1); leftStepper.step(1); } //向右移动 if (state ==3) { rightStepper.step(1); leftStepper.step(1); } //向左移动 if (state ==4) { rightStepper.step(-1); leftStepper.step(-1); } //什么都不做 if (state ==5) { } }//*******************//辅助函数//******** ***********String sendData(String command, const int timeout, boolean debug){ String response =""; esp8266.print(命令); long int time =毫秒(); while ( (time + timeout)> millis()) { while (esp8266.available()) { char c =esp8266.read();响应 +=c; } } 如果(调试){ Serial.print(响应); } 返回响应;}
html 控制界面HTML
无预览(仅限下载)。

定制零件和外壳

123D 设计文件。 底座的robot.123dx2D设计。 base.dwg

示意图

电路原理图电路的面包板连接Fritzing文件电路 wistepper%20-%20rev1.fzz

制造工艺

  1. 通过蓝牙控制的树莓派机器人
  2. 使用 Arduino 和 Raspberry Pi 构建您的 Internet 控制的视频流机器人
  3. 用紫外线灯给机器人消毒
  4. 带伺服电机的机器人避障
  5. 带有 Arduino 或 ESP8266 的电容式指纹传感器
  6. 使用 Arduino 和 Android 设备控制 Roomba 机器人
  7. Nunchuk 控制机械臂(使用 Arduino)
  8. Arduino Nano:使用操纵杆控制 2 个步进电机
  9. 语音控制机器人
  10. 使用 TinyML 确定植物健​​康
  11. 使用 Arduino 和 MPU6050 控制伺服电机
  12. Arduino 控制的钢琴机器人:PiBot