Yoxios 游芯科技 技术论坛

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 129|回复: 1

X3 开发板外接ESP8266控制小车

[复制链接]

1

主题

1

帖子

19

积分

新手上路

Rank: 1

积分
19
QQ
发表于 2020-6-2 09:14:30 | 显示全部楼层 |阅读模式
一、硬件配置参考:http://bbs.yoxios.com/forum.php? ... &extra=page%3D1

ESP8266引脚和接线(官方论坛提供的接口)
X3开发板ESP8266模块
VCC3.3VCC
GND

GND

U2TXRX
U2RXTX
普通IO / 悬空RST
SPICSCH_PD/EN
这里我做的唯一和论坛的区别是在硬件上将WIFI使能管脚(CH_PD/EN)直接接到3.3V,这样软件上不需要使能该管脚,上电即使能。
二、 UI布局
三、代码逻辑

这个项目的核心代码主要是在jni/logic/mainlogic.cc这个文件下编写,参考官网及论坛demo后修改程序如下:

mainLogic.cc

#include <stdlib.h>
#include <iostream>
#include "string"
#include "uart/ProtocolSender.h"
#include "uart/UartContext.h"

string sendMsg, showMsg;
bool WifiConnet = false;
struct {
        string name;
        string password;
        string IP;
        string port;
} WifiConFig;

/**
* 串口数据回调接口
*/
static void onProtocolDataUpdate(BYTE *key, int readNum) {
        // 串口数据回调接口
        char* p = new char[readNum];
        memcpy(p, key, readNum);
        p[readNum] = 0;
        if (strstr(p, "ready") != NULL) {
                showMsg = "";
                mTextView3Ptr->setText(showMsg);
                return;
        }
        showMsg += p;
        mTextView3Ptr->setText(showMsg);
}

static void WifiReset() {
        string s = "AT+CWMODE=1\r\n";
        UARTCONTEXT->send((BYTE *)s.c_str(),s.length());
        s = "AT+RST\r\n";
        UARTCONTEXT->send((BYTE *)s.c_str(),s.length());
        mTextView3Ptr->setText("wifi 初始化");
}

static void WifiConnect() {
        WifiConFig.name = "Smart_Car";
        WifiConFig.password = "12345678";
        string s = "AT+CWJAP=\"" + WifiConFig.name + "\",\"" + WifiConFig.password
                        + "\"\r\n";
        UARTCONTEXT->send((BYTE *)s.c_str(),s.length());
        mTextView3Ptr->setText("wifi 连接");
}

static void WifiTCPConnect() {
        string s = "AT+CIPMUX=0\r\n";
        UARTCONTEXT->send((BYTE *)s.c_str(),s.length());
        usleep(500000);
        s = "AT+CIPMODE=1\r\n";
        UARTCONTEXT->send((BYTE *)s.c_str(),s.length());
        usleep(500000);
        //连接服务器
        WifiConFig.IP = "192.168.4.1";
        WifiConFig.port = "8080";
        s = "AT+CIPSTART=\"TCP\",\"" + WifiConFig.IP + "\"," + WifiConFig.port
                        + "\r\n";
        UARTCONTEXT->send((BYTE *)s.c_str(),s.length());
        usleep(100000);
        //进入透传模式
        s = "AT+CIPMODE=1\r\n";
        UARTCONTEXT->send((BYTE *)s.c_str(),s.length());
        usleep(100000);
        //开始透传数据
        s = "AT+CIPSEND\r\n";
        UARTCONTEXT->send((BYTE *)s.c_str(),s.length());
        usleep(100000);
        mTextView3Ptr->setText("TCP 连接");
        mTextView5Ptr->setText("Smart_Car 192.168.4.1 8080");
}

/**
* 定时器触发函数
* 不建议在此函数中写耗时操作,否则将影响UI刷新
* 参数:id
*         当前所触发定时器的id,与注册时的id相同
* 返回值: true
*             继续运行当前定时器
*         false
*             停止运行当前定时器
*/
static bool onUI_Timer(int id) {
        //Tips:添加定时器响应的代码到这里,但是需要在本文件的 REGISTER_ACTIVITY_TIMER_TAB 数组中 注册
        //id 是定时器设置时候的标签,这里不要写耗时的操作,否则影响UI刷新,ruturn:[true] 继续运行定时器;[false] 停止运行当前定时器
        switch (id) {
        case 0:
                WifiConnect();
                return false;
                break;
        case 1:
                WifiTCPConnect();
                return false;
                break;
        default:
                break;
        }
        return true;
}

/**
* 有新的触摸事件时触发
* 参数:ev
*         新的触摸事件
* 返回值:true
*            表示该触摸事件在此被拦截,系统不再将此触摸事件传递到控件上
*         false
*            触摸事件将继续传递到控件上
*/
static bool onmainActivityTouchEvent(const MotionEvent &ev) {
        switch (ev.mActionStatus) {
        case MotionEvent::E_ACTION_DOWN:        //触摸按下
                LOGD("时刻 = %ld 坐标  x = %d, y = %d", ev.mEventTime, ev.mX, ev.mY);

                //前进
                if (ev.mX > 180 && ev.mX < 290 && ev.mY > 70 && ev.mY < 106) {
                        string s = "GO\r\n";
                        UARTCONTEXT->send((BYTE *)s.c_str(),s.length());
                }
                //后退
                if(ev.mX > 180 && ev.mX < 290 && ev.mY > 180 && ev.mY < 208)
                {
                        string s = "BACK\r\n";
                        UARTCONTEXT->send((BYTE *)s.c_str(),s.length());
                }
                //左
                if(ev.mX > 65 && ev.mX < 131 && ev.mY > 128 && ev.mY < 165)
                {
                        string s = "LEFT\r\n";
                        UARTCONTEXT->send((BYTE *)s.c_str(),s.length());
                }
                //右
                if(ev.mX > 298 && ev.mX < 400 && ev.mY > 131 && ev.mY < 166)
                {
                        string s = "RIGHT\r\n";
                        UARTCONTEXT->send((BYTE *)s.c_str(),s.length());
                }

                break;
                case MotionEvent::E_ACTION_MOVE:                        //触摸滑动
                break;
                case MotionEvent::E_ACTION_UP://触摸抬起
                LOGD("按键抬起");
                string s = "STOP\r\n";
                UARTCONTEXT->send((BYTE *)s.c_str(),s.length());
                break;
                default:
                break;
        }
        return false;
}

//连接小车
static bool onButtonClick_Button5(ZKButton *pButton) {
        LOGD(" ButtonClick Button5 !!!\n");
        WifiReset();
        mActivityPtr->registerUserTimer(0, 3000);
        mActivityPtr->registerUserTimer(1, 8000);
        return false;
}

其中小车部分控制逻辑参考:

[color=var(--weui-LINK)]圆曾经的小车梦,造一台智能小车(四)之QT上位机控制小车

https://mp.weixin.qq.com/s?__biz=MzA3MjMzNTc4NA==&mid=2649000197&idx=2&sn=e99bdcb8397b438843b1c5c87a95fdfa&chksm=870fc1c2b07848d4db16bd5bd7c0a65efe2da6c6acac7116f8c5e68cb9fa6e549879c0dc0d0a&scene=21#wechat_redirect

[color=var(--weui-LINK)]圆曾经的小车梦,造一台智能小车(三)之小车前进后退左右转基本框架

https://mp.weixin.qq.com/s?__biz=MzA3MjMzNTc4NA==&mid=2649000128&idx=1&sn=d986eba52a862604846b3e52c96b7d5d&chksm=870fc007b0784911b766cf64f391147490889b7bdccdf3cd2a6887d6f2c00e0a478194a9fd04&scene=21#wechat_redirect

四、运行结果

参考:

https://mp.weixin.qq.com/s?__biz=MzA3MjMzNTc4NA==&mid=2649000366&idx=1&sn=4d5417dc80b5b012b055c48d4b6e2851&chksm=870fc169b078487f7851e09fed6efd94a9698f9dfbffd7428e4414d97342624ba9f0b5d55595&token=1286262349&lang=zh_CN#rd






yoxios.rar

7.49 MB, 下载次数: 0

回复

使用道具 举报

7

主题

10

帖子

91

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
91
发表于 2020-6-2 10:35:09 | 显示全部楼层
感谢分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Yoxios BBS ( 粤ICP备19148879号-1 )

GMT+8, 2020-7-5 15:44 , Processed in 0.029703 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表