第一部分:用跳繩測(cè)試儀解決運(yùn)動(dòng)不足問(wèn)題!
第二部分:用SensorMedal檢測(cè)跳躍次數(shù)并在顯示器上顯示
大家好,我是吉田!
本連載旨在制作一款用來(lái)解決運(yùn)動(dòng)不足問(wèn)題的跳繩設(shè)備。本文是第三部分,前面已經(jīng)實(shí)現(xiàn)了通過(guò)加速度傳感器對(duì)跳躍次數(shù)進(jìn)行計(jì)數(shù),本文將介紹將其數(shù)據(jù)保存在Google Sheets中并進(jìn)行處理的步驟。如果能夠了解自己的跳躍次數(shù)、時(shí)間、消耗的總熱量等,可能會(huì)增加今后堅(jiān)持鍛煉的動(dòng)力?,F(xiàn)在就動(dòng)手開(kāi)始做吧!
本部分所需部件
跳繩
ROHM SensorMedal(SensorMedal-EVK-002)
Raspberry Pi zero(Raspberry Pi Zero W)
本部分的流程
1.設(shè)置
2.從Raspberry Pi上傳到Google
3.保存并顯示跳繩結(jié)果
4.總結(jié)
1.設(shè)置Google Sheets
當(dāng)我們實(shí)現(xiàn)了跳繩計(jì)數(shù)后,就很希望能將次數(shù)等數(shù)據(jù)保存下來(lái),以便隨時(shí)查看以往的跳躍次數(shù)。
為此,讓我們將跳躍次數(shù)等數(shù)據(jù)保存在Google云端的電子表格中吧。Google的云服務(wù)可以在一定程度內(nèi)免費(fèi)使用,因此可以隨時(shí)開(kāi)始使用。
首先,需要訪問(wèn)下面的Google控制臺(tái)。單擊下面的鏈接可以注冊(cè)您的Google帳戶(hù)并登錄開(kāi)始使用:
https://console.developers.google.com/
您Google帳戶(hù)的初始設(shè)置完成后,可以在控制臺(tái)中搜索名為“Sheets”的API,就會(huì)出來(lái)Google Sheets API,請(qǐng)選擇它。
現(xiàn)在,點(diǎn)擊左側(cè)的藍(lán)色按鈕“啟用”,啟用Sheets API。
然后將光標(biāo)移到左側(cè)菜單中的“認(rèn)證信息”。
從認(rèn)證頁(yè)面頂部的“創(chuàng)建認(rèn)證信息”中選擇“服務(wù)帳戶(hù)”。
在服務(wù)帳戶(hù)創(chuàng)建頁(yè)面上,輸入適當(dāng)?shù)膸?hù)名稱(chēng)和ID,然后點(diǎn)擊“創(chuàng)建”。
即使“允許訪問(wèn)”,也需要授予項(xiàng)目所有者等權(quán)限并點(diǎn)擊“繼續(xù)”。
這樣,就創(chuàng)建了服務(wù)帳戶(hù)?,F(xiàn)在,單擊如下所示的創(chuàng)建秘鑰按鈕,下載JSON格式的文件。
下載好JSON文件后打開(kāi),保存郵件信息“xxx@yyy.iam.gserviceaccount.com”的地址。另外,將這個(gè)JSON文件發(fā)送給Raspberry Pi。
這些設(shè)置完成后,轉(zhuǎn)到 Google Sheets并嘗試創(chuàng)建電子表格??梢栽L問(wèn)Google Drive或使用下面的鏈接:
https://docs.google.com/spreadsheets/create
新建的Google Sheets表格打開(kāi)后,在左上角的名稱(chēng)位置輸入適當(dāng)?shù)谋砀衩Q(chēng)。(我設(shè)置的是“Jump_Count”)
然后點(diǎn)擊右側(cè)的“分享”按鈕,輸入之前保存的賬號(hào)信息(xxx@yyy.iam.gserviceaccount.com),完成。
2. 從Raspberry Pi上傳到Google
現(xiàn)在,Google這邊的設(shè)置已經(jīng)完成,讓我們從Raspberry Pi開(kāi)始使用吧。啟動(dòng)Raspberry Pi并打開(kāi)終端。
要想使用Google Sheets,需要各種認(rèn)證和使用名為“gspread”的庫(kù),因此請(qǐng)按如下方式安裝。
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
現(xiàn)在可以將數(shù)據(jù)保存在Sheets中了。在這里,我創(chuàng)建了一個(gè)程序,用來(lái)從Raspberry Pi輸入數(shù)據(jù),程序如下:
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)
當(dāng)運(yùn)行這個(gè)程序時(shí),“Jump Data”的數(shù)據(jù)會(huì)從Raspberry Pi被插入到云表格中。
3. 跳繩&保存、顯示!
現(xiàn)在讓我們修改跳繩程序,以讓跳躍次數(shù)可以上傳到Google。
首先需要記錄下您的表格的sheet_id(下面網(wǎng)址中紅框內(nèi)的部分)。
在電子表格中,日期和時(shí)間保存在A列和B列中,跳躍次數(shù)保存在C列中,跳繩時(shí)間(秒)保存在D列中,卡路里消耗量保存在E列中。當(dāng)在表格的C1、D1和E1輸入求和命令時(shí),就會(huì)自動(dòng)計(jì)算跳躍的總次數(shù)和消耗的卡路里總量等數(shù)據(jù)。
接下來(lái),通過(guò)在ble_jump_4d.py程序中添加的方式,創(chuàng)建ble_jump_4d_sheets.py程序。為了將跳躍次數(shù)保存在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) '''
讓我們運(yùn)行這個(gè)程序,按下SensorMedal上的按鈕后跳幾下吧。
在有網(wǎng)絡(luò)的地方,每次按下按鈕并跳繩,都會(huì)將次數(shù)保存下來(lái)。 我們?cè)O(shè)計(jì)的這種方式,可以成功地將跳躍次數(shù)保存在表格中。
4. 總結(jié)
在本連載中,我們使用Raspberry Pi和SensorMedal實(shí)現(xiàn)了連接物聯(lián)網(wǎng)的數(shù)字化跳繩。
本文是第三部分,我們不僅實(shí)現(xiàn)了次數(shù)計(jì)數(shù),而且還成功地將每次跳繩的次數(shù)等數(shù)據(jù)上傳到Google Sheets以保存結(jié)果。Google Sheets很容易獲得合計(jì)值和繪制圖表,因此非常適合隨時(shí)查看跳繩結(jié)果。
在下一部分中,也就是最后一部分,我們將使用跳躍次數(shù)和保存的數(shù)據(jù)來(lái)創(chuàng)建一種機(jī)制,讓跳繩變得更加有趣也更加有動(dòng)力,敬請(qǐng)期待!
本系列連載一覽
第一部分:用跳繩測(cè)試儀解決運(yùn)動(dòng)不足問(wèn)題!
第二部分:用SensorMedal檢測(cè)跳躍次數(shù)并在顯示器上顯示
第三部分:連接Google Drive,保存并查看跳繩結(jié)果(本章)
第四部分:在設(shè)備上安裝顯示器以增加動(dòng)力!
審核編輯黃宇
-
傳感器
+關(guān)注
關(guān)注
2545文章
50459瀏覽量
751104 -
測(cè)試儀
+關(guān)注
關(guān)注
6文章
3671瀏覽量
54701 -
Raspberry Pi
+關(guān)注
關(guān)注
1文章
555瀏覽量
22149
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論