zoukankan      html  css  js  c++  java
  • 蓝牙组网

    随着物联网的普及,智能家居的大众化,嵌入式设备之间的通信是不可避免的话题。

    低功耗,微体积,稳定性是通信设备的基本要求。同学推荐的JDY-10M BLE 组网蓝牙模块是很好的选择,就是下面这个东东。

    最大组网数255个,最低功耗低达5ua,最远可达50m(这个我没试过)

    总而言之,这个东西很牛B就是了。

    官方给出的使用手册已经清楚的不能再清楚了,下面分享一下我在使用这个模块的时候遇到一些关键性的问题。

    设备:STM32C8T6 + JDY_BLE 

    功能说明:通过JDY BLE实现主从蓝牙之间的控制。

    1、发送数据的问题

    官方说明手册上说的很明白,数据要以16位形式发送。

    但是与从机通信时需要发送如下格式的数据:AAFB0003112233

    (1)字符串方式发送

    在串口的printf打印和USART_SendData(USART1,Data); 方式发送都是字符串方式发送。

    他在发送的时候先把数据转换成对应的ASCII码,然后在按照二进制的方式一位一位的发送出去。

    例如发送字符串:ABCD

    首先将字符串转化为二进制数据

    0000 1010 (A)  、0000 1011  (B)  、0000 1100  (C)  、0000 1101 (D)

    然后按照串口设置的8位发送出去,串口接收到的数据如下

    编号 数据
    0 A
    1 B
    2 C
    3 D

    (2)16进制发送

    16进制发送的时候,通常先把两个8位的数据合成一个16位的数据,然后再发送

    同样发送上面的ABCD字符串,需要先将数据转化为:

    1010 1011 (AB)   1100 1101  (CD)    成两个16位的数据:0XAB  0XCD

    然后在通过串口发送,串口接收到的数据格式如下:

    编号 数据
    0 AB
    1 CD

    所以,在使用JDY BLE模块的时候,数据发送要以16进制发送,需要先将数据转换为16位的,然后在发送。

    但是我需要发送的数据比较固定,我就直接写了:

    const char master_to_bluetooth3[7] = {0XAA,0XFB,0X00,0X03,0XEE};

    然后调用发送函数:Send_Bluetooth(master_to_bluetooth1);

    //主机蓝牙发送信息给从机蓝牙,16进制发送
    void Send_Bluetooth(const char send[])
    {
        unsigned char i = 0;
        
        //计算数组元素数,需要加上1,
        unsigned char n = sizeof((const char *)send)/sizeof(send[0]) + 1;
    
        for(i = 0; i<n; i++)
        {
            USART1_Put_Char(*(send + i));
        }     
    }

    这样发送,接收端才能接收到数据,不然收不到数据。

    2、组网问题

    利用这个模块组网其实很简单,需要设置同样的广播名和组网ID号,然后不同的子模块分别设置不同的地址编号。

    在主机通信的时候,直接在发送的数据里面加上定向发送的模块的地址,即可发送到指定的模块上面。

    const char master_to_bluetooth3[7] = {0XAA,0XFB,0X00,0X03,0XEE};
    const char master_to_bluetooth1[7] = {0XAA,0XFB,0X00,0X01,0XEE};
    const char master_to_bluetooth4[7] = {0XAA,0XFB,0X00,0X04,0XEE};

    参考资料:https://blog.csdn.net/yibu_refresh/article/details/22695063

  • 相关阅读:
    部署ArcGIS JS API 离线包(Tomcat与IIS)
    BootStrap入门教程 (一)
    找个些有用的网站(CSS生成)
    android 调用系统相机拍照 获取原图
    Android 拍照
    Android调用Webservice发送文件
    Android 开发添加控件事件的三种方式
    vim中的ctrl+s导致的“假死”、无响应、不接受输入
    Ubuntu下eclipse中运行Hadoop时所需要的JRE与JDK的搭配
    ubuntu下安装bin文件
  • 原文地址:https://www.cnblogs.com/qsyll0916/p/9191128.html
Copyright © 2011-2022 走看看