最好的电子音响科技diy制作网站

haoDIY_音响电子电脑科技DIY小制作发明

与nodemcu WiFi语音控制机器人

时间:2017-05-22 21:40来源:未知 作者:admin 点击:
以试剂盒(底盘、2轮、2个直流电机,1过山车 把机箱盖(或离开) 焊接2 10厘米线(红色和黑色)在每个电机 在固定的汽车底盘 组装的过山车 关节马达线电子(单) 固定在底盘的9V电池 在底盘固定5V电池 步骤6:连接n
与nodemcu WiFi语音控制机器人
下面是竞争的比赛:“机器人”如果你喜欢它,请点击上面的横幅投票。谢谢!;-)

在我的上一个教程,安卓和NodeMCU语音激活控制我们探讨了如何开发自己的应用程序在Android智能手机来控制局部(使用按钮或语音)的智能家居设备。但如何从那里开始,而家庭设备控制汽车?还有更好的,如何让这些电机驱动差动机器人?这正是我们将在这里发展,WiFi语音控制机器人的使用作为一个控制器,我们的老芽nodemcu!

上面的图显示什么将做的一般及以下的电影展示了最终的项目工作:

请考虑我的一个很小的力矩电机。但结果似乎有点罕见,机器人正常工作。我会尽快改变电机的我会更新视频。抱歉和感谢。

步骤1:物料清单(BOM)

所有的值在参考美元
  1. nodemcu esp8266-12e(8.79美元)
  2. 400点试验Breadboard Breadboard(4.97美元)
  3. H桥L293D(2.17美元)
  4. 电机机器人汽车底盘套件(13美元)
  5. 男性与女性的杜邦电缆(1美元)
  6. 便携式充电器5vdc 3000mah电力银行(10美元)
  7. 外部9VDC电池

.....当然,任何Android智能手机或平板电脑!

步骤2:H桥L293D

H桥电路L293D

为了驱动电机,我们将用L293D驱动四单臂半H桥。

根据其数据表,L293与L293D器件的大电流驱动四单臂半H。目的是提供双向的L293驱动电流可达1 A电压从4.5 V至36 V单的设计是为了提供高达600毫安的双向驱动电流电压从4.5 V到36 V设备电磁阀,DC和双极性步进电机,以及供应中的应用。

我们将使用集成电路直接与nodemcu,不使用盾牌,这也是常见的。

我们的机器人有两个轮子,是由2个直流电机驱动:

  • 左电机
  • 正确的运动

我们将把我们的H桥电机如图。的nodemcu将有6个命令,将电机。

国际rightmotor2 = 13;// D7对电机
 int rightmotor1 = 15;// D8右电机+ 
 int leftmotor2 = 0;// D3左电机
 int leftmotor1 = 2;// D4左电机+ 
 int eneleftmotor = 12;// D6 -使电机左
 int enerightmotor = 14;// D5使电机正确

例如,驱动左发动机前你必须把:

  • 高销D4(左电机+)和
  • 低引脚D3(左电机)

为正确的电机必须做相反的:

  • 高销D8(右电机+)和
  • 低引脚D7(左电机)

由于我的方式,电机装配机器人的动作,上述组合将驱动电动机推动机器人前进方向相同。

看上面的图,定义机器人如何移动。这对你的变量正确的定义是很重要的。

控制H桥是正确的,你还必须与使能引脚工作。以上的组合,将推动机器人前进只会工作,如果使能引脚(eneleftmotor和enerightmotor)都高。你可以通过L293D引脚(1、9)直接+ VCC和忘记他们。我不喜欢它,因为一个句号,那些销更是低。同时,将使销到nodemcu PWM数字输出允许您控制电机转速(使用数字值高与低,将速度分别为最大和零,)。

因此,创建一个函数来驱动我们的机器人前进,我们应该铺一起这样的代码:

forwardmotor虚空(void)
 { 
 digitalwrite(eneleftmotor,高);
 digitalwrite(enerightmotor,高);
 
 digitalwrite(leftmotor1,高);
 digitalwrite(leftmotor2,低);
 digitalwrite(rightmotor1,高);
 digitalwrite

步骤3:移动机器人

移动机器人

在上一步中我们学会了如何移动机器人前进,让我们觉得现在如何移动它。

我们将定义5个可能的命令:

  1. 停止
  2. 左拐
  3. 向右拐
  4. 反向
  5. 向前地

第一个命令“停”的简单实现。所有的H桥的投入要低,这样的汽车将不会移动:

stopmotor虚空(void)
 { 
 digitalwrite(eneleftmotor,低);
 digitalwrite(enerightmotor,低);
 
 digitalwrite(leftmotor1,低);
 digitalwrite(leftmotor2,低);
 digitalwrite(rightmotor1,低);
 digitalwrite

同样的方式让我们想让机器人到一个方向,比如说左。考虑到机器人的前进,如果我们要左拐,我们可以有两种情况:

  1. 停止左电机和保持正确的去FW
  2. 反左运动和保持正确的去FW

在第一种情况下,机器人会做一个圆弧轨迹向左。第二,机器人会把它交给左。我们将实施第二。

leftmotor虚空(void)
 { 
 digitalwrite(eneleftmotor,高);
 digitalwrite(enerightmotor,高);
 
 digitalwrite(leftmotor1,低);
 digitalwrite(leftmotor2,高);
 digitalwrite(rightmotor1,高);
 digitalwrite

剩下的命令,遵循相同的逻辑。上面的表格简历的5个命令。

步骤4:完成硬件

完成硬件

按照上面的图完成机器人的硬件。

你可以简单的测试,看看你的代码是可以的。

这是很好的简化试验,引进“开始你的机器人按钮”。我们将它安装在NodeMCU港做如图所示在图。

你可以使用下面的测试你的机器人运动程序:

// Set Motor Control Pins
int rightMotor2 = 13;    // D7 - right Motor -
int rightMotor1 = 15;    // D8 - right Motor +
int leftMotor2 = 0;    // D3 - left Motor - 
int leftMotor1 = 2;    // D4 - left Motor +
int eneLeftMotor = 12;  // D6 - enable Mortor Left
int eneRightMotor = 14; // D5 - enable Mortor Right

int buttonPin = 16; // D0

void setup()
{
  Serial.begin(115200);

  pinMode(buttonPin, INPUT_PULLUP);
  pinMode(eneLeftMotor, OUTPUT); 
  pinMode(eneRightMotor, OUTPUT); 
  pinMode(leftMotor1, OUTPUT); 
  pinMode(leftMotor2, OUTPUT);  
  pinMode(rightMotor1, OUTPUT);  
  pinMode(rightMotor2, OUTPUT);  

  digitalWrite(eneLeftMotor,LOW);
  digitalWrite(eneRightMotor,LOW);
  digitalWrite(leftMotor1,LOW);
  digitalWrite(leftMotor2,LOW);
  digitalWrite(rightMotor1,LOW);
  digitalWrite(rightMotor2,LOW);
      
  while (digitalRead(buttonPin))  // Wait for button to be pressed to move on 
  {  
  }
}

void loop()
{
  forwardMotor();
  delay (5000);
  stopMotor();
  delay (200);
  leftMotor();
  delay (3000);
  stopMotor();
  delay (200);
  forwardMotor();
  delay (5000);
  stopMotor();
  delay (200);
  rightMotor();
  delay (3000);
  stopMotor();
  delay (200);
  reverseMotor();
  delay (5000);
  stopMotor();
  delay (200);
} 

/* command motor forward */
void forwardMotor(void)   
{
  digitalWrite(eneLeftMotor,HIGH);
  digitalWrite(eneRightMotor,HIGH);
    
  digitalWrite(leftMotor1,HIGH);
  digitalWrite(leftMotor2,LOW);
  digitalWrite(rightMotor1,HIGH);
  digitalWrite(rightMotor2,LOW);
}

/* command motor backward */
void reverseMotor(void)   
{
  digitalWrite(eneLeftMotor,HIGH);
  digitalWrite(eneRightMotor,HIGH);
  
  digitalWrite(leftMotor1,LOW);
  digitalWrite(leftMotor2,HIGH);
  digitalWrite(rightMotor1,LOW);
  digitalWrite(rightMotor2,HIGH);
}

/* command motor turn left */
void leftMotor(void)   
{
  digitalWrite(eneLeftMotor,HIGH);
  digitalWrite(eneRightMotor,HIGH); 
  
  digitalWrite(leftMotor1,LOW);
  digitalWrite(leftMotor2,HIGH);
  digitalWrite(rightMotor1,HIGH);
  digitalWrite(rightMotor2,LOW);
 } 
 
 / * * /命令电机转向正确
虚空(void)rightmotor 
 { 
 digitalwrite(eneleftmotor,高);
 digitalwrite(enerightmotor,高);
 
 digitalwrite(leftmotor1,高);
 digitalwrite(leftmotor2,低);
 digitalwrite(rightmotor1,低);
 digitalwrite(rightmotor2,高);
 } 
 
 / * * / 
命令电机停止无效stopmotor(void)
 { 
 digitalwrite(eneleftmotor,低);
 digitalwrite(enerightmotor,低);
 
 digitalwrite(leftmotor1,低);
 digitalwrite(leftmotor2,
低);

当你按下按钮,机器人就会开始做定义loop()动作。它将持续直到你按下“复位”nodemcu。按下按钮,循环重复。

该代码可以从我的github下载:

wifi_robot_nodemcu_android_voice_motor_tests

步骤5:装配机器人的身体

装配机器人的身体#p#分页标题#e#
  1. 以试剂盒(底盘、2轮、2个直流电机,1过山车
  2. 把机箱盖(或离开)
  3. 焊接2 10厘米线(红色和黑色)在每个电机
  4. 在固定的汽车底盘
  5. 组装的过山车
  6. 关节马达线电子(单)
  7. 固定在底盘的9V电池
  8. 在底盘固定5V电池

步骤6:连接nodemcu本地WiFi

nodemcu本地WiFi连接

让我们把nodemcu本地WiFi和检查它的IP地址。那,让我们用下面的小程序:

#包括<< esp8266wifi。H > 
 wificlient客户端;
 wifiserver服务器(80);
 const char* SSID =“你的SSID”;
 const char *密码=“密码”;
 
无效setup() 
 { 
系列。开始(115200);
 connectwifi();
服务器。begin();
 } 
 
无效loop() 
 { 
 } 
 
 / * * / 
无效连接WiFi connectwifi() 
 { 
串行out.println(“连接到无线网络”);
开始WiFi!(WiFi。status() = = wl_connected)))
 { 
延迟(300);
串口打印(“..”);
 } 
串行out.println(“”);
串行out.println(“WiFi连接”);
串行out.println(“nodemcu本地IP是:”);
串口打印((WiFi。

在串行监视器可以看到其IP地址。注意到它。我们将需要连接的Android应用程序。

该代码可以从我的github下载:

nodemcu_connection_test_ext

步骤7:完成代码

把我们的机器人,我们需要从Android设备接收命令。这一命令的变量将被定义:

字符串命令=“”;

所以,例如,如果Android应用程序发送一个命令:“前进”,机器人必须前进:

如果(命令= =“前进”)
 { 
 forwardmotor();

同样必须为所有可能的命令做得到。

下载完整的代码:wifi_robot_nodemcu_android_voice_ext我从GitHub。

更改虚拟WiFi的凭据,用你自己的:

const char* SSID =“你的SSID”;
 const char *密码=“你的密码;

上传的代码到你的nodemcu而已!你可以检查串口监控如果程序运行,但是,没有更多的。让程序运行你的应用程序在测试下一步。

步骤8:Android应用程序:“设计师Tab”

Android的应用程序:“设计师Tab”

我们将使用MIT App Inventor我们的Android应用程序开发。

<strong>主要成分1个屏幕上(见上图</strong>):

  • 用户界面:
    • IP地址输入
      • “ip_address”文本框
    • 5命令按钮:
      • 向前地
      • 颠倒
      • 正确的
      • 左边
      • 停止
    • 语音输入按钮
      • voice_input
  • 非可视组件:
    • 互联网
    • speachrecognizer1
    • texttospeach1
  • 其他
    • 文本框:
      • speach_to_text
    • 标签
      • comm_status

步骤9:Android应用程序:按钮

Android的应用程序:按钮

我们必须在块标签,创建5个按钮。所有的人都会遵循一个在照片中显示的结构。

这个按钮块叫做当前进按钮(“”)压:

  • 当点击了。

例如,当你点击按钮<em>了</em>,3行动将执行:

  • 命令将被发送的格式:HTTP:/ ip_address * /前进
  • “回声”在同一格式的预计
  • 一声“消息”将由应用程序读取:在案例:“前进”

* ip_address将你屏幕上的1输入。默认的是10.1.0.3,所以真正的消息是:HTTP:/ 10.0.1.3/forward

你可以使用任何你想要的信息,甚至把这一块了。该项目是可选的。

步骤10:Android应用:语音识别

安卓应用:语音识别

上述块给我们的应用程序的语音识别代码。

需要注意的是,任何语音命令的输入,其结果将是一个较低的情况下命令。这将促进语音识别解码nodemcu。

例如,如果你想让你的机器人了,一个词或句子必须交由nodemcu代码准确的识别。我将在葡萄牙的一个命令(我的语言),但你必须把它自己的语言(一个在你的Android设备的设置),并改变nodemcu正确的代码。在下面的例子,代码将承认任何一个关键词:“前进”,“人”或“ä阵线

如果(命令= =“前进”| |命令= =“人”| |命令= =“人”)
 { 
 forwardmotor();

所以,当我说“前进”,应用程序将发送例如:<em>HTTP:/ 10.0.1.10/forward</em>和nodemcu将采取什么是收到后的“/”,这是一个命令“前进”。正如我们看到的,这个命令的功能forwardmotor()将被称为。

步骤11:Android应用程序:操作误差

Android的应用程序:操作误差

如果有错误发生,例如当你说出语音指令不被nodemcu认可,上述地块将写在最后一行的错误详细信息(comm_status)的应用程序在上面的照片所示。

步骤12:最后的测试

最后的测试

你可以创建你的应用程序一步一步像前一步骤显示或上传我的完整的项目(。AIA)在MIT App Inventor修改为你所需要的。如果你还没有在开发Android应用程序的经验,您可以执行。apk文件直接在你的Android设备。

两者的。友邦和apk文件可以从GitHub下载我的:

wifi_voice_robot_ctrl_v2.aia

wifi_voice_robot_ctrl_v2.apk

下面的视频显示与应用程序的一些电机试验:

步骤13:结论

结论

一如既往,我希望这个项目可以帮助别人在电子的精彩世界找到自己的方式,机器人和物联网!

请访问我的文件重新更新:

无线语音控制机器人

更多的项目,请访问我的博客:mjrobot.org

从南部的世界向你!

在我看到你下命令!

谢谢你


(责任编辑:admin)
织梦二维码生成器
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片