這個遠端病人監控系統利用 MAX30102 和 MLX90614 感測器分別收集心率、血氧和體溫資料。系統採用 ESP32 微控制器讀取感測器資料,並透過 MQTT 協議將資料傳送至 ThingSpeak 物聯網平臺,實作資料的視覺化和遠端監控。同時,系統整合了 FoG 計算架構,使用 Jetson Nano 作為 FoG 節點,在邊緣端進行資料預處理和分析,提升系統效率和即時性。FoG 節點也負責將資料上傳至 Google Drive 雲端儲存,並透過 Twilio 平臺傳送 WhatsApp 警報訊息,方便醫護人員即時掌握病患狀況。
ThingSpeak 通道設定
ThingSpeak 是一個雲端平臺,允許使用者上傳和分享資料。以下是設定 ThingSpeak 通道的步驟:
- 註冊 ThingSpeak 帳戶。
- 驗證電子郵件地址。
- 點選「New Channel」按鈕。
- 輸入通道名稱和描述。
- 啟用多個資料欄位。
- 點選「Save Channel」按鈕。
在這個例子中,作者建立了一個名為「Pulse, Oxygen Saturation, and Body Temperature」的通道,包含三個資料欄位:BPM、SpO2 和 Temp。
圖表翻譯:
flowchart TD A[註冊 ThingSpeak 帳戶] --> B[驗證電子郵件地址] B --> C[點選 New Channel 按鈕] C --> D[輸入通道名稱和描述] D --> E[啟用多個資料欄位] E --> F[點選 Save Channel 按鈕]
這個圖表展示了設定 ThingSpeak 通道的步驟。
使用ThingSpeak進行遠端監控
ThingSpeak是一個開源的IoT平臺,允許使用者收集、分析和視覺化資料。要將資料傳送到ThingSpeak,需要獲得一個唯一的API金鑰。
獲取API金鑰
首先,需要建立一個ThingSpeak頻道並導航到“API金鑰”標題下,複製“寫入API金鑰”以在主程式碼中使用。
設定Python環境
要將資料傳送到ThingSpeak,需要安裝相關的庫,包括httplib
和urllib
。
sudo apt-get install httplib
sudo apt-get install urllib
Patient Monitoring System
Patient Monitoring System是一個使用MAX30102和MLX90614感測器的遠端監控系統。以下是Patient Monitoring System的流程圖:
flowchart TD A[開始] --> B[初始化感測器] B --> C[讀取資料] C --> D[傳送資料到ThingSpeak] D --> E[更新ThingSpeak頻道] E --> F[結束]
主程式碼
以下是Patient Monitoring System的主程式碼:
# Imports required for MAX30102 sensor
from heartrate_monitor import HeartRateMonitor
import time
import argparse
# Imports required for MLX90614 sensor
import smbus
from mlx90614 import MLX90614
# Imports required for Thingspeak cloud update
import os
import http.client
import urllib
key = "YOUR_API_KEY" # Put your Thingspeak cloud API Key here
# MAX30102 sensor update section
parser = argparse.ArgumentParser(description="Read and print data from MAX30102")
parser.add_argument("-r", "--raw", action="store_true",
help="print raw data instead of calculation result")
parser.add_argument("-t", "--time", type=int, default=30,
help="duration in seconds to read from sensor, default 30")
args = parser.parse_args()
print('sensor starting...')
hrm = HeartRateMonitor(print_raw=args.raw, print_result=(not args.raw))
hrm.start_sensor()
try:
time.sleep(args.time)
except KeyboardInterrupt:
print('keyboard interrupt detected, exiting...')
hrm.stop_sensor()
print('sensor stoped!')
print(hrm.print_bpm, hrm.print_spo2)
圖表翻譯:
以上的流程圖展示了Patient Monitoring System的工作流程。首先,初始化感測器,然後讀取資料,接著傳送資料到ThingSpeak,更新ThingSpeak頻道,最後結束。
內容解密:
以上的程式碼展示了Patient Monitoring System的主程式碼。首先,匯入所需的庫,然後定義API金鑰,接著初始化MAX30102感測器,讀取資料,傳送資料到ThingSpeak,更新ThingSpeak頻道,最後結束。
物聯網與邊緣計算:健康監測系統與家居安全
5.6.1 健康監測系統
健康監測系統是一個結合了多種感測器和雲端計算的應用,旨在實時監測人體的健康狀態。系統使用MLX90614感測器來測量體溫,heartrate_monitor.py函式庫來計算心率和血氧飽和度。這些資料透過Thingspeak雲端平臺進行上傳和資料視覺化。
import smbus
from heartrate_monitor import HeartRateMonitor
# 初始化MLX90614感測器
bus1 = smbus.SMBus(1)
sensor = MLX90614(bus1, address=0x5a)
# 讀取體溫
body_temp = sensor.get_object_1()
# 初始化心率監測器
hrm = HeartRateMonitor()
# 啟動心率監測執行緒
hrm.start_sensor()
# 等待心率資料穩定
import time
time.sleep(5)
# 讀取心率和血氧飽和度
bpm = hrm.print_bpm
spo2 = hrm.print_spo2
# 關閉心率監測器
hrm.stop_sensor()
# 上傳資料到Thingspeak雲端
params = urllib.parse.urlencode({'field1': bpm, 'field2': spo2, 'field3': body_temp, 'key': key})
headers = {"Content-type": "application/x-www-form-urlencoded", "Accept": "text/plain"}
conn.request("POST", "/update", params, headers)
response = conn.getresponse()
print(response.status, response.reason)
data = response.read()
conn.close()
5.6.2 家居安全系統
家居安全系統結合了多種安全硬體,例如PIR感測器、監視攝像頭、智慧鎖等,來保障財產和人身安全。系統使用MicroPython程式語言在ESP32微控制器上實作。
import machine
import time
# 初始化PIR感測器
pir = machine.Pin(12, machine.Pin.IN)
# 初始化監視攝像頭
camera = machine.Pin(13, machine.Pin.OUT)
# 初始化智慧鎖
lock = machine.Pin(14, machine.Pin.OUT)
while True:
# 讀取PIR感測器狀態
pir_state = pir.value()
# 如果PIR感測器被觸發
if pir_state == 1:
# 啟動監視攝像頭
camera.value(1)
# 上傳警報到雲端
params = urllib.parse.urlencode({'alert': 'motion detected', 'key': key})
headers = {"Content-type": "application/x-www-form-urlencoded", "Accept": "text/plain"}
conn.request("POST", "/update", params, headers)
response = conn.getresponse()
print(response.status, response.reason)
data = response.read()
conn.close()
# 如果智慧鎖被觸發
if lock.value() == 1:
# 上傳鎖狀態到雲端
params = urllib.parse.urlencode({'lock': 'locked', 'key': key})
headers = {"Content-type": "application/x-www-form-urlencoded", "Accept": "text/plain"}
conn.request("POST", "/update", params, headers)
response = conn.getresponse()
print(response.status, response.reason)
data = response.read()
conn.close()
# 等待1秒
time.sleep(1)
圖表翻譯:
flowchart TD A[PIR感測器] --> B[監視攝像頭] B --> C[智慧鎖] C --> D[雲端上傳] D --> E[警報觸發] E --> F[鎖狀態上傳]
以上程式碼展示了健康監測系統和家居安全系統的基本架構和實作。這些系統結合了多種感測器和雲端計算技術,來實作實時監測和警報功能。
家居監控系統
家居監控系統是一種結合了物聯網技術和人工智慧的應用,旨在提供家庭安全和便捷的監控解決方案。這種系統通常由多個元件組成,包括物聯網裝置、感測器、雲端服務和移動應用程式。
系統架構
家居監控系統的架構通常包括以下幾個部分:
- 物聯網裝置:這是系統的核心元件,負責收集和傳輸家庭中的各種資料,例如溫度、濕度、運動等。常見的物聯網裝置包括攝像頭、感測器和智慧家居裝置。
- 感測器:感測器是用於檢測家庭中的各種物理引數,例如溫度、濕度、運動等。常見的感測器包括紅外線感測器、超聲波感測器和壓力感測器。
- 雲端服務:雲端服務是用於儲存和處理家庭中的各種資料,例如影片、影像和感測器資料。常見的雲端服務包括Google Drive、Dropbox和AWS。
- 移動應用程式:移動應用程式是用於控制和監控家庭中的各種裝置,例如攝像頭、燈光和溫度控制器。
ESP32-CAM
ESP32-CAM是一種物聯網裝置,內建了攝像頭和microSD卡槽。它是一種低成本、低功耗的裝置,非常適合於家庭監控系統的應用。
ESP32-CAM的特點
- 低成本:ESP32-CAM是一種低成本的物聯網裝置,相比於其他類似的裝置,它的價格非常優惠。
- 低功耗:ESP32-CAM是一種低功耗的裝置,非常適合於長時間執行的應用。
- 內建攝像頭:ESP32-CAM內建了攝像頭,能夠拍攝高質量的影像和影片。
- microSD卡槽:ESP32-CAM有microSD卡槽,能夠儲存大量的影像和影片資料。
ESP32-CAM的應用
ESP32-CAM可以用於各種家庭監控系統的應用,例如:
- 家庭安全:ESP32-CAM可以用於監控家庭中的各種安全情況,例如門窗開關、人員進出等。
- 家庭自動化:ESP32-CAM可以用於控制家庭中的各種智慧裝置,例如燈光、溫度控制器等。
- 家庭娛樂:ESP32-CAM可以用於家庭中的娛樂應用,例如影片監控、照片拍攝等。
PIR感測器
PIR感測器是一種用於檢測人體或動物運動的感測器。它透過檢測紅外線輻射的變化來檢測運動。
PIR感測器的特點
- 高靈敏度:PIR感測器具有高靈敏度,能夠檢測到微小的運動。
- 低功耗:PIR感測器是一種低功耗的感測器,非常適合於長時間執行的應用。
- 簡單介面:PIR感測器具有簡單的介面,易於與其他裝置介面。
PIR感測器的應用
PIR感測器可以用於各種家庭監控系統的應用,例如:
- 家庭安全:PIR感測器可以用於監控家庭中的各種安全情況,例如門窗開關、人員進出等。
- 家庭自動化:PIR感測器可以用於控制家庭中的各種智慧裝置,例如燈光、溫度控制器等。
MQTT協議
MQTT協議是一種用於物聯網裝置之間的通訊協議。它是一種輕量級的協議,非常適合於低功耗的應用。
MQTT協議的特點
- 輕量級:MQTT協議是一種輕量級的協議,非常適合於低功耗的應用。
- 低延遲:MQTT協議具有低延遲的特點,能夠實時傳輸資料。
- 高可靠性:MQTT協議具有高可靠性的特點,能夠保證資料的正確傳輸。
MQTT協議的應用
MQTT協議可以用於各種物聯網應用的通訊,例如:
- 家庭監控系統:MQTT協議可以用於家庭監控系統中的各種裝置之間的通訊。
- 工業控制系統:MQTT協議可以用於工業控制系統中的各種裝置之間的通訊。
圖表翻譯:
此圖示家居監控系統的架構,包括物聯網裝置、感測器、雲端服務和移動應用程式。圖中展示了ESP32-CAM和PIR感測器的介面和功能,同時也展示了MQTT協議的通訊流程。這個圖表能夠幫助使用者瞭解家居監控系統的工作原理和各個元件的功能。
FoG 計算與雲端計算的整合
在這個例子中,我們將使用 Jetson Nano 作為 FoG 計算節點,連線到 MQTT 代理伺服器,並使用 Wi-Fi 熱點將影像傳輸到雲端。
FoG 節點配置
要使用 Jetson Nano 作為 FoG 計算節點,需要啟用 Wi-Fi 熱點,這將允許使用 MQTT 協議傳輸影像。為此,需要安裝 Mosquitto 庫和 paho-mqtt 庫。
sudo apt-get install mosquitto mosquitto-clients
sudo apt-get install python3-pip
sudo pip3 install paho-mqtt
MQTT 代理伺服器配置
MQTT 是一個輕量級的釋出-訂閱網路協議,負責在裝置之間傳輸訊息。MQTT 代理伺服器是負責接收和路由所有來自客戶端的訊息的伺服器。
Wi-Fi 熱點啟用
要啟用 FoG 節點的 Wi-Fi 熱點,需要選擇設定選單中的 Wi-Fi 選項,然後在右側的三個水平線上滑鼠右鍵單擊,選擇「啟用 Wi-Fi 熱點」。
FoG 節點程式碼
以下是 FoG 節點的程式碼範例:
import paho.mqtt.client as mqtt
import camera
import time
# MQTT 代理伺服器設定
SERVER = 'your_mqtt_broker_url'
TOPIC = 'your_mqtt_topic'
# FoG 節點設定
CLIENT_ID = 'your_client_id'
# 初始化相機
camera.init(0, format=camera.JPEG)
# 初始化 MQTT 代理伺服器
c = mqtt.Client(CLIENT_ID)
c.connect(SERVER)
# 定義中斷處理函式
def handle_interrupt(Pin):
global Motion_status
Motion_status = True
# 設定 PIR 中斷
PIR_Interrupt = Pin(13, Pin.IN)
PIR_Interrupt.irq(trigger=Pin.IRQ_RISING, handler=handle_interrupt)
# 主迴圈
while True:
if Motion_status:
print('Motion is detected!')
buf = camera.capture()
c.publish(TOPIC, buf)
time.sleep_ms(100)
Motion_status = False
圖表翻譯:
flowchart TD A[初始化相機] --> B[連線 MQTT 代理伺服器] B --> C[設定 PIR 中斷] C --> D[主迴圈] D --> E[檢測動作] E --> F[拍照並釋出到 MQTT 主題] F --> G[等待 100 毫秒] G --> D
此圖表展示了 FoG 節點的工作流程,從初始化相機到連線 MQTT 代理伺服器,設定 PIR 中斷,然後進入主迴圈,檢測動作,拍照並釋出到 MQTT 主題,最後等待 100 毫秒。
配置 FoG 節點與雲端進行通訊
在這個應用中,作者使用了兩個雲端平臺,分別是 Twilio 和 Google Drive。Twilio 通訊平臺用於傳送 WhatsApp 訊息,指出有入侵活動。同時,監檢視像也會上傳到 Google Drive 雲端。以下是這兩個平臺的配置詳細資訊。
Twilio 配置
首先,需要準備 Jetson Nano 單板電腦(FoG 節點)以使用 Twilio 雲端通訊平臺傳送 WhatsApp 訊息。需要建立 Twilio 帳戶,點選註冊選項,填寫相應的使用者詳細資訊。帳戶建立後,需要驗證註冊的電子郵件和電話號碼。
驗證步驟完成後,需要指定所需的 Twilio 功能。使用下拉選單和單選按鈕選擇功能,如圖 5.14 所示。然後,點選「開始使用 Twilio」按鈕,將使用者導致控制檯,需要同意啟動沙盒並點選確認。
在「管理帳戶」下,導航到「一般設定」。然後,複製帳戶 SID 和驗證令牌,如圖 5.15 所示。這些資訊在 Python 程式碼中用於傳送 WhatsApp 訊息使用 Twilio 雲端。
Jetson Nano 單板電腦(FoG 節點)Twilio 配置
在使用 Python 程式碼接收和傳送 WhatsApp 訊息之前,需要在 Jetson Nano 單板電腦上安裝 Twilio 包,使用以下命令:
sudo pip install twilio
現在,系統已準備好透過 Twilio 雲端平臺傳送和接收 WhatsApp 訊息。
Google Drive 配置
在這個實作中,監檢視像儲存在 Google Drive 上。為此,需要安裝 Pydrive Python 模組,使用以下命令:
pip install pydrive
要使用 Python 程式碼上傳影像到 Google Drive,需要一個活躍的 Google 雲端帳戶。需要獲取 Google 服務 API 的驗證檔案,以便 Python 程式碼可以訪問 Google Drive。需要按照以下步驟進行:
步驟 1:在 Google Developer Console 中建立一個新專案,點選「建立專案」按鈕,輸入專案名稱。
步驟 2:啟用 API 和服務,點選「啟用 API 和服務」按鈕,搜尋「Google Drive」,點選「Google Drive API」圖示,然後點選「啟用」按鈕。
步驟 3:建立憑據,點選「憑據」按鈕,選擇所需的選項,如圖 5.16 所示,點選「完成」按鈕。然後,將滑鼠懸停在「建立憑據」上,選擇「OAuth 使用者端 ID」,如圖 5.17 所示。
步驟 4:點選「配置同意螢幕」按鈕,導航到 OAuth 同意螢幕,選擇「外部」,然後點選「建立」按鈕。
步驟 5:在下一個螢幕上,輸入「應用程式名稱」和「使用者支援電子郵件 ID」,以及開發人員聯絡資訊(開發人員電子郵件 ID),然後點選「儲存」和「繼續」按鈕。下一個螢幕顯示 OAuth 同意的摘要。
步驟 6:在憑據下,點選「建立憑據」按鈕,選擇「OAuth 使用者端 ID」,提供所需的設定,如圖 5.18 所示,點選「建立」按鈕。現在,OAuth 使用者端 ID 已經建立。
步驟 7:建立 OAuth 使用者端 ID 後,點選「下載」按鈕,下載 JSON 檔案。這個下載的 JSON 檔案需要在 Python 程式碼中訪問 Google Drive。下載 JSON 檔案後,將其重新命名為「client_secrets.json」,確保它與「main.py」檔案在同一個資料夾中。
步驟 8:建立一個「main.py」檔案,輸入以下 Python 程式碼,然後使用以下命令執行它:
python3 main.py
成功執行程式碼後,Twilio 訊息通知將傳送到註冊的行動電話號碼,如圖 5.20 所示。
內容解密:
上述程式碼和步驟的作用是配置 Jetson Nano 單板電腦(FoG 節點)與 Twilio 和 Google Drive 雲端平臺進行通訊。這使得系統可以傳送 WhatsApp 訊息和上傳影像到 Google Drive。
圖表翻譯:
此圖示為 Twilio 功能選擇介面,如圖 5.14 所示。它顯示瞭如何選擇所需的 Twilio 功能。
flowchart TD A[開始] --> B[建立 Twilio 帳戶] B --> C[驗證電子郵件和電話號碼] C --> D[選擇 Twilio 功能] D --> E[啟動沙盒] E --> F[複製帳戶 SID 和驗證令牌] F --> G[安裝 Twilio 包] G --> H[傳送 WhatsApp 訊息]
物聯網與雲端運算:FoG和雲端的實際應用
隨著物聯網(IoT)和雲端運算的快速發展,許多創新應用已經出現。其中,Fog Computing(FoG)是一種新的計算模式,它將計算任務從雲端轉移到更接近使用者的邊緣裝置上,以減少延遲和提高效率。在本文中,我們將探討FoG和雲端運算的實際應用,包括使用MQTT協議進行訊息傳遞、Twilio進行WhatsApp訊息傳送,以及Google Drive進行雲端儲存。
MQTT協議和Twilio
MQTT(Message Queuing Telemetry Transport)是一種輕量級的訊息傳遞協議,廣泛用於IoT應用。以下是一個使用Python和Paho MQTT庫的MQTT客戶端範例:
import time
import paho.mqtt.client as mqtt
def on_connect(client, userdata, flags, rc):
print("Connected with result code "+str(rc))
client.subscribe('Image')
def on_message(client, userdata, msg):
# 處理接收到的訊息
print("Received message: "+str(msg.payload))
client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message
client.connect("broker_url", 1883, 60)
同時,Twilio是一個雲端通訊平臺,提供了WhatsApp訊息傳送的功能。以下是一個使用Twilio的WhatsApp訊息傳送範例:
from twilio.rest import Client
twilio_client = Client('account_sid', 'auth_token')
from_whatsapp_number='whatsapp:+14155238886'
to_whatsapp_number='whatsapp:+91705750xxxx'
message = twilio_client.messages.create(
body="Hello, World!",
from_=from_whatsapp_number,
to=to_whatsapp_number
)
Google Drive雲端儲存
Google Drive是一個雲端儲存平臺,提供了檔案儲存和分享的功能。以下是一個使用PyDrive庫的Google Drive範例:
from pydrive.drive import GoogleDrive
from pydrive.auth import GoogleAuth
gauth = GoogleAuth()
gauth.LocalWebserverAuth()
drive = GoogleDrive(gauth)
# 上傳檔案到Google Drive
file1 = drive.CreateFile({'title': 'HelloWorld.txt'})
file1.SetContentString('Hello World!')
file1.Upload()
結合FoG和雲端運算
透過結合FoG和雲端運算,我們可以建立出更強大和更高效的IoT應用。例如,使用FoG可以減少延遲和提高效率,同時使用雲端運算可以提供更強大的計算能力和儲存空間。
內容解密:
- MQTT協議是一種輕量級的訊息傳遞協議,廣泛用於IoT應用。
- Twilio是一個雲端通訊平臺,提供了WhatsApp訊息傳送的功能。
- Google Drive是一個雲端儲存平臺,提供了檔案儲存和分享的功能。
- 結合FoG和雲端運算可以建立出更強大和更高效的IoT應用。
圖表翻譯:
flowchart TD A[MQTT客戶端] --> B[連線到Broker] B --> C[訂閱主題] C --> D[接收訊息] D --> E[處理訊息] E --> F[上傳檔案到Google Drive] F --> G[使用Twilio傳送WhatsApp訊息]
此圖表示了MQTT客戶端的工作流程,包括連線到Broker、訂閱主題、接收訊息、處理訊息、上傳檔案到Google Drive和使用Twilio傳送WhatsApp訊息。
物聯網(IoT)應用正蓬勃發展,而 ThingSpeak、MQTT、Twilio 和 Google Drive 等雲端服務平臺,則扮演了關鍵的賦能角色。本文深入探討瞭如何整合這些平臺,建構一個根據 ESP32-CAM 和 PIR 感測器的遠端監控系統,實作從資料採集、邊緣計算到雲端儲存與警報通知的完整流程。分析 ThingSpeak、MQTT、Twilio 和 Google Drive 的整合方案,可以發現,它們有效降低了開發門檻,讓開發者能更專注於應用邏輯的實作,同時也提升了系統的擴充套件性和可靠性。然而,系統的安全性和資料隱私保護仍是重要的挑戰。未來,預期邊緣計算能力將持續提升,更多 AI 演算法將被整合到邊緣裝置中,實作更智慧化的資料處理和決策。玄貓認為,隨著 5G 和邊緣計算技術的成熟,結合雲端服務的物聯網應用將迎來更廣闊的發展空間,特別是在智慧醫療、智慧家居和工業物聯網等領域。對於想要快速開發物聯網應用的團隊,善用這些雲端平臺和開源工具將是事半功倍的策略。