Прошивка для контроллера, управляющего серво-приводами при помощи ШИМ сигнала.
Приложение использует открытую BLE-библиотеку собственного авторства, а также аналогичную библиотеку для работы с сетью - ESP-Networkxx.
Прошивка настраивает два ШИМ-канала для управления серво-приводами MG-995
.
За взаимодействиями с приводами отвечает модуль servo
.
Сервер GATT, инициализируемый BLE-библиотекой, отвечает за:
- Подключение к WiFi-сети. Сервис -
0xC111E1A
, характеристика -0x4ED
. Для подключения необходимо записать в характеристику C-style строки:SSID
-Password
. - Управления углом поворота определенного привода. Сервис -
0xCFFFAE
.- Привод Omega. Характеристика -
0xA0111
- Привод Theta. Характеристика -
0xA111E
- Привод Omega. Характеристика -
При подключении контроллера к WiFi сети, запускается протокол уровня приложения, который
состоит из сервера с отдельными модулями
. Каждый модуль имеет обратный вызов для чтения и записи.
Каждый модуль имеет свой тип и номер - идентификатор, по которому к нему можно обратиться.
Сервер протокола для данного приложения содержит:
- Модуль работы с WiFi - на данный момент при записи в него контроллер перезагружается, тем самым отключаясь от WiFi-сети. Для штатного отключения в конфигурации нужно включить множественное подключение для BLE-сервера.
- Модуль работы с серво-приводами - при записи в него вектора оси привода выполняется поворот
привода на определенный угол. В данном случае, считается, что у каждого привода MG-995 есть всего
одна ось свободы.
Ось-Z
локальной системы координат каждого привода совпадает с этой самой осью.
UML-диаграмма представлена в docs/app.uxf
. Вот ее сжатое содержание:
Для сборки элементов используется плата-разветвитель. Её задача состоит в том, чтобы коммутировать между собой каналы ШИМ и подавать питание на контроллеры и приводы. Для платы используются 4 клеммника KLS2-127-5.00, а также гнездо питания DJK-02A.
Ниже приведена приблизительная схема подключения двух приводов и платы:
Вместо макетной платы с компонентами используется плата-разветвитель. В качестве источника питания используется лабораторный блок питания, но вместо него можно взять адаптер питания 2.1мм на 5В, 2А.