一款用Raspberry Pi和传感器制作的可穿戴式小型健康管理设备!第二部分

第1部分:用Raspberry Pi Zero和罗姆SensorMedal制作健康管理设备!

 

根据传感器的值计算步数、距离和卡路里,并将数据发送到LINE!

大家好,我是吉田!

从这部分开始,我们将着手制作这款用来解决运动不足问题的健康管理设备。首先,我们使用罗姆SensorMedal来测量和计算步数、移动距离、消耗的卡路里等。

另外,将您在家中散步的结果发送到LINE,是不是可以提高您的运动积极性呢?您可能会意外地发现,自己在家里竟然运动量也不小,如果用得好,也许还可以减肥哦!

raspberrypi-wearable-healthcare-device-02_01

 

本部分所需部件

Raspberry Pi Zero WH

raspberrypi-wearable-healthcare-device-02_02

 

罗姆SensorMedal(SensorMedal-EVK-002)

raspberrypi-comfortable-space-device-03-4

 

本部分的流程

  1. 计算移动距离和卡路里消耗量
  2. 将步数通知LINE
  3. 总结

 

1. 计算移动距离和卡路里消耗量

在这里,我们使用罗姆的SensorMedal(SensorMedal-EVK-002)来测量步数和距离。在第一部分中,我们在Raspberry Pi Zero上安装了一个名为“bluepy”的库,以便能够通过Bluetooth将SensorMedal连接到Raspberry Pi。另外,我们还通过使用Github中的便捷程序,获得了以下数据。

pi@raspizero:~/SensorMedal2 $ sudo python3 ble_logger_SensorMedal2.py
...
Device c5:xx:yy:zz::d0 (random), RSSI=-65 dB
  Short Local Name = ROHMMedal2_0107_01.00
  Flags = 06
  Incomplete 16b Services = 0000180a-0000
  Manufacturer = 0100c86abcdef
    ID            = 0x1
    SEQ           = 188
    Temperature   = 27.99 ℃
    Humidity      = 71.52 %
    Pressure      = 998.578 hPa
    Illuminance   = 93.3 lx
    Accelerometer = 1.453 g ( 0.062 0.844 1.181 g)
    Geomagnetic   = 92.6 uT ( -15.8 -58.0 -70.4 uT)
    Magnetic      = 0x3
    Steps         = 8 歩
    Battery Level = 90 %
    RSSI          = -65 dB

 

可从SensorMedal获取的测量值:

  • Temperature: 温度(℃)
  • Humidity: 湿度(%)
  • Pressure: 气压(hPa)
  • Illuminance: 亮度(lx)
  • Accelerometer: 加速度(x轴、y轴、z轴)(g)
  • Geomagnetic: 陀螺仪传感器值(x轴、y轴、z轴)(uT)
  • Magnetic: 霍尔传感器值(磁铁在附近通过为1,否则为0)
  • Steps: 步数(步)
  • Battery Level: 电池电量

其中,Steps用来获取加速度传感器的步数数据。首先,我想根据该步数数据计算移动距离。为此,需要每步的距离(步幅),这个数据因人而异,可以根据身高,按照“身高/2〜身高×1.2”计算。在这里,我们简单地设每步的步幅 = 0.5m。

我们先来计算一下您在家中移动(步行)所消耗的卡路里吧。有这样一个测量值:一个健康男性1天走10000步左右消耗的卡路里约为350kcal(约一碗米饭)。参考这个值,我们使用350/10,000 = 0.035作为每步的系数。

综上所述,我们需要计算的项目汇总如下:

编号 输出值 计算方法
1 Steps 步数 (步) 从加速度传感器获取步数
2 Distance 移动距离(m) 步数×每步距离(这里简单地假设为每步0.5m)
3 Calorie 卡路里(kcal) 步数 × 每步消耗的卡路里量(这里使用卡路里系数0.035)

下面,我们将其写成一个程序:

pi@raspizero:~/SensorMedal2 $ sudo cp ble_logger_SensorMedal2.py ~/Programs/ble_steps.py
pi@raspizero:~/ $ sudo vi ~/Programs/ble_steps.py

(元のble_logger_SensorMedal2.pyプログラムに9〜29行目の部分を追記しています)
---
                sensors['Magnetic'] = hex(payval(27))
                sensors['Steps'] = payval(28,2)

                step_cnt = sensors['Steps']
                if SEQ in [0,1] and step_cnt == 0:
                    start_seq+= 1
                    start_time= datetime.now()
                    print(start_time.strftime('%H:%M:%S')+"にスタート!")
                else:
                    last_time= start_time
                    last_cnt = step_cnt

                cur_time= datetime.now()
                time_text= cur_time.strftime('%Y/%m/%d(%a) %H:%M:%S')
                print(time_text)
                if start_seq >= 1:
                    dur_time= cur_time - start_time
                    cur_cnt = step_cnt
                    cur_mv = round(cur_cnt*0.5,1)
                    cur_cal = round(cur_cnt*0.035,1)
                    dur_seconds = dur_time.seconds
                    dur_seconds = 1 if dur_seconds==0 else dur_seconds
                    step_text= str(dur_seconds)+"s "+str(cur_cnt)+"Steps "+str(cur_mv)+"m "+str(cur_cal)+"Cal"
                    print(step_text)

                sensors['Battery Level'] = payval(30)
                sensors['RSSI'] = dev.rssi
---

运行这个程序ble_steps.py。启动该程序后,按下SensorMedal的按钮,将其重置一次,然后将从那里开始计算步数和时间。

pi@raspizero:~/Programs $ sudo python3 ble_steps.py

raspberrypi-wearable-healthcare-device-02_03-e1595864647694

可以看到,成功显示了根据步数计算出来的移动距离和卡路里等数据,因此,我们可以将SensorMedal放在衣兜等位置,将Raspberry Pi Zero连接电源并放在房间中。现在,您可以像使用计步器一样使用SensorMedal了。

raspberrypi-wearable-healthcare-device-02_08

 

2. 将步数通知LINE

接下来,当达到一定数字的步数时,可以将数据发送到LINE以便于查看。例如,每当您走了〇〇步时,或者每当您走路时,将“您已经走了〇〇步!”等数据发送到LINE等工具,也许可以提高您运动的积极性。

首先,要使用LINE,需要先从“LINE Notify”页面上登录。

https://notify-bot.line.me/ja/
raspberrypi-wearable-healthcare-device-02_04

从右上角的登录区域使用您的LINE Developer帐户登录(如果您没有账户,请先注册)。登录后,需要发行访问令牌,以便能够从“我的”页面向LINE发送消息。

raspberrypi-wearable-healthcare-device-02_05

在这里需要取一个合适的令牌名称,并在LINE中选择一个聊天室,然后发行令牌。

raspberrypi-wearable-healthcare-device-02_06

 

这时,将会显示用来发送LINE Notify的令牌,复制该令牌。如果关闭该页面将需要重新发行令牌,因此请务必确保已经复制好了。

raspberrypi-wearable-healthcare-device-02_07

 

使用该令牌在Raspberry Pi上添加程序。在这里,我们将程序添加到前面提到的“ble_steps.py”中,使其成为“ble_steps_line.py”。将复制的令牌粘贴到下面代码的第11行,即“xxx”的位置。

pi@raspizero:~/Programs $ sudo cp ble_steps.py ble_steps_line.py
pi@raspizero:~/Programs $ sudo vi ble_steps_line.py

(在原来的ble_steps.py程序中增加第8〜17行、第24〜27行的内容)
---
scanner = btle.Scanner()

import requests
def line_message(text):
    url    = "https://notify-api.line.me/api/notify"
    token  = "xxx"
    headers= {"Authorization":"Bearer "+token,
            "Content-Type":"application/x-www-form-urlencoded"}
    payload = {"message":text,
            "stickerPackageId":2,
            "stickerId":513}
    r = requests.post(url ,headers = headers ,params=payload)

while True:

---
                    print(step_text)

                    if cur_cnt > 10:
                        comp_text = str(cur_cnt)+"歩あるいたよ!"
                        if cur_cnt%20 == 0:
                            line_message(comp_text)

                sensors['Battery Level'] = payval(30)
---

 

这次我为了便于测试,设置为每20步发送一条文本。现在,让我们像“sudo python3 ble_steps_line.py”一样运行这个程序,请走动或摇动SensorMedal,试试看能否正常测量步数。

raspberrypi-wearable-healthcare-device-02_08

 

如下图所示,文本应该会发送到指定的LINE聊天室中(我也一并发送了表情图,这个您可以根据自己的喜好添加)。

raspberrypi-wearable-healthcare-device-02_09

 

3. 总结

本文是第二部分,我们开始实际制作这款用来解决运动不足问题的健康管理设备。由于可以很容易地从SensorMedal中的加速度传感器获取步数,因此我使用通用数值计算并显示了移动距离和卡路里消耗量。另外,为了提高运动积极性,我们还将结果发送到了LINE。

怎么样?把这个SensorMedal放在衣兜里,即使您在家中,也可以有意识地运动,是不是很不错?

第三部分中,我们将使用脉搏传感器来测量日常生活和运动过程中的心率。
 

 

相关连载一览

第1部分:用Raspberry Pi Zero和罗姆SensorMedal制作健康管理设备!
第2部分:根据传感器的值计算步数、距离和卡路里,并将数据发送到LINE!(本章)
第3部分:一款用Raspberry Pi和传感器制作的可穿戴式小型健康管理设备!
第4部分:连接显示器并完成这款可穿戴式健康管理设备

吉田 显一(Yoshiken)
吉田 显一(Yoshiken)

在普通公司工作的上班族,非常喜欢创作的周末创客,出版了电子书MESHBOOK,平时也写写博客。
http://blog.ktrips.net

相关文章

  1. what-is-raspberrypi_01_2

    从历史到使用方法的全面了解!电子作品创作不可或缺的“Raspberry Pi(树莓派)”究竟是何方神…

  2. 1_2-1

    一款用Raspberry Pi和传感器制作的可穿戴式小型健康管理设备!第四部分•剧终篇

  3. raspberrypi-wearable-healthcare-device-03_01

    一款用Raspberry Pi和传感器制作的可穿戴式小型健康管理设备!第三部分

  4. aspberrypi-wearable-healthcare-device-01_01

    一款用Raspberry Pi和传感器制作的可穿戴式小型健康管理设备!第一部分

  5. raspberrypi-comfortable-space-device-04-1

    用Raspberry Pi和传感器制作“可自动营造舒适空间的装置” 第四部分•剧终篇

  6. 用Raspberry Pi和传感器制作“可自动营造舒适空间的装置” 第三部分

  7. 用Raspberry Pi和传感器制作“可自动营造舒适空间的装置” 第二部分

  8. 用Raspberry Pi和传感器制作“可自动营造舒适空间的装置” 第一部分

  9. 您今年会需要的8大智能家居电子项目

TECH INFO

  • 重点必看
  • 技术分享
  • Arduino入门指南

基础知识

  • Si功率元器件
  • IGBT功率元器件
  • 热设计
  • 仿真
  • 开关噪声-EMC
  • AC/DC
  • DC/DC
  • 电机
  • 传递函数

工程技巧


PICK UP!

  1. 刘铭
  2. ROHM开发出业界先进的第4代低导通电阻
PAGE TOP