第1部分:用Raspberry Pi Zero和罗姆SensorMedal制作健康管理设备!
根据传感器的值计算步数、距离和卡路里,并将数据发送到LINE!
大家好,我是吉田!
从这部分开始,我们将着手制作这款用来解决运动不足问题的健康管理设备。首先,我们使用罗姆SensorMedal来测量和计算步数、移动距离、消耗的卡路里等。
另外,将您在家中散步的结果发送到LINE,是不是可以提高您的运动积极性呢?您可能会意外地发现,自己在家里竟然运动量也不小,如果用得好,也许还可以减肥哦!
本部分所需部件
Raspberry Pi Zero WH
罗姆SensorMedal(SensorMedal-EVK-002)
本部分的流程
- 计算移动距离和卡路里消耗量
- 将步数通知LINE
- 总结
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
可以看到,成功显示了根据步数计算出来的移动距离和卡路里等数据,因此,我们可以将SensorMedal放在衣兜等位置,将Raspberry Pi Zero连接电源并放在房间中。现在,您可以像使用计步器一样使用SensorMedal了。
2. 将步数通知LINE
接下来,当达到一定数字的步数时,可以将数据发送到LINE以便于查看。例如,每当您走了〇〇步时,或者每当您走路时,将“您已经走了〇〇步!”等数据发送到LINE等工具,也许可以提高您运动的积极性。
首先,要使用LINE,需要先从“LINE Notify”页面上登录。
https://notify-bot.line.me/ja/
从右上角的登录区域使用您的LINE Developer帐户登录(如果您没有账户,请先注册)。登录后,需要发行访问令牌,以便能够从“我的”页面向LINE发送消息。
在这里需要取一个合适的令牌名称,并在LINE中选择一个聊天室,然后发行令牌。
这时,将会显示用来发送LINE Notify的令牌,复制该令牌。如果关闭该页面将需要重新发行令牌,因此请务必确保已经复制好了。
使用该令牌在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,试试看能否正常测量步数。
如下图所示,文本应该会发送到指定的LINE聊天室中(我也一并发送了表情图,这个您可以根据自己的喜好添加)。
3. 总结
本文是第二部分,我们开始实际制作这款用来解决运动不足问题的健康管理设备。由于可以很容易地从SensorMedal中的加速度传感器获取步数,因此我使用通用数值计算并显示了移动距离和卡路里消耗量。另外,为了提高运动积极性,我们还将结果发送到了LINE。
怎么样?把这个SensorMedal放在衣兜里,即使您在家中,也可以有意识地运动,是不是很不错?
在第三部分中,我们将使用脉搏传感器来测量日常生活和运动过程中的心率。
第1部分:用Raspberry Pi Zero和罗姆SensorMedal制作健康管理设备!
第2部分:根据传感器的值计算步数、距离和卡路里,并将数据发送到LINE!(本章)
第3部分:一款用Raspberry Pi和传感器制作的可穿戴式小型健康管理设备!
第4部分:连接显示器并完成这款可穿戴式健康管理设备