Posture Pal mit Walabot – Echtzeit-Entfernungsüberwachung gegen Nacken- und Rückenschmerzen
Posture Pal mit Walabot – Echtzeit-Entfernungsüberwachung gegen Nacken- und Rückenschmerzen
Halten Sie Nacken und Rücken gesund, indem Sie Ihre Sitzhaltung in Echtzeit überwachen. Das Posture-Pal-System kombiniert einen Walabot-Entfernungssensor mit einem Raspberry Pi und einer benutzerdefinierten Android-App, um sofortiges Feedback zu geben und Schmerzen durch falsches Sitzen zu verhindern.
Hardware-Komponenten
- Walabot
- Raspberry Pi 3 Model B
Warum ich Posture Pal gebaut habe
Die meisten Berufstätigen verbringen 7–8 Stunden täglich am Schreibtisch. Ein häufiges Problem ist der nach vorne geneigte Kopf und ein gerundeter Rücken, der die Halswirbelsäule übermäßig belastet. Eine 15°-Vorwärtshaltung des Kopfes kann das effektive Gewicht auf den Nacken verdoppeln – von 4,5–5,5 kg auf ca. 12 kg. Studien zeigen, dass eine 20°-Nackenbeugung die Wahrscheinlichkeit von arbeitsbedingten Nackenschmerzen verdoppelt.
Ich habe Posture Pal entwickelt, um sanfte, datengestützte Erinnerungen zu geben, die Nutzern helfen, eine korrekte Haltung beizubehalten – ohne sperrige Geräte. Die aktuelle Version bietet eine Open-Source-Android-App, die warnt, wenn man sich dem Bildschirm zu stark nähert.
Schritt 1: Server auf dem Pi starten
1. Walabot SDK auf dem Raspberry Pi installieren.
2. Flask nutzen, um Walabot-Entfernungsdaten über eine einfache Web-API bereitzustellen.
3. Server-Code von GitHub klonen und ausführen.
pip install flask --user git clone https://gist.github.com/justinshenk/aa1e1eb7ceb87fd82f0b655b5ad20c8a posture-server cd posture-server python3 server.py
Das Skript server.py erstellt zwei Endpunkte:
/set – empfängt die aktuelle Entfernung vom Walabot.
/status – gibt die letzte gemessene Entfernung als JSON zurück.
#!/usr/local/env python
import json
import time
from flask import Flask, jsonify, request, Response
app = Flask(__name__)
distance = 0
@app.route('/set')
def set():
global distance
distance = request.args.get('distance')
return jsonify(distance)
@app.route('/status')
def status():
return Response(json.dumps({'status': distance}))
if __name__ == '__main__':
app.run(host='0.0.0.0', port=3000)
In einem zweiten Terminal die Walabot-Entfernungsmessung starten:
python3 distance.py
Das Skript liest die Zieltiefe via wlbt.get_targets() und sendet sie an den Flask-Server:
targets = wlbt.get_targets()
distance = str(targets[0].zPosCm)
import requests
r = requests.get("https://localhost:3000/set?distance=" + distance)
Schritt 2: Android-App starten
Vorgefertigtes APK herunterladen oder Quellcode von GitHub klonen: Walabot-PosturePal. Die App nutzt GraphView für Live-Plotting und HTTP-Long-Polling, um die Entfernung jede Sekunde abzurufen.
// Entfernung via JsonObjectRequest abrufen
String url = "https://192.168.0.100:3000/status"; // Mit Ihrer Pi-IP ersetzen
final JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(
Request.Method.GET, url, null,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Double distance = 0.;
try {
distance = response.getDouble("status");
// Graph-Datensatz aktualisieren
dataset = updateData(dataset, distance);
// Textanzeige aktualisieren
currDistance.setText("Distance: " + String.format("%.2f", distance));
} catch (JSONException e) {
e.printStackTrace();
}
// Jede Sekunde abfragen
new Timer().scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
queue.add(jsonObjectRequest);
}
}, 0, 1000);
}
}
);
Schritt 3: Kalibrieren
App nutzen, um eine Basis-Haltung festzulegen und den Schwellenwert für die Empfindlichkeit anzupassen. So werden Warnungen nur ausgelöst, wenn man über den komfortablen Bereich hinaus abdriftet.
Vollständigen Quellcode und Dokumentation ansehen, um das System für den eigenen Gebrauch zu bauen oder anzupassen.
Herstellungsprozess
- Weichmachende Tücher: Wie Lotion Komfort und Leistung verbessert
- Temperatur mit DS18B20 am Raspberry Pi 2 auslesen
- Temperaturmessung mit Maxim 1-Wire Sensoren und DS2482 I2C-Bridge am Raspberry Pi
- Präzise Temperaturüberwachung im Server-Schrank mit Raspberry Pi
- Walabot Touchpad: Jede Fläche in ein kabelloses Touch-Interface verwandeln
- Walabot-gestützter Toiletten-Hygienemonitor
- Raspberry Pi Ziffernerkennung mit TensorFlow & OpenCV selbst bauen
- TJBot starten: Bauen, konfigurieren und per Sprache steuern
- Selbstbalancierenden Segway mit Raspberry Pi bauen
- GoPiGo v2 auf Windows 10 IoT Core für Raspberry Pi 3 erweitern