精华内容
下载资源
问答
  • C# 蓝牙通讯实例

    2018-11-22 11:33:32
    主要实现了PC蓝牙基本通信,具有一定的参考价值,包括蓝牙配对和文件收发,本文实例为大家分享了C#实现PC蓝牙通信代码。
  • c#蓝牙通讯源码

    2018-11-08 08:36:46
    这是一个c#蓝牙通讯源代码,供大家参考学习。
  • 有关于 android 平台下 Bluetooth工作原理&流程简介;
  • 蓝牙通讯详细原理,有关蓝牙通讯详细原理以及详细的流程说明。
  • 6.765–6.795 MHz 6.780 MHz 13.553–13.567 MHz 13.560 MHz 26.957–27.283 MHz 27.120 MHz 40.66–40.70 MHz 40.68 MHz 433.05–434.79 MHz ...–246 GHz 245 GHz 蓝牙通讯都是通过频率为2.4GHz的ISM(Industrial...

     

    Electromagnetic spectrum,电磁波谱,包括电磁辐射(electromagnetic radiation)所有可能的频率(frequencies), 和与其相应的波长和光子能量(E=hf)。

    根据公式c=hλ,电磁波谱的频率范围从小于 1hertz到10的25次方Hz,波长(wavelengths)从数千米到原子大小。

    短波长的极限被认为几乎等于普朗克长度( 约等于1.616229x10^-35),

    一个物体的电磁波谱专指的是这物体发射或吸收的电磁辐射,又称电磁波的特征频率分布。

    频率范围分成了很多个独立的波段,长波长的极限被认为等于整个宇宙的大小,虽然原则上电磁波谱是无限的,而且是连续的。


     无线电频谱,Radio spectrum,频率介于30Hz和300GHz之间,也叫做射频电波(Radio waves),简称射频、射电,也经常用Radio Frequency(RF)来表示射频、无线电频率。无线电波不用人工导波而在空间传播的电磁波。一般而言,无线电频谱是指9kHz-3000GHz频率范围内无线电频率的总称。无线电技术是指将声音讯号或其他信号经过转换,利用无线电波传播。


    无线电频段中,还包含了ISM频段的定义。

    ISM频段(Industrial Scientific Medical Band),中文意思分别是工业的(Industrial)、科学的(Scientific)和医学的(Medical),因此顾名思义ISM频段就是各国挪出某一段频段主要开放给工业,科学和医学机构使用。应用这些频段无需许可证或费用,只需要遵守一定的发射功率(一般低于1W),并且不要对其它频段造成干扰即可。ISM频段在各国的规定并不统一。如在美国有三个频段902-928 MHz、2400-2483.5 MHz及5725-5850 MHz,而在欧洲900MHz的频段则有部分用于GSM通信。而2.4GHz为各国共同的ISM频段。因此无线局域网(IEEE 802.11b/IEEE 802.11g)、蓝牙、ZigBee等无线网络,均可工作在2.4GHz频段上。

    在国际电联无线电规则ITU-R第5条脚注5.138,5.150和5.280 中指定的ISM频段如下:

    频率范围

    中心频率

    可用性

    6.765–6.795 MHz

    6.780 MHz

    13.553–13.567 MHz

    13.560 MHz

    26.957–27.283 MHz

    27.120 MHz

    40.66–40.70 MHz

    40.68 MHz

    433.05–434.79 MHz

    433.92 MHz

    仅限ITU Region 1

    902–928 MHz

    915 MHz

    仅限ITU Region 2

    2.400–2.500 GHz

    2.450 GHz

    5.725–5.875 GHz

    5.800 GHz

    24–24.25 GHz

    24.125 GHz

    61–61.5 GHz

    61.25 GHz

    122–123 GHz

    122.5 GHz

    244–246 GHz

    245 GHz


    蓝牙的通讯都是通过频率为2.4GHz的ISM(Industrial, Scientific and Medical)波段的电磁波(radio frequencies)。

    2.4G是一种无线技术,由于其频段处于2.400GHz~2.4835GHz之间,所以简称2.4G无线技术。 

    蓝牙是为了短距离通信而产生的无线技术,这项技术由Bluetooth Special Interest Group(SIG)负责监管。

    SIG是非盈利的、非股份制公司,负责蓝牙标准的开发以及蓝牙技术和商标的授权,在1998年由5个公司创立,分别是爱立信、诺基亚、IBM、东芝和英特尔,到2012年,SIG的公司成员数超过了16000。

    蓝牙提供了安全、稳定、低功耗和低成本的设备间信息交换方案。

    蓝牙是个全球标准,所以具备蓝牙功能的两个设备之间都能通信,或者配对(pair)。

    通信并不需要直接的光线通道,能穿越大部分的非金属物体。

    第一个蓝牙版本于1999年发布。然后2000年出现了据有蓝牙功能的移动电话。

    经典蓝牙的频段使用情况,有79个通道(Channels),每个通道间隔1MHz,从2402MHz开始。

    BLE的频段使用情况,分为数据通道和广播通道,有40个通道,每两个通道间隔2MHz。

    参考:

    https://en.wikipedia.org/wiki/Electromagnetic_spectrum

    https://en.wikipedia.org/wiki/Radio_spectrum

    https://en.wikipedia.org/wiki/ISM_radio_band

    Bluetooth® Low Energy Channels - Developer Help

    Introduction to Bluetooth Classic | Argenox

    展开全文
  • 蓝牙的工作原理

    万次阅读 2014-08-28 08:59:31
    蓝牙技术规定每一对设备之间进行蓝牙通讯时,必须一个为主角色,另一 为从角色,才能进行通信,通信时,必须由主端进行查找,发起配对,建链成功 后,双方 即可收发数据。理论上,一个蓝牙主端设备,可同时与7个...

    1. 蓝牙通信的主与从

    蓝牙技术规定每一对设备之间进行蓝牙通讯时,必须一个为主角色,另一

    为从角色,才能进行通信,通信时,必须由主端进行查找,发起配对,建链成功

    后,双方 即可收发数据。理论上,一个蓝牙主端设备,可同时与7个蓝牙从端

    设备进行通讯。一个具备蓝牙通讯功能的设备, 可以在两个角色间切换,平时

    工作在从模式,等待其它主设备来连接,需要时,转换为主模式,向其它设备发

    起呼叫。一个蓝牙设备以主模式发起呼叫时,需要知道 对方的蓝牙地址,配对

    密码等信息,配对完成后,可直接发起呼叫。

     

    2. 蓝牙的呼叫过程

     

        蓝牙主端设备发起呼叫,首先是查找,找出周围处于可被查找的蓝牙设备。

    主端设备找到从端蓝牙设备后,与从端蓝牙设 备进行配对,此时需要输入从端

    设备的PIN 码,也有设备不需要输入PIN码。配对完成后,从端蓝牙设备会记录

    主端设备的信任信息,此时主端即可向从端设备 发起呼叫,已配对的设备在下

    次呼叫时,不再需要重新配对。已配对的设备,做为从端的蓝牙耳机也可以发起

    建链请求,但做数据通讯的蓝牙模块一般不发起呼叫。 链路建立成功后,主从

    两端之间即可进行双向的数据或语音通讯。在通信状态下,主端和从端设备都可

    以发起断链,断开蓝牙链路。

     

    3. 蓝牙一对一的串口数据传输应用

        蓝牙数据传输应用中,一对一串口数据通讯是最常见的应用之一,蓝牙设

    备在出厂前即提前设好两个蓝牙设备之间的配对信息,主端预存有从端设备的

    PIN 码、 地址等,两端设备加电即自动建链,透明串口传输,无需外围电路干

    预。一对一应用中从端设备可以设为两种类型,一是静默状态,即只能与指定的

    主端通信,不被 别的蓝牙设备查找;二是开发状态,既可被指定主端查找,也可

    以被别的蓝牙设备查找建链。

    展开全文
  • 成长中的小白又来发博客了,这次带来的分享是结合我前两篇『串行口通信』和『初学者模式下的12864液晶(一)』的技术博客综合起来再加今天的蓝牙模块的应用,今天稍微讲讲蓝牙基本的操作和基本接法,重点是几个方面的...

    成长中的小白又来发博客了,这次带来的分享是结合我前两篇『串行口通信』和『初学者模式下的12864液晶(一)』的技术博客综合起来再加今天的蓝牙模块的应用,今天稍微讲讲蓝牙基本的操作和基本接法,重点是几个方面的结合,还是那句话 大神勿喷

    在学习使用某个模块之前得必须使用其数据手册,接下来我们讲讲其手册的一些重要数据。

    c7f8184902fd

    模块介绍

    模块特点

    蓝牙 2.0 带 EDR (最高传输数率可达2.1M)

    内置 2.4GHz PCB射频天线

    外置 8Mbit FLASH

    支持主从一体

    传输距离超过20米(空旷情况下,实际可达40米以上)

    支持软件控制主从模块(主从切换)

    模块可以作为 SMD 贴片工艺

    存储温度:-40 至+85 度,工作温度:-25 至+75 度

    灵 敏 度:灵敏度(误码率)达到 -80dBm

    协波干扰:2.4MHz,发射功率 3 dBm

    功 耗:配对时 30~40MA 波动,配对完毕通信 8MA

    供电电源:低电压 3.3V 工作(3.1V~4.2V)

    外观尺寸: 27mm×13mm×2mm

    通过REACH、ROHS认证

    模块电路图

    c7f8184902fd

    模块电路图

    还有一点就是学会看其指令和使用其指令来配置蓝牙模块,那么如何进行配置呢?,我们通过模块与电脑USB端口连接,下载一个串口助手,打开串口助手,打开串口连接,然后我们在发送框中发送指令,如AT+VERSION?,然后勾选自动发送,然后我们按蓝牙上的KEY键进入配置模式,此时我们就能看到其返回的信息了,以此来推,想要如何设置,就照指令手册来设置就好了,但是最好用默认模式,因为手册里的介绍都是以默认模式来进行的。

    接下来我们把蓝牙模块与单片机相连,如下图

    c7f8184902fd

    单片机与蓝牙模块和液晶屏

    最后剩下的就用代码来解决了,它的代码其实就一个串行口通信就能实现蓝牙数据与单片机数据的传输了,我们通过手机端的串口助手向单片机发送数据就能显示在液晶屏上。

    void init()

    {

    TMOD = 0x20;//确定T1工作方式 自动重载8位定时器,收TR1控制

    TH1 = 0xFD;//装初值

    TL1 = 0xFD;

    TR1 = 1;//开启定时器

    REN = 1;//允许串行口接受

    SM0 = 0;//方式1

    SM1 = 1;

    EA = 1;//中断总开关开

    ES = 1;//串行口中断打开

    }

    void sen_char(uchar value)

    {

    ES=0;

    SBUF =value; //把接收到的缓存在value中的给SBUF发送

    while(!TI);

    TI=0;

    ES=1;

    }

    void sen_str(uchar *str)

    {

    ES = 0; //串行口中断关闭

    while((*str)!='\0')

    {

    sen_char(*str); //SBUF发送寄存器

    while(!TI); //发送

    TI = 0; //发送中断标志位清0

    str++;

    }

    }

    void ser() interrupt 4

    {

    unsigned int j;

    // i=0;

    i++;

    RI = 0; //软件清0

    get_usart=SBUF; //读取SBUF中数据存于a

    //lcm_clr();

    lcd_pos(2, i);

    write_data(get_usart);

    }

    结合上一篇『初学者模式下的12864液晶(一)』写一个简单的主函数之类的就能实现数据在液晶显示屏的显示了。

    展开全文
  • (二)小程序蓝牙和设备通讯

    千次阅读 2018-06-13 15:43:10
    (一)蓝牙需要知道的几个名词 1、profile profile可以理解为一种规范,一个标准的通信协议,它存在于从机中。蓝牙组织规定了一些标准的profile,例如 HID OVER GATT ,防丢器 ,心率计等。每个profile中会包含多个...

    (一)蓝牙需要知道的几个名词

    1、profile

    profile可以理解为一种规范,一个标准的通信协议,它存在于从机中。蓝牙组织规定了一些标准的profile,例如 HID OVER GATT ,防丢器 ,心率计等。每个profile中会包含多个service,每个service代表从机的一种能力。

    2、service

    service可以理解为一个服务,在ble从机中,通过有多个服务,例如电量信息服务、系统信息服务等,每个service中又包含多个characteristic特征值。每个具体的characteristic特征值才是ble通信的主题。比如当前的电量是80%,所以会通过电量的characteristic特征值存在从机的profile里,这样主机就可以通过这个characteristic来读取80%这个数据

    3、characteristic

    characteristic特征值,ble主从机的通信均是通过characteristic来实现,可以理解为一个标签,通过这个标签可以获取或者写入想要的内容。

    4、UUID

    UUID,统一识别码,我们刚才提到的service和characteristic,都需要一个唯一的uuid来标识

    整理一下,每个从机都会有一个叫做profile的东西存在,不管是上面的自定义的simpleprofile,还是标准的防丢器profile,他们都是由一些列service组成,然后每个service又包含了多个characteristic,主机和从机之间的通信,均是通过characteristic来实现。

    (二)流程图

    微信文档总结的蓝牙通讯流程图

    这里写图片描述

    我觉得你看一遍微信的官方文档,按照我这个流程基本上就可以调通蓝牙。

    (三)微信小程序蓝牙通讯相关代码

    1.搜索附近的设备

     /* 初始化蓝牙适配器 */
            wx.openBluetoothAdapter({
              success: function (res) {
                //  console.log('初始化蓝牙适配器成功');
                wx.startBluetoothDevicesDiscovery({
                  services: [],
                  allowDuplicatesKey: false,
                  success: function (res) {
    
                    // console.log('这里是开始搜索附近设备', res);
    
                    wx.onBluetoothDeviceFound(function (res) {
                      console.log("成功", res);
    
    
                      /* 获取设备信号,判断信号强度 */
                      var device_RSSI_1 = res.devices[0].RSSI;
                      //Number将不同的对象转换成数字
                      var device_RSSI_2 = Number(device_RSSI_1);
                      //Math.abs获取绝对值
                      var device_RSSI = Math.abs(device_RSSI_2);
    
    
                      if (device_RSSI <= 60) {
    
                        var img = "../../images/signal4.png"
    
                      } else if (device_RSSI > 60 && device_RSSI <= 70) {
                        var img = "../../images/signal3.png"
    
                      } else if (device_RSSI > 70 && device_RSSI <= 80) {
    
                        var img = "../../images/signal2.png"
    
                      } else if (device_RSSI > 80) {
    
                        var img = "../../images/signal1.png"
    
                      }
    
    
                      if (res.devices[0].name == "") {
                        var temp = {
                          ID: res.devices[0].deviceId,
                          name: "",
                          RSSI: res.devices[0].RSSI,
                          img: img
                        }
                      } else {
                        var temp = {
                          ID: res.devices[0].deviceId,
                          name: res.devices[0].name,
                          RSSI: res.devices[0].RSSI,
                          img: img
                        }
    
                      }
                      var tempName = temp.name;
                      console.log('name', tempName)
                       //这里我直接把没有名字的设备过滤掉了
                      if (tempName != "") {
                        console.log('tempName', tempName)
                        devices.push(temp);//我定义的一个设备数组用于保存搜索到的设备
    
                        that.setData({
                          deviceArray: devices,
                          isShow: true
                        });
                      }
                    });
                  },
                });
              },
    
              fail: function (res) {
                wx.showLoading({
                  title: '请打开蓝牙',
                });
              }
            })
          }
        })
      },

    2.连接设备

    我这里的逻辑是:用户点击搜索到的设备后,跳转到另一个界面进行相应的操作。

    /**
       * 生命周期函数--监听页面加载
       */
      onLoad: function (options) {
       var that = this;
        wx.stopBluetoothDevicesDiscovery({
          success: function (res) {
            console.log('停止搜索设备', res)
            that.setData({
              connect: false
            })
          }
        })
        console.log(options);
        this.setData({
          deviceId: options.id,
          deviceName: options.name,
          num: options.num,
          deviceType: options.type
    
        });
        console.log('设备的ID', this.data.deviceId);
        console.log('设备的号', this.data.num);
      },
    
    /**
       * 生命周期函数--监听页面显示
       */
      onShow: function () {
    
        var that = this;
        /* 连接中动画 */
        wx.showLoading({
          title: '连接中...',
        });
        //开始连接蓝牙设备 
        wx.createBLEConnection({
          deviceId: that.data.deviceId,
          success: function (res) {
            console.log('连接成功', res);
    
            /* 获取设备的服务UUID */
            wx.getBLEDeviceServices({
              deviceId: that.data.deviceId,
              success: function (service) {
                var all_UUID = service.services;    //取出所有的服务
                console.log('所有的服务', all_UUID);
                var UUID_lenght = all_UUID.length;  //获取到服务数组的长度
                /* 遍历服务数组 */
                for (var index = 0; index < UUID_lenght; index++) {
                  var ergodic_UUID = all_UUID[index].uuid;    //取出服务里面的UUID
                  var UUID_slice = ergodic_UUID.slice(4, 8);   //截取4到8位
                  /* 判断是否是我们需要的FEE0 */
                  if (UUID_slice == 'FEE0' || UUID_slice == 'fee0') {
                    var index_uuid = index;
                    that.setData({
                      serviceId: all_UUID[index_uuid].uuid    //确定需要的服务UUID
                    });
                  };
                };
                console.log('需要的服务UUID', that.data.serviceId)
                that.Characteristics();     //调用获取特征值函数
              },
            });
            that.setData({
              connect: true
            })
          },
          complete: function (res) {
            console.log('打印出>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>', res);
          }
        })
      },
    
    
     Characteristics: function () {
        var that = this;
        var device_characteristics = [];
        var characteristics_uuid = {};
        wx.getBLEDeviceCharacteristics({
          deviceId: that.data.deviceId,
          serviceId: that.data.serviceId,
          success: function (res) {
            var characteristics = res.characteristics;      //获取到所有特征值
            var characteristics_length = characteristics.length;    //获取到特征值数组的长度
            console.log('获取到特征值', characteristics);
            console.log('获取到特征值数组长度', characteristics_length);
            /* 遍历数组获取notycharacteristicsId */
            for (var index = 0; index < characteristics_length; index++) {
              var noty_characteristics_UUID = characteristics[index].uuid;    //取出特征值里面的UUID
              var characteristics_slice = noty_characteristics_UUID.slice(4, 8);   //截取4到8位
              /* 判断是否是我们需要的FEE1 */
              if (characteristics_slice == 'FEE1' || characteristics_slice == 'fee1') {
                var index_uuid = index;
                that.setData({
                  notycharacteristicsId: characteristics[index_uuid].uuid,    //需确定要的使能UUID
                  characteristicsId: characteristics[index_uuid].uuid         //暂时确定的写入UUID
                });
                /* 遍历获取characteristicsId */
                for (var index = 0; index < characteristics_length; index++) {
                  var characteristics_UUID = characteristics[index].uuid;    //取出特征值里面的UUID
                  var characteristics_slice = characteristics_UUID.slice(4, 8);   //截取4到8位
                  /* 判断是否是我们需要的FEE2 */
                  if (characteristics_slice == 'FEE2' || characteristics_slice == 'fee2') {
                    var index_uuid = index;
                    that.setData({
                      characteristicsId: characteristics[index_uuid].uuid         //确定的写入UUID
                    });
                  };
                };
              };
            };
            console.log('使能characteristicsId', that.data.notycharacteristicsId);
            console.log('写入characteristicsId', that.data.characteristicsId);
            that.notycharacteristicsId();       //使能事件
          },
        })
      },
    
      /* 使能函数 */
      notycharacteristicsId: function () {
        var that = this;
    
        var recve_value = "";
    
        wx.notifyBLECharacteristicValueChange({
          deviceId: that.data.deviceId,
          serviceId: that.data.serviceId,
          characteristicId: that.data.notycharacteristicsId,
          state: true,
          success: function (res) {
            console.log('使能成功', res);
            wx.hideLoading();
             if (that.data.isTest) {
    
              console.log(res);
              console.log('this>>>>>>>>>>>>>>>>>>>',this);
              setTimeout(function () { 
              that.SendTap()  
    
              }, 2000);  
            console.log('that>>>>>>>>>>>>>>>>>>>', that);
            } 
    
            /* 设备返回值 */
            wx.onBLECharacteristicValueChange(function (res) {
              var length_hex = [];
              var turn_back = "";
              var result = res.value;
              var hex = that.buf2hex(result);
    
              recve_value = recve_value + hex;
              console.log('设备>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>返回的值', recve_value);
          },
          fail: function (res) {
            wx.showToast({
              title: '通讯异常',
            })
            console.log('使能失败', res);
          },
          complete:function(res){
            console.log('使能', res);
          }
        })
      },

    3.发送数据

    注意:蓝牙最多一次发送20个字节,所以大于20个字节时,需要分段发送.

    var value_initial_1 = "你要发的数据";
     var write_array = [];//用于发送数据的数组。
     /* 判断是否存在空格 */
        if (value_initial_1.indexOf(' ') > 0) {
          var value_initial = that.splitStr(value_initial_1, ' ');    //存在空格时
          console.log('删除掉空格', value_initial);
        } else {
          var value_initial = value_initial_1;    //不存在空格时
        }
    
        /* 判断字节是否超过20字节 */
        if (value_initial.length > 20) {
    
          //当字节超过20的时候,采用分段发送
    
            //选择16进制发送时
            var value_initial_exceed = value_initial;
            //将输入框的值取过来,方便循环
            var value_initial_average = Math.ceil(value_initial_exceed.length / 20);        //将value_initial_exceed的长度除以20,余数再向上取一,确定循环几次
            console.log('需要循环的次数', value_initial_average);
            for (var i = 0; i < value_initial_average; i++) {
    
              if (value_initial_exceed.length > 20) {
                var value_initial_send = value_initial_exceed.slice(0, 20);      //截取前20个字节
                console.log('截取到的值', value_initial_send);
                value_initial_exceed = value_initial_exceed.substring(20);      //value_initial_exceed替换为取掉前20字节后的数据
                write_array.push(value_initial_send);       //将所有截取的值放在一个数组
              } else {
                write_array.push(value_initial_exceed);
              }
    
            }
            console.log('write_array数组', write_array);
            write_array.map(function (val, index) {
              setTimeout(function () {
                var value_set = val;
                console.log('value_set', value_set);
                var write_function = that.write(value_set);       //调用数据发送函数
              }, index * 100)
            });
        } else {                   
        //当字节不超过20的时候,直接发送
            var value = value_initial;
          var write_function = that.write(value);     //调用数据发送函数
        }
      },
    
      //写入数据
      write: function (str) {
        var that = this;
        var value = str;
        console.log('value', value);
        /* 将数值转为ArrayBuffer类型数据 */
        var typedArray = new Uint8Array(value.match(/[\da-f]{2}/gi).map(function (h) {
          return parseInt(h, 16)
        }));
        var buffer = typedArray.buffer;
        wx.writeBLECharacteristicValue({
          deviceId: that.data.deviceId,
          serviceId: that.data.serviceId,
          characteristicId: that.data.characteristicsId,
          value: buffer,
          success: function (res) {
            console.log('数据发送成功', res);
          },
          fail: function (res) {
            console.log('调用失败', res);
            /* 调用失败时,再次调用 */
            wx.writeBLECharacteristicValue({
              deviceId: that.data.deviceId,
              serviceId: that.data.serviceId,
              characteristicId: that.data.characteristicsId,
              value: buffer,
              success: function (res) {
                console.log('第2次数据发送成功', res);
              },
              fail: function (res) {
                console.log('第2次调用失败', res);
                /* 调用失败时,再次调用 */
                wx.writeBLECharacteristicValue({
                  deviceId: that.data.deviceId,
                  serviceId: that.data.serviceId,
                  characteristicId: that.data.characteristicsId,
                  value: buffer,
                  success: function (res) {
                    console.log('第3次数据发送成功', res);
                  },
                  fail: function (res) {
                    console.log('第3次调用失败', res);
                  }
                });
              }
            });
          }
        });
      },

    (四)相关的转换方法

      /* ArrayBuffer类型数据转为16进制字符串 */
      buf2hex: function (buffer) { // buffer is an ArrayBuffer
        return Array.prototype.map.call(new Uint8Array(buffer), x => ('00' + x.toString(16)).slice(-2)).join('');
      },
    
    
      /* 去除输入框输入的值中的空格 */
      splitStr: function (str, s) {
        var newStr = "";
        var strArray = str.split(s);
        for (var i = 0; i < strArray.length; i++) {
          newStr += strArray[i];
        }
        return newStr;
      },

    Demo下载地址

    此demo包含了微信小程序充值和蓝牙通讯的功能。希望能帮您节省一定的时间,快速上手。如果有问题留言,我看到会回复您的。

    展开全文
  • 1、什么是蓝牙?  蓝牙(BlueTooth)是一种支持设备短距离通信的无线电技术,功率级别分CLASS1 100米距离和CLASS2 10米距离两种。... 蓝牙技术规范由SIG组织开发维护,目前具备蓝牙通讯功能的产品已经很多。
  • 蓝牙模块设计原理

    2015-07-19 11:14:20
    本系统基于HC05 设计蓝牙模块,可供参考,并且已经使用成功
  • 蓝牙通信,完整的通信流程!

    万次阅读 多人点赞 2017-12-28 16:30:34
    1、NFC 2、蓝牙 3、WIFI 下面是对这三个知识点做的一个总结,参照对比可以选择合适的方案。而本章着重讲的蓝牙之间通信。 首先介绍一下蓝牙的两个广播Receiver。 第一个:蓝牙状态的改变是通过广播接收到的。 // ...
  • c#蓝牙通信接收数据

    千次阅读 2020-12-20 13:58:57
    文章 史迪奇2号 2017-05-17 1162浏览量 [C#] 编程控制笔记本蓝牙与外部蓝牙设备通信 一、蓝牙模块XLBT232‐D01介绍外部设备蓝牙 1.1、蓝牙模块简介 XLBT232-D0101蓝牙模块采用CSR BlueCore 芯片配置6-8Mbit 的软件...
  • HC-05 嵌入式蓝牙串口通讯模块(以下简称模块)具有两种工作模式:命令响应工作 模式和自动连接工作模式,在自动连接工作模式下模块又可分为主(Master)、从(Slave) 和回环(Loopback)三种工作角色。当模块处于...
  • 无线与宽带通讯公司Broadcom已经推出了一款名为WICED Sense的开发套件,售价仅19.99美元。而作为一个蓝牙智能标签传感器,它能够帮助人们开速开发物联网app原型。除了本体,Broadcom的WICED Sense套件还提供了5个微...
  • 蓝牙通信的源码与PCB电路原理图,主要应用于软硬件结合开发
  • 蓝牙原理,蓝牙耳机怎么连接手机

    万次阅读 2020-07-13 12:01:42
     蓝牙技术规定每一对设备之间进行蓝牙通讯时,必须一个为主角色,另一为从角色,才能进行通信,通信时,必须由主端进行查找,发起配对,建链成功后,双方即可收发数据。理论上,一个蓝牙主端设备,可同时与7个蓝
  • 蓝牙智能门锁工作原理是什么?蓝牙门锁原理图步骤详解。蓝牙智能门锁主要是通过手机开锁的方式来解锁,相比传统门锁,蓝牙门锁更加便捷。此外,还可以通过手机APP来实现门锁实时管理、访客管理。是符合智能家居时代...
  • arduino蓝牙通讯

    2021-01-13 15:14:53
    这次的目标是要实现arduino通过蓝牙和PC通讯,arduino mega 1280必须要连接一个蓝牙无线串口设备才能实现。所以要添加下面的东西:1.蓝牙无线串口模块。2.面板的连接线,这个便宜,8块就长的短的,花花绿绿一大把。...
  •  //若状态为0,说明继电器为吸合状态,并发送“The Light is turn on”到蓝牙 } else { IN_1=0,flag_z=0;}} //否则则说明继电器为断开状态,则端口置高,并发送“The Light Was turn on”到蓝牙 break; case 98:{ ...
  • HC-05蓝牙串口通信模块应该是使用最广泛的一种蓝牙模块之一了。为什么呢? 因为HC05模块是一款高性能主从一体蓝牙串口模块,可以不用知道太多蓝牙相关知识就可以很好的上手。说白了,只是个蓝牙转串口的设备,你...
  • 蓝牙通信工作流程讲解

    万次阅读 2018-06-19 14:35:45
    最近项目上需要蓝牙通讯功能,所以自己私下里学习了一下蓝牙通讯相关的知识。一直以为蓝牙通讯是调用系统层的API实现的,比如我们平时用的利用蓝牙传照片和文件,我们只需要选择一下接受设备就可以了,但是自己实现...
  • 蓝牙模块的工作原理

    万次阅读 2019-10-30 14:47:17
    蓝牙模块的工作原理 一.蓝牙模块的工作原理  蓝牙设备使用无线电波连接手机和电脑。蓝牙产品包含一块小小的蓝牙模块以及支持连接的蓝牙无线电和软件。当两台蓝牙设备想要相互交流时,它们需要进行配对。蓝牙设备...
  • 蓝牙技术原理

    2018-01-26 10:59:00
     蓝牙技术规定每一对设备之间进行蓝牙通讯时,必须一个为主角色,另一为从角色,才能进行通信,通信时,必须由主端进行查找,发起配对,建链成功后,双方即可收发数据。理论上,一个蓝牙主端设备,可同时与7个蓝牙...
  • PC上面的蓝牙的通信(C#)

    千次阅读 2016-09-28 11:40:00
    添加引用InTheHand.Net.Personal.dll ...首先创建一个蓝牙类 1 class LanYa { 2 public string blueName { get; set; } //l蓝牙名字 3 public BluetoothAddress blueAddress { get; set; } ...
  • 无线通信原理及协议栈(ZigBee、蓝牙等)解析

    万次阅读 多人点赞 2016-06-25 13:26:00
    蓝牙协议栈 3、无线电通信 根据 频率 和 波长 的差异,无线电通信大致可分为 长波 通信、 中波 通信、 短波 通信、 超短波 通信和 微波 通信。 4、电五官...
  • 蓝牙芯片技术原理详解

    千次阅读 2020-10-12 15:28:48
    蓝牙芯片技术规定每一对设备之间进行蓝牙通讯时,必须一个为主角色而另一为从角色,这样才能进行通信,通信时必须由主端进行查找,发起配对并建链成功后,双方即可收发数据。理论上一个蓝牙主端设备可同时与7个蓝牙...
  • 为了更多地了解蓝牙协议在 Android 设备上的工作原理,我构建了这个简单的 Android 库。 它基于(也基于他们的示例: )。 该存储库由 3 个不同的项目组成: :Android 设备的蓝牙简单库。 :简单的应用程序,...
  • 蓝牙模块HC-08手册,内部有蓝牙模块的AT指令配置手册,可以实现一对多收发操作,并且有详细的配置和使用讲解,最后还附有蓝牙模块的原理图。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,454
精华内容 1,781
关键字:

蓝牙通讯原理