欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

开源物联网平台thingsboard通过蓝牙基站获取蓝牙广播数据--芯片环境温度

程序员文章站 2022-07-14 09:02:00
...

这里要用到的设备:
一个终端设备,nrf52的芯片开发板,只要能烧录可以是任意板子。
一个金桔蓝牙网关,可以获取蓝牙广播并上传给thingsboard平台。

先我们需要一个设备可以把芯片的环境温度用蓝牙广播出来,这里我们选用的nordic的nrf52840开发板,因为nrf52840有内置的温度测量,所以不需要任何外设,当然如果手里有其他nrf52的芯片开发板应该也是可以,nordic给出的官方例子代码,我们直接拿出来用就行了:

NRF_TEMP->TASKS_START = 1; /** Start the temperature measurement. */

        /* Busy wait while temperature measurement is not finished, you can skip waiting if you enable interrupt for DATARDY event and read the result in the interrupt. */
        /*lint -e{845} // A zero has been given as right argument to operator '|'" */
        while (NRF_TEMP->EVENTS_DATARDY == 0)
        {
            // Do nothing.
        }
        NRF_TEMP->EVENTS_DATARDY = 0;

        /**@note Workaround for PAN_028 rev2.0A anomaly 29 - TEMP: Stop task clears the TEMP register. */
        chip_temp = (nrf_temp_read() / 4);

        /**@note Workaround for PAN_028 rev2.0A anomaly 30 - TEMP: Temp module analog front end does not power down when DATARDY event occurs. */
        NRF_TEMP->TASKS_STOP = 1; /** Stop the temperature measurement. */

后面有编译好的镜像文件,可以下载直接烧录即可。
把芯片温度放到广播数据里:

ble_advdata_manuf_data_t manuf_data;
     uint8_t data[9] = {myadv_type,myconfig.updateVersion.arr[0],adcValue&0xff,(adcValue>>8)&0xff,myloglen}; //Our data to advertise
     memcpy(data+5,&chip_temp,4);
      manuf_data.company_identifier = 0x2081;                                                              //Nordics company ID
      manuf_data.data.p_data = data;
      manuf_data.data.size = 9;

这里,广播了9个字节,温度从第6个字节开始,下标就是 data[5]开始,因为室温是20度左右所以这里应该就是data[5] 有数据。

有了广播的数据,就可以配置金桔蓝牙网关了,金桔蓝牙网关可以支持直接将广播数据推送给mqtt平台,也就是thingsboard上。

我们这样配置蓝牙网关:
开源物联网平台thingsboard通过蓝牙基站获取蓝牙广播数据--芯片环境温度
开源物联网平台thingsboard通过蓝牙基站获取蓝牙广播数据--芯片环境温度
另外我们需要配置温度字段
开源物联网平台thingsboard通过蓝牙基站获取蓝牙广播数据--芯片环境温度
因为刚才介绍了,室温只有20度只有一位有效,而且从第5位开始,所以这里就这样填写,添加完是这样的:
开源物联网平台thingsboard通过蓝牙基站获取蓝牙广播数据--芯片环境温度
这里我多添加了一个rssi信号强度的值,不用到的话可以不加。
这样修改后,点击基站的修改配置,让基站的配置生效。

这里要说明的是mqtt的用户名就是**是如何获取,在thingsboard里新建完网关设备后,在设备的详细内容里可以看到:
开源物联网平台thingsboard通过蓝牙基站获取蓝牙广播数据--芯片环境温度
关于如果建立网关设备,可以参考另一篇建立网关设备的教程。

金桔蓝牙网关配置生效以后,就可以上thingsboard上看数据了,先看下手机上设备的数据:
开源物联网平台thingsboard通过蓝牙基站获取蓝牙广播数据--芯片环境温度
在thingsboard上自动建立了这个蓝牙终端设备:
开源物联网平台thingsboard通过蓝牙基站获取蓝牙广播数据--芯片环境温度
点开后我们能看到上传的数据:
开源物联网平台thingsboard通过蓝牙基站获取蓝牙广播数据--芯片环境温度
当然,如果我们想给实时数据建立一个图,可以用thingsboard里的功能:
开源物联网平台thingsboard通过蓝牙基站获取蓝牙广播数据--芯片环境温度
开源物联网平台thingsboard通过蓝牙基站获取蓝牙广播数据--芯片环境温度