第1部分:
用Raspberry Pi Zero和羅姆SensorMedal製作健康管理設備!
第2部分:
根據感測器的值計算步數、距離和卡路里,並將資料發送到LINE!
第3部分:
一款用Raspberry Pi和感測器製作的可穿戴式小型健康管理設備!
連接顯示器並完成這款可穿戴式健康管理設備
大家好,我是吉田!
本文是製作旨在解決運動不足問題的健康管理設備專案的最後一部分,也就是劇終篇。在這部分中,我想在一個小型顯示器上顯示這之前獲取的步數和心率資訊。讓我們把它做成類似可穿戴的手錶樣式,這樣就可以隨時查看資訊了!
本部分所需零件
Raspberry Pi Zero W
Seeed ReSpeaker Mic-2 Hat
Seeed Grove OLED Display
心率感測器
ROHM SensorMedal
(SensorMedal-EVK-002)
LiPo電池
本部分的流程
1. 使用Seeed Grove OLED顯示資訊
在上一部分中,我們給Raspberry Pi Zero連接了心率感測器。在這部分中,為了安裝顯示器,我們將使用與Raspberry Pi Zero完美相容的
Seeed ReSpeaker Mic-2 Hat
該設備有兩個支援Seeed Grove引腳的插口,非常方便。現在我們把這頂“帽子(Hat)”安裝在Raspberry Pi上並通電。
從以下頁面獲取並安裝Seeed ReSpeaker Mic-2 Hat的軟體。
1 2 3 4 |
pi@raspizero:~/ $ git clone https://github.com/respeaker/seeed-voicecard.git pi@raspizero:~/ $ cd seeed-voicecard pi@raspizero:~/ $ sudo ./install.sh --compat-kernel pi@raspizero:~/ $ reboot |
另外還需要安裝程式庫,以便能夠使用Seeed ReSpeaker Mic-2 Hat所連接的LED。這樣,當您運行Pixels示例程式時,就可以讓Hat上的三個NeoPixels像在第三部分中一樣發光了。
1 2 3 4 5 |
pi@raspizero:~/ $ sudo pip install spidev pi@raspizero:~/ $ cd ~/ pi@raspizero:~/ $ git clone https://github.com/respeaker/mic_hat.git pi@raspizero:~/ $ cd mic_hat pi@raspizero:~/ $ python pixels.py |
設置好Hat之後,我們將添加一個顯示器。我使用的是帶有Grove引腳的
128 x 64的OLED顯示器
將該顯示器連接到面向Hat左側的Grove引腳。該引腳支援I2C連接方式。
安裝用來使用該顯示器的軟體(包括庫檔)嘗試用Raspberry Pi鍵入以下命令。
1 2 3 |
pi@raspizero:~/ $ curl -sL https://github.com/Seeed-Studio/grove.py/raw/master/install.sh | sudo bash -s - pi@raspizero:~/ $ cd grove.py pi@raspizero:~/ $ python3 grove_oled_display_128x64.py |
這將會創建一個名為“grove.py”的資料夾,其中保存著很多使用了Grove的庫。在其中使用“grove_oled_display_128x64.py”。
當運行這個程式時,應該會在顯示器上看到“hello world”字樣。
2. 連接心率感測器顯示心率
現在,讓我們試一下在Hat上連接心率感測器並在顯示器上顯示心率等資料。將心率感測器與Hat中間的Grove引腳連接。
這個Grove引腳是連接到Raspberry Pi的GPIO12的。另外,需要複製之前的OLED程式,來創建一個“grove_oled_heart.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 |
pi@raspizero:~/ $ sudo cp ~/grove.py/grove_oled_display_128x64.pysudo ~/Programs/grove_oled_heart.py ---- #!/usr/bin/env python import time from collections import deque import RPi.GPIO as GPIO import datetime class HeartRateMonitor: INTERRUPT_PIN = 12 MAX_DETECTED_TIMES_COUNT = 20 MAX_PULSE_INTERVAL = 2.0 ... #print("HeartRate: {heart_rate}, Interval: {interval}".format(heart_rate = heart_rate, interval = interval)) return heart_rate def execute(self): display = GroveOledDisplay128x64() display.set_cursor(0, 0) display.puts("RasPi Health") print('Please ready your heart rate monitor.') time.sleep(3) while True: display.set_cursor(1, 1) time_str = datetime.datetime.now().strftime("%H:%M:%S") display.puts(time_str) GPIO.wait_for_edge(self.INTERRUPT_PIN, GPIO.RISING) heart_rate = self._interrupt() if heart_rate is not None: display.set_cursor(3, 1) hr = round(heart_rate) print(hr) display.puts("HR: "+str(hr)+" BPM") from grove.i2c import Bus ... class GroveOledDisplay128x64(object): ... def main(): monitor = HeartRateMonitor() while True: monitor.execute() if __name__ == "__main__": main() |
當運行這個程式時,心率資料就顯示在顯示器中央了。
3. 做成可穿戴的手錶樣式,專案完成!
最後,讓我們給這個作品裝上外殼等,使其成為可穿戴設備。首先,使用小型鋰聚合物電池為Raspberry Pi Zero供電。
將心率感測器與顯示器一起重新連接到Hat。還需要裝上一個能夠看見顯示器的外殼和一個錶帶。
最後,創建一個shell腳本(ble_steps_heart_oled.sh),並行運行SensorMedal的BLE測量程式和心率感測器。現在,通過nohup指定的OLED顯示程式已經能夠在後臺運行,並且與SensorMedal程式並行運行。
1 2 3 |
#!/bin/bash nohup sudo python3 /home/pi/Programs/grove_oled_heart.py & sudo python3 /home/pi/Programs/ble_steps_line.py |
像“. ble_steps_heart_oled.sh”一樣運行上述程式。打開SensorMedal電源並將心率感測器夾在指尖上。
然後,大約20秒後,心率將開始出現在顯示器上。此外,該設備還會讀取SensorMedal的數值,當達到一定步數時,會將結果發送到LINE。
4. 總結
在這部分中,我們介紹了測量一天的步數和心率並將心率顯示在可穿戴設備的小型顯示器上的方法。大家應該也瞭解了從SensorMedal中獲取各種資料,並將這些資料發送到小型 Raspberry Pi Zero中,顯示資料或將其上傳到LINE等的方法。
有了這款可穿戴設備,就可以輕鬆獲取自己身體的資訊,比如“雖然一直在家裡,但我今天走了多少步?”“這個會議相當緊張,我的心率已經上升了很多……”。使用這個項目的方法,還可以用其他各種感測器來測量和瞭解自己身體的狀況,用來解決運動不足問題和進行健康管理,不失為有趣的做法!
相關連載一覽
第1部分:
用Raspberry Pi Zero和羅姆SensorMedal製作健康管理設備!
第2部分:
根据传感器的值计算步数、距离和卡路里,并将数据发送到LINE!
第3部分:
一款用Raspberry Pi和感測器製作的可穿戴式小型健康管理設備!
第4部分:连接显示器并完成这款可穿戴式健康管理设备(本章)