公告:新满多没有杂乱广告的网站, 请大家收藏!很好记,域名是 新满多 拼音!xinmanduo.com ! 更简洁好记的 ykyh.net

您的当前位置:首页 > 科技小制作 > 正文 -- 手机或者平板访问

与nodemcu WiFi语音控制机器人

来源:未知 编辑:晚一步 时间:2018-05-28
与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

与nodemcu WiFi语音控制机器人

为了驱动电机,我们将用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:移动机器人

        与nodemcu WiFi语音控制机器人

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

        我们将定义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 WiFi语音控制机器人

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

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

        这是很好的简化试验,引进“开始你的机器人按钮”。我们将它安装在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:装配机器人的身体

        与nodemcu WiFi语音控制机器人
 
手机扫描本二维码

分享创意到朋友圈
上一篇:基于Arduino的GSM短信远程控制单元
下一篇:没有了

网友评论:



Copyright © 2006-2017 新满多 渝ICP备11004546号-1

如有侵犯,请联系我们:Gaocheng365@live.com

Top