0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

用Raspberry Pi和SensorMedal制作IoT跳绳设备:连接Google Drive,保存并查看跳绳结果

张华 2023-02-20 11:14 次阅读

第一部分:用跳绳测试仪解决运动不足问题!
第二部分:用SensorMedal检测跳跃次数并在显示器上显示

大家好,我是吉田!

本连载旨在制作一款用来解决运动不足问题的跳绳设备。本文是第三部分,前面已经实现了通过加速度传感器对跳跃次数进行计数,本文将介绍将其数据保存在Google Sheets中并进行处理的步骤。如果能够了解自己的跳跃次数、时间、消耗的总热量等,可能会增加今后坚持锻炼的动力。现在就动手开始做吧!

pYYBAGPyzY-ACRS4AAG_rY6kccY844.jpg

poYBAGPyzZCAP6pvAACSo5urVOc059.png

本部分所需部件

跳绳

poYBAGPyzZSAa-AYAAB1zwaR4_s341.jpg

ROHM SensorMedal(SensorMedal-EVK-002)

pYYBAGPyzZaAa4Y0AACN-y6Q7Io389.jpg

Raspberry Pi zero(Raspberry Pi Zero W)

pYYBAGPyzZmACcDcAACssHa76rI331.jpg

FOUR LETTER LED PHAT

pYYBAGPyzZuARf7oAACS5896Ozg928.jpg

本部分的流程

1.设置

2.从Raspberry Pi上传到Google

3.保存并显示跳绳结果

4.总结

1.设置Google Sheets

当我们实现了跳绳计数后,就很希望能将次数等数据保存下来,以便随时查看以往的跳跃次数。

为此,让我们将跳跃次数等数据保存在Google云端的电子表格中吧。Google的云服务可以在一定程度内免费使用,因此可以随时开始使用。

首先,需要访问下面的Google控制台。单击下面的链接可以注册您的Google帐户并登录开始使用:
https://console.developers.google.com/

您Google帐户的初始设置完成后,可以在控制台中搜索名为“Sheets”的API,就会出来Google Sheets API,请选择它。
poYBAGPyzZyAO3PaAABEjCylVVo121.png

现在,点击左侧的蓝色按钮“启用”,启用Sheets API。

pYYBAGPyzZ6AZnznAABEcXGimJU611.png

然后将光标移到左侧菜单中的“认证信息”。
pYYBAGPyzaGAOozaAABjJByVznc261.png


从认证页面顶部的“创建认证信息”中选择“服务帐户”。

pYYBAGPyzaKAV6fEAABdAiC8qR8839.png

在服务帐户创建页面上,输入适当的帐户名称和ID,然后点击“创建”。

pYYBAGPyzaSAB77DAABk875gryY894.png

即使“允许访问”,也需要授予项目所有者等权限并点击“继续”。
pYYBAGPyzaWASZnZAABqIjGBCsY768.png

这样,就创建了服务帐户。现在,单击如下所示的创建秘钥按钮,下载JSON格式的文件。

poYBAGPyzaeACMFpAAA6Rl7nUmw735.png

poYBAGPyzaiAPgheAACiAAoSYNc231.png

下载好JSON文件后打开,保存邮件信息“xxx@yyy.iam.gserviceaccount.com”的地址。另外,将这个JSON文件发送给Raspberry Pi。

pYYBAGPyzaqAa7evAAAvoosDnNs343.png

这些设置完成后,转到 Google Sheets并尝试创建电子表格。可以访问Google Drive或使用下面的链接:
https://docs.google.com/spreadsheets/create

新建的Google Sheets表格打开后,在左上角的名称位置输入适当的表格名称。(我设置的是“Jump_Count”)

然后点击右侧的“分享”按钮,输入之前保存的账号信息(xxx@yyy.iam.gserviceaccount.com),完成。
pYYBAGPyzayAU9tvAACcGw-P8CU784.png

2. 从Raspberry Pi上传到Google

现在,Google这边的设置已经完成,让我们从Raspberry Pi开始使用吧。启动Raspberry Pi并打开终端。

要想使用Google Sheets,需要各种认证和使用名为“gspread”的库,因此请按如下方式安装。

pi@raspizero:~/Programs $ sudo pip3 install oauth2client
pi@raspizero:~/Programs $ sudo pip3 install httplib2
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Collecting httplib2
Downloading     100% |████████████████████████████████| 102kB
Installing collected packages: httplib2

pi@raspizero:~/Programs $ sudo pip3 install gspread

现在可以将数据保存在Sheets中了。在这里,我创建了一个程序,用来从Raspberry Pi输入数据,程序如下:

pi@raspizero:~/Programs $ sudo vi spreadsheet.py

---------
 
#!/usr/bin/python
# -*- coding: utf-8 -*-
import gspread
from oauth2client.service_account import ServiceAccountCredentials

key_name = ‘xxx.json’ # Use your own information
sheet_name = 'jump_count'

# Use sheets API
scope = ['https://spreadsheets.google.com/feeds','https://www.googleapis.com/auth/drive']
credentials = ServiceAccountCredentials.from_json_keyfile_name(key_name, scope)
gc = gspread.authorize(credentials)

# Enter TEST to Sell A1
cell_number = 'A1'
input_value = 'Total Jump'
wks = gc.open(sheet_name).sheet1
wks.update_acell(cell_number, input_value)

当运行这个程序时,“Jump Data”的数据会从Raspberry Pi被插入到云表格中。

poYBAGPyza6ALTKSAACP2BfhOYQ754.png

3. 跳绳&保存、显示!

现在让我们修改跳绳程序,以让跳跃次数可以上传到Google。

poYBAGPyzbOAc-mOAALybrGEGrw531.jpg

首先需要记录下您的表格的sheet_id(下面网址中红框内的部分)。

pYYBAGPyzbSAVMX7AACzknTYFa0086.png

在电子表格中,日期和时间保存在A列和B列中,跳跃次数保存在C列中,跳绳时间(秒)保存在D列中,卡路里消耗量保存在E列中。当在表格的C1、D1和E1输入求和命令时,就会自动计算跳跃的总次数和消耗的卡路里总量等数据。

poYBAGPyzbaAVpMwAAC5RT4QzOU562.png

接下来,通过在ble_jump_4d.py程序中添加的方式,创建ble_jump_4d_sheets.py程序。为了将跳跃次数保存在Google Sheets中,需要添加以下部分:

第9〜42行

第49〜50行

第57〜69行

第76〜77行

pi@raspizero:~/Programs $ sudo cp ble_jump_4d.py ble_jump_4d_sheets.py

--- 下面的更改或添加部分用黄色表示 ---
#!/usr/bin/env python3
# coding: utf-8

---

import gspread
from apiclient import discovery
from oauth2client.service_account import ServiceAccountCredentials
import httplib2
import numpy as np
from datetime import datetime

key_name   = "xxx.json" # Use your JSON file name
sheet_name= “jump_count” # Sheet name 
sheet_id      = “zzz” # Sheet Id

class SpreadSheet(object):
  def __init__(self, sheet_id):
    self.sheetId = sheet_id
    scope = ['https://spreadsheets.google.com/feeds','https://www.googleapis.com/auth/drive']
    credentials = ServiceAccountCredentials.from_json_keyfile_name(key_name, scope)
    http_auth = credentials.authorize(httplib2.Http())
    discoveryUrl = ('https://sheets.googleapis.com/$discovery/rest?''version=v4')
    self.service = discovery.build('sheets', 'v4', http=http_auth, discoveryServiceUrl=discoveryUrl)

  def append(self, values): # Append data in Google Sheets
    assert np.array(values).shape==(5,) , "The shape of value %s must be 5" % (np.array(values).shape)
    value_range_body = {'values':[values]}
    result = self.service.spreadsheets().values().append(spreadsheetId=self.sheetId, 
        range=APPEND_RANGE, valueInputOption='USER_ENTERED', body=value_range_body).execute()
    print(result)

spread_sheet = SpreadSheet(sheet_id) 
APPEND_RANGE = 'sheet1!A1:E1'
start_time= datetime.now()
last_time = datetime.now()
last_cnt  = 0
last_cal  = 0
last_dur  = 0

scanner = btle.Scanner()
while True:

---

    fourletterphat.print_str("JUMP")
    fourletterphat.show()

---
                SEQ = sensors['SEQ']
                jump_cnt = sensors['Steps']
                if SEQ in [255,0,1] and jump_cnt == 0:
                    start_seq+= 1
                    start_time= datetime.now()
                    print(start_time.strftime('%H:%M:%S')+" Start Jumping!")
                    if last_cnt!=0:
                        spread_sheet.append([last_time.strftime('%Y/%m/%d'), last_time.strftime('%H:%M:%S'), 
                            last_cnt, last_dur, last_cal])
                else:
                    last_time= start_time
                    last_cnt = jump_cnt

                cur_time= datetime.now()
                if start_seq >= 1:
                    dur_time= cur_time - start_time
                    dur_seconds = dur_time.seconds 
                    cur_cnt = jump_cnt
                    cur_cal = round(cur_cnt*0.1,1)
                    jump_text= str(cur_cnt)+" Jump "+str(cur_cal)+" Cal "+str(dur_seconds)+" s"
                    print(jump_text)
                    fourletterphat.print_number_str(cur_cnt)
                    fourletterphat.show()
                    last_dur = dur_seconds
                    last_cal = cur_cal

                '''
                for key, value in sorted(sensors.items(), key=lambda x:x[0]):
                    print('    ',key,'=',value)
                '''

让我们运行这个程序,按下SensorMedal上的按钮后跳几下吧。

pYYBAGPyzbqAXUxYAAJRVkcj3ng935.jpg

在有网络的地方,每次按下按钮并跳绳,都会将次数保存下来。 我们设计的这种方式,可以成功地将跳跃次数保存在表格中。

4. 总结

在本连载中,我们使用Raspberry Pi和SensorMedal实现了连接物联网的数字化跳绳。

本文是第三部分,我们不仅实现了次数计数,而且还成功地将每次跳绳的次数等数据上传到Google Sheets以保存结果。Google Sheets很容易获得合计值和绘制图表,因此非常适合随时查看跳绳结果。
在下一部分中,也就是最后一部分,我们将使用跳跃次数和保存的数据来创建一种机制,让跳绳变得更加有趣也更加有动力,敬请期待!

本系列连载一览

第一部分:用跳绳测试仪解决运动不足问题!
第二部分:用SensorMedal检测跳跃次数并在显示器上显示
第三部分:连接Google Drive,保存并查看跳绳结果(本章)
第四部分:在设备上安装显示器以增加动力!

审核编辑黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 传感器
    +关注

    关注

    2551

    文章

    51090

    浏览量

    753485
  • 测试仪
    +关注

    关注

    6

    文章

    3736

    浏览量

    54849
  • Raspberry Pi
    +关注

    关注

    2

    文章

    559

    浏览量

    22219
收藏 人收藏

    评论

    相关推荐

    霍尔元件YS253在计数跳绳中的应用案例

    计数跳绳做为一种自动计算出跳绳数的远动器材,主要是以电池供电为主。所以在自身功耗上有一定的要求,尤其是对霍尔元件的功耗要求。业务咨询:022-58059049微功耗霍尔元件YS253,主要在跳绳
    发表于 02-02 14:49

    涂鸦智能跳绳解决方案 BK3432单蓝牙驱动LCD屏,可芯片或PCBA

    `BK3432+涂鸦APP 智能蓝牙跳绳方案,上海博通一级芯片代理,可出带程序芯片或PCBA方案1、内置3颗霍尔传感器,智能精准计数,绊绳判断准确率达97%左右2、多种跳绳模式随意选择3、连接涂鸦
    发表于 06-24 11:03

    智能蓝牙跳绳方案 深圳鼎盛合提供智能蓝牙跳绳方案开发设计

    小时,可以持续工作60天,环保省电。蓝牙跳绳共有5种跳绳模式可供选择。包括自由跳、倒计时跳、倒计数跳、家庭模式和竞技模式。其中前三种模式,不用连接手机APP即可使用,三种模式随意切换。后两种模式需要通过
    发表于 07-06 15:31

    智能跳绳制作图解

     按下编码器上的按钮开始活动。现在您可以进行跳绳活动了。跳过时,您可以在网页上看到跳过计数,跳过率和卡路里消耗。
    的头像 发表于 08-23 16:27 1.6w次阅读
    智能<b class='flag-5'>跳绳</b>的<b class='flag-5'>制作</b>图解

    单片机开发的智能跳绳解决方案

    智能跳绳不仅解决了计数、数据收集、对比分析等技术问题,也能记录各种运动数据和体能消耗情况,还可以随意切换跳绳种类,为运动者提供更为科学合理的运动方案。而且还可以连接专属APP根据不同人群制定
    发表于 05-18 17:44 825次阅读

    自动计数霍尔?跳绳机、电机等智能计数霍尔开关

    大家都知道跳绳是一种有效的有氧运动,既可以强生健体也可以亲子互动,原有的跳绳使用时间长容易损坏还需要自己来计数;HALLWEE为了提供一款新型霍尔智能计数跳绳手柄;以解决现在的跳绳的计
    的头像 发表于 11-01 16:32 1000次阅读

    Raspberry PiSensorMedal制作IoT跳绳设备SensorMedal检测跳跃次数并在显示器上显示

    第一部分:跳绳测试仪解决运动不足问题! 大家好,我是吉田!在第一部分中,我们简要介绍了本项目以及所需的准备工作,从第二部分开始,我们将着手制作这款旨在解决运动不足问题的跳绳
    的头像 发表于 02-20 13:34 850次阅读
    <b class='flag-5'>用</b><b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b>和<b class='flag-5'>SensorMedal</b><b class='flag-5'>制作</b><b class='flag-5'>IoT</b><b class='flag-5'>跳绳</b><b class='flag-5'>设备</b>:<b class='flag-5'>用</b><b class='flag-5'>SensorMedal</b>检测跳跃次数并在显示器上显示

    Raspberry PiSensorMedal制作IoT跳绳设备跳绳测试仪解决运动不足问题!

    大家好,我是吉田!随着在室内度过的时间越来越多,我趁机制作了各种旨在解决运动不足问题的项目。这次为大家介绍的项目是把在家中也能轻松使用的健身器材“跳绳”数字化,并将其与物联网连接起来。
    的头像 发表于 02-20 11:45 753次阅读
    <b class='flag-5'>用</b><b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b>和<b class='flag-5'>SensorMedal</b><b class='flag-5'>制作</b><b class='flag-5'>IoT</b><b class='flag-5'>跳绳</b><b class='flag-5'>设备</b>:<b class='flag-5'>用</b><b class='flag-5'>跳绳</b>测试仪解决运动不足问题!

    Raspberry PiSensorMedal制作IoT跳绳设备 第四部分:在设备上安装显示器以增加动力

    第一部分:跳绳测试仪解决运动不足问题!第二部分:SensorMedal检测跳跃次数并在显示器上显示第三部分:连接
    的头像 发表于 03-23 15:18 818次阅读
    <b class='flag-5'>用</b><b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b>和<b class='flag-5'>SensorMedal</b><b class='flag-5'>制作</b><b class='flag-5'>IoT</b><b class='flag-5'>跳绳</b><b class='flag-5'>设备</b> 第四部分:在<b class='flag-5'>设备</b>上安装显示器以增加动力

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

    第1部分:Raspberry Pi Zero和罗姆SensorMedal制作健康管理设备!第2
    的头像 发表于 02-24 10:06 2229次阅读
    一款<b class='flag-5'>用</b><b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b>和传感器<b class='flag-5'>制作</b>的可穿戴式小型健康管理<b class='flag-5'>设备</b>!第四部分•剧终篇

    霍尔开关在跳绳中如何应用

    霍尔开关作为跳绳中的关键技术之一,通过监测跳绳旋转和计数,实现了智能化的健身体验。这种应用为跳绳运动提供了更加准确、便捷和有趣的数据分析和记录方式。随着技术的不断进步,我们可以期待在跳绳
    的头像 发表于 07-07 14:58 931次阅读
    霍尔开关在<b class='flag-5'>跳绳</b>中如何应用

    智能跳绳蓝牙芯片MS1656解决方案

    智能跳绳蓝牙芯片解决方案是通过简单有效的运动方式与简单易用的APP结合,内置智能芯片,蓝牙4.0与APP配合使用,可以实时查看,记录你的跳绳总次数,时长,最多连续次数,卡路里消耗等数据,有效科学的统计运动数据,随时对地管理运动计
    的头像 发表于 08-10 15:13 941次阅读
    智能<b class='flag-5'>跳绳</b>蓝牙芯片MS1656解决方案

    智能跳绳的产品体验与思考(一)

    我,虽称不上跳绳高手,却对这项运动怀有深厚的热爱,也曾在某电商平台上选购过一款智能跳绳,希望能借此提升我的跳绳技巧。今天,咱们就来聊聊我和这条绳子的发生的一些故事,外加我的一些思考。 此刻,我们既
    的头像 发表于 05-29 11:22 414次阅读
    智能<b class='flag-5'>跳绳</b>的产品体验与思考(一)

    智能跳绳的产品体验与思考(二) 离线智能跳绳是如何设计的

    上一篇讲了我和跳绳的一些故事和思考,为了使各位更好的引入今天的主题,我们先来回顾下上一篇的内容。   我先从开始只能跳110次到后面可以到180次的故事讲起, 领悟到因为智能跳绳的各种数据,激发了我
    的头像 发表于 06-12 13:33 303次阅读
    智能<b class='flag-5'>跳绳</b>的产品体验与思考(二) 离线智能<b class='flag-5'>跳绳</b>是如何设计的

    霍尔开关在智能跳绳器上的应用

    跳绳是一种非常有效的有氧运动。它除了拥有运动的一般益处外,更有很多独特的优点。跳绳每半小时消耗热量四百卡。是一项健美运动,对心肺系统等各种脏器、协调性、姿态、减肥等都有相当大的帮助。 随着科技的发展,跳绳的智能化趋势越来越
    的头像 发表于 08-29 16:07 287次阅读