Speathe: коммуникация на основе дыхания для парализованных пользователей
Аппаратные компоненты
- Динамик
- 3 Вт, 4 Ом для чёткого аудиовывода.
- Устройство на Android
- Запускает мобильное приложение на React Native.
- Walabot
- Акустический сенсор, фиксирующий энергию дыхания и классифицирующий вдох/выдох как короткие или длинные.
- Raspberry Pi 3 Model B
- Выполняет Python-бэкенд и Flask-сервер.
Программный стек
- Python 3 — для бэкенд-логики и интеграции с Walabot.
- Flask — лёгкий веб-сервер на Raspberry Pi.
- React Native — кроссплатформенный мобильный интерфейс.
Принцип работы
Обнаружение дыхания и кодирование типа Морзе
Сенсор Walabot измеряет энергию каждого вдоха/выдоха. После краткой калибровки энергии дыхания сравниваются с порогом для классификации на короткие (точка) или длинные (тире). Последовательность дыханий преобразуется в паттерн кода Морзе (например, «-.-.-»). Raspberry Pi сопоставляет этот паттерн с заранее заданными буквами и фразами.
Предопределённые акронимы
Для уменьшения усилий ввода распространённые трёхбуквенные акронимы (например, ABC, XYZ) напрямую отображаются в полные фразы. При обнаружении акронима мобильное приложение сразу показывает развёрнутый текст.
Архитектура сервера
Raspberry Pi размещает Flask-сервер на статическом IP. Он принимает данные, полученные от дыхания, хранит текущую переменную «message» и предоставляет эндпоинты для опроса или отправки ответов мобильным приложением.
sudo nano /etc/dhcpcd.conf # Добавить в конец файла interface eth0 static ip_address=192.168.43.211 static routers=192.168.43.1 static domain_name_servers=192.168.43.1 interface wlan0 static ip_address=192.168.43.211 static routers=192.168.43.1 static domain_name_servers=192.168.43.1 # Сохранить Ctrl+O, выйти Ctrl+X sudo reboot
Мобильное приложение
React Native-приложение непрерывно опрашивает Flask-эндпоинт для получения последнего сообщения. При получении непустой строки оно отображает текст и воспроизводит его голосом. Пользователь может ответить, введя текст в приложении, который отправляется обратно на сервер. Сервер затем озвучивает ответ через динамик, обеспечивая двустороннюю коммуникацию.
Этапы реализации
- Установить Python 3 на Raspberry Pi.
- Скачать SDK Walabot для вашей ОС. Изучить пример
BreathingExample.pyдля понимания получения данных с сенсора. - Настроить Flask-сервер на Raspberry Pi и настроить статический IP как показано выше.
- Собрать React Native-приложение, обновив URL сервера на IP вашей Raspberry Pi.
- Подключить Walabot к Pi, динамик и Android-устройство через Wi-Fi.
- Запустить приложение, выполнить быструю калибровку и начать общение через дыхание.
Тестирование
Запустить Python-бэкенд на Raspberry Pi, убедиться, что статический IP доступен, и установить APK на Android-устройство. Открыть приложение, настроить дыхание и наблюдать перевод дыхания в текст в реальном времени.
Для более детальных примеров кода и советов по отладке обратитесь к документации репозитория.
Присоединяйтесь к сообществу
Мы приглашаем разработчиков, исследователей и медицинских специалистов внести вклад в развитие Speathe. Вместе мы можем создать надёжное, доступное средство коммуникации для парализованных людей.
Контакты и ресурсы
- Документация Walabot API: https://walabot.com/api/_pythonapi.html
- Загрузки Python 3: https://www.python.org/downloads/
- React Native: https://reactnative.dev/
Производственный процесс
- Освоение типов данных в Python: практическое руководство
- Мастерство операторов Python: Полное руководство
- Оператор pass в Python: практическое руководство
- Аргументы функций в Python: позиционные, именованные и параметры по умолчанию
- Словари в Python: создание, манипуляции и продвинутые техники
- Итераторы в Python: как они работают и как создать свои
- Замыкания в Python: как вложенные функции захватывают переменные
- Модуль datetime в Python: практическое руководство по датам, времени и часовым поясам
- Обзор Python: высокоуровневый, читаемый, интерактивный и объектно-ориентированный язык
- Числа в Python: Неизменяемые числовые типы данных