Пару недель назад ко мне обратился старый знакомый который занимается плотницким делом — строит дома, бытовые постройки, лестницы, мебель и прочую полезную дачную утварь из дерева. В этом деле ему помогает, правильней будет сказать «помогал» (и теперь надеюсь вновь будет помогать) замечательный инструмент — ручной гвозде-забивной газовый степлер Paslode Impulse IM100Ci про-ва Франция. Данный инструмент представляет собой ударный механизм оснащенный камерой сгорания, в которой происходит искровой поджиг и детонация газовой смеси, продукты сгорания с силой выталкивают поршень ударяя бойком по гвоздю и оный со свистом заходит в доску. Всем процессом, разумеется, управляет электроника. Инструмент очень компактный, легкий, предназначен для работы на высоте и имеет адаптацию к температуре окружающей среды (может работать при -20С и ниже).
Но есть у данного инструмента одна неприятная особенность — баллончики с газом (обычный «природный газ» - пропан-бутановая смесь) оснащены RFID меткой стандарта NFC. В одной из ячеек памяти этой метки записывается счетчик «выстрелов». Всего производитель позволяет сделать не более 1250 выстрелов с одного баллончика. Баллончики с газом поставлялись только официальным дистрибьютером за совсем не малые 100+ EURO, а с введением санкций официальный канал поставки закрылся и ценник на них вырос в разы, что сделало данный инструмент практических не пригодным для применения. Разумеется такое положение дел очень сильно расстроило моего знакомого и он обратился ко мне с вопросом — а нельзя ли как-то того… отучить инструмент от этой совершено аморальной привязанности к производителю, ведь заполнить газом баллончик не представляет труда и обходится всего в 50 рублей! Посидев один свободный выходной день за приборами в нашей лаборатории мы пришли к выводу, что можно, и сделать это совсем не сложно.
Сслка на статью в формате PDF.
«Электронный молоток» изнутри
Итак, вот, что мы увидели отвинтив десяток торксов и сняв крышку данного изделия. В изделии расположено две печатные платы с электронной начинкой — одна в «магазинной» части инструмента, другая в рукоятке. Обе платы погружены в «стакан» и залиты твердым компаундом — сразу видно, разработчики всячески старались усложнить работу всякому, кто попытается сунуться во внутрь их изделия (а как же «право на ремонт» мельком подумал я). Помимо двух плат в изделии были обнаружены: две цифровые (ШИМ) кнопки — одна срабатывает на положение затвора, вторая — на спусковой крючок (триггер); кастомный аккумулятор LiON на 7.2 номинальных вольта; электромагнитный клапан (соленоид); баллончик с газом, и RFID антенна кольцевой формы в центр которой входит верхняя (пластиковая) часть баллончика содержащая RFID метку. В отсеке с камерой сгорания располагается форсунка, а на задней крышке камеры расположен вентилятор для подвода газовой смеси и отвода продуктов сгорания и искровая свеча.
Питание от аккумулятора подводится к первой плате, расположенной в «магазинной» части инструмента, к ней же подключается соленоид клапана и RFID антенна. Две цифровые кнопки, вентилятор и свеча подключены ко второй плате (в рукоятке), а обе платы соединены между собой четырех-проводной линией связи.
Принцип действия «электронного молотка»
О общих чертах принцип действия данного гвозде-забивного инструмента можно описать следующим образом:
-
Инструмент подготавливается к работа: в него устанавливается баллон с газом, фрагмент ленты с гвоздями и заряженный аккумулятор который переводится в рабочее положение (вставлен до упора).
-
Оператор приставляет «дуло» инструмента к доске и прижимает его, тем самым происходит взвод затворного механизма, камера сгорания закрывается и срабатывается первая кнопка по сигналу которой происходит кратковременное открывание газового клапана (примерно на 14мс), газ поступает в камеру сгорания и одновременно с этим запускается вентилятор для смешивания газа с воздухом.
-
В следующий момент оператор нажимает на спусковой крючок (вторая кнопка), подается искра и происходит детонация, поршень с силой ударяет по бойку, который уперт в гвоздь и гвоздь заходит в доску.
-
После детонации камера открывается и из неё удаляются отработанные газы (продукты сгорания).
Для забивания следующего гвоздя оператор должен ослабить нажим на доску (на затвор), переместить «дуло» в другое место, прислонить к доске и нажать на спусковой крючок. По инструкции, инструмент может формировать до пяти «выстрелов» в секунду, но по факту получается не более двух, да и в этом случае надо быть весьма ловким парнем да-бы не всадить гвоздь куда не следует.
Небольшое лирическое отступление
Я занимаюсь разработкой своей электроники и программного обеспечения к ней и, в общем, реверс-инжиниринг электронных схем и протоколов не входит в круг моих интересов и обязанностей. Ко мне не раз обращались с вопросами «как взломать лицензию» или «как обнулить счетчик» и таких вопрошателей я сразу отправляю в далекое путешествие с эротическим уклоном. Но в случае с этим «электронным молотком» меня что-то зацепило. С одной стороны хотелось как-то помочь старому товарищу в его беде — он так сильно был привязан к своему инструменту (и как профессионалу мне его очень легко понять), всячески нахваливал сам инструмент и производителя — не чета китайскому фуфлу, а тут этот производитель возьми и повернись к нему… задним лицом. И если уж не решить проблему, то хотя бы продемонстрировать невозможность решения в имеющихся у нас условиях. С другой стороны, непрекращающиеся попытки производителей по всему миру привязать пользователя к своим расходникам или подпискам на бесполезные облачные сервисы, без которых изделие не может нормально эксплуатироваться, вызывает стойкое отвращение почти у каждого нормального человека. На сей счет в памяти всплыла статья с HN двухгодичной давности одного американского студента который отвязал посудомоечную машину от вендорных расходников и от вендорного «облака», тем самым существенно снизив расходы на её содержание, в результате фирма (стартап) тут же обанкротилась так как вся её ценность и безнес-модель строилась только на непрерывной «дойке» владельцев весьма посредственной бытовой машины. В общем, с «электронным молотком» у меня неожиданно возникло желание немного повозиться.
Поиск решения
Идею реверсить саму RFID метку я оставил «на потом» - это весьма непростая задача для меня, требующая определенных навыков и оборудования, и что-то мне подсказывало, что на этом пути разработчики изделия подложили немало ловушек. Вместо этого мы с товарищем решили поподробнее изучить электронную начинку изделия, и прежде всего выяснить, почему в изделии две платы и какую функцию выполняет каждая их них. Эти платы имеют соединение между собой по четырем проводам. Путем незатейливого тыкания щупом мультиметра было обнаружено, что два из четырех проводов обеспечивают питание (+7.2В и «земля») второй платы от первой находящейся в «магазинном» отсеке, а два других — линия цифрового обмена. Анализ снятых осциллограмм показал, что по этим линия идет обмен в формате I2C, при этом плата в рукоятке является «слэйвом» и, как уже было сказано выше, именно к этой плате подключается RFID антенна и соленоид управления газовым клапаном.
Отключив антенну и попытавшись привести инструмент в исполнение, мы выяснили, что инструмент как бы пытается сработать, но что-то ему мешает: запускается вентилятор и даже выдается искра, всё как обычно, но детонации не происходит. Обмен по I2C тоже не меняется. Немного поразмыслив мы сделали предположение, что система не открывает (блокирует) клапан и в камеру не попадает порция газа. Косвенно это подтверждалось отсутствием специфического запаха газа, который присутствует при нормальной работе инструмента. Подцепив щуп осциллоскопа к проводникам идущим на клапан мы убедились в правильности нашего предположения. Тут же возникла идея подать газку «вручную», но для этого следовало понять какое напряжение подается на клапан и на какой интервал времени. Логика подсказывала, что слишком мало газа (обедненная смесь) или слишком много может привести либо к полному отсутствие детонации, либо к чему нибудь не очень хорошему — мы что нибудь повредим. Короче, мы подключили баллончик с RFID меткой и замерили осциллоскопом форму сигнала на клапане. Оказалось, что при комнатной температуре клапан открывается полным напряжением батареи на время 14 мс. Осталось придумать как подать такой импульс на клапан в обход первой платы.
Особенность данного изделия такова, что все натурные эксперименты (т. е. с реальной детонацией) следует проводить при полностью собранном инструменте и плотно закрытой крышкой, иначе есть шанс, что при детонации он разлетится на детали и может повредить кого-то или чего-то - инструмент весьма опасный. По этому было принято решение соорудить малогабаритный «наколеночный» прототип устройства платы обхода со своим микроконтроллером и встроить его внутрь инструмента, подключив все провода и полностью собрав инструмент. Данное устройство по сигналу (предположительно с кнопки затвора) будет формировать одиночные импульсы на клапан с некоторым интервалом и тем самым наполнять камеру сгорания газовой смесью.
В качестве миниатюрного и достаточно неприхотливого микроконтроллера был выбран МК ATtiny13A в корпусе DIP-8, а для подачи импульса на соленоид клапана было решено использовать имеющееся в наличии твердотельное реле TLP3123. Замер показал, что соленоид в открытом состоянии потребляет ток около 650 мА, что вполне вписывается в характеристики данного реле. В общем, плата устройства обхода была быстро собрана на текстолитовой макетке и тут же запрограммирована — благо ATtiny13A простой как валенок. Проблема возникла лишь в том откуда снимать сигнал управления, а следовательно требовалось понять в какой момент времени подается газ в камеру сгорания.
Как мы и предполагали, газ в камеру сгорания подается по кнопке механически соединенной с затвором, т. е. в момент когда оператор прислонил инструмент к доске и готов забить гвоздь. Однако, неожиданным оказалось то, что обе кнопки (затвора и спускового крючка) были цифровыми - формировали на выходе ШИМ сигнал пропорциональный степени нажатия. Мы попытались выяснить, влияет ли как-то степень нажатия этих кнопок на что либо (на силу удара, на частоту удара), но никакой корреляции обнаружено не было — в обычных условиях клапан инструмента всегда срабатывает когда скважность ШИМ достигает примерно половины, аналогично же подается искра. И, скажу честно, нам до сих пор не понятно зачем разработчикам данного инструмента потребовались столь навороченные кнопки с ШИМ выходом — уж не хотели ли они таким образом отпугнуть сторонних ремонтников. Короче, ШИМ с кнопки затвора был параллельно заведен на нашу плату обхода, а прошивка слегка доработана. Наше устройство мы назвали «Блок обхода электронного поводка - IM100 Override», прототип которого представлен на изображении ниже.
Первая проба «блока обхода»
Как это часто бывает, с первого раза у нас ничего не получилось. Мы протестировали блок обхода на разобранном изделии (без баллончика с газом) и убедились, что клапан открывается в нужный момент и на заданное количество времени, визуально инструмент работает «как настоящий». Но собрав всё воедино и закрыв крышки, забить гвоздь нам не удалось — детонация не происходила. Мы попробовали несколько раз, убедились в том, что газ поступает в камеру и формируется искра — но всё никак. Меня начали посещать всякие странные мысли — а не повредили ли мы случайно какую либо из родных плат, или может быть всё гораздо сложнее и помимо подачи газа в камеру для работы инструмента требуется что-то еще. Я начал было подумывать, что пора уже свернуть «проект», и так весь день потрачен в пустую. Но тут случилось чудо — очередной раз приложив молоток к доске и нажав на курок мы услышало что-то похожее на… такое слабое «пук». Потом еще раз, и чуть громче, потом еще раз… и еще… но всё как-то тихо и без сильного удара по бойку. Т.е. детонация присутствовала, но была очень слабой. Мы бросили эксперименты и пошли пить кофе, а за одно принялись размышлять что же у нас такое происходит и почему в место громкого «бах» мы получаем редкое и тихое «пук».
Вспоминаем как работает ДВС
В процессе обсуждения полученных результатов эксперимента в головы пришла простая аналогия — двигатель внутреннего сгорания. Всего-то нужно было вспомнить как работает ДВС, а именно — как и какая подается смесь в камеру сгорания и в какой момент происходит её поджиг. Где-то из личного опыта, где-то из школьного курса физики вспомнилось, что: во-первых, чтобы смесь воспламенялась она должна иметь определенные пропорции, если их нарушить, то чуда не случится. Во-вторых, искра должна подаваться в нужный момент - с опережением. Допив кофе и вооружившись новым знанием (точнее, стряхнув пыль со старого), мы принялись крутить временные параметры подачи газа в камеру — это единственное на что мы могли в данном случае повлиять. И действительно, уменьшив интенсивность следования импульсов (вместо 200 мс мы установили интервалы 500 мс) и добавив небольшую задержку мы тут же получили искомый результат — четкая детонация и гвоздь в доске! Таким образом, отсутствие детонации в предыдущем эксперименте мы объяснили для себя слишком обогащенной смесью — так как импульсы поступают непрерывно, то камера успевает заполниться слишком большим количеством газа. Может быть это и не верное понимание физики процесса, но увеличение интервала между импульсами явно положительным образом сказывается на работе «электронного молотка».
Адаптация под температуру окружающей среды
Как я уже упоминал выше, «электронный молоток» Paslode Impulse IM100Ci имеет встроенную автоматическую адаптацию к температуре окружающей среды и может работать при весьма низких температурах (до -30С). Наше предположение состояло в том, что контроллер управляющий инструментом регулирует количество подаваемого газа в камеру в зависимости от температуры. Опытным путем (заморозкой в климатической камере) было установлено, что при температуре окружающей среды -20С, длительность импульса составляет 28 мс, а при 0С — 18 мс соответственно.
В схему блока обхода был добавлен NTC термистор заведенный на пин одного из каналов АЦП микроконтроллера. Программное обеспечение было слегка расширено, добавлена «на глаз» рассчитанная табличка значений длительности импульса в зависимости от температуры. Всё это было собрано и успешно протестировано в уличных условиях при минус 5С. Тестирование при -20С еще ожидает своего часа.
От прототипа к изделию
По результатам двухдневных изысканий я переработал устройство обхода — вместо макетки разработал схему и плату в САПР KiCAD по размерам подходящую для установки в один из отсеков «электронного молоток» как раз поверх оригинальной, без каких либо дополнительных крепежных элементов. Плата была заказана и изготовлена в Резоните, собрана и установлена в инструмент (см. фото). Весь этот проект «IM100 Override» выложен на GitHub в свободном доступе — возможно кому-то будет полезен.
https://github.com/pointcheck/IM100_Override.git
Ну и по сложившейся традиции привожу небольшое видео процесса тестирования "отремонтированного" гвозде-забивного инструмента Paslode Impulse IM100Ci:
В качестве заключения
Я хотел бы извиниться перед читателями которые ждали от статьи более обстоятельного исследования протоколов обмена, формата записи в хранилище на NFC метку и т. д. Всё это конечно можно было бы выполнить будь у меня немного больше свободного времени. Однако как гласит народная мудрость — «настоящие герои всегда идут в обход», и в этом смысле предпринятое нами решение является демонстрацией того, что вся эта электронная привязка, особенно там где её быть не должно, не стоит вложенных в её разработку средств и легко обходится незатейливыми средствами. Более того, у меня даже возникла идея совсем избавиться от «родной» электронной начинки и сделать свою, добавить в блок обхода управление вентилятором и подачу искры, всего-то требуется хорошая емкость и умножитель напряжения.
С уважением, Руслан.
UPD: Мне в коментах уже насували за слово "детонация". Я прекрасно понимаю, что детонация это самопрозвольный взрыв смеси при её сжатии и с точки зрения ДВС это вредное явление приводящее к разрушению механизма. На самом деле никакой детонации не происходит, а происходит "управляемое горение топливной смеси".
Автор: Руслан