Arduino 连接JDY-08蓝牙模块

2023-10-27

Arduino 连接JDY-08蓝牙模块

简介

从蓝牙4.0开始包含两个蓝牙芯片模块:传统/经典蓝牙模块(Classic Bluetooth,简称BT)和低功耗蓝牙(Bluetooth Low Energy,简称BLE) 。经典蓝牙是在之前的蓝牙1.0,1.2,2.0+EDR,2.1+EDR,3.0+EDR等基础上发展和完善起来的,而低功耗蓝牙是Nokia的Wibree标准上发展起来的,是完全不同两个标准。

经典蓝牙模块(BT)

泛指蓝牙4.0以下的模块,一般用于数据量比较大的传输,如:语音、音乐、较高数据量传输等。

低功耗蓝牙模块(BLE)

泛指蓝牙4.0或更高的模块,蓝牙低功耗技术是低成本、短距离、可互操作的鲁棒性无线技术,工作在免许可的2.4GHz ISM射频频段。

因为BLE技术采用非常快速的连接方式,因此平时可以处于“非连接”状态(节省能源),此时链路两端相互间只是知晓对方,只有在必要时才开启链路,然后在尽可能短的时间内关闭链路(每次最多传输20字节)。

HC-05、HC-06是蓝牙2.0的模块。

而JDY-08的蓝牙模块,支持蓝牙4.0协议。

JDY-08由于采用蓝牙4.0,所以在手机蓝牙搜索那里无法进行配对。需要通过相应的应用程序来连接,这样的话就无法像HC-05那样使用手机端的蓝牙串口APP来进行连接它。

不过可以通过Serial Bluetooth Terminal这样一款App进行连接。下载链接。具体操作后面会讲到。

关于该模块的文档可以参考

一、基本连接

使用模块首先就需要进行简单基本的配置,比如改名字,配置连接的密码;基本的配置就是AT指令,这个就跟HC-05模块类似了。

常用的AT指令文档里有,摘出部分如下:

在硬件的连接上可以使用USB转TTL工具进行连接:

一般单片机开发板也自带该模块,比如我用的是普中51-单核-A2开发板。

如图所示连线后:

在电脑上打开串口调试工具,找到串口号,设置好波特率,就可以进行指令设置了:

特别注意:
1.AT指令后不用换行
2.JDY-08的默认波特率是115200
3.AT模式必须是模块未连接状态,即状态灯闪烁

二、软件连接

这里使用的是arduino uno的板子,硬件串口(0,1)用作PC与arduino通讯,使用软串口将(4,5)引脚转化为串口连接蓝牙模块。指令的发送就是通过arduino IDE的串口监视器发送命令到arduino uno,uno接收到命令后再转发到蓝牙模块,蓝牙模块返回值再被uno接收并转发到串口监视器打印。

#include <SoftwareSerial.h>
/*
 * 使用arduino uno板做测试
 * 串口(0,1)作为PC连接uno通讯串口
 * 将串口4,5引脚使用软串口RX、TX处理连接BLE蓝牙模块
 */
SoftwareSerial BT_Serial(4,5);// 使用软串口设置蓝牙连接串口
String str="";

void setup() {
  Serial.begin(115200);
  BT_Serial.begin(115200);
}

void loop() {  
  //监控串口,将串口接收到的字符串传送给蓝牙模块
  //将蓝牙模块返回的内容串口打印到串口监视器进行显示
  str = "";
  while(Serial.available()>0)
  {
    str += char(Serial.read()); 
    delay(10);
  }
  
  if(str.length()>0)
  {
    Serial.print(F("命令行发送内容:"));
    Serial.println(str);

    // 蓝牙串口向蓝牙发送信息
    BT_Serial.print(str);
    delay(10);
    str = "";
    
    while(BT_Serial.available()>0)
    {
      str += char(BT_Serial.read()); 
      delay(10);
    }
    
    if(str.length()>0)
    {
      Serial.print(F("BT 返回内容:"));
      Serial.println(str);
    }
    else
    {
      Serial.println(F("BT 无返回内容:"));
    }
  }
}

实验结果:

三、手机连接

先用USB转TTL试一下蓝牙通信:

硬件连接好之后,打开Serial Bluetooth Terminal这款App,在左上角菜单中找到Devices这个选项,打开之后选择Bluetooth LE,点击上方的SCAN,就可以扫描到JDY-08蓝牙模块。

点击即可连接。

之后在电脑上打开串口调试工具,发送一个“form pc”,就会神奇地发现手机端接受到了电脑发的这个字符串。之后手机端发送"from phone",电脑端就可以收到这个字符串。

整个流程可以理解为:电脑发送"from pc"到蓝牙模块的RXD,蓝牙通过串口接收到数据,通过蓝牙广播出去,手机连接蓝牙就能收到广播"from pc"。

而手机发送"from phone" 就是将该字符串通过蓝牙传给蓝牙模块,蓝牙模块接收到之后,就通过TXD串口发送出去,从而计算机能够接受到字符串"from phone"。

之后编写Arduino程序做一个通过手机蓝牙控制小灯亮灭的小工具。

按如图所示接线:

黄色的那根线连接蓝牙的TXD即可。

char serialData;
void setup() {
  Serial.begin(115200);
  pinMode(11, OUTPUT); //11引脚连接演示用LED
}

void loop() {
  if ( Serial.available() > 0 ) {

    serialData =  Serial.read();

    if (serialData == '1' ) {  //接收到点亮LED指令
      Serial.print("Got command: ");
      Serial.println(serialData);
      Serial.println("LED-ON");
      digitalWrite(11, HIGH);  //点亮LED指令
    }
    if (serialData == '0' ){    //接收到熄灭LED指令
      Serial.print("Got command: ");
      Serial.println(serialData);
      Serial.println("LED-OFF");
      digitalWrite(11, LOW);      //熄灭LED指令
    }
  }
}

实验结果:

手机发送1,小灯亮;手机发送0,小灯灭。

实验分析:手机发送1是将该字符串通过蓝牙传给蓝牙模块,蓝牙模块接收到之后,就通过TXD串口发送出去,到达Arduino板的RXD,之后Arduino的串口寄存器中就存在1这个数据了。Arduino就会执行编写的程序,在串口监视器中打印字符,之后点亮LED灯。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Arduino 连接JDY-08蓝牙模块 的相关文章

  • Arduino:字符串到整数得到奇怪的值

    我想转换一个String to an int 我所能找到的就是你必须将 String 转换为 char 数组 然后将该数组转换为int 但我的代码产生奇怪的值 我无法弄清楚问题是什么 void ledDimm String command
  • printf 的包装

    我在Arduino下编码 我想开发串行打印格式化功能 所以我尝试使用sprintf未知大小的缓冲区 基本上 我们可以避免谈论 Arduino 及其串行输出 并考虑将文本写入缓冲区 然后使用printf 我试过这个 include
  • ARDUINO 常数有什么用?以前是22,现在是100

    我正在使用热电偶并下载了 MAX6675 库 我想知道以下几行中 ARDUINO 常量的值是做什么用的 if ARDUINO gt 100 lcd write byte 0 else lcd print 0 BYTE endif lcd p
  • Java RXTX 库不加载本机库

    基本上我想使用 Arduino 编写一个简单的通信工具java 的 RXTX 库 http rxtx qbang org wiki index php Main Page并且在加载动态库时严重失败 我的系统规格 操作系统 OS X 优胜美地
  • Python自动选择串口(适用于Arduino)

    目前 Python 程序必须知道设备 Arduino 位于哪个端口 然后 Python 才能与设备进行通信 Problem 每当设备拔出并重新插入时 其 COM 端口都会发生变化 因此必须再次向 Python 提供正确的串行端口 以便它找到
  • C++ Linux (Ubuntu) 正确写入串行(对于 Arduino)

    我想知道是否有一种标准方法可以与高效的串行设备进行通信 我应该使用标准库吗 如果有 是哪一个 现在我正在摆弄让 LED 根据输入的数字以给定的量亮起 Arduino 代码如下 只是练习一些东西 看我过于简单且低效的测试 include
  • 是否有通用 I2C 命令来查看设备是否仍然存在于总线上?

    是否有通用的 I2C 命令来查看设备在初始化一次后是否仍然存在于总线上 例如 OLED 显示器 我问这个的原因是为了避免主程序由于库代码中存在无限循环而冻结 当设备断开连接时 例如 Wire 库 在 MCU 启动时 我想检查设备是否可用 并
  • 带/不带类的回调函数指针 C++

    我被困 我正在尝试形成一个函数 它将吃掉无类函数指针和对象中的函数指针 这是我当前的代码 希望能解释更多 它应该在 Arduino 上运行 所以我不能使用大型库 首先 我在 Arduino 上使用这个库 SimpleTimer A time
  • 使用串口通过 Arduino 将多个值发送到 Raspberry

    我有一个关于 Arduino 和 Raspberry Pi 之间串行通信的问题 事实上 我想使用 Arduino 将 2 个变量发送到 Raspberry Pi 并以不同的方式使用它们 这是我的 Arduino 草图 int one 1 i
  • 如何为 Arduino 或类似的微控制器编写 JavaScript 编译器? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我意识到这个问题会引起一些人的注意 并且我意识到 JavaScript 传统上是一种解释性语言 请让我解释一下 我是一名专门从事 We
  • 是否可以在 Arduino 上运行 ZeroMQ

    我想知道是否可以通过 ZeroMQ 与 Arduino 进行通信 我想使用 Arduino 来控制一些设备 并希望将大部分应用程序放在计算机上 为此 如果 Arduino 和控制器可以通过 Zeromq 以及 WiFi 或以太网扩展板进行通
  • 当我启动程序时,Arduino IDE (Win10) 崩溃

    我的 Arduino IDE Win10 上的版本为 1 8 12 在启动时崩溃 运行arduino debug exe我收到此错误消息 C Program Files x86 Arduino gt arduino debug exe Se
  • 在链接时合并全局数组/从多个编译单元填充全局数组

    我想定义一系列的东西 比如事件处理程序 的内容 该数组在编译时是完全已知的 但定义在 多个编译单元 分布在多个库中 至少在最终 静态 链接之前是相当解耦的 我想要 也保持这种方式 因此添加或删除编译单元将 还可以自动管理事件处理程序 而无需
  • Arduino Nano 33 IoT 的软件序列号

    我计划从旧的 5V Arduino Nano 迁移到新的 Arduino Nano 33 IoT 我已经使用软件串行 SoftwareSerial h 为旧的 5V Arduino Nano 编写了一个功能代码 以便与 Sim800L 模块
  • 使用 Arduino 来操作 Android [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 有人尝试过让 Android 和 Arduino 相互通信吗 我在网上找到了几个项目 Amarino http www amarino tool
  • ESP32:dsb1820 温度传感器给出恒定的负 127 读数

    我正在尝试使用连接到 esp32 微控制器的单个 dsb1820 温度传感器来获取温度读数 传感器连接到 esp32 的 GPIO 4 我打算将温度读数发送到云端 我面临的问题是温度读数总是给出值 127 我在网上某处读到 当 dsb182
  • Arduino Uno 上传失败

    我收到了一个 arduino uno 和一些代码 作为我正在从事的项目的一部分 我以前从未与他们合作过 所以这对我来说是一次全新的体验 我正在使用他们网站上的 Arduino 应用程序 当我编译代码时 它工作正常 然而 当我上传时 我收到错
  • 尽管给出了供应商 ID,Web 串行 api 显示“未找到兼容设备”

    Windows 8 1 Chrome v91 0 4472 164 我已根据设备管理器验证了供应商和产品 ID 该设备是使用 Ch340 驱动程序的 Arduino UNO 它在设备管理器中的端口 COM 和 LPT 下列为 USB SER
  • 类中的易失性变量:“‘易失性’之前预期有非限定 ID”?

    我有两个static volatile我的类中定义的变量ADC 该类写为 裁剪以节省空间 pragma once include PeriodicProcess PeriodicProcess h include
  • 无法访问超过 255 个的 Modbus 寄存器 SimpleModbus

    我是法国学生 我已经使用 SimpleModbus 1 周了 它工作得很好 直到我尝试实现一个具有大量寄存器 1000needed 使用从站 1 无法访问超过 255 个的寄存器 无论我做什么 一旦寄存器读数超过 255 我就会收到超时错误

随机推荐

  • [网络安全自学篇] 四十五.病毒详解及批处理病毒原理分析(自启动、修改密码、定时关机、蓝屏、进程关闭)

    这是作者的网络安全自学教程系列 主要是关于安全工具和实践操作的在线笔记 特分享出来与博友们学习 希望您们喜欢 一起进步 前文分享了Windows远程桌面服务漏洞 CVE 2019 0708 并详细讲解该漏洞及防御措施 这篇文章将讲解简单的病
  • SpringBoot集成mybatis

    mybatis plus configuration 设成true则DO模型字段命名必须采用驼峰方式 map underscore to camel case false log impl org apache ibatis logging
  • C# VLC播放器

    第一步 NuGet安装 Vlc 第二步 窗体里添加vlc控件 第三步 添加VlcLibDirectoryNeeded事件 事件代码 private void vlcControl1 VlcLibDirectoryNeeded object
  • 成为一名Java架构师 都需要掌握哪些技术

    成为一名Java架构师 都需要掌握哪些技术 Java架构师 首先要是一个高级Java攻城狮 熟练使用各种框架 并知道它们实现的原理 jvm虚拟机原理 调优 懂得jvm能让你写出性能更好的代码 池技术 什么对象池 连接池 线程池 Java构架
  • 【计算机网络】湖科大微课堂笔记 p47-49 IPv4地址的应用规划、IP数据报的发送和转发过程、静态路由配置及其可能产生的路由环路问题

    文章目录 IPv4地址的应用规划 小结 IP数据报的发送和转发过程 小结 一些例题 静态路由配置及其可能产生的路由环路问题 小结 IPv4地址的应用规划 定长的子网掩码FLSM 变长的子网掩码VLSM 定长的子网掩码FLSM 举例说明 注意
  • 公开数据及 贝叶斯网络_贝叶斯网络(Bayesian Network)可视化

    一起读数据 贝叶斯网络 1 贝叶斯网络简介 贝叶斯网络是有向无环图的一种概率图模型 它在1988年由图灵奖得主Judea Pearl提出 主要用于不确定性表达和推理 有向无环图由节点和边组成 每条边代表了节点间的相互关系 在贝叶斯网络中 一
  • 【Spark编程基础】实验5 Spark Structured Streaming编程实践

    实验5 Spark Structured Streaming编程实践 实验内容和要求 0 结构化流练习任务 0 1 讲义文件源 json数据任务 按照讲义中json数据的生成及分析 复现实验 并适当分析 1 创建程序生成JSON格式的Fil
  • C# 创建二叉树以及深度遍历二叉树

    没想到多叉树的深度遍历真的用上了 最近有个功能一定要得到将UI层级完全展开后 从上到下依次记录每个物体的层级顺序 用到了后序深度遍历 之前项目用到了树形存储的配置结构 多叉树除了用于配置结构外 还有用于复杂文件目录结构 二叉树一个比较经典的
  • mac .ssh文件在哪里查找

    Finder gt 前往 gt 前往文件夹 gt 输入 ssh 即 shift command G gt 输入 ssh
  • win10桌面创建我的电脑/回收站/网络/控制面板

    方法 步骤 1 选择个性化设置选项 开始 设置 个性化 在电脑桌面鼠标右键 打开菜单 选择个性化设置选项 打开设置页面 2 进入桌面图标设置选项 在个性化设置页面中 打开主题选项 进入桌面图标设置选项 3 创建我的电脑 我们就可以勾选计算机
  • 人事档案调档步骤

    人事档案调档步骤 确定档案所在人才市场地 注 1 本科毕业后 未持报到证去报到的 可在大学档案去处查询自己的档案去处 拿报到证去报到 若报到证遗失 则需要补办报到证去报到 必须有报到证报到 单位开具调档申请 去杭州人才市场开具调档函 需身份
  • html点击按钮弹出悬浮窗_网课助手1.0 支持悬浮窗搜题等多功能

    临近期末 又到了大学生期末网课考试测试的环节 以本人来看 这就是浪费时间 估计没有几个人真正的做题 基本就是百度题目 但是一个一个查题真的太麻烦了 最近在网上找的脚本基本都是电脑浏览器端的 没有手机端的 没有就自己动手 做了个自动网课查题工
  • 【干货】股票接口代码和能可视化数据分享,可以爬取数据并能入库可视化展示到页面中,非常适合投资理财学习使用(亲测OK)

    目录 目标 内容介绍 流程如下 目标 采集到股票数据 并且直接展示到可视化大屏上 内容介绍 如果你对Python感兴趣 或者你准备炒股 想对数据分析一下 那么恭喜您 这篇文章正好能够满足您的需要 这篇文章能够把代码给到你 并且给你不用代码
  • LIO_SAM实测运行,论文学习及代码注释[附对应google driver数据]

    LIO SAM Tightly coupled Lidar Inertial Odometry via Smoothing and Mapping 作者Tixiao Shan在2018年发表过LeGO LOAM 当时他还在史蒂文斯理工学院读
  • 实现流程编排设计器的心路历程

    接上回 AntV 使用AntV X6实现流程编排设计器 一文说到 流程编排设计器的实现方案是将低代码引擎和AntV X6作为画布相结合 为什么会有这样的想法 可行性 起因是业务中有用到低代码引擎的场景 它的交互形式 页面结构正好符合流程编排
  • 成为极少数-读后感

    文章目录 自序 真正的成长 都需要你孤独地翻山越岭 觉醒 自我驱动的人是不会焦虑的 上进 只有突破才叫上进 动力 我经常对自己吹牛皮 自律 围绕目标的自我约束 专注 做到勤奋的样子很容易 第二章 方向与精进 思维 建立这三个思维 增加竞争优
  • linux history命令详解

    命令行历史 当执行命令后 系统默认会在内存记录执行过的命令 当用户正常退出时 会将内存的命令历史存放对应历史文件中 默认是 bash history 登录shell时 会读取命令历史文件中记录下的命令加载到内存中 登录进shell后新执行的
  • PC微信逆向:破解聊天记录文件!

    本文转载自程序员专栏 在电子取证过程中 也会遇到提取PC版微信数据的情况 看雪 52破解和CSDN等网上的PC版微信数据库破解文章实在是太简略了 大多数只有结果没有过程 经过反复试验终于成功解密了数据库 现在把详细过程记录下来 希望大家不要
  • PC微信低版本限制登录怎么办?

    前文 最近很多小伙伴遇到了低版本的微信登录时出现 您的微信版本过低 请升级至最新版本微信后在登录微信 点击 确定 后 将跳转至最新版下载页面 或出现未能登录等字样 解决方案 安装最新版本微信 登录一次后 然后在切换低版本微信登录 一般情况下
  • Arduino 连接JDY-08蓝牙模块

    Arduino 连接JDY 08蓝牙模块 文章目录 Arduino 连接JDY 08蓝牙模块 简介 一 基本连接 二 软件连接 三 手机连接 简介 从蓝牙4 0开始包含两个蓝牙芯片模块 传统 经典蓝牙模块 Classic Bluetooth