[原创] 蓝牙DIY——温度监控器
981 查看
5 回复
 楼主 | 发布于 2019-07-20 | 只看楼主
分享到:

这次我们来DIY我们的第一个作品《温度监控器》,功能:芯片每秒采集两次次温度,然后通过蓝牙传输给手机。需要结合之前串口例程和温度采集例程,先对这两个工程进行简要介绍。

蓝牙串口例程介绍

    打开工程后,首先看到的就是工程文件树,如下所示。

工程文件非常多,但是我们这次需要关注的只有:主函数,设置文件,蓝牙串口服务三个文件。打开main.c文件,找到main函数如下。

main函数非常短小,函数功能见红字,这之中服务初始化函数最为重要,其中包括蓝牙串口服务的初始化,接收与发送特性的初始化,UUID的指定等等的。

       蓝牙串口的功能,也就是将串口发送的数据传给手机,将手机发送的数据数据发给串口。我们跳过所有的配置,直接看回调函数,都在main.c文件中。

串口接收回调函数

该函数在串口接收到数据后会调用,然后通过蓝牙发送函数将串口接收到的数据发送给手机。

蓝牙接收回调函数

    该函数在蓝牙接收到数据后调用,然后通过串口发送函数发送出去。

温度采集例程介绍

    打开前面介绍的温度采集例程,main.c文件中的main函数如下。

    例程先初始化温度和调试功能,然后在无限循环中每隔500ms采集一次温度并输出。

修改蓝牙串口例程

         下面就对蓝牙串口例程进行修改,使其不停的向手机发送温度。首先初始化如下变量。

   int high;           //浮点数整数部分

   float low;          //浮点数小时部分

   uint16_t n;          //发送字节数计数

   int esp;             //小数点精度控制

   char ch[4];          //临时字节存放

   int n1;              //临时计数

   int32_t  temp;       //温度寄存器值

   float  f_temp;       //实际温度

   uint8_t  data_array[20]={"Temperature:"};//发送数组

    然后将main函数中的for循环修改为如下。


        代码的具体作用红色注释已经写出,实这么做并不是最优的,最好是采用一个定时器,在定时器中发送蓝牙数据,这样会更加低功耗。

演示

确保烧录好SoftDevice,然后烧录下载运行代码,打开手机端的nRF UART软件,连接后会收到如下的信息。


     到这里,我们DIY的第一个作品《温度监控器》就做完了,本贴主要解释了蓝牙串口例程与温度采集例程的主要代码,然后修改了蓝牙串口例程,使其具备发送温度功能,最后在手机上显示温度。

建立了一个GitHub组织:https://github.com/digiic以后相关代码会放在里面,也欢迎小伙伴加入。

本工程代码:https://github.com/digiic/NRF52840大家玩的开心。

(2 ) (2 )
回复 举报

回复于 2019-07-20 沙发

不错,感谢分享
(0 )
评论 (0) 举报

回复于 2019-07-21 2#

感谢分享
(0 )
评论 (0) 举报

回复于 2019-07-24 3#

谢谢分享!!!
(0 )
评论 (0) 举报

回复于 2019-07-27 4#

支持下,谢谢分享!
(0 )
评论 (0) 举报

回复于 2019-08-07 5#

谢谢分享!!!
(0 )
评论 (0) 举报
  • 发表回复
    0/3000





    举报

    请选择举报类别

    • 广告垃圾
    • 违规内容
    • 恶意灌水
    • 重复发帖

    全部板块

    返回顶部