用户
 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

点击进入授权页面

只需一步,快速开始

  • QQ空间
  • 回复
  • 收藏

  • TA的每日心情
    开心
    2017-2-23 14:39
  • 签到天数: 124 天

    [LV.7]常住居民III

    参加活动: 0

    组织活动: 0

    电磁波 金牌会员 2016-12-15 22:13 楼主
    本帖最后由 电磁波 于 2016-12-27 17:26 编辑

    上一篇帖子说了
      《esp8266_01+arduino小车--简述用vs2013开发arduino程序
             http://www.arduino.cn/forum.php? ... 31886&fromuid=47909

    这次添加了单片机,将esp01接在arduino uno r3[简称r3],利用上位机软件和esp01通讯。

    开发环境:
    windows10 专业版
    vs2013+arduino插件,arduino ide 1.6.12

    下面是esp01和r3接线图:
    01.png
    下面是arduino代码:
    [C] 纯文本查看 复制代码
    #define DHT11PIN 2
    
    #define IN1 6 // 7 6 右轮
    #define IN2 7 
    #define IN3 4 // 5 4 左轮
    #define IN4 5 
    
    int count = 1;
    int num = 0;
    int statu = 0;//0 未连接  1连接
    //初始化arduino输出引脚
    void init_arduino_pin()
    {
            pinMode(IN1, OUTPUT);
            pinMode(IN2, OUTPUT);
            pinMode(IN3, OUTPUT);
            pinMode(IN4, OUTPUT);
    
            //默认全是低电平 停止状态
            digitalWrite(IN1, LOW);
            digitalWrite(IN2, LOW);
            digitalWrite(IN3, LOW);
            digitalWrite(IN4, LOW);
    }
    
    
    //控制小车 esp01初始化设置
    int init_controlcar_setup()
    {
    
            Serial.begin(115200);
            delay(3000);
            Serial.println("AT");//发送一条指令确认一下
            JudgeRev_controlcar(count);
            Serial.println("AT+CIPSTART=\"TCP\",\"192.168.31.125\",6000");//监听本地电脑端口 
            JudgeRev_controlcar(count);
            Serial.println("AT+CIPMODE=1");//设置为客户端模式
            JudgeRev_controlcar(count);
            count = 2;//
            Serial.println("AT+CIPSEND");////打开透传模式
            JudgeRev_controlcar(count);
            Serial.println("Car");
            count = 4;
            statu = 1;
    }
    //判断本地电脑指令执行结果。
    int JudgeRev_controlcar(int count)
    {
            int result = 0;
            String data = "";
            while (Serial.available() > 0){
                    char c = Serial.read();
                    data += c;
                    if (count == 1)
                    {
                            if (data.indexOf("OK") != -1)
                            {
                                    //Serial.println("---OK");
                                    result = 1;
                                    break;
                            }
                    }
                    else if (count == 2)
                    {
                            if (data.indexOf(">") != -1)
                            {
                                    //Serial.println("--->");
                                    result = 1;
                                    break;
                            }
                    }
                    else if (count == 4)
                    {
                            if (data.indexOf("Left") != -1)//判断服务器返回字段标识
                            {
                                    turnLeft();
                                    Serial.println("Left");
    
                                    break;
                            }
                            if (data.indexOf("Right") != -1)//判断服务器返回字段标识
                            {
                                    turnRight();
                                    Serial.println("Right");
                                    break;
                            }
                            if (data.indexOf("Back") != -1)//判断服务器返回字段标识
                            {
                                    back();
                                    Serial.println("Back");
                                    break;
                            }
                            if (data.indexOf("Forward") != -1)//判断服务器返回字段标识
                            {
                                    go();
                                    Serial.println("Forward");
                                    break;
                            }
                            if (data.indexOf("Stop") != -1)//判断服务器返回字段标识
                            {
                                    stopCar();
                                    Serial.println("Stop");
                                    break;
                            }
                            if (data.indexOf("SeverSend") != -1)
                            {
    
                            }
                            else{
                                    statu = 0;
                            }
                    }
                    delay(10);
            }
            return result;
    }
    /**
    * 左转
    */
    void turnLeft(){
            digitalWrite(IN1, HIGH);
            digitalWrite(IN2, LOW);         //右轮前进
            digitalWrite(IN3, LOW);
            digitalWrite(IN4, LOW);         //左轮不动
    }
    
    /**
    * 右转
    */
    void turnRight(){
            digitalWrite(IN1, LOW);
            digitalWrite(IN2, LOW);         //右轮不动
            digitalWrite(IN3, HIGH);
            digitalWrite(IN4, LOW);         //左轮前进
    }
    
    /**
    * 前进
    */
    void go(){
            digitalWrite(IN1, HIGH);
            digitalWrite(IN2, LOW);         //右轮前进
            digitalWrite(IN3, HIGH);
            digitalWrite(IN4, LOW);         //左轮前进
    }
    
    /**
    * 倒车
    */
    void back(){
            digitalWrite(IN1, LOW);
            digitalWrite(IN2, HIGH);        //右轮后退
            digitalWrite(IN3, LOW);
            digitalWrite(IN4, HIGH);        //左轮后退
    }
    
    /**
    * 停车
    */
    void stopCar(){
            digitalWrite(IN1, LOW);
            digitalWrite(IN2, LOW);
            digitalWrite(IN3, LOW);
            digitalWrite(IN4, LOW);
    }
    void setup()
    {
            init_arduino_pin();
            init_controlcar_setup();
    }
    
    void loop()
    {
    
            JudgeRev_controlcar(count);
            delay(50);
            if (num % 30 == 0)
            {
                    Serial.print("Car");
                    //Serial.print("Humidity (%): ");
            }
            num++;
    }
    


    下面是esp01和上位机通讯 图片
    02.png

    03.png

    1.esp01的杜邦线别太长,可能会出现异常。
    2.程序烧到arduino中,插上esp01 按一下arduino的重启键,然后再观察端口输出窗口的输出信息。


      《esp8266_01和上位机通讯 esp8266_01和串口软件通讯
    http://www.arduino.cn/forum.php? ... 31864&fromuid=47909 (出处: Arduino中文社区)





    评分

    参与人数 1金币 +9 收起 理由
    奈何col + 9 赞一个!

    查看全部评分

    路过 给楼主点赞
    打赏作者鼓励一下!

    谢谢博哥支持。
    謝謝教學,又學到一點了,感謝。
                            
    哥们,又发了一个好贴啊!
    z586 发表于 2016-12-17 07:54
    哥们,又发了一个好贴啊!

    ,谢谢。
    用串口调试软件调试完后,用手机连能给它发字符,用用串口调试软件也能收到,可是一连arduino板子就蓝灯一直闪,然后一会能连手机,一会就断???楼主遇到过这种情况没,帮帮忙
    靳靳 发表于 2017-1-3 19:49
    用串口调试软件调试完后,用手机连能给它发字符,用用串口调试软件也能收到,可是一连arduino板子就蓝灯一 ...

    我也不稳定。网上搜说是需要一个独立的稳定的电源,esp01对电源要求比较严格。
    电磁波 发表于 2017-1-3 19:51
    我也不稳定。网上搜说是需要一个独立的稳定的电源,esp01对电源要求比较严格。 ...

    我独立供电而且还加了3.3伏稳压模块
    12下一页
    发新帖
    发表评论
    高级模式  
    您需要登录后才可以回帖 登录 | 立即注册  
    关闭

    推荐主题 上一条 /4 下一条