第一部分:用跳繩測試儀解決運動不足問題!
第二部分:用SensorMedal檢測跳躍次數並在顯示器上顯示
第三部分:連接Google Drive,保存並查看跳繩結果
大家好,我是吉田!
本文是製作一款用來解決運動不足問題的跳繩設備專案連載的最後一篇。我們已經成功實現了跳躍次數計數及其資料保存,在這部分中,我們將為這台設備安裝一個顯示器,讓它實現能夠激發您動力的有趣顯示,以便您可持之以恆地堅持運動。
適用於Raspberry Pi的顯示器包括下面這款7英寸大小的觸控屏。透過HDMI(如果是Raspberry Pi4的話是MicroHDMI)將其與Raspberry Pi連接,即可在大螢幕上顯示資料。
我們會用Raspberry Pi創建應用程式,以實現在這個螢幕上顯示。為此,我們將使用可以創建桌面應用程式的Tkinter。
首先,安裝Tkinter。
1 |
$ sudo apt-get install python3-tk |
創建可以顯示當前時間的程式display.py。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
pi@raspizero:~/Programs $ sudo vi display.py --------- #!/usr/bin/python # -*- coding: utf-8 -*- from tkinter import * from datetime import datetime from time import sleep # 創建主窗口 root = Tk() # 主窗口大小 root.geometry("720x480") # 主窗口標題 root.title("Clock") # 創建Canvas c = Canvas(root, bg="#FFFFFF", width=500, height=480) c.pack(expand=True, fill='x', padx=5, side='left') # 創建字串 cd = c.create_text(350, 180, font=('', 40, 'bold'), fill='black') ct = c.create_text(350, 280, font=('', 80), fill='black') # 主視窗的最大化 root.attributes("-zoomed", "1") # 總是在最前顯示 root.attributes("-topmost", False) def cupdate(): # 顯示當前時間 now = datetime.now() d = '{0:0>4d}年{1:0>2d}月{2:0>2d}日 ({3})'.format(now.year, now.month, now.day, now.strftime('%a')) t = '{0:0>2d}:{1:0>2d}:{2:0>2d}'.format(now.hour, now.minute, now.second) c.itemconfigure(cd, text=d) c.itemconfigure(ct, text=t) c.update() # 以1秒間隔重複 root.after(1000, cupdate) # 註冊回呼函數 root.after(1000, cupdate) # 主迴圈 root.mainloop() |
像sudo python3 display.py那樣運行這個程式時,會創建一個顯示當前時間的桌面應用程式。
顯示時間的桌面應用程式
將顯示器與Raspberry Pi連好後,讓我們嘗試一下在上面顯示上次在Google Sheets中記錄的跳躍次數吧。
需要能夠將Google Sheets中的資料讀取到桌面應用程式中。需要顯示Google Sheets中的時間、次數和卡路里資料。我們將用來讀取Google sheets的程式添加到前面的display.py程式中(用黃色表示增加的描述部分)。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
pi@raspizero:~/Programs $ sudo cp display.py jump_display.py --- 下面的更改或添加部分用黃色表示 --- #!/usr/bin/env python3 # coding: utf-8 from tkinter import * --- 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 own information sheet_id = “yyy” # sheet_id sheet_name= “zzz” class SpreadSheet(object): def __init__(self, sheet_id): self.sheetId = sheet_id def search(searchKey): 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) # 使用JSON金鑰檔進行身份驗證 wks = gc.open(sheet_name).sheet1 # 打開sheet records = wks.get_all_values() # 讀取內容並保存在陣列中 for i in range(1, len(records)): # 僅重複sheet的行數 if records[i][0] == searchKey: # 直到第一列與TerminalID匹配 gdate=records[i][0] gtime=records[i][1] gjump=records[i][2] gdur =records[i][3] gcal =records[i][4] print(gdate, gtime, gjump, gdur, gcal) return gdate, gtime, gjump, gdur, gcal spread_sheet = SpreadSheet(sheet_id) --- # 創建字串 cd = c.create_text(100, 60, font=('', 80,), fill='blue') ct = c.create_text(100, 120, font=('', 80), fill='red') --- def cupdate(): totals = spread_sheet.search("Total") total_count= totals[2] total_time = totals[3] jump_text = str(total_count)+”次 " c.itemconfigure(cd, text="Total Jump") c.itemconfigure(ct, text=jump_text) c.update() --- |
透過運行這個程式,應該能夠從Google Sheets中獲取總跳躍次數並將其顯示在螢幕上。
最後,讓我們把這個帶顯示器的Raspberry Pi做成平板電腦的樣子吧。另外,我們假設跳躍一次相當於走了1m,可以將跳繩比作東海道五十三次徒步,可以看到自己走到哪裡了,甚至可以用來和朋友比賽。
那麼,我們先開始“外部裝潢”吧。
首先,準備一個B5大小的外殼。在外殼上開一個顯示器大小的視窗。
將液晶顯示器、Raspberry Pi和移動電源放入外殼中。
打開電源並確認螢幕顯示。
現在外部裝潢好了,我創建了一個可以讓顯示更有趣的程式。我把範例程式放在下面的Github上了,您可以試用一下:
https://github.com/ktrips/jump/blob/master/jump.py
好啦,現在讓我們開始跳繩吧。
跳繩後請確認一下數值是否更新了,顯示是否改變了。
用這種方法保持動力,堅持跳繩是不是變得更容易了?
在本系列連載中,我們使用Raspberry Pi和SensorMedal製作了一款能夠將跳繩數位化的物聯網設備。
首先,我們在手柄上安裝了4位數顯示器,透過SensorMedal的加速度感測器,檢測跳躍次數並將資料在顯示器上顯示出來了。
接下來,我們實現了將跳躍結果發送到Google Sheets,並將其作為歷史記錄保存下來。還增加了總時間、總次數、卡路里等資料。
最後,我們讓這款帶有顯示器的Raspberry Pi設備能夠顯示各種資訊,以便增加跳繩和運動的動力。這次,我設置的是讓跳躍1次相當於步行1m,看看自己最終在所謂的“東海道五十三次徒步”中走了多遠,透過這種方式來享受跳繩運動的樂趣。此外,我還用飯團等來顯示卡路里量,這也是一種有趣的顯示方式。
怎麼樣,我們是不是創建了一款誰都可以輕鬆享受跳繩、有助於解決運動不足問題的設備呢?對於越來越喜歡“家裡蹲”的人而言,希望這款設備能成為激發您運動健身的轉捩點!
第一部分:用跳繩測試儀解決運動不足問題!
第二部分:用SensorMedal檢測跳躍次數並在顯示器上顯示
第三部分:連接Google Drive,保存並查看跳繩結果
第四部分:在設備上安裝顯示器以增加動力!(本章)