Перейти к содержанию

Проекты

MyRoverWeb

Веб приложение для управления игрушечным роботом доставщиком по Bluetooth Low Energy прямо из браузера. Интерфейс позволяет найти доступный ровер, подключиться к нему и отправлять команды движения и управления светом бе…

2024Завершен

О проекте

Веб-приложение для управления игрушечным роботом-доставщиком по Bluetooth Low Energy прямо из браузера. Интерфейс позволяет найти доступный ровер, подключиться к нему и отправлять команды движения и управления светом без установки нативного приложения.

Содержание

Возможности

  • Поиск BLE-устройств с именем Rover Toy XXX или Yandex Delivery Robot
  • Подключение к роботу по GATT из браузера
  • Управление движением: вперед, назад, влево, вправо
  • Остановка по отпусканию кнопки управления
  • Включение и выключение света на роботе
  • Легкий браузерный интерфейс без установки отдельного приложения

Стек

  • JavaScript
  • React 18
  • Create React App
  • Web Bluetooth API
  • Bluetooth Low Energy (BLE, GATT)
  • GitHub Pages для деплоя

Как работает приложение

  1. Пользователь нажимает кнопку поиска ровера.
  2. Приложение вызывает navigator.bluetooth.requestDevice() и открывает системное окно выбора BLE-устройства.
  3. После выбора вычисляются UUID сервиса и характеристики на основе имени устройства.
  4. Браузер подключается к GATT-серверу робота и получает характеристику управления.
  5. При нажатии на кнопки интерфейса приложение отправляет в характеристику байтовые команды движения и света.

Приложение рассчитано на управление одним выбранным ровером за сессию.

Требования к браузеру и устройству

  • Компьютер или Android-устройство с поддержкой Bluetooth Low Energy
  • Браузер с поддержкой Web Bluetooth API
  • Доступ к сайту в безопасном контексте: https:// или http://localhost для локальной разработки
  • Включенный Bluetooth и разрешение на доступ к нему в браузере
  • Включенный и доступный для подключения робот

Почему нужен браузер на Chromium

Этот проект использует Web Bluetooth API, а именно:

  • navigator.bluetooth.requestDevice()
  • device.gatt.connect()
  • чтение GATT-сервиса и запись в BLE-характеристику

Приложение зависит от реализации Web Bluetooth внутри браузерного движка. В коде проекта нет нативного слоя или отдельного desktop-клиента: вся работа с BLE идет через браузерный JavaScript API.

Нужен браузер, в котором реализован Web Bluetooth. Для проекта рекомендуется использовать браузер на движке Chromium, например Google Chrome или Microsoft Edge. Если в браузере отсутствует объект navigator.bluetooth, приложение не сможет ни открыть окно выбора устройства, ни подключиться к роверу.

Быстрый старт

npm ci
npm start

После запуска приложение будет доступно по адресу http://localhost:3000.

Сборка production-версии

npm run build

Деплой на GitHub Pages

npm run deploy

Сценарий использования

  1. Включите робота и убедитесь, что он доступен по BLE.
  2. Откройте приложение в Chrome или Edge.
  3. Нажмите Найти ровер.
  4. Выберите устройство Rover Toy XXX или Yandex Delivery Robot в системном окне браузера.
  5. Нажмите на найденный ровер в интерфейсе, чтобы подключиться.
  6. Управляйте движением кнопками-стрелками.
  7. Отпустите кнопку, чтобы отправить команду остановки.
  8. Используйте кнопку лампы для включения и выключения света.

BLE-протокол управления

Имена устройств

  • Rover Toy XXX
  • Yandex Delivery Robot

UUID

  • Сервис: 0000170d-XXXX-1000-8000-00805f9b34fb
  • Характеристика: 00002a60-XXXX-1000-8000-00805f9b34fb

Где XXXX:

  • номер ровера в формате из четырех цифр для устройств Rover Toy
  • 0000 для устройства Yandex Delivery Robot

Команды

  • 0x04 - движение вперед
  • 0x05 - движение назад
  • 0x02 - поворот влево
  • 0x01 - поворот вправо
  • 0x03 - включить свет
  • 0x06 - выключить свет
  • 0x00 - стоп

Структура проекта

  • src/App.js - корневой компонент приложения
  • src/components/FindRovers.js - поиск доступных роверов и переход к управлению
  • src/components/RoverControl.js - экран управления движением и светом
  • src/bluetooth.js - логика поиска, подключения и отправки BLE-команд

Полезные материалы


Links

Как эта работа связана с другими

272 звёзд · 289 связей

Исследуйте связи между материалами на звёздной карте.

Несколько материалов с карты