Створюємо драйвер Bluetooth-принтера для ESP32 за два кроки

Портативний Bluetooth-принтер
Портативний Bluetooth-принтер

Один інженер хотів використовувати портативний Bluetooth-принтер для друку звітів з даними сенсорів, зібраних мікроконтролером ESP32-C3. Однак, єдиним офіційним способом взаємодії з принтером був пропрієтарний додаток для смартфона від виробника. Не маючи документації щодо його роботи, інженер вирішив провести реверс-інжиніринг протоколу зв’язку принтера, щоб мати можливість керувати ним з мікроконтролера. Шлях, який він обрав, відрізняється від звичайних методів і слугує чудовим прикладом для подібних проєктів.

Деталізація з'єднання Bluetooth Стандартним підходом у таких випадках є використання вбудованої функції налагодження Android для запису Bluetooth-комунікацій під час роботи додатка виробника. Отриманий файл можна аналізувати за допомогою Wireshark, і з терпінням та деякими припущеннями зазвичай вдається розшифрувати команди та значення, що передаються на пристрій.

Проте, в цьому випадку інженер проігнорував програмне забезпечення виробника і використав додаток, який може запитувати пристрій та відображати його служби та характеристики Bluetooth Low Energy. Зокрема, він шукав служби, позначені як записувані, і почав надсилати до них дані, спостерігаючи за реакцією принтера. Для цього він використовував Python з бібліотекою Bleak, що дозволило йому швидко ітерувати та адаптувати свій код. Після деяких експериментів він знайшов правильну послідовність команд, щоб активувати двигун принтера і протягнути папір — це був перший важливий етап, який підтвердив, що він на правильному шляху.

Коли інженер визначив, які дані потрібно надсилати на які кінцеві точки для роботи принтера в Python, передача тих самих даних за допомогою коду C++ на ESP32 стала відносно простим процесом. Для додаткової естетики він також інтегрував бібліотеку Adafruit GFX, щоб створювати іконки та легше форматувати вивід принтера.

Хоча інженер ще не опублікував код, подібні зусилля зі створення драйверів з відкритим кодом для дешевих Bluetooth-принтерів вже робилися на користь спільноти.

Портативний Bluetooth-принтер

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *