HC-05与HC-06蓝牙配对零基础教程 以及openmv识别及远程传输项目的概述
这个是上一年的项目,之前弄得不怎么完整,只有一个openmv的,所以openmv自己去我主页找,这篇主要讲蓝牙
这个是我在使用openmv连接单片机1然后单片机1与单片机2通过蓝牙进行通信
最终实现的效果是:openmv识别到图形和数字然后远程传输到另外一个单片机·,另外一个单片机显示出来。


一定要注意HC05和HC06的区别
HC-06是一个四针无按键的模块,只能作为从机使用,上电后即可直接进入AT指令模式或连接模式,支持通过手机连接或串口通信,推荐设置波特率为9600。HC-05是一个六针带按键的模块,既可以作为主机也可以作为从机,通过长按按键上电可进入AT指令模式,直接上电则进入等待连接模式,其AT指令模式下的波特率为38400。两者在引脚数量、按键配置、功能模式以及默认波特率等方面存在明显差异,具体AT指令也有所不同。
对比表格
| 特性 | HC-06 | HC-05 |
|---|---|---|
| 引脚数量 | 四针 | 六针 |
| 按键 | 无按键 | 带按键 |
| 功能模式 | 只能作为从机 | 主从一体(可作为主机或从机) |
| 上电模式 | 直接上电进入AT指令或连接模式 | 长按按键上电进入AT指令模式,直接上电为等待连接模式 |
| 默认波特率 | 9600 | 38400(AT指令模式) |
| 使用场景 | 适合简单的从机应用,如与手机连接或串口通信 | 适合需要主从切换的复杂应用,功能更灵活 |
一、项目背景与目标
OpenMV是一款开源的微型机器视觉模块,它能够方便地实现图像识别功能。而单片机则是嵌入式系统中常用的控制器。通过将OpenMV与单片机结合,并利用蓝牙模块实现通信,我们可以构建一个简单的图像识别与远程显示系统。这个项目不仅可以帮助我们更好地理解机器视觉和无线通信的基本原理,还可以应用于各种实际场景,例如远程监控、智能安防等。
二、硬件准备
-
OpenMV模块:用于图像识别。
-
单片机1:用于接收OpenMV的识别结果,并通过蓝牙发送数据。
-
单片机2:用于接收蓝牙传输的数据并显示。
-
HC-05蓝牙模块:用于单片机1与单片机2之间的通信。
-
USB转TTL串口模块:用于调试和配置蓝牙模块。
-
LCD显示屏(可选):用于在单片机2上显示识别结果。
-
连接线:用于连接各个模块。
三、硬件连接
3.1 OpenMV与单片机1的连接
OpenMV可以通过串口与单片机1通信。将OpenMV的串口引脚(如TXD和RXD)连接到单片机1的串口引脚上。具体连接方式如下表所示:
| OpenMV | 单片机1 |
|---|---|
| TXD | RXD |
| RXD | TXD |
| GND | GND |
| VCC | VCC |
3.2 单片机1与HC-05蓝牙模块的连接
将HC-05蓝牙模块与单片机1连接,用于数据传输。连接方式如下表所示:
| 单片机1 | HC-05 |
|---|---|
| TXD | RXD |
| RXD | TXD |
| GND | GND |
| VCC | VCC |
3.3 单片机2与HC-05蓝牙模块的连接
同样,将另一个HC-05蓝牙模块与单片机2连接,用于接收数据。连接方式与单片机1类似:
| 单片机2 | HC-05 |
|---|---|
| TXD | RXD |
| RXD | TXD |
| GND | GND |
| VCC | VCC |
如果使用LCD显示屏,还需要将LCD显示屏连接到单片机2的相应引脚上。
四、蓝牙模块配置
4.1 配置蓝牙模块为主机和从机
为了实现单片机1与单片机2之间的通信,需要将两个HC-05蓝牙模块分别配置为主机和从机。按照以下步骤进行配置:
-
进入AT指令模式:
-
按住HC-05的复位键(或将KEY引脚与高电平连接),然后将USB转TTL模块插入电脑。
-
观察HC-05的指示灯慢闪(1秒亮一次),表示已进入AT指令模式。
-
松开复位键(KEY引脚悬空),打开串口调试助手,选择端口,波特率设置为38400。
-
-
配置主机:
-
在串口调试助手中输入以下AT指令,将一个HC-05配置为主机:
AT+NAME=Master AT+ROLE=1 AT+PSWD=12345 AT+UART=9600,0,0
-
-
配置从机:
-
将另一个HC-05配置为从机:
AT+NAME=Slave AT+ROLE=0 AT+PSWD=12345 AT+UART=9600,0,0
-
4.2 配对蓝牙模块
按照以下步骤进行蓝牙模块的配对:
-
查询蓝牙地址:
-
在主机端输入
AT+ADDR?,记录返回的地址。 -
在从机端输入
AT+ADDR?,记录返回的地址。
-
-
绑定蓝牙模块:
-
在主机端输入
AT+BIND=从机地址,例如AT+BIND=2020,09,274205。 -
在从机端输入
AT+BIND=主机地址,例如AT+BIND=2019,02,08346。
-
-
查询绑定状态:
-
在主机和从机端分别输入
AT+BIND?,如果返回的地址与绑定的地址一致,则表示绑定成功。
-
五、软件编程
5.1 OpenMV图像识别编程
在OpenMV IDE中编写程序,实现图形和数字的识别。以下是一个简单的示例代码:
Python复制
import sensor
import image
import time# 初始化传感器
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.skip_frames(time=2000)# 加载训练好的模型
net = image.load_net("trained_model.net")while(True):img = sensor.snapshot()for obj in net.classify(img, min_confidence=0.8):img.draw_string(0, 0, "Recognized: %s" % obj.output(), color=(255, 0, 0), scale=2)print("Recognized:", obj.output())
将识别结果通过串口发送到单片机1:
Python复制
import pybuart = pyb.UART(3, 9600) # 初始化串口while(True):img = sensor.snapshot()for obj in net.classify(img, min_confidence=0.8):uart.write("Recognized: %s\n" % obj.output()) # 发送识别结果
5.2 单片机1与单片机2通信编程
在单片机1上编写程序,接收OpenMV的识别结果并通过蓝牙发送到单片机2。以下是一个示例代码(以51单片机为例):
c复制
#include <reg52.h>
#include <string.h>#define UART_BAUDRATE 9600void UART_Init() {TMOD |= 0x20; // 设置定时器1为模式2TH1 = 256 - (11059200 / 12 / 32) / UART_BAUDRATE; // 设置波特率TL1 = TH1;TR1 = 1; // 启动定时器1SM0 = 0; SM1 = 1; // 设置串口为模式1REN = 1; // 允许接收ES = 1; // 开启串口中断EA = 1; // 开启全局中断
}void UART_SendString(char *str) {while (*str) {SBUF = *str++;while (!TI); // 等待发送完成TI = 0; // 清除发送标志}
}void main() {UART_Init();while (1) {// 假设从OpenMV接收到的数据存储在buffer中char buffer[50];UART_SendString(buffer); // 发送数据到单片机2}
}
在单片机2上编写程序,接收蓝牙模块传输的数据并显示在LCD屏幕上:
c复制
#include <reg52.h>
#include <lcd.h> // 假设已经包含了LCD驱动库#define UART_BAUDRATE 9600void UART_Init() {TMOD |= 0x20; // 设置定时器1为模式2TH1 = 256 - (11059200 / 12 / 32) / UART_BAUDRATE; // 设置波特率TL1 = TH1;TR1 = 1; // 启动定时器1SM0 = 0; SM1 = 1; // 设置串口为模式1REN = 1; // 允许接收ES = 1; // 开启串口中断EA = 1; // 开启全局中断
}void UART_ReceiveString(char *str) {char ch;while ((ch = SBUF) != '\n') {*str++ = ch;}相关文章:
HC-05与HC-06蓝牙配对零基础教程 以及openmv识别及远程传输项目的概述
这个是上一年的项目,之前弄得不怎么完整,只有一个openmv的,所以openmv自己去我主页找,这篇主要讲蓝牙 这个是我在使用openmv连接单片机1然后单片机1与单片机2通过蓝牙进行通信 最终实现的效果是:openmv识别到图形和数…...
如何在1分钟内编写Cursorrules
如何在1分钟内编写Cursorrules:Cursor AI用户的快速指南 编写Cursor AI的.cursorrules文件并不需要花费太多时间或显得复杂。无论你是希望定制AI编码助手的开发者,还是想确保团队编码标准一致,你都可以在短短一分钟内创建一个有效的.cursorr…...
Linux中mutex机制
在Linux中,mutex是一种用于多线程编程的同步机制,用于保护共享资源,防止多个线程同时访问或修改这些资源,从而避免竞态条件的发生。mutex 是“mutual exclusion”的缩写,意为“互斥”。 1. Mutex 的基本概念 互斥锁&…...
Transformer-GRU、Transformer、CNN-GRU、GRU、CNN五模型多变量回归预测
Transformer-GRU、Transformer、CNN-GRU、GRU、CNN五模型多变量回归预测 目录 Transformer-GRU、Transformer、CNN-GRU、GRU、CNN五模型多变量回归预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 Transformer-GRU、Transformer、CNN-GRU、GRU、CNN五模型多变量回归预…...
AMD公司
本文来自腾讯元宝 AMD(Advanced Micro Devices, Inc.)(先进的微型计算机设备)是一家全球领先的半导体公司,成立于1969年,总部位于美国加利福尼亚州圣克拉拉。AMD 主要从事设计、开发和销售计算机处理器、图…...
数字证书 与 数字签名 介绍
目录 数字签名 什么时候公钥加密数据,什么时候私钥加密数据? 消息认证码(MAC)和数字签名 区别 数字证书 如何使用数字证书验证服务器身份? 数字签名 定义:它类似于现实生活中的手写签名。 手写签名的法律…...
通过webrtc+canvas+css实现简单的电脑滤镜拍照效果
这里我们用的是webrtc中的MediaDevices.getUserMedia()的浏览器api进行的效果实现,MediaDevices.getUserMedia() 会提示用户给予使用媒体输入的许可,媒体输入会产生一个MediaStream,里面包含了请求的媒体类型的轨道。此流可以包含一个视频轨道…...
OpenLayers集成天地图服务开发指南
以下是一份面向GIS初学者的OpenLayers开发详细教程,深度解析代码: 一、开发环境搭建 1.1 OpenLayers库引入 <!-- 使用CDN引入最新版OpenLayers --> <link rel"stylesheet" href"https://cdn.jsdelivr.net/npm/ollatest/ol.c…...
VBA-Excel
VBA 一、数据类型与变量 常用数据类型: Byte:字节型,0~255。Integer:整数型,用于存储整数值,范围 -32768 到 32767。Long:长整型,可存储更大范围的整数,范围 -214748364…...
OpenHarmony 开源鸿蒙北向开发——linux使用make交叉编译第三方库
这几天搞鸿蒙,需要编译一些第三方库到鸿蒙系统使用。 头疼死了,搞了一个多星期总算搞定了。 开贴记坑。 一、SDK下载 1.下载 在linux下使用命令 wget https://cidownload.openharmony.cn/version/Master_Version/OpenHarmony_5.1.0.54/20250313_02…...
向量库特点和使用场景
开源的专用向量数据库 Milvus 特点:开源分布式向量数据库,性能强大,支持多种索引类型(如IVF、HNSW等)、多种距离度量和灵活的查询方式,社区活跃,功能丰富,适用于处理大规模向量数据和复杂的检索任务。适用场景:适用于需要高性能、高扩展性的向量检索场景,如大型AI应用…...
【第14届蓝桥杯C/C++B组省赛】01串的熵
问题描述 算法思想 首先分析题目中给出的公式 S 100时,其信息熵为 H(S)−p(0)log2(p(0)) − p(0)log2(p(0)) − p(1)log2(p(1)) 继续化简公式得 设0出现的次数为x,1出现的次数为3-x H(S)−x * p(0) * log2(p(0)) − (3-x) * p(1) * log2(p(1)…...
鸿蒙harmonyOS笔记:练习CheckBoxGroup获取选中的值
除了视觉效果实现全选和反选以外,咱们经常需要获取选中的值,接下来看看如何实现。 核心步骤: 1. 给 CheckBoxGroup 注册 onChange。 2. CheckBox 添加 name 属性。 3. 在 onChange 的回调函数中获取 选中的 name 属性。 事件:…...
收数据花式画图plt实战
目录 Python plt想把纵坐标化成对数形式代码 子图ax. 我又有ax scatter,又有ax plot,都要去对数 数字接近0,取对数没有定义,怎么办 创建数据 添加一个小的常数以避免对数未定义的问题 创建一个figure和一个子图ax 在子图a…...
系统架构书单推荐(一)领域驱动设计与面向对象
本文主要是个人在学习过程中所涉猎的一些经典书籍,有些已经阅读完,有些还在阅读中。于我而言,希望追求软件系统设计相关的原则、方法、思想、本质的东西,并希望通过不断的学习、实践和积累,提升自身的知识和认知。希望…...
Centos6配置yum源
Centos6配置yum源 为Centos6配置CentOS Vault源—防止yum源过期为Centos6配置epel源为Centos6配置ELRepo源---已ELRepo被官方清空Centos6安装dockerdocker配置国内镜像加速 为Centos6配置CentOS Vault源—防止yum源过期 参考:https://mirrors.ustc.edu.cn/help/cen…...
CVPR 2025 | 文本和图像引导的高保真3D数字人高效生成GaussianIP
小小宣传一下CVPR 2025的工作GaussianIP。 arXiv:https://arxiv.org/abs/2503.11143 Github:https://github.com/silence-tang/GaussianIP 欢迎star, issue~ 摘要 文本引导的3D人体生成随着高效3D表示及2D升维方法(如SDS)的发展…...
MySQL密码修改的全部方式一篇详解
本文将详细介绍多种修改MySQL密码的方式。 本文目录 一、alter user 语句操作步骤 二、set password操作步骤 三、直接修改 mysql.user表操作步骤 一、alter user 语句 当你以 root 用户或者拥有足够权限的用户登录 MySQL 时,可以使用 ALTER USER 语句来修改密码。…...
Cursor从小白到专家
文章目录 1:简单开发一个贪吃蛇游戏规则设置提示词 cursor开发小工具开发整体步骤创建.cursorrules输入提示词composer模式chat模式 执行cursor accept all发布到线上进行分享 cursor开发一个浏览器插件创建.cursorrulescursor rules范例集工具 输入提示词执行curso…...
使用C++在Qt框架下调用DeepSeek的API接口实现自己的简易桌面小助手
项目背景 随着DeepSeek的爆火,最近的DeepSeek也进行了新一轮技术的更新,为了拥抱新时代,我们也要不断学习新的知识,难的底层原理我们接触不到,简单的调用还能难住我们? 因为在网络上搜集到的资源都是用Py…...
Kotlin 协程基础知识汇总(一)
1、协程基础 Kotlin 是一门仅在标准库中提供最基本底层 API 以便其他库能够利用协程的语言。与许多其他具有类似功能的语言不同,async 与 await 在 Kotlin 中并不是关键字,甚至都不是标准库的一部分。此外,Kotlin 的挂起函数概念为异步操作提…...
Deepseek训练成AI图片生成机器人
目录 内容安全层 语义理解层 提示词工程层 图像生成层 交付系统 训练好的指令(复制就可以) 内容安全层 理论支撑:基于深度语义理解的混合过滤系统 敏感词检测:采用BERT+CRF混合模型,建立三级敏感词库(显性/隐性/文化禁忌),通过注意力机制捕捉上下文关联风险 伦…...
关于MTU的使用(TCP/IP网络下载慢可能与此有关)
参考链接:告诉你mtu值怎么设置才能网速最好! -Win7系统之家 出现网络速度被限制,可能与MTU值相关,先查看下本机的MTU winR,然后输入:netsh interface ipv4 show subinterfaces ,查看自己网络中的MTU&…...
【信息系统项目管理师】【高分范文】【历年真题】论信息系统项目的风险管理
【手机端浏览】☞【信息系统项目管理师】【高分范文】【历年真题】论信息系统项目的风险管理 2023年上半年考题 【题目】 论信息系统项目的风险管理 项目风险管理旨在识别和管理未被项目计划及其他过程所管理的风险,如果不妥善管理,这些风险可能导致项…...
Debain-12.9使用vllm部署内嵌模型/embedding
Debain-12.9使用vllm部署内嵌模型/embedding 基础环境准备下载模型部署模型注册dify模型 基础环境准备 基础环境安装 下载模型 modelscope download --model BAAI/bge-m3 --local_dir BAAI/bge-m3部署模型 vllm serve ~/ollama/BAAI/bge-m3 --served-model-name bge-m3 --t…...
香橙派连接摄像头过程
在香橙派上下载NoMachine 在控制电脑上也下载NoMachine sudo nmcli dev wifi connect "你的WiFi名称" password "你的WiFi密码" 连接上wifi后就可以在NoMachine连上香橙派了 (不过前提是香橙派有安装桌面端系统(非仅窗口端&…...
Milvus学习整理
Milvus学习整理 一、度量类型(metric_type) 二、向量字段和适用场景介绍 三、索引字段介绍 (一)、概述总结 (二)、详细说明 四、简单代码示例 (一)、建立集合和索引示例 (二)…...
MySQL事务全解析:从概念到实战
在数据库操作中,事务是一个至关重要的概念,它确保了数据的完整性和一致性。今天,就让我们深入探讨MySQL事务的方方面面,从基础概念到实际应用,全面掌握这一技能。 一、为什么需要事务 假设张三要给李四转账100元&…...
重叠构造函数 、JavaBean模式、建造者模式、Spring的隐性大手
构造函数 重叠构造函数JavaBean模式建造者模式构造Spring看起来为什么简单番外篇为什么在JavaBean中 无参构造函数是必须的呢 小结 构造函数对我来讲是很平常的一个东西,今天来谈谈新的收获。 重叠构造函数 通常我们定义好实体类后,不会特意的去调整构造…...
题单:精挑细选
题目描述 小王是公司的仓库管理员,一天,他接到了这样一个任务:从仓库中找出一根钢管。这听起来不算什么,但是这根钢管的要求可真是让他犯难了,要求如下: 1.1. 这根钢管一定要是仓库中最长的; …...
