我是靠谱客的博主 甜美指甲油,最近开发中收集的这篇文章主要介绍利用MCU实现制作一台蓝牙控制小车方法第一: 基本简介第二:材料准备第三:ESP软件环境搭建第四:安卓APP软件第五:实例演示,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

     

目录

第一: 基本简介

第二:材料准备

第三:ESP软件环境搭建

第四:安卓APP软件

第五:实例演示


    今天主要和大家分享一下,如何使用MCU自己做一台蓝牙小车,并通过自己写的APP进行控制。

第一: 基本简介

     看见小孩们经常玩的玩具小车,就想了解里面的结构,为什么遥控器可以控制小车动作,熟悉其中的原理,准备实现一下。采用ESP32开发方案,里面集成了WIFI和蓝牙两种通信方式,并且可以进行二次开发。

第二:材料准备

 

1、可以在淘宝上,选择一款亚克力的小车,直接组装,里面有四组电机,另外,需要选择L298作为电机的驱动器,

2、选择一款ESP32开发板,利用模组,方便开发。

 3、硬件搭建,底盘接线可以采用十字交叉,满足两遍一起前进后退,然后引出两根接控制器。之后在ESP32这边接线,我们对接32,33,25,26。四个IO口。

 控制器采用国产,RZ7899这颗芯片专门的电机驱动,利用两个IO,一高一低就能输出,相反就会输出反向电平。

第三:ESP软件环境搭建

      到这里我们进入最关键的环节,需要进行ESP32和安卓端APP的开发了。

我们搭建VS code加ESP IDF开发方案,需要用到python 版本要大于3.7。这里选择3.8。
还有ESP idf的压缩包,这里选择4.2版本的,还有安装工具,esp-idf-tools-setup-2.3。之后一个dist是安装idf时会下载的压缩包,因为下载慢,所以我们压缩了一份。
 

接下来就是在VS Code中安装idf拓展工具,步骤可以查阅网上。

安装完选择配置。快捷键ctrl+shift+p,然后输入搜索:configure。

然后进去选择本地环境,还是会继续下载安装,安装完成会有提示的。

之后我们创建例程,这里我选择低功耗蓝牙,不选择经典蓝牙了。

     提供了非常多的蓝牙例程的,有经典蓝牙和低功耗蓝牙的。我们直接打开例程gatt_server即可。然后添加代码主要是GPIO初始化。
 

void car_gpio_init()

{

 

    gpio_pad_select_gpio(left_advance_gpio);

    /* Set the GPIO as a push/pull output */

    gpio_set_direction(left_advance_gpio, GPIO_MODE_OUTPUT);

 

    gpio_pad_select_gpio(left_retreat_gpio);

    /* Set the GPIO as a push/pull output */

    gpio_set_direction(left_retreat_gpio, GPIO_MODE_OUTPUT);

 

    gpio_pad_select_gpio(right_advance_gpio);

    /* Set the GPIO as a push/pull output */

    gpio_set_direction(right_advance_gpio, GPIO_MODE_OUTPUT);

 

    gpio_pad_select_gpio(right_retreat_gpio);

    /* Set the GPIO as a push/pull output */

    gpio_set_direction(right_retreat_gpio, GPIO_MODE_OUTPUT);

 

    // led_off();

 

 

    left_advance_off();

    left_retreat_off();

    right_advance_off();

    right_retreat_off();

}

 

void left_advance_on(void)

{

    gpio_set_level(left_advance_gpio, 1);

}

 

void left_advance_off(void)

{

    gpio_set_level(left_advance_gpio, 0);

}

 

void left_retreat_on(void)

{

    gpio_set_level(left_retreat_gpio, 1);

}

 

void left_retreat_off(void)

{

    gpio_set_level(left_retreat_gpio, 0);

}

 

void right_advance_on(void)

{

    gpio_set_level(right_advance_gpio, 1);

}

 

void right_advance_off(void)

{

    gpio_set_level(right_advance_gpio, 0);

}

 

 

void right_retreat_on(void)

{

    gpio_set_level(right_retreat_gpio, 1);

}

 

void right_retreat_off(void)

{

    gpio_set_level(right_retreat_gpio, 0);

}

小车IO初始化

#define left_advance_gpio 26

#define left_retreat_gpio 25

 

#define right_advance_gpio 32

#define right_retreat_gpio 33

 

void car_gpio_init();

 

void left_advance_on(void);

void left_advance_off(void);

 

void left_retreat_on(void);

void left_retreat_off(void);

 

void right_advance_on(void);

void right_advance_off(void);

 

void right_retreat_on(void);

void right_retreat_off(void);

头文件声明。

其gatt_demo是会创建两个服务的,一个服务a,一个服务b,这里面我们挑选服务a修改。在其接收event中完成其小车控制。
 

if(param->write.value[0] == 0x00)

            {

                left_advance_off();

                left_retreat_off();

                right_advance_off();

                right_retreat_off();

            }

            else if(param->write.value[0] == 0x01)   //前进

            {

                // left_retreat_on();

 

                // right_retreat_on();

 

                left_advance_on();

 

                right_advance_on();

            }

            else if(param->write.value[0] == 0x02)   //后退

            {

                left_retreat_on();

 

                right_retreat_on();

            }

            else if(param->write.value[0] == 0x03)   //左转

            {

                left_advance_on();

 

                right_retreat_on();

            }

            else if(param->write.value[0] == 0x04)   //右转

            {

                left_retreat_on();

 

                right_advance_on();

            }

分析:每次我们只发送一个字节,然后根据不同字节判断,执行响应的指令。到这里ESP终端代码就完成了,我们还需要一个蓝牙app,去控制。
 

第四:安卓APP软件

    可以利用安卓的串口调试软件app,可以直接用串口调试的方式来控制小车。

连接上例程之后找到服务然后发送对应的hex即可。

下面介绍下用QT开发我们的APP,首先QT安装一定要是要勾选上了Android的,不然我们是不能开发安卓的。这里我的QT版本是5.14.2.

之后在选项中选择设备,添加JDK,Android SDK ,Android NDK这些,版本也需要对应,这样都打勾了就是可以开发了。
 

在pro中添加对蓝牙的支持。本源码我是找了网上的代码的,主要就是低功耗蓝牙QT开发。

这里面用到的都是低功耗蓝牙的头文件。

利用QT强大的界面设计功能,主要是小车部分自己添加了。然后转到每个对应的槽函数中,我们用到的是按压和释放两个槽函数,这样就是实现小车按下动作,松开就停。

//小车前进

void MainWindow::on_pushButton_pressed()

{

    QByteArray a;

    a.append(0x01);

    btConnect->m_service->writeCharacteristic(btConnect->m_characteristic,a,QLowEnergyService::WriteMode::WriteWithoutResponse);

}

 

void MainWindow::on_pushButton_released()

{

    char b =0x00;

    QByteArray a;

    a.append(b);

    btConnect->m_service->writeCharacteristic(btConnect->m_characteristic,a,QLowEnergyService::WriteMode::WriteWithoutResponse);

}

 

 

 

void MainWindow::on_pushButton_2_pressed()

{

    QByteArray a;

    a.append(0x02);

    btConnect->m_service->writeCharacteristic(btConnect->m_characteristic,a,QLowEnergyService::WriteMode::WriteWithoutResponse);

}

 

void MainWindow::on_pushButton_2_released()

{

    char b =0x00;

    QByteArray a;

    a.append(b);

    btConnect->m_service->writeCharacteristic(btConnect->m_characteristic,a,QLowEnergyService::WriteMode::WriteWithoutResponse);

}

 

 

 

void MainWindow::on_pushButton_3_pressed()

{

    QByteArray a;

    a.append(0x03);

    btConnect->m_service->writeCharacteristic(btConnect->m_characteristic,a,QLowEnergyService::WriteMode::WriteWithoutResponse);

}

 

void MainWindow::on_pushButton_3_released()

{

    char b =0x00;

    QByteArray a;

    a.append(b);

    btConnect->m_service->writeCharacteristic(btConnect->m_characteristic,a,QLowEnergyService::WriteMode::WriteWithoutResponse);

}

 

void MainWindow::on_pushButton_4_pressed()

{

    QByteArray a;

    a.append(0x04);

    btConnect->m_service->writeCharacteristic(btConnect->m_characteristic,a,QLowEnergyService::WriteMode::WriteWithoutResponse);

}

 

void MainWindow::on_pushButton_4_released()

{

    char b =0x00;

    QByteArray a;

    a.append(b);

    btConnect->m_service->writeCharacteristic(btConnect->m_characteristic,a,QLowEnergyService::WriteMode::WriteWithoutResponse);

}

到这里我们能编译两个版本一个msvc版本的,在win上必须使用MSVC才能连接低功耗蓝牙,miniGW是不行的,还有安卓端。

 

第五:实例演示

      

 实例代码参考链接:

https://download.csdn.net/download/weixin_41114301/86509128

最后

以上就是甜美指甲油为你收集整理的利用MCU实现制作一台蓝牙控制小车方法第一: 基本简介第二:材料准备第三:ESP软件环境搭建第四:安卓APP软件第五:实例演示的全部内容,希望文章能够帮你解决利用MCU实现制作一台蓝牙控制小车方法第一: 基本简介第二:材料准备第三:ESP软件环境搭建第四:安卓APP软件第五:实例演示所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(68)

评论列表共有 0 条评论

立即
投稿
返回
顶部