当前位置: 首页 > article >正文

使用 Arduino 的 WiFi 控制机器人

 

使用 Arduino 的 WiFi 控制机器人

这次我们将使用 Arduino 和 Blynk 应用程序制作一个 Wi-Fi 控制的机器人。这款基于 Arduino 的机器人可以使用任何支持 Wi-Fi 的 Android 智能手机进行无线控制。

为了演示 Wi-Fi 控制机器人,我们使用了一个名为“Blynk”的 Android 移动应用程序。Blynk 是一个与 Arduino 非常兼容的应用程序,用于制作基于 IoT 的项目。此应用程序可以从 Google Play 商店下载,并且可以轻松配置。

配置 Blynk 应用程序的步骤:

1. 首先从 Google Play 商店下载并安装在 Android 手机上。

2. 在此之后,需要创建一个帐户。您可以使用您当前的 Gmail 帐户。

3. 现在选择 Arduino Board 并为您的项目命名。

 

4. 记下 Auth Token 代码,或者直接将其邮寄到您的电子邮件帐户,然后复制并粘贴 Arduino sketch(程序代码)。

 

5. 在 Arduino sketch 中输入此 Auth Token 代码。

<span style="color:#e4e4e4"><span style="background-color:#1e1e1e">// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "caa17a11c0124d4083d0eaa995f45917";</span></span>

6. 然后点击 Blynk 应用程序中的创建按钮。

7. 现在选择纵杆小部件,单击纵杆,配置纵杆(请参阅最后的视频)并点击返回按钮。

 

 

 

8. 之后按屏幕右上角的 Play 按钮。

所有这些使用 Blynk 应用程序的过程,都在视频中清楚地解释了,最后给出了。

所需组件:

  • Arduino UNO
  • ESP8266 Wi-Fi 模块
  • USB 数据线
  • 连接电线
  • L293D 系列
  • 直流电动机
  • 电池
  • 10K POT(可选)
  • 机器人底盘加轮
  • 滚轮脚轮
  • Android 手机
  • Blynk 应用程序

电路说明:

 

Wi-Fi 控制机器人的电路图如下。我们主要需要一个 Arduino 和 ESP8266 个 Wi-Fi 模块。ESP8266 的 Vcc 和 GND 引脚直接连接到 Arduino 的 3.3V 和 GND,CH_PD也连接到 3.3V。ESP8266 的 Tx 和 Rx 引脚直接连接到 Arduino 的引脚 2 和 3。软件串行库用于允许在 Arduino 的引脚 2 和 3 上进行串行通信。我们已经详细介绍了 ESP8266 Wi-Fi 模块与 Arduino 的接口。

L293D 电机驱动器 IC 用于驱动直流电机。电机驱动 IC 的输入引脚直接连接到 Arduino 的引脚 8、9、10 和 11。直流电机连接在其输出引脚处。在这里,我们使用 9 伏电池来驱动电路和直流电机。

工作说明:

 

Wi-Fi 控制的机器人的工作非常简单,我们只需要将纵杆拖动到我们想要移动机器人的方向即可。就像,如果我们想向前移动机器人,那么我们需要向前拖动纵杆“圆圈”。同样,我们可以通过向相应方向拖动纵杆来向左、向右和向后移动机器人。现在,一旦我们松开纵杆,它就会回到中心,机器人停止。

Blynk 应用程序通过 Wi-Fi 介质将值从双轴纵杆发送到 Arduino。Arduino 接收值,将它们与预定义的值进行比较,并相应地将机器人移动到该方向。

 

编程说明:

程序在 Arduino IDE 中几乎是现成的。我们只需要下载 Arduino 的 Blynk 库。并且经过一些修改后,用户可以制作自己的 Wi-Fi 控制机器人。

首先,我们包含了在 Arduino IDE 中运行此代码所需的所有库,然后在身份验证字符串中输入 Blynk 应用程序中的 Auth Token。在这里,我们将 Wi-Fi 串行引脚与 Arduino 的软件串行连接起来。选择引脚 2 作为 RX,选择引脚 3 作为 TX。

#define BLYNK_PRINT Serial    // Comment this out to disable prints and save space
#include <ESP8266_SoftSer.h>
#include <BlynkSimpleShieldEsp8266_SoftSer.h>

// Set ESP8266 Serial object
#include <SoftwareSerial.h>
SoftwareSerial EspSerial(2, 3); // RX, TX

ESP8266 wifi(EspSerial);

// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "caa17a11c0124d4083d0eaa995f45917";

然后我们为电机定义了输出引脚(8,9,10,11),并编写了一些方向函数来将机器人移动到特定方向:void forward(),void backward(),void right() 和 void left()  

在此之后,在设置功能中,我们初始化所有需要的设备,例如为电机引脚提供方向,开始串行通信,提供 Wi-Fi 用户名和密码。

void setup()
{
  // Set console baud rate
  Serial.begin(9600);
  delay(10);
  // Set ESP8266 baud rate
  // 9600 is recommended for Software Serial
  EspSerial.begin(9600);
  delay(10);

  Blynk.begin(auth, wifi, "username", "password");  // wifi username and password
  pinMode(m11, OUTPUT);
  pinMode(m12, OUTPUT);
  pinMode(m21, OUTPUT);
  pinMode(m22, OUTPUT);
}

现在我们已经检查了一些控制机器人的条件。这里我们选择了虚拟引脚 1 (V1) 来从 Blynk 应用程序获取输入来控制机器人。由于我们在应用程序中使用了 marge 选项,因此我们将在同一引脚上获得 x 和 y 轴值。

BLYNK_WRITE(V1) 
{
  int x = param[0].asInt();
  int y = param[1].asInt();
  if(y>220)
  forward();
  else if(y<35)
  backward();
  else if(x>220)
  right();
  else if(x<35)
  left();
  else
  Stop();
}

最后我们需要在循环中运行 blynk 函数,以运行系统。

完成项目代码

#define BLYNK_PRINT Serial    // Comment this out to disable prints and save space
#include <ESP8266_SoftSer.h>
#include <BlynkSimpleShieldEsp8266_SoftSer.h>
// Set ESP8266 Serial object
#include <SoftwareSerial.h>
SoftwareSerial EspSerial(2, 3); // RX, TX
ESP8266 wifi(EspSerial);
// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "caa17a11c0124d4083d0eaa995f45917";
#define m11 8
#define m12 9
#define m21 10
#define m22 11
void forward()
{
  digitalWrite(m11, HIGH);
  digitalWrite(m12,LOW);
  digitalWrite(m21,HIGH);
  digitalWrite(m22,LOW);
}
void backward()
{
  digitalWrite(m11, LOW);
  digitalWrite(m12,HIGH);
  digitalWrite(m21,LOW);
  digitalWrite(m22,HIGH);
}
void right()
{
  digitalWrite(m11, HIGH);
  digitalWrite(m12,LOW);
  digitalWrite(m21,LOW);
  digitalWrite(m22,LOW);
}
void left()
{
  digitalWrite(m11, LOW);
  digitalWrite(m12,LOW);
  digitalWrite(m21,HIGH);
  digitalWrite(m22,LOW);
}
void Stop()
{
  digitalWrite(m11, LOW);
  digitalWrite(m12,LOW);
  digitalWrite(m21,LOW);
  digitalWrite(m22,LOW);
}
void setup()
{
  // Set console baud rate
  Serial.begin(9600);
  delay(10);
  // Set ESP8266 baud rate
  // 9600 is recommended for Software Serial
  EspSerial.begin(9600);
  delay(10);
  Blynk.begin(auth, wifi, "username", "password");  // wifi username and password
  pinMode(m11, OUTPUT);
  pinMode(m12, OUTPUT);
  pinMode(m21, OUTPUT);
  pinMode(m22, OUTPUT);
}
BLYNK_WRITE(V1) 
{
  int x = param[0].asInt();
  int y = param[1].asInt();
  // Do something with x and y
/*  Serial.print("X = ");
  Serial.print(x);
  Serial.print("; Y = ");
  Serial.println(y);*/
  if(y>220)
  forward();
  else if(y<35)
  backward();
  else if(x>220)
  right();
  else if(x<35)
  left();
  else
  Stop();
}
void loop()
{
  Blynk.run();
}

视频

 


http://www.kler.cn/a/574460.html

相关文章:

  • 二、双指针——6. 三数之和
  • Python函数定义详细教程:参数类型详解,报错UnboundLocalError怎么解决。
  • 贪心算法一
  • aws(学习笔记第三十一课) aws cdk深入学习(batch-arm64-instance-type)
  • Java多线程与高并发专题——为什么 Map 桶中超过 8 个才转为红黑树?
  • PPT 小黑第20套
  • java8中young gc的垃圾回收器选型,您了解嘛
  • AI面板识别 - 华为OD统一考试(java)
  • 风控模型算法面试题集结
  • 面试基础--Spring Boot启动流程及源码实现
  • IDEA 2024.1.7 Java EE 无框架配置servlet
  • osg官方例子
  • React基础之插值
  • 蓝桥杯 Excel地址
  • 深入剖析 Kubernetes 弹性伸缩:HPA 与 Metrics Server
  • FPGA-按键消抖
  • 青训营:简易分布式爬虫
  • 171. Excel 表列序号
  • 【消费主义与性别角色重构】
  • 【Java线程基础操作详解】