Posture Pal с Walabot — мониторинг расстояния в реальном времени для предотвращения боли в шее и спине
Сохраняйте шею и спину здоровыми, мониторя позу сидения в реальном времени. Система Posture Pal связывает датчик расстояния Walabot с Raspberry Pi и пользовательским Android-приложением для мгновенной обратной связи и предотвращения боли от ссутуливания.
Компоненты железа
- Walabot
- Raspberry Pi 3 Model B
Почему я создал Posture Pal
Большинство профессионалов проводят 7–8 часов в день за столом. Распространенная проблема — голова, наклоненная вперед, и округлый позвоночник, создающие избыточную нагрузку на шейной отдел. Наклон головы на 15° может удвоить эффективный вес на шее, повышая его с 10–12 фунтов до 27 фунтов (4,5–5,5 кг) [1]. Исследования показывают, что сгибание шеи на 20° удваивает вероятность рабочей боли в шее.
Я создал Posture Pal, чтобы давать мягкие, основанные на данных напоминания, помогающие пользователям сохранять правильную позу без громоздкого оборудования. Текущий релиз включает открытый Android-приложение, уведомляющее пользователей, когда они слишком близко к экрану.
Шаг 1: Запуск сервера на Pi
1. Установите Walabot SDK на ваш Raspberry Pi. 2. Используйте Flask для предоставления данных расстояния Walabot через простой веб-API. 3. Клонируйте код сервера с GitHub и запустите его.
pip install flask --user git clone https://gist.github.com/justinshenk/aa1e1eb7ceb87fd82f0b655b5ad20c8a posture-server cd posture-server python3 server.py
Скрипт server.py создает два эндпоинта: /set — получает текущее расстояние от Walabot. /status — возвращает последнее измеренное расстояние как JSON.
#!/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)
Во втором терминале запустите цикл измерения расстояния Walabot:
python3 distance.py
Скрипт считывает целевую глубину через wlbt.get_targets() и отправляет на Flask-сервер:
targets = wlbt.get_targets()
distance = str(targets[0].zPosCm)
import requests
r = requests.get("https://localhost:3000/set?distance=" + distance)
Шаг 2: Запуск Android-приложения
Скачайте готовый APK или клонируйте исходники с GitHub: Walabot-PosturePal. Приложение использует GraphView для живого построения графика и HTTP long polling для получения расстояния каждую секунду.
// Получение расстояния через JsonObjectRequest
String url = "https://192.168.0.100:3000/status"; // замените на IP вашего Pi
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");
// Обновление набора данных графика
dataset = updateData(dataset, distance);
// Обновление текстового отображения
currDistance.setText("Distance: " + String.format("%.2f", distance));
} catch (JSONException e) {
e.printStackTrace();
}
// Опрос каждую секунду
new Timer().scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
queue.add(jsonObjectRequest);
}
}, 0, 1000);
}
}
);
Шаг 3: Калибровка
Используйте приложение для установки базовой позы и настройки порога чувствительности. Это гарантирует, что алерты срабатывают только когда вы выходите за пределы комфортного диапазона.
Посмотрите полный исходный код и документацию для сборки или модификации системы под свои нужды.
Производственный процесс
- Мягкость салфеток: как лосьон повышает комфорт и характеристики
- Как считывать температуру с DS18B20 на Raspberry Pi 2
- Измерение температуры на Raspberry Pi с датчиками Maxim 1-Wire и мостом DS2482 I2C
- Точный мониторинг температуры в серверной на Raspberry Pi
- Walabot Touchpad: превратите любую поверхность в беспроводной сенсорный интерфейс
- Монитор гигиены туалета на базе Walabot
- Распознавание рукописных цифр на Raspberry Pi с TensorFlow и OpenCV
- Начало работы с TJBot: сборка, настройка и голосовое управление ИИ-роботом
- Сборка самобалансирующегося Segway на Raspberry Pi
- Расширение GoPiGo v2 на Windows 10 IoT Core для Raspberry Pi 3