第一部分:用跳繩測試儀解決運動不足問題!
第二部分:用SensorMedal檢測跳躍次數(shù)并在顯示器上顯示
第三部分:連接Google Drive,保存并查看跳繩結(jié)果
大家好,我是吉田!
本文是制作一款用來解決運動不足問題的跳繩設(shè)備項目連載的最后一篇。我們已經(jīng)成功實現(xiàn)了跳躍次數(shù)計數(shù)及其數(shù)據(jù)保存,在這部分中,我們將為這臺設(shè)備安裝一個顯示器,讓它實現(xiàn)能夠激發(fā)您動力的有趣顯示,以便您可持之以恒地堅持運動。
本部分所需部件
跳繩
ROHM SensorMedal(SensorMedal-EVK-002)
Raspberry Pi zero(Raspberry Pi Zero W)
Raspberry Pi4
7英寸觸控顯示器
本部分的流程
Raspberry Pi用顯示器的設(shè)置
在屏幕上顯示跳繩信息
以有趣的方式顯示跳躍次數(shù),讓動力滿滿!
總結(jié)
1.Raspberry Pi用顯示器的設(shè)置
適用于Raspberry Pi的顯示器包括下面這款7英寸大小的觸控屏。通過HDMI(如果是Raspberry Pi4的話是MicroHDMI)將其與Raspberry Pi連接,即可在大屏幕上顯示數(shù)據(jù)。
我們會用Raspberry Pi創(chuàng)建應(yīng)用程序,以實現(xiàn)在這個屏幕上顯示。為此,我們將使用可以創(chuàng)建桌面應(yīng)用程序的Tkinter。
首先,安裝Tkinter。
$ sudo apt-get install python3-tk
創(chuàng)建可以顯示當(dāng)前時間的程序display.py。
pi@raspizero:~/Programs $ sudo vi display.py --------- #!/usr/bin/python # -*- coding: utf-8 -*- from tkinter import * from datetime import datetime from time import sleep # 創(chuàng)建主窗口 root = Tk() # 主窗口大小 root.geometry("720x480") # 主窗口標題 root.title("Clock") # 創(chuàng)建Canvas c = Canvas(root, , width=500, height=480) c.pack(expand=True, fill='x', padx=5, side='left') # 創(chuàng)建字符串 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(): # 顯示當(dāng)前時間 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秒間隔重復(fù) root.after(1000, cupdate) # 注冊回調(diào)函數(shù) root.after(1000, cupdate) # 主循環(huán) root.mainloop()
像sudo python3 display.py那樣運行這個程序時,會創(chuàng)建一個顯示當(dāng)前時間的桌面應(yīng)用程序。
顯示時間的桌面應(yīng)用程序
2. 在屏幕上顯示跳繩信息
將顯示器與Raspberry Pi連好后,讓我們嘗試一下在上面顯示上次在Google Sheets中記錄的跳躍次數(shù)吧。
需要能夠?qū)oogle Sheets中的數(shù)據(jù)讀取到桌面應(yīng)用程序中。需要顯示Google Sheets中的時間、次數(shù)和卡路里數(shù)據(jù)。我們將用來讀取Google sheets的程序添加到前面的display.py程序中(用黃色表示增加的描述部分)。
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() # 讀取內(nèi)容并保存在數(shù)組中 for i in range(1, len(records)): # 僅重復(fù)sheet的行數(shù) 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) --- # 創(chuàng)建字符串 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, ) c.itemconfigure(ct, text=jump_text) c.update() ---
通過運行這個程序,應(yīng)該能夠從Google Sheets中獲取總跳躍次數(shù)并將其顯示在屏幕上。
3. 以有趣的方式顯示跳躍次數(shù),讓動力滿滿!
最后,讓我們把這個帶顯示器的Raspberry Pi做成平板電腦的樣子吧。另外,我們假設(shè)跳躍一次相當(dāng)于走了1m,可以將跳繩比作東海道五十三次徒步,可以看到自己走到哪里了,甚至可以用來和朋友比賽。
那么,我們先開始“外部裝潢”吧。
首先,準備一個B5大小的外殼。在外殼上開一個顯示器大小的窗口。
將液晶顯示器、Raspberry Pi和移動電源放入外殼中。
打開電源并確認屏幕顯示。
現(xiàn)在外部裝潢好了,我創(chuàng)建了一個可以讓顯示更有趣的程序。我把示例程序放在下面的Github上了,您可以試用一下:
https://github.com/ktrips/jump/blob/master/jump.py
好啦,現(xiàn)在讓我們開始跳繩吧。
跳繩后請確認一下數(shù)值是否更新了,顯示是否改變了。
用這種方法保持動力,堅持跳繩是不是變得更容易了?
4. 總結(jié)
在本系列連載中,我們使用Raspberry Pi和SensorMedal制作了一款能夠?qū)⑻K數(shù)字化的物聯(lián)網(wǎng)設(shè)備。
首先,我們在手柄上安裝了4位顯示器,通過SensorMedal的加速度傳感器檢測跳躍次數(shù)并將數(shù)據(jù)在顯示器上顯示出來了。
接下來,我們實現(xiàn)了將跳躍結(jié)果發(fā)送到Google Sheets,并將其作為歷史記錄保存下來。還增加了總時間、總次數(shù)、卡路里等數(shù)據(jù)。
最后,我們讓這款帶有顯示器的Raspberry Pi設(shè)備能夠顯示各種信息,以便增加跳繩和運動的動力。這次,我設(shè)置的是讓跳躍1次相當(dāng)于步行1m,看看自己最終在所謂的“東海道五十三次徒步”中走了多遠,通過這種方式來享受跳繩運動的樂趣。此外,我還用飯團等來顯示卡路里量,這也是一種有趣的顯示方式。
怎么樣,我們是不是創(chuàng)建了一款誰都可以輕松享受跳繩、有助于解決運動不足問題的設(shè)備呢?對于越來越喜歡“家里蹲”的人而言,希望這款設(shè)備能成為激發(fā)您運動健身的轉(zhuǎn)折點!
本系列連載一覽
第一部分:用跳繩測試儀解決運動不足問題!
第二部分:用SensorMedal檢測跳躍次數(shù)并在顯示器上顯示
第三部分:連接Google Drive,保存并查看跳繩結(jié)果
第四部分:在設(shè)備上安裝顯示器以增加動力!(本章)
吉田顯一(Yoshiken)
在普通公司工作的上班族,非常喜歡創(chuàng)作的周末創(chuàng)客,出版了電子書MESHBOOK,平時也寫寫博客。
審核編輯黃宇
-
顯示器
+關(guān)注
關(guān)注
21文章
4970瀏覽量
139926 -
Raspberry Pi
+關(guān)注
關(guān)注
2文章
558瀏覽量
22196 -
IOT
+關(guān)注
關(guān)注
187文章
4202瀏覽量
196684
發(fā)布評論請先 登錄
相關(guān)推薦
評論