天道酬勤,学无止境

How to use BLE Shield based on HM-10 bluetooth module?

I'm a new bie on arduino projects. I would like to ask you for some help. I bought a BLE Shield for Arduino from ( http://imall.iteadstudio.com/development-platform/arduino/shields/im130704001.html ). They made this shield using Hm-10 Bluetooth module(http://www.jnhuamao.cn/bluetooth.asp?ID=1). Itead Studio has no sample codes using this shield. I have no idea on how to program it or send AT commands from Arduino.

I read the “AT commands” at the data sheet (ftp://imall.iteadstudio.com/Shield/IM130704001_ITEAD_BLE_Shield/DS_IM130704001_ITEAD_BLE_Shield.pdf) and I tried to send "AT commands” from arduino to BLE shield using this code ( http://arduino.cc/en/Reference/SoftwareSerial ) but I only received the commands back.

Did anybody here ever use this HM-10 bluetooth module ?

I need some arduino sketch for help !

评论

#include <SoftwareSerial.h>

  int led         = 13;
  int bluetoothTx = 2;
  int bluetoothRx = 3;
  SoftwareSerial bluetooth(bluetoothTx, bluetoothRx); 
  int baudrate[8] ={4800,9600,14400,19200,28800,38400,57600,115200};
  int i = 1;

void setup() {
  Serial.begin(9600);
  bluetooth.begin(9600);
  while(!Serial){}

  Serial.write("AT sent");
  delay(500);
  bluetooth.write("AT+NAME?");
  delay(500);
  while (bluetooth.available()) {
     Serial.write(bluetooth.read());
   }
  delay(100);
  Serial.println("");

  bluetooth.write("AT+POWE3");
  delay(500);
  while(bluetooth.available()) 
  {
    Serial.write(bluetooth.read());
  }
  delay(100);
  Serial.println("");

  delay(500);
  bluetooth.write("AT+CHAR?");
  delay(500);
  while (bluetooth.available()) {
     Serial.write(bluetooth.read());
   }
  delay(100);
  Serial.println("");

  delay(500);
  bluetooth.write("AT+NAMEFlightline"); //Check Status
  delay(500);
  while (bluetooth.available()) {
      Serial.write((char)bluetooth.read());

    }

  Serial.println("");
  bluetooth.write("AT+CHAR0x2901"); //add charicteristic
  delay(500);
  while (bluetooth.available()) {
      Serial.write(bluetooth.read());

    }
  Serial.println("");
  bluetooth.write("AT+RELI0"); 
  delay(500);
  while (bluetooth.available()) {
      Serial.write(bluetooth.read());
    }
  Serial.println("");
  bluetooth.write("AT+SHOW1");
  delay(100);
  while (bluetooth.available()) {
      Serial.write(bluetooth.read());

    }
  Serial.println("");

  pinMode(led,OUTPUT);
  digitalWrite(led,HIGH);
}

void testAllBaudRates(){
  for(int j=0; j<8; j++)
   {
      bluetooth.begin(baudrate[j]);
      delay(100);
      Serial.println("boud rate " + String(baudrate[j],DEC) +" i-> "+String(j,DEC));
     // Serial.println("");
      bluetooth.write("AT");
      delay(500);
      while (bluetooth.available()) {
        Serial.write(bluetooth.read());
        Serial.println();
       }
       delay(100);
   }
}                                            

// and now a few blinks of the  LED, 
// so that we know the program is running

void loop()
{
  //Read from bluetooth and write to usb serial
  while(bluetooth.available())
  {
    char toSend = (char)bluetooth.read();
    if(toSend == 'x'){
       digitalWrite(led,HIGH);
       Serial.println("set high");
       bluetooth.write("RXOK");
    }else if(toSend == 'y'){
      digitalWrite(led,LOW);
      Serial.println("set low");
      bluetooth.write("RXOK");
    }
    Serial.print(toSend);

  }

  //Read from usb serial to bluetooth
  while(Serial.available())
  {
    char toSend = (char)Serial.read();
    bluetooth.write(toSend);
    Serial.print(toSend);
  }
}

Have a look at my sketch above I have a few things to point out that I wasted time on.

make sure you have the line

while(!Serial){}

Or you may get have a working shield but miss the responses as the serial monitor is no ready.

remember that you wont get a response from the blue-tooth module, with a command from the Serial Monitor if it is connected to a device. It is connected to the device when the light stops flashing.

if you run this sketch you should get this output

AT sent
OK+Set:3
OK+Get:0x2901  <- this may be blank the first time you run it
OK+Set:Flightline
OK+Set:0x2901
OK+Set:0
OK+Set:1

the most comprehensive list of AT commands can be found here

[All the AT commands and a good explanation][1]

You will need to at Characteristics to the device as I have done here

bluetooth.write("AT+CHAR?");

or you will find it to connect to iOS and Android

If you are connecting to Android use the BluetoothLE Classes not Bluetooth ones.

You can use this sketch with baud rate autodetect to control your HM-10. This is a part of Apploader project that allows to upload to Arduino board over BLE.

This is a little late too, but try the following code, if you send it "AT" it should give you back an "OK":

#include <SoftwareSerial.h>  

int bluetoothTx = 2;  // TX-O pin of bluetooth mate, Arduino D2
int bluetoothRx = 3;  // RX-I pin of bluetooth mate, Arduino D3

SoftwareSerial bluetooth(bluetoothTx, bluetoothRx);

void setup()
{
  Serial.begin(9600);  // Begin the serial monitor at 9600bps

  bluetooth.begin(115200);  // The Bluetooth Mate defaults to 115200bps
  delay(100);  // Short delay, wait for the Mate to send back CMD
  bluetooth.println("U,9600,N");  // Temporarily Change the baudrate to 9600, no parity
  // 115200 can be too fast at times for NewSoftSerial to relay the data reliably
  bluetooth.begin(9600);  // Start bluetooth serial at 9600
}

void loop()
{
  if(bluetooth.available())  // If the bluetooth sent any characters
  {
    // Send any characters the bluetooth prints to the serial monitor
    Serial.print((char)bluetooth.read());  
  }
  if(Serial.available())  // If stuff was typed in the serial monitor
  {
    // Send any characters the Serial monitor prints to the bluetooth
    bluetooth.print((char)Serial.read());
  }
  // and loop forever and ever!
}

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • 如何在Windows 8桌面中扫描低功耗蓝牙设备?(How to scan for Bluetooth Low Energy devices in Windows 8 Desktop?)
    问题 如何在Windows-8桌面中扫描低功耗蓝牙设备? 我试图使用WinSock API,但我所得到的只是Bluetooth Classic设备。 我也尝试过使用蓝牙API,但是我得到的只是蓝牙经典设备。 我知道这是可能的,因为Windows正在这样做。 例如,我可以运行C:\ Windows \ System32 \ DevicePairingWizard.exe ,它将显示所有设备的列表(经典和低能耗)。 回答1 如果其他人正在寻找答案。 在Windows 8(Desktop&Metro App)中,没有用于BLE设备发现和配对的API。 这不是缺乏实现,而是设计使然。 Windows人士希望我们使用“收件箱体验”来搜索和配对BLE设备。 有关更多详细信息,请参见此MSDN论坛线程。 祝你好运! 回答2 您可以使用可以通过串行接口控制的BLE硬件模块。 根据您的用例,这可能不是您想要的,因为它没有利用Windows 8的内部BLE堆栈! 基本上,此解决方案用于修补/开发。 我知道这两个设备可以做到这一点,并且具有用于BLE发现的API: HM-10:http://imall.iteadstudio.com/im130614001.html BLE112:https://www.bluegiga.com/zh-CN/products/bluetooth-4.0-modules
  • Corebluetooth,如何获得唯一的UUID?(Corebluetooth, How to get a unique UUID?)
    问题 我的问题是CBPeripheral的UUID似乎不是唯一的。 我有两个iPad2和一个Bluetooth4.0设备。 蓝牙设备的UUID与两个iPad不同。 如下图所示。 有什么方法可以在iOS设备上找到唯一的蓝牙设备的UUID? 我需要找到在不同设备之间不会更改的UUID或mac地址。 非常感谢您,请帮帮我!! 回答1 外设使用随机可解析的地址,该地址至少每15分钟更改一次,届时外设将显得很新。 要更改此行为,您需要与外围设备配对,然后您将看到UUID并将其保持不变。 回答2 我一直在寻找一种方法来部署与平台无关的BLE设备的静态配置。 我感到沮丧(Apple的UUID +/-毫无意义,并且无法从CoreBluetooth访问在大多数/所有其他平台上可以获得的MAC / BDADDR)。 幸运的是,我注意到“设备信息服务”配置文件(0x180A)包含一个“系统ID”属性(0x2A23),该属性对设备的唯一MAC / BDADDR地址进行了编码。 但是,我不知道BLE设备是否必须公开此服务。 回答3 为了回答您的问题,给定相同的iDevice-btDevice对,UUID是唯一的,但是如您在尝试中注意到的那样,如果您更改iOS设备,UUID也会更改。 不幸的是,要达到拥有唯一标识符的目标,您必须修改固件并添加应用程序标识符。 回答4 如果您开发和控制Bluetooth 4.0
  • 如何使用蓝牙信号(BLE)唤醒iOS应用(How to wake up iOS app with bluetooth signal (BLE))
    问题 将BLE与CoreBluetooth(no iBeacon)结合使用时,是否有一种方法可以在设备收到蓝牙信号时唤醒未运行的应用程序? 我正在使用RedBearlab的BLE Shield(http://redbearlab.com/bleshield/)模拟信标。 谢谢,丹 *更新03/05/14 * 看来Apple引入了iOS 7.1的重大更新:现在,iOS如果检测到与您的应用程序匹配的UUID,将会为您打开您的应用程序。 该应用程序仅需要安装,而不必运行(AppDelegate中的逻辑需要应答唤醒呼叫)。 回答1 如果该应用程序在后台运行,然后关闭(我的意思是此处已终止-双击主屏幕按钮后您不再在后台应用程序列表中看到它),则由于其他应用程序的内存压力,iOS将请注意在调用代理时再次唤醒它(假设您在.plist中列出了后台模式)。 如果该应用程序在后台运行,然后被用户关闭(同样,我的意思是此处已终止。因此,用户双击以获取在后台运行的应用程序的列表,然后在背景列表中单击您的应用程序,直到它摆动并然后按一下应用程式旁边的[x]即可杀死它),这明确表示使用者不希望该应用程式在背景上执行,而且该应用程式不会重新启动。 用户必须重新启动其代表的应用程序,才能在后台再次开始运行(iOS7中的新增功能)。 更新:我不确定这是否在文档中,但是否在CoreBluetooth WWDC
  • How to wake up iOS app with bluetooth signal (BLE)
    When using the BLE with CoreBluetooth (no iBeacon), is there a way to wake an app that is not running when the device receives a Bluetooth signal? I'm simulating a beacon with the RedBearlab's BLE Shield (http://redbearlab.com/bleshield/). Thanks, DAN * UPDATE 03/05/14 * It looks like Apple has introduced a major update with iOS 7.1: now iOS will open your app for you if it detects a UUID that matches your app. The app only needs to be installed, it doesn't have to be running (logic in AppDelegate needed to answer the wake-up call).
  • 如何实现扫码连接BLE 设备的功能(以nRF5 为例)?
    文章目录 前言一、nRF5 SDK 开发环境搭建1.1 nRF5 SDK和SoftDevice 版本选择1.2 IDE 和J-Link 版本选择 二、扫码连接功能开发2.1 ble_app_uart_c 工程简介2.2 GAP(目标设备发现和连接过程)2.2.1 设置并启用过滤器2.2.2 启用匹配即连接功能2.2.3 设置扫描与连接参数2.2.4 为扫描过程注册事件处理函数 2.3 GATT(NUS服务发现和交互过程)2.3.1 BLE 协议栈初始化2.3.2 配置MTU 交换过程2.3.3 NUS 服务发现过程2.3.4 NUS 服务访问过程 2.4 UART(串口外设初始化和访问过程)2.4.1 UART 模块初始化2.4.2 处理UART 接收到的地址信息 三、扫码连接功能验证3.1 扫码连接功能验证3.2 新增获取RSSI 功能 更多文章: 前言 现在大部分蓝牙设备都不具备输入输出功能,主要靠蓝牙主机扫描发现周围的蓝牙从机,蓝牙从机需要处于广播模式才能被主机发现。蓝牙主机会将扫描发现的从机设备展示在一个列表中,你可以根据设备名称、类型和图标等信息,选择要连接哪一个从机设备。 如果周围有多个设备名称、类型和图标等信息都相同的从机设备,该怎么区分彼此呢?这种情况在物联网设备普及的当下也是经常遇到的。如果多个从机设备与蓝牙主机的距离有明显差异
  • 蓝牙基础知识(一)
    原文首发于:http://kobe-onepiece.work/archives/5123 前言 最近刚好一直在研究蓝牙相关的内容,所以想来和大家一起分享。首先我们依然以基础概念开始,因为一头扎进代码,只会让你不知所措! BR/EDR和BLE 1)经典蓝牙(BR/EDR): 泛指支持蓝牙协议在 4.0 以下的模块,一般用于数据量比较大的传输,比如:语音、音乐等。所以像蓝牙音箱之类的,里面的芯片都支持经典蓝牙。 2)低功耗蓝牙(BLE): 指支持蓝牙协议 4.0 或更高的模块,也称为 BLE 模块,最大的特点是成本和功耗的降低,应用于实时性要求比较高的产品中,比如:手环,蓝牙灯等设备。目前在物联网应用中使用很广泛。 简单理解就是平时听音乐和打电话时用的就是经典蓝牙,像智能手环用的就是低功耗蓝牙(从一次电可以用很久)。 *注意: 分别工作在经典蓝牙模式和低功耗蓝牙模式的两个蓝牙模块是无法互相连接的。 下表是参数对比: 技术规范典型蓝牙低耗电蓝牙无线电频率2.4 GHz2.4 GHz距离10米/100米30米空中数据速率1-3 Mb/s1 Mb/s应用吞吐量0.7-2.1 Mb/s0.2 Mb/s节点/单元7-16,777,184未定义(理论最大值为2^32)安全64/128-bit及用户自定义的应用层128-bit AES及用户自定义的应用层强健性自动适应快速跳频,FEC
  • 蓝牙 BLE 协议学习: 有关概念介绍
    背景在学校内就用过蓝牙技术参加过比赛(并拿了奖);而蓝牙作为物联网中比较常见的协议,有必要进行深入的学习。此后的文章会以 ble(v4.0) 进行学习。介绍蓝牙技术最初由电信巨头爱立信公司于 1994 年创制,当时是作为 RS232 数据线的替代方案。蓝牙可连接多个设备,克服了数据同步的难题。随着蓝牙耳机、蓝牙鼠标、蓝牙音箱等蓝牙设备渐渐充斥着我们的生活,蓝牙早已不单纯是数据线的替代方案。如今蓝牙由蓝牙技术联盟(Bluetooth Special Interest Group,简称 SIG)管理。蓝牙技术联盟在全球拥有超过 25,000 家成员公司,它们分布在电信、计算机、网络、和消费电子等多重领域。简单地说,蓝牙是一种短程宽带无线电技术,是实现语音和数据无线传输的全球开放性标准。它使用跳频扩谱(FHSS)、时分多址(TDMA)、码分多址(CDMA)等先进技术,在小范围内建立多种通信与信息系统之间的信息传输。蓝牙使用跳频技术,将传输的数据分割成数据包,通过79个指定的蓝牙频道分别传输数据包。每个频道的频宽为1 MHz。蓝牙4.0使用2 MHz 间距,可容纳40个频道。第一个频道始于2402 MHz,每1 MHz一个频道,至2480 MHz。有了适配跳频(Adaptive Frequency-Hopping,简称AFH)功能,通常每秒跳1600次。最初,高斯频移键控(Gaussian
  • TB-02 Kit 开发板介绍 基于泰凌微TLSR8258国产BLE蓝牙芯片 可连接天猫精灵 安信可出品 史上最便宜的蓝牙开发板
    TB-02 Kit 开发板介绍 TB-02 Kit 开发板是安信可基于泰凌微TLSR8258芯片设计的一款低功耗蓝牙开发板,该开发板继承了安信可NodeMCU的一贯风格,板载串口,两个按键,双排针。 在某宝搜索“蓝牙开发板”,搜出来的商品价格基本都在一百元以上。 安信可推出的TB-02 Kit这款开发板的售价不到20元。如此低廉的价格可大大降低开发者的学习投入成本,加速低功耗蓝牙技术在国内的普及。 该开发板完全符合BLE5.0协议规范,拥有完整的SigMesh协议栈,可轻松对接天猫精灵。是学生学习蓝牙知识,制作毕业设计,企业开发智能产品的首选。 开发板渲染图 芯片性能 开发板采用的主芯片TLSR是由泰凌微电子设计的一款低功耗蓝牙芯片,该芯片主要性能如下: 32 Bit RISC-V 处理器,最高主频48MHz512 KBytes 片上可编程Flash64 KBytes 片上RAM内置32.768KHz RC时钟内置硬件AES加密单元丰富的外设:17路GPIO,一路SPI、IIC、UART六路PWM,支持红外信号生成6路14Bit高精度ADC,支持电池电量采集高达10dBm的发射功率,-96dBm接受灵敏度优秀的功耗管理,深度睡眠电流0.4uA,保持RAM数据睡眠电流1.4uA支持低功耗蓝牙5.0 (不支持经典蓝牙)支持SigMesh,可对接天猫精灵 整个芯片架构如下图所示:
  • TB-02 Kit开发板及TB系列BLE蓝牙模块固件及天猫精灵三元组串口烧录工具操作方法说明及固件市场介绍(基于泰凌微TLSR8258芯片)
    摘要 这篇文章介绍如何通过烧录工具给TB系列蓝牙模块烧录固件及天猫精灵三元组,以及如何通过烧录工具的固件市场下载最新的固件及固件操作说明文档。 获取烧录工具 安信可团队针对TB系列蓝牙模块专门开发了烧录软件上位机工具,工具主要用python写成,可同时支持Windows,Linux,macOS平台,目前只提供Windows平台打包好的可执行文件,其他平台用户可下载源码自行打包。 1.5.0版本烧录工具下载地址:https://ai-thinker.oss-cn-shenzhen.aliyuncs.com/TB_Tool/Ai-Thinker_TB_Tools_V1.5.0.exe 烧录工具源码地址:https://github.com/Ai-Thinker-Open/TBXX_Flash_Tool 自动烧录接线方法 TB-02 Kit开发板已经包含了自动下载电路,如果你使用的是开发板,直接通过USB线将模块连接电脑安装CH340串口驱动即可实现烧录。如果你是用的是单个模块,可按照下面的方法接线实现自动烧录(USB转串口要有DTR和RTS引脚): TB-01模块接线方法: USB To TTLTB-01模块VccGndGndTxRxRxTxRTSVCCDTRSWS(背后圆点) TB-02/03/04模块接线方法: USB To TTLTB
  • 泰凌微ble mesh蓝牙模组天猫精灵学习之旅 ② 如何实现 微信小程序蓝牙控制 Ble Mesh模组 安信可TB02,全部开源!
    本<泰凌微ble mesh蓝牙模组天猫精灵学习之旅>系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途。如有不对之处,请留言,本人及时更改。 1、小白也痴迷,如何在 Linux环境搭建编译烧录 安信可TB02,点亮一盏LED灯; 2、如何实现 微信小程序蓝牙控制 Ble Mesh模组 安信可TB02,全部开源! 文章目录 前言 一、材料准备二、实现过程三、蓝牙模块初始化四、微信小程序编程4.1 搜索设备4.2 连接设备4.3 获取服务列表4.4 获取服务下的特征列表4.5 如何接受设备发来的数据4.6 如何发送数据到设备另外,不要把我的博客作为学习标准,我的只是笔记,难有疏忽之处,如果有,请指出来,也欢迎留言哈! 前言 接着上篇环境搭建,我们这篇玩下如何通过微信小程序蓝牙控制TB02开发板; 接触微信硬件生态已经有2年了,微信客户端如果能够实现以蓝牙控制设备,无非是从微信公众号或微信小程序入手,但微信公众号蓝牙控制设备,那么设备必须支持AirSync协议; AirSync协议已经很久很久没有维护了,个人认为官网已经不维护了!如果想要通过微信公众号蓝牙控制设备,那么设备必须支持AirSync协议,而且要经过微信硬件平台认证才可以发布!而安信可TB02开发板暂不开放支持AirSync协议! 微信AirSync协议介绍: https://iot
  • 如何优雅地排查华为接触卫士—1错误码
    接触卫士(Contact Shield)是HMS Core提供的基于低功耗蓝牙(Bluetooth Low Energy,简称BLE)的接触诊断基础服务。各国政府组织可以使用接触卫士API开发新冠病毒接触跟踪的应用。在保护用户隐私的基础上,实现和其他手机的互通,帮助用户诊断是否接触了病毒感染者,从而减少新冠病毒的蔓延。 接触卫士的工作原理 1. B的手机会根据每天的周期性密钥(Periodic Key)生成动态共享码(Dynamic Sharing Code,简称DSC)集合,再通过BLE向周围广播DSC。 2. A的手机扫描到B的手机广播的DSC后,记录当前时间戳和蓝牙接收信号强度(Received Signal Strength Indicator,简称RSSI),并将这些数据存储至本地数据库中。 3. 假如B被确诊为COVID-19患者,App获取B的授权后将病毒潜伏期(默认14天)内的周期性密钥上传至App或公共卫生机构指定的服务器。此时,B的周期性密钥称为共享密钥(Shared Key)。 4. A的App定时从服务器下载确诊者的周期性密钥的压缩文件,并调用接触卫士(Contact Shield)进行接触诊断,并根据App提供的共享密钥推导出确诊者曾经广播的DSC集合。 5. 接触诊断过程中
  • nrf51822蓝牙学习笔记二
    目录 蓝牙协议简要图应用层控制层 主机主协议层:通用访问规范(GAP)角色广播扫描发起连接 通用属性配置文件(GATT)角色GATT规范层次属性特性描述符服务profile(数据配置文件) 代码讲解协议栈初始化初始化时钟协议栈使能设置回调 GAP初始化设置设备名称其他 广播服务初始化连接参数更新初始化开始广播主循环 目前手里面有几个项目用的是nrf51822这款蓝牙芯片。由于我从未接触过蓝牙协议,所以在很多地方磕磕绊绊的,所以最近准备系统学习一下该芯片。并做一下笔记放在我的博客里面。系统学习资料来源于B站青峰电子。视频名称为 蓝牙nrf51822视频教程资料 编程开发 协议栈开发 青峰电子例程。 蓝牙协议简要图 应用层 SIG官方网站已经发布了GATT规范列表,包括警告通知、血压测量、心率、电池等等。 在ble_services中有已经进行通用定义的一些服务。如ble_bas是电池服务等。 控制层 1,主机控制器(HCI) 也称设备管理器,是基带中的一个功能模块,控制一般的蓝牙设备行为。负责所有与数据无关的蓝牙系统操作,例如询问附件蓝牙设备是否存在,连接蓝牙设备或者让本地的蓝牙设备可以被其他设备发现和连接。 为了实现响应的功能,设备管理器要求通过基带的资源控制器访问传输媒介。同时,设备管理器还通过HCI命令提供本地设备行为的控制功能。 2,链路层(LL) 负责链路管理、链路控制
  • 物联网的智能世界–低功耗蓝牙
    蓝牙在通过PC和手机连接的无线人机接口设备和音频外围设备中找到了利基市场,从而刺激了市场。尽管低功耗Wi-Fi设备的进步为某些应用提供了替代性连接,但是对蓝牙的需求仍然强劲。另一方面,由于BLE的外形灵活性,手机易用性和超低功耗特性,BLE已发展成为瑞士军刀的连接工具。BLE正在取代ZigBee等专有协议,成为低功耗,低成本IoT设备中事实上的连接标准。 最近的更新BLE 5.0和BLE 5.1改进了BLE的规范,推动了这一增长。例如,改进后的范围可确保可以从房屋中的任何地方完美连接任何BLE设备(例如智能传感器,智能锁或灯泡)。这是实现真正的智能家居的关键一步。扩大范围还使诸如智能手表之类的设备受益,因此它们可以从位于不同房间的智能手机接收即时通知。 另一个重大改进是数据速率的显着提高,使信息传输更加丰富和智能。无连接服务(例如提供上下文感知的信标)将能够传输更多信息。例如,信标将能够传输实际内容,而不是仅通过URL指向内容。这有可能通过转向无连接物联网而不是当前的蓝牙配对设备模型来重新定义当今蓝牙设备传输信息的方式。这也可以使BLE应用程序(例如资产跟踪和智能废物管理)更智能地使用BLE Mesh网络。 但是,这些改进的功能在DMIP和内存方面也需要改进的处理器。基础硬件(即SoC或MCU)必须更改以支持这些功能。对于大多数物联网应用程序来说,安全性是不可或缺的不可或缺的功能
  • 微信小程序 - 蓝牙BLE小程序开发
    1.前言 最近领导看我比较闲,安排我开发一个蓝牙BLE微信小程序,刚开始接到这个项目时,我第一反应时,"卧槽“”。老子在公司的岗位是做Windows和Android 软件开发的,看我闲,竟然让我去做小程序,我从来没有接触过。后面领导说给你一个星期,看不看能不能完成,实在没有办法,只能硬着头皮去学习小程序。 2.BLE蓝牙相关知识 2.1 经典蓝牙和蓝牙BLE的区别 蓝牙1.0~3.0都是经典蓝牙,有些人一直认为蓝牙4.0就是蓝牙BLE,是错误的。因为4.0是双模的,既包括经典蓝牙又包括低能耗蓝牙。蓝牙BLE相比于经典蓝牙的优点是搜索、连接的速度更快,关键就是BLE(Bluetooth Low Energy)低能耗,缺点呢就是传输的速度慢,传输的数据量也很小,每次只有20个字节。但是蓝牙BLE低能耗,在智能穿戴设备(手环和各种智能硬件)应用越来越广泛。 2.2 相关概念 (参考 通用属性配置文件(GATT)及其服务,特性与属性介绍 )和 (BLE4.0教程二 蓝牙协议之服务与特征值分析) 2.2.1 特性 一个特性至少包含2个属性:一个属性用于声明,一个属性用于存放特性的值。 所有通过GATT服务传输的数据必须映射成一系列的特性,可以把特性中的这些数据看成是一个个捆绑起来的数据,每个特性就是一个自我包容而独立的数据点。 例如,如果几块数据总是一起变化
  • 三种蓝牙的用处
    A、经典蓝牙: 1)、传声音:如蓝牙耳机、蓝牙音箱。蓝牙设计的时候就是为了传声音的,所以是近距离的音频传输的不二选择。现在也有基于WIFI的音频传输方案,例如Airplay等,但是WIFI功耗比蓝牙大很多,设备无法做到便携。因此固定的音响有WIFI的,移动的如耳机、便携音箱清一色都是基于经典蓝牙协议的。 2)、传大量数据: 例如某些工控场景,使用Android或Linux主控,外挂蓝牙遥控设备的,可以使用经典蓝牙里的SPP协议,当作一个无线串口使用。速度比BLE传输快多了。 B、BLE蓝牙: 1)、耗电低,数据量小,如遥控类(鼠标、键盘),传感设备(心跳带、血压计、温度传感器、共享单车锁、智能锁、防丢器、室内定位)。 2)、目前手机和智能硬件通信的性价比最高的手段,直线距离约50米,一节5号电池能用一年,传输模组成本便宜,远比WIFI、4G等大数据量的通信协议更实用。虽然蓝牙距离近了点,但胜在直连手机,价格超便宜。以室内定位为例,商场每家门店挂个蓝牙beacon,就可以对手机做到精度10米级的室内定位,将来的蓝牙5.1更可以实现厘米级室内定位。 C、双模蓝牙: 1)、智能电视遥控器:很多智能电视配的遥控器带有语音识别,需要用经典蓝牙才能传输声音。而如果做复杂的按键,例如原本键盘表上没有的功能,经典蓝牙的HID按键协议就不行了,得用BLE做私有协议。 2)、降噪耳机
  • 在BLE蓝牙中一次写入超过20字节数据包的方法和技巧
    android是一个坑,蓝牙是android的坑中坑,BLE是蓝牙的坑中坑,而20字节数据包的限制是BLE中最不合理的坑,只要开发的APP需要与BLE通信,就绕不开这个坑,因为20字节的数据包的确太小了。如何跳出这个坑几乎是每一个开发者都要面临的问题。无论是网上还是论坛里关于跳这个坑的博文很多,当我也成为一个跳坑者的时候看了很多这样的博文,但是,这些博文中真正有过跳坑经历的作者很少,有知识、有营养的贴子很少,都是抄来抄去。本作者不做这样的搬运工,写的文章都是亲历的跳坑过程,如果所介绍的方法和技巧对你无效,那只可能设备和环境的个性差别所致。 我现在所用的开发工具是android studio 3.5.2,具体的配置如下图: 在版本为android 5.1.1的真实手机上实现手机与ble蓝牙模块JDY 16的通信,在手机与蓝牙建立起联系后,需要蓝牙模块透传一条72字节的数据时,发现模块只能接收到前20字节,因此掉入了这个坑。实验时是用两条链接的UUID作为数据传送到蓝牙模块,发现模块收到的信息是这样的: 收到的信息刚好是20字节。据商家说,JDY 16模块传送的数据包不受20字节的限制,因此,我把分包传送作为备选方案,先试试不分包的方法。网上说修改mtu数据就能够实现大于20字节数据包的传送,于是照葫芦画瓢地写了requestMtu()方法,并在requestMtu(
  • 蓝牙智能窗帘(天猫精灵生态)方案
    系统简介 蓝牙智能窗帘是带有一定调节、语音控制功能的电动窗帘。 翼数信息使用自主开发的BCB01智能蓝牙模块,对接了天猫精灵蓝牙Mesh生态,成功的应用在窗帘上。该模块较高的接收灵敏度满足了窗帘应用对运行时准确性的严格要求,保证了天猫精灵的控制范围和成功率。该方案实现了窗帘定时开合,按百分比开合,一键控制,远程控制等功能,可以加速品牌商,快速落地窗帘产品形态,快速量产,在安全性,便捷性和扩展性上都有很好的表现,天猫精灵认证产品互通互联,保证了更加一致的体验。 方案同时还可提供成熟的基于BCB01的窗帘电机控制器,手机和遥控同时控制,大大提升使用的灵活性,扩展了使用场景。 系统框图 蓝牙智能窗帘是由基于BCB01的窗帘电机控制器实现智能控制,可以对窗帘定时开合,按百分比开合,一键控制,远程控制,场景模式,情景联动。而且对接了天猫精灵蓝牙Mesh生态,支持语音控制,使用起来非常智能、方便。 系统功能 天猫精灵语音控制一键控制定时设置定时开合,按百分比开合远程控制场景模式情景联动 方案产品图 方案核心技术 天猫精灵生态方案,产品可加入天猫精灵AI联盟远程控制支持BLE 4.2 和BLE5.0支持客户功能定制无线固件升级功能 方案规格 工作频率:2402-2480 MHz蓝牙标准:BLE 4.2 / 5.0 软硬件规范工作电压:DC 2.3V~3.6V工作温度:-40℃ to +85
  • 蓝牙智能灯带(天猫精灵生态)方案
    系统简介 灯带是指把LED灯用特殊的加工工艺焊接在铜线或者带状柔性电路板上面,再连接上电源发光,因其发光时形状如一条光带而得名。灯带发光颜色多变、可调光、可控制颜色变化、可选择单色和RGB的效果,带给人们多彩缤纷的视觉效果。 翼数信息使用自主开发的BCB01智能蓝牙模块,对接了天猫精灵蓝牙Mesh生态,成功的应用在灯带上。该模块较高的接收灵敏度满足了灯带应用对运行时实时性的严格要求,保证了天猫精灵的控制范围和成功率。 该方案实现了无极调光,智能渐变,场景模式,智能定时等功能,可以加速品牌商,快速落地灯带产品形态,快速量产,在安全性,便捷性和扩展性上都有很好的表现,天猫精灵认证产品互通互联,保证了更加一致的体验。 方案同时还可提供成熟的基于BCB01的蓝牙遥控器,手机和遥控同时控制,大大提升使用的灵活性,扩展了使用场景。 系统框图 蓝牙智能灯带是基于BCB01的蓝牙灯带,可以无极调光,智能渐变,场景模式,智能定时,穿墙遥控。而且对接了天猫精灵蓝牙Mesh生态,支持语音控制开关,使用起来非常智能、方便。 系统功能 无极调光智能渐变场景模式音乐联动穿墙控制语音控制 方案产品图 方案核心技术 天猫精灵生态方案,产品可加入天猫精灵AI联盟无极调光控制距离>50M支持BLE 2 和BLE5.0支持客户功能定制无线固件升级功能 方案规格 工作频率:2402-2480 MHz蓝牙标准:BLE 4
  • 低功耗(BLE)蓝牙模块开发之路
    2020/7/16更新:项目翻盘 一 项目流程概览:(已经将本项目中的敏感技术剔除,转化成通用的技术方案) 申请权限(位置权限、提示使用蓝牙需要打开位置信息。打开蓝牙的权限,)扫描蓝牙连接/断开蓝牙接收/发送数据解析数据以图表动态的显示数据的变化保存数据到excel中 1.申请权限: 蓝牙权限:在manifest/AndroidManifest.xml中添加需要的所有权限(建议直接复制): <!-- 蓝牙、位置所需权限 --> <uses-permission android:name="android.permission.BLUETOOTH" /> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> <!-- 在Android6.0 定位权限申请 --> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <!-- 在Android10.0里,获取定位权限需要增加以下权限。 --> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <!-- <uses-permission android
  • BLE和传统蓝牙存在哪些优缺点?
    蓝牙BLE即低功耗蓝牙。蓝牙BLE相对于传统蓝牙的优点:最大化的待机时间、快速连接和低峰值的发送/接收功耗。应用区别:BLE低功耗蓝牙一般多用在蓝牙数据模块,拥有极低的运行和待机功耗,使用一粒纽扣电池可连续工作数年之久;BT经典蓝牙模块多用在蓝牙音频模块,音频需要大码流的数据传输更适合使用。 1、蓝牙BLE的发送和接受任务会以最快的速度完成,完成之后蓝牙BLE会暂停发射无线(但是还是会接受),等待下一次连接再激活;而传统蓝牙是持续保持连接。 2、广播信道(为保证网络不互相干扰而划分)仅有3个,而传统蓝牙是32个。 3、蓝牙低能耗技术“完成”一次连接(即扫描其它设备、建立链路、发送数据、认证和适当地结束)只需3ms。而标准蓝牙技术完成相同的连接周期需要数百毫秒。 4、蓝牙低能耗技术使用非常短的数据包,标准蓝牙技术使用的数据包长度较长。 来源:https://blog.csdn.net/guichuan521/article/details/102841211