Дополнительный кабель ESP32-C3 Super Mini........
Дополнительный кабель для связи с фирменным оборудованием Mahr 2000 года: Mahr Extramess 2001
Настройка оборудования
Мы использовали два основных аппаратных компонента:
ESP32-C3 Супер Мини
Компактный и недорогой микроконтроллер с поддержкой связи USB и UART: купить на AliExpress
4-контактный кабель M8
Используется для подключения ESP32 к Mahr Extramess 2001: купить на Amazon.
ESP32 выступает в качестве посредника между устаревшим последовательным соединением устройства Mahr и компьютером через USB. Он отправляет запросы и анализирует входящие измерения, выводя их в формате, удобном для регистрации или анализа.
Почему мы это построили? Потому что оригинальный кабель от поставщика стоит 111 евро — в основном из-за встроенного контроллера FTDI — а официальное программное обеспечение допускает только один запрос данны�� в секунду, что слишком медленно для практического использования.
Чтобы решить эту проблему, мы провели реверс-инжиниринг протокола связи между программным обеспечением MahrConnect и Mahr Extramess 2001. Мы обнаружили, что программное обеспечение ищет только определенное имя устройства на контроллере FTDI. Имея это представление, мы использовали универсальное устройство UART для отслеживания последовательной связи и определения необходимых сигналов и команд.
Обнаружение протокола
Анализируя сигнал и документацию, мы выявили следующие параметры связи:
Скорость передачи данных: 4800
Биты данных: 7
Паритет: четный
Стоп-биты: 2
Протокол принимает определенные команды ASCII, завершающиеся возвратом каретки (\r). Ключевые команды включают в себя:
Команда Функция
RES1\r Установить диапазон измерения (предустановка 1)
RES2\r Установить диапазон измерения (предустановка 2)
RES3\r Установить диапазон измерения (предустановка 3)
TOL?\r Настройки допуска запросов
SET?\r Запросить текущий статус
?\r Запрос текущего значения измерения
RST\r Сброс и деактивация режима ABS.
BAT?\r Запрос состояния батареи
MAX\r Показать максимальное измерение
MIN\r Показать минимальное измерение
ВЫКЛ\r Выключите устройство.
ABS\r Активировать режим абсолютного измерения
Эти команды позволили нам полностью контролируемо взаимодействовать с устройством.
Реализация
Мы использовали ESP32-C3 Super Mini — один из самых маленьких и наиболее экономичных микроконтроллеров — в качестве моста между устаревшим последовательным интерфейсом и современным компьютером через USB.
ESP32 был запрограммирован на:
Отправляйте запрос измерения ?\r через Serial1 каждые 5 миллисекунд.
Ожидайте ответа, завершенного \r.
Проанализируйте и очистите результат, извлекая только числовое значение измерения (в мм).
Выведите временную метку и значение через последовательный порт USB в формате CSV.
Серийный номер был настроен с помощью:
mySerial.begin(4800, SERIAL_7E2, 21, 20); // RX = GPIO21, TX = GPIO20
Для мониторинга последовательных данных мы использовали CoolTerm, который позволяет нам захватывать и сохранять выходные данные в файл .txt для последующей обработки в Excel.
Производительность
На практике мы достигли частоты дискретизации примерно 14,5 Гц, что является значительным улучшением по сравнению с исходным пределом в 1 Гц, установленным официальным программным обеспечением Mahr.
Хотя код пытается опрашивать устройство каждые 5 мс (что эквивалентно 200 Гц), фактическая скорость ограничена последовательным протоколом и временем отклика устр��йства. При скорости 4800 бод и конфигурации 7E2 (7 бит данных, четность, 2 стоповых бита) для передачи каждого символа требуется 11 бит, а ответ измерения занимает несколько байтов. С учетом задержек обработки и временных затрат система достигает примерно 14-15 показаний в секунду.
Мы также заметили, что опрос быстрее, чем каждые 10 мс, мешает работе кнопок на передней панели устройства — вероятно, из-за конкуренции за ресурсы внутри прошивки устройства. По этой причине интервал опроса был установлен программно на 5 мс.
Несмотря на это, эта установка обеспечивает гораздо более плотный поток данных, чем исходное программное обеспечение, и вполне достаточна для большинства задач регистрации и анализа.
Код на ESP32C3:
// Используйте Serial1 для связи UART
// RES1, RES2, RES3 + \r --> Установить диапазон измерения
// TOL?\r --> Толерантность к запросам
// SET?\r --> Статус запроса
// ?\r --> Запросить значение измерения
// RST\r --> Сброс и отключение режима ABS
// BAT?\r --> Запрос состояния батареи
// MAX\r --> Отобразить макси





























