最简单DIY串口蓝牙硬件实现方案

51单片机物联网智能小车系列文章目录


第一篇:最简单DIY的51蓝牙遥控小车设计方案
第二篇:最简单DIY串口蓝牙硬件实现方案



前言

    daodanjishui物联网核心原创技术之最简单DIY串口蓝牙硬件实现方案。
    市面上有各种开源智能小车,但是有复杂的有简单的,如果想快速入门DIY物联网智能小车蓝牙控制器,这个方案会给你一个快捷高效的方案。


一、最简单DIY串口蓝牙硬件实现方案是什么?

    在第一篇实现了51单片机智能小车,不过那时候是用手机蓝牙调试助手来发送遥控指令控制小车的。原因是入门不需要太复杂,那现在需要做一个蓝牙遥控器来代替手机蓝牙,所以我就用到了ESP32单片机,因为这个单片机具有蓝牙功能。
    虽然市面上也有不少开源的智能小车遥控器方案,还有自己小时候也玩过不少无线遥控的航模,但是全部由自己软件硬件全部独立设计的方案到几年前才正式实现,现在用文字的形式记录下来,对自己童年时代深刻地回忆和对未来技术的展望。“闭门造遥控器”虽然有点痛苦,但是当你看到自己亲手做的小车在地上通过自制的蓝牙遥控器遥控动起来的时候,你会发现一切的付出都是值得的!小车的全家福如下图所示:
在这里插入图片描述
51单片机最小系统板如下:
在这里插入图片描述
自制串口蓝牙遥控器如下所示:
在这里插入图片描述
遥控器与小车全家福如下:
在这里插入图片描述
通过电脑的串口调试助手发送控制指令,这个ESP32单片机就会把串口的控制指令通过无线蓝牙发送出去,智能小车的串口蓝牙模块收到蓝牙信息之后就控制小车行进了。串口调试助手的信息如下图所示:
在这里插入图片描述
优酷视频入口:https://player.youku.com/embed/XNDg5ODQ4NzUzMg==

直接观看视频

ESP32充当电脑串口蓝牙遥控蓝牙设备

二、制作步骤

1.搭建ESP32开发环境

1.1获取ESP32单片机,ESP32DEVKITV1开发板,这次下载程序可以直接使用手机数据线跟ESP32连接,跟ESP32-CAM单片机不一样,CAM还需要接一个USB转TTL模块才能下载程序
单片机的外貌如下:
在这里插入图片描述
原理图如下:
在这里插入图片描述
在这里插入图片描述

1.2搭建Arduino开发环境,不会搭建开发环境的读者可以到:https://www.cirmall.com/circuit/19141 自行按照说明搭建。

2.下载代码

    这个Arduino ESP32单片机的蓝牙代码也是相当精简,虽然是自己原创写的,但是也是经过严格的推敲和验证。很多读者不会编写蓝牙通信代码的话建议好好看看我这个代码了!代码截图如下:
在这里插入图片描述
截图的第一个箭头表示的是我智能小车使用的串口蓝牙模块的蓝牙热点名称和密码(串口蓝牙一上电就会生成这个热点的,一般是的得到回来就写死的,读者可以根据自己的串口蓝牙模块去调整源码的账号和密码,这是成功的关键)

//This example code is in the Public Domain (or CC0 licensed, at your option.)
//By Victor Tchistiak - 2019
//
//This example demostrates master mode bluetooth connection and pin 
//it creates a bridge between Serial and Classical Bluetooth (SPP)
//this is an extention of the SerialToSerialBT example by Evandro Copercini - 2018
//
//author by:daodanjishui 2020.10.10
#include "BluetoothSerial.h"
BluetoothSerial SerialBT;
String MACadd = "AA:BB:CC:11:22:33";
uint8_t address[6]  = {0xAA, 0xBB, 0xCC, 0x11, 0x22, 0x33};
//uint8_t address[6]  = {0x20, 0x18, 0x04, 0x15, 0x25, 0x13};
//String name = "OBDII";
String name = "HC-05";
char *pin = "1234"; //<- standard pin would be provided by default
bool connected;
void setup() {
  Serial.begin(115200);
  //SerialBT.setPin(pin);
  SerialBT.begin("ESP32test", true); 
  //SerialBT.setPin(pin);
  Serial.println("The device started in master mode, make sure remote BT device is on!");
  
  // connect(address) is fast (upto 10 secs max), connect(name) is slow (upto 30 secs max) as it needs
  // to resolve name to address first, but it allows to connect to different devices with the same name.
  // Set CoreDebugLevel to Info to view devices bluetooth address and device names
  connected = SerialBT.connect(name);
  //connected = SerialBT.connect(address);
  
  if(connected) {
    Serial.println("Connected Succesfully!");
  } else {
    while(!SerialBT.connected(10000)) {
      Serial.println("Failed to connect. Make sure remote device is available and in range, then restart app."); 
    }
  }
  // disconnect() may take upto 10 secs max
  if (SerialBT.disconnect()) {
    Serial.println("Disconnected Succesfully!");
  }
  // this would reconnect to the name(will use address, if resolved) or address used with connect(name/address).
  SerialBT.connect();
}

void loop() {
  if (Serial.available()) {
    SerialBT.write(Serial.read());
  }
  if (SerialBT.available()) {
    Serial.write(SerialBT.read());
  }
  delay(20);
}

    程序说明:用的是arduino写的工程,读者可以慢慢斟酌,如果为了成功,可以跟我获取一样型号的串口蓝牙模块。

3.根据软件和硬件完成硬件连接

通过安卓数据线连接ESP32和电脑,如“遥控器与小车全家福”图所示
用电脑串口调试助手发指令给小车可以实现有线控制小车行走,如“串口调试助手的信息”图所示。
注意了串口调试助手是arduino默认的“串口监视器”测试的。

三、仿真与调试

1. 准备好硬件,小车上电和打开arduino“串口监视器”,输入指令,点击发送。

如图所示:
在这里插入图片描述
左下角的箭头是默认发送\r\n的意思。
比如FFF\r\n是前进,
下面是后退:BBB\r\n
下面是左转: LLL\r\n
最后是右转: RRR\r\n(以此类推)

2. 接收小车返回的响应

看上面的截图,收到:FFF说明小车响应了前进指令。
后面以此类推。

输入FFF,点击“发送”按钮,小车就前进,串口调试窗口就看到小车回复了FFF,输入BBB就是倒退,左转是LLL,右转是RRR。
注意波特率是115200


总结

    小车是用ESP32单片机替代了安卓手机蓝牙调试助手从而用电脑串口调试助手发送指令的形式来控制的,所以说是最简单的蓝牙遥控小车遥控器DIY。不过加上舵机和机械手和操控摇杆或者是手机控制app,就变得高端了,敬请期待。这个版本是开源的,但是功能还是很齐全和强大的,代码也写得通俗易懂,不拖泥带水。
代码工程下载链接:https://www.cirmall.com/circuit/20409/
点我直接跳转

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
上一期免费开源项目中,我最新发布了:最简单DIY的51蓝牙遥控小车设计方案,地址是:https://www.cirmall.com/circuit/20328当时测试用的是手机蓝牙调试助手来遥控智能小车的,那么这次开源免费项目中,我要用ESP32实现串口蓝牙的功能来完全替代手机蓝牙调试助手来无线控制蓝牙智能小车。 优酷视频演示地址: 友情提示:蓝牙控制的设备是智能小车,想下载的买家可以到上面的网址免费下载,配套使用的。本次设计采用Arduino开发环境编写ESP32 C++程序,不会搭建开发环境的买家可以到:https://www.cirmall.com/circuit/19141自行按照说明搭建,这次为了改变口味,我用的是ESP32DEVKITV1开发板,价格更低十几块在某宝就能买到,这次下载程序可以直接使用手机数据线跟ESP32连接,在arduino里面直接点击下载就可以把程序下载进去了。 彩图如下: 科普一下:串口蓝牙就是模块设定为master模式,自动连上蓝牙设备-智能小车(client模式),不需要使用AT指令(我这个方案的优势),连上蓝牙设备之后将串口的数据通过蓝牙方式转发出去(注意我用的不是串口蓝牙模块),最后达到遥控蓝牙智能小车的效果,我现在用arduino自带的串口调试助手来测试。 下面是全家福照片: 下面是本次项目的主角: 源码代码截图: 注意了:我用的蓝牙设备-智能小车上安装的是串口蓝牙模块的型号是HC-05,所以我的串口蓝牙遥控器编写的程序里面写死了适配蓝牙的名字和密码,买家根据自己的情况来修改了。 下面是串口调试截图: 按照图上的配置信息配置,烧录源码,重启,输入FFF,点击“发送”按钮,小车就前进,串口调试窗口就看到小车回复了FFF,输入BBB就是倒退,左转是LLL,右转是RRR。 稍微说一下程序原理:电脑串口传输字符串给ESP32ESP32将字符串通过蓝牙天线发送给智能小车,智能小车的串口蓝牙接收到信号之后触发串口中断,在中断服务程序执行控制小车行动的逻辑,然后再返回一个相同的字符串给ESP32ESP32接收到字符串之后打印到电脑串口显示端上显示出来。 下一期我将会用ESP32DEVKITV1开发板做一个脱离电脑串口蓝牙遥控器,通过摇杆AD转换成蓝牙控制信号来控制智能小车,敬请期待。
实现蓝牙无线通信的串口助手,您可以按照以下步骤进行操作: 1. 首先,确保您的串口助手项目已经创建并配置了串口通信功能。您可以使用Qt的QSerialPort类来实现串口通信,需要在项目中包含相关的头文件。 2. 添加蓝牙模块并初始化。您需要在项目中添加蓝牙模块的支持,并在代码中初始化蓝牙模块。在Qt中,可以使用QBluetooth类和相关的类来实现蓝牙通信。 3. 搜索可用的蓝牙设备。您可以使用QBluetoothDeviceDiscoveryAgent类来搜索附近的蓝牙设备。通过连接相应的信号和槽函数,您可以获取搜索到的设备列表并在界面上显示出来。 4. 连接到选定的蓝牙设备。当用户选择要连接的设备时,您可以使用QBluetoothSocket类来建立与设备蓝牙连接。通过连接相应的信号和槽函数,您可以处理连接成功或失败的事件,并在界面上显示相关信息。 5. 实现蓝牙通信。一旦成功建立了蓝牙连接,您可以使用QBluetoothSocket类提供的函数来发送和接收数据。根据您的需求,您可以选择使用文本传输或二进制传输等方式进行通信。 6. 处理接收到的数据。当蓝牙设备发送数据时,您可以使用QBluetoothSocket类提供的信号和槽函数来获取接收到的数据,并在界面上显示或处理。 7. 添加适当的信号和槽函数来处理用户交互和蓝牙设备的事件。例如,当用户点击连接按钮时,您可以调用蓝牙API来连接到选定的设备,并在连接成功或失败时显示相应的信息。 8. 编译并运行您的应用程序进行调试。您可以使用Qt Creator中的调试工具来跟踪和修复可能出现的问题。 请注意,上述步骤提供了一个基本的框架,您可以根据自己的需求进行调整和扩展。具体的代码实现会根据您使用的蓝牙模块和串口助手项目的要求而有所不同。如果您有任何其他问题,请随时提问。祝您成功完成蓝牙无线通信的串口助手开发!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

daodanjishui

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值