Проекты
MyRoverWeb
Веб приложение для управления игрушечным роботом доставщиком по Bluetooth Low Energy прямо из браузера. Интерфейс позволяет найти доступный ровер, подключиться к нему и отправлять команды движения и управления светом бе…
О проекте
Веб-приложение для управления игрушечным роботом-доставщиком по Bluetooth Low Energy прямо из браузера. Интерфейс позволяет найти доступный ровер, подключиться к нему и отправлять команды движения и управления светом без установки нативного приложения.
Содержание
- Возможности
- Стек
- Как работает приложение
- Требования к браузеру и устройству
- Почему нужен браузер на Chromium
- Быстрый старт
- Сценарий использования
- BLE-протокол управления
- Структура проекта
- Полезные материалы
Возможности
- Поиск BLE-устройств с именем
Rover Toy XXXилиYandex Delivery Robot - Подключение к роботу по GATT из браузера
- Управление движением: вперед, назад, влево, вправо
- Остановка по отпусканию кнопки управления
- Включение и выключение света на роботе
- Легкий браузерный интерфейс без установки отдельного приложения
Стек
- JavaScript
- React 18
- Create React App
- Web Bluetooth API
- Bluetooth Low Energy (BLE, GATT)
- GitHub Pages для деплоя
Как работает приложение
- Пользователь нажимает кнопку поиска ровера.
- Приложение вызывает
navigator.bluetooth.requestDevice()и открывает системное окно выбора BLE-устройства. - После выбора вычисляются UUID сервиса и характеристики на основе имени устройства.
- Браузер подключается к GATT-серверу робота и получает характеристику управления.
- При нажатии на кнопки интерфейса приложение отправляет в характеристику байтовые команды движения и света.
Приложение рассчитано на управление одним выбранным ровером за сессию.
Требования к браузеру и устройству
- Компьютер или 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
Сценарий использования
- Включите робота и убедитесь, что он доступен по BLE.
- Откройте приложение в Chrome или Edge.
- Нажмите
Найти ровер. - Выберите устройство
Rover Toy XXXилиYandex Delivery Robotв системном окне браузера. - Нажмите на найденный ровер в интерфейсе, чтобы подключиться.
- Управляйте движением кнопками-стрелками.
- Отпустите кнопку, чтобы отправить команду остановки.
- Используйте кнопку лампы для включения и выключения света.
BLE-протокол управления
Имена устройств
Rover Toy XXXYandex 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-команд
Полезные материалы
- MDN: Web Bluetooth API
- MDN: Bluetooth.requestDevice()
- MDN: Secure contexts
- Chrome for Developers: Communicating with Bluetooth devices over JavaScript
Links
- GitHub: MaxiEnergy/MyRoverWeb
Граф связей
Как эта работа связана с другими
Наведите курсор на линию, чтобы увидеть пояснение связи между работами.
Колёсико мыши меняет масштаб, а сам граф можно перетаскивать как карту.