[Перевод] Как я прокачал свою микроволновку

f106d9d3a8425aa754595631bcf66e03.png

В наши дни, механические клавиатуры — это настоящий тренд! Людям нравятся приятные тактильные ощущения, а некоторые даже из кожи вон лезут, чтобы придать нажатиям отклик на свой вкус. Возникает вопрос: если мы так любим жать на клавиши, почему клавиатуры используются только в компьютерах? При желании можно перечислить довольно много используемых каждый день устройств, которым не помешала бы клавиатура! 20 мая начинается курс по профессии разработчика на C++ — мощном и гибком языке, близком к железу и специально к его старту мы делимся с вами материалом, автор которого попытался снабдить самодельной клавиатурой… СВЧ!


Да-да, вы не ослышались! Вот вам история о том, как мне удалось создать самую прокачанную в мире микроволновку, подключив к ней механическую RGB OLED-клавиатуру с возможностью горячей замены! Видео в высоком разрешении со звуком можно посмотреть ниже:

Предыстория

Год назад я всего за 5 фунтов купил на распродаже подержанную микроволновку «Proline Micro Chef ST44».  Кажется, её выпускали в начале 2000-х. Ничем особенным из ряда других микроволновок она не выделяется. Но она обошлась мне недорого, а главное — работала, а мне больше ничего и не нужно было.

Проблема

Прошёл почти год. В один прекрасный день я начал нажимать обычные кнопки, чтобы подогреть еду, но кнопки отказывались реагировать.

Сначала я не мог понять, почему, но, проведя серию экспериментов, понял, что, по всей вероятности, сломалась мембранная клавиатура. Сначала несколько кнопок ещё кое-как работали, но вскоре вообще перестали реагировать.

Я мог бы плюнуть на всё и просто отнести прибор на свалку, ведь свою стоимость он в любом случае оправдал. Но это было бы неразумно, так из строя вышла только дешёвая пластиковая клавиатура, а сам прибор работал нормально. К тому же я смог бы сэкономить пару фунтов — ведь ремонтировать всегда дешевле, чем покупать новое. Я разобрал прибор и посмотрел, можно ли что-нибудь с ним сделать.

Разбираем прибор

Снимаем корпус и видим главную печатную плату:

6d5bd054a17a69747ffbfb6c54869b89.jpeg
  • Микроконтроллер посередине сверху.

  • Зуммер в правом верхнем углу.

  • Синий ленточный разъём для клавиатуры в середине слева.

  • Трансформатор и реле управления в нижней части.

  • Сквозные отверстия в плате… не знаю, зачем они, но, раз плата работает, не будем обращать на них внимания!

Вот как выглядит плата с лицевой стороны:

4fbdc4074e6c57552e8bd182536e5c46.jpeg

Плата хорошо промаркирована, и, кстати, довольно занятно, что на ней установлен вакуумный флуоресцентный дисплей (VFD), который вышел из моды как раз в то время, когда сделали микроволновку.

Я также заметил, что плата, да и вообще все внутренности микроволновки были изготовлены Daewoo, корейской корпорацией, производящей что угодно, вплоть до автомобилей. Она же изготовила и мой прибор.

Но не будем отвлекаться. Сначала я подумал, что можно просто почистить контакты ленточного кабеля и проблема будет решена. Но я не обратил внимания, что контакты в приборе углеродные (графитовые?), а не из обычного металла, и в процессе чистки часть из них стёр под ноль:

86e7025a867fd462de07dd7b9f95be81.jpeg

Так что если контакт и работал полчаса назад, то теперь он точно никуда не годился. Браво, отличное начало!

Добро пожаловать в матрицу (сканирование)

Но, согласимся, это же не конец света? Для взаимодействия с контроллером клавиатура почти наверняка использовала метод матричного сканирования.

Подробное описание этого метода приведено на платформе Sparkfun. Если вкратце, метод матричного сканирования позволяет считывать большое количество входных данных с ограниченного числа штырьков контроллера.

Например, на нашей компьютерной клавиатуре размещаются более 100 клавиш. Если мы захотим напрямую подключить каждую клавишу к входному штырьку, у микросхемы такого контроллера должно быть более 100 штырьков! Излишне говорить, что это громоздко, дорого в изготовлении, да и просто неудобно. Но, если немного подумать, можно изменить прошивку таким образом, чтобы клавиши были закодированы в виде сетки столбцов и строк. Такую сетку называют матрицей:

c97b02fb94ce312fcb2799096c8a817c.png

Таким образом, сканируя за один раз по одной строке и столбцу, можно определить, какая была нажата клавиша (или клавиши). Естественно, существует множество других способов кодирования клавиш, о них можно почитать здесь.

В любом случае в приведённом выше примере вместо 4×4 = 16 контактов нам нужно только 4 + 4 = 8 контактов — уже двойная экономия! А с нашей компьютерной клавиатурой нам потребуются всего лишь около 20 штырьков, а никак не 100! Таким образом, мы видим, что метод матричного сканирования позволяет сократить количество штырьков и снизить сложность конструкции устройств ввода.

Создаём матрицу

Вернёмся, однако, к нашей клавиатуре для микроволновки. Мы видим, что ленточный кабель состоит из двух частей, на каждой из которых размещаются по 5 контактов:

9b3259f8eaa516920823f945d0e40d8d.jpeg

То есть, если мои расчёты верны, матрица будет иметь размер 5×5 = 25 кнопок. Прокрутите страницу чуть вверх и увидите, что на клавиатуре микроволновки как раз 24 кнопки, так что моё предположение подтверждается и я на верном пути!

Теперь мы знаем, что нам нужно 5 столбцов и 5 строк. Давайте теперь выясним, какая комбинация какой клавише соответствует. Для этого я распаял разъём ленточного кабеля и заменил его обычным штырьковым основанием:

1ea942ad9e3d2ad55698cf5d6f1125af.jpeg

Замечу, кстати, что производитель микроконтроллера TMP47C412AN — Toshiba. Это четырёхразрядный процессор с 4 кбайт ROM и 128 байт RAM, который может напрямую управлять работой вакуумных люминесцентных ламп. В общем, мы имеем дело с весьма специализированным чипом для бытовой техники. Его производительность крайне низка по сравнению с Arduinos и STM32. Но, тем не менее, со своей задачей он справляется! Я подсоединил ряд проводов-перемычек:

45845c8fa4b23c8b10aa51c9aa80896b.jpeg

И обозначил строки и столбцы буквами 1–5 и A-E:

7eaf00cb7dcfbe775e393bb493cd70e1.jpeg

Затем я установил плату на место, включил питание и прозвонил каждую пару проводов, чтобы узнать, на какую кнопку они реагируют.

Это заняло какое-то время, и в итоге я выяснил расположение нужных мне кнопок на матрице:

A

B

C

D

E

1

NP_4

NP_1

2

NP_5

NP_2

NP_7

3

NP_6

NP_3

POWER

NP_8

4

STOP

TIME

NP_9

5

START

NP_10

Что у меня получилось в итоге? 10 клавиатурных кнопок и 4 кнопки управления. Есть ещё много других кнопок, но я не стал с ними заморачиваться, так как всё равно не собираюсь использовать их. Я быстро набросал простую схему:

69e76ad0ac361a57aefc681df7e653e5.png

С её помощью я проводами подсоединил несколько кнопок к перфорированной плате — пока неаккуратно, только чтобы проверить:

5864e1dc853c932f6d666c18900bb08b.jpeg

Заработало! По крайней мере теперь я мог продолжать греть себе еду! И это не стоило мне ни гроша. Но, как вы видите, конечный продукт получился не очень презентабельным: всё в беспорядке, из корпуса свисают 10 проводов… Я был уверен, что можно сделать лучше.

Прокачиваем СВЧ!

Примерно в то же время я работал над устройством duckyPad — механическим 15-клавишным макропадом с OLED-индикацией, горячей заменой и RGB, а также над сложной схемой автоматизации его работы с применением скрипта duckyScript:

ddbb98f5936efa91f605db73cc799705.png

Если интересно, загляните на мою страничку проекта!

Я назвал его «Do-It-All Macropad». Название обязывает, поэтому я решил попробовать его в работе в связке с моей микроволновкой! Если бы мне это удалось, моя скромная 20-летняя микроволновая старушка превратилась бы в единственную во всём мире СВЧ-печь с механическими переключателями и RGB-подсветкой! Вот что я называю… корейскими традициями! Однако всё оказалось не так просто, как представлялось вначале. Возникло несколько проблем:

  • Мне нужно было использовать существующий duckyPad в неизменном виде, то есть без переделок.

  • Я хотел, чтобы всё было сделано чисто и аккуратно, поэтому поставил перед собой задачу: чем меньше проводов, тем лучше.

  • Макропад должен запитываться от самой микроволновки.

Плата PMM

Сейчас из корпуса в мою самодельную клавиатуру выходят 10 проводов, и выглядит вся эта самоделка очень неряшливо. В идеале с duckyPad можно обойтись всего тремя проводами: Питание, Земля и Данные. Проводов будет мало, поэтому я смогу уместить их внутри одного кабеля, что будет гораздо чище и аккуратнее. Но как быть с тем, что в контроллер микроволновки в любом случае должно заходить 10 проводов от матричной клавиатуры? Значит, мне понадобится что-то вроде адаптера. Будем называть такой адаптер платой PMM.

duckyPad будет взаимодействовать с платой PMM, а та, в свою очередь, — с контроллером микроволновки. Получится что-то вроде такой конструкции:

14b3b921121252e1cd5536c0a0d5fc90.png

Неплохо для начала! Пойдём ещё дальше и вспомним, что до сих пор в матричной клавиатуре мы использовали реальные физические переключатели. Но мы можем «обмануть» микроволновку! С платой PMM можно управлять матричной клавиатурой электронно, чтобы микроволновка «думала», что нажимаются физические клавиши! Как же это сделать?

Взрыв из прошлого

Я стал просматривать свои старые работы и с удивлением обнаружил, что ещё три года назад меня занимала точно такая же проблема! Тогда я пытался автоматизировать процесс ввода данных с геймпадов Nintendo, и в них для кодирования кнопок также использовалось матричное сканирование. И к какому же решению я тогда пришёл? Я пришёл к аналоговым переключателям! Они похожи на обычные механические переключатели, но управляются не нажатиями пальцев, а электронными сигналами. Я взял чип ADG714 из раздела аналоговых устройств. На одном чипе размещаются 8 переключателей, управление ими осуществляется по простому протоколу SPI:

86d72b15ff9dff97ffe99a1c08738831.png

Я быстро развёл плату PMM:

c8dce0c5d0cd29754cd62b733a1af14d.png

Плата получилась относительно простой. Я поставил микроконтроллер STM32F042F6P6 и вывел все его контакты на штырьковое основание на случай, если они понадобятся. Кнопок для управления 14, поэтому мне понадобились два переключателя ADG714. С помощью SPI они легко соединяются в последовательную цепь.

На схеме видно, что аналоговые переключатели подключены точно так же, как и моя спаянная вручную клавиатура «на соплях». Только теперь кнопки нажимаются не пальцами, а по командам микроконтроллера. Я изготовил печатную плату и припаял к ней все компоненты:

d548543d05997aaecc8adeabf29da252.jpeg

Затем я выполнил предварительное тестирование с непрерывным зуммером, и, кажется, схема работала нормально. Но окончательный вердикт можно было вынести только после её установки на реальное устройство.

Потолкуем последовательно

Теперь плата PMM может управлять матрицей кнопок. Как с ней будет взаимодействовать duckyPad? Поскольку для передачи данных используется всего один провод, я решил, что организовать простую одностороннюю последовательную связь будет более чем достаточно.

При каждом нажатии клавиши duckyPad будет отправлять простое последовательное сообщение со скоростью 115200 бит/с. Плата PMM получит это сообщение, и, если формат сообщения будет верным, кратковременно замкнёт соответствующий аналоговый переключатель, имитируя нажатие кнопки на микроволновке.

Я добавил к парсеру duckyScript сверхсекретную команду UARTPRINT и создал профиль для клавиатуры моей микроволновки. Клавиши на duckyPad расположены так:

9ee3c9c7f852dd28c53f1c2ca9bed9d3.png

Ты чего такой отрицательный?

Собираем всю конструкцию! И тут же возникает последний вопрос: как на неё подавать питание? Я полагал, что уж этот-то вопрос должен решаться легко. На печатной плате микроволновки уже есть микроконтроллер, поэтому нужно просто подключить его к разъёму питания, и дело сделано! Да, всё, конечно, так. Но не совсем. При детальном изучении печатной платы выяснилось, что вся она работает на отрицательном напряжении.

92587e4c3d35e9a13aed42d77c1dbb80.jpeg

Мы видим, что она получает -26 В от трансформатора, понижает его до -12 В, а затем до -5 В. В качестве регулятора напряжения используется S7905PIC: фиксированный регулятор отрицательного напряжения.

Мне не вполне понятно, почему эта схема спроектирована именно так. Возможно, потому, что она как-то взаимодействует с преобразователем переменного тока. В любом случае возникшая проблема не так смертельна, просто надо посмотреть на задачу под другим углом. Я подключил два провода питания от печатной платы к разъёму питания платы PMM и через него — к duckyPad:

:Чтобы избежать путаницы, я обозначил их 0 В и -5 В.: Чтобы избежать путаницы, я обозначил их 0 В и -5 В.

Обычно мы подсоединяем 0 В к контакту GND, а положительное напряжение — к VCC. Но в нашем случае 0 В фактически имеет больший потенциал. Поэтому всё, что мне нужно, — это подсоединить -5 В к GND, а 0 В — к VCC. Разница потенциалов по-прежнему будет 5 В, поэтому всё должно работать.

Некоторые зоркие читатели, возможно, заметили, что я прикрыл зуммер наклейкой. Он так ревёт!

Вот и мой DuckyPad пригодился!

Я установил обратно печатную плату, подключил всё, что нужно, и провёл быстрый тест — всё отлично заработало!

bf7962e6400b3c8fdfda13166df11e0e.jpeg

От отладочного основания duckyPad к плате PMM идут три провода; к плате управления, куда раньше подходил синий ленточный кабель, идут 10 проводов. Я закрепил duckyPad на микроволновку, обрезал конец дешёвого USB-кабеля, взял оттуда четыре провода и всё пропустил через отверстие в нижней части.

a3c72b4d1dd42fbfc083a3a895a21c24.png

Готово! Первая и (возможно) единственная во всей Вселенной СВЧ-печь с механическими переключателями, OLED и RGB-подсветкой!

Вы когда-нибудь испытывали блаженство от хрустяще-кликающего тактильного и звукового совершенства переключателей Gateron Greens, когда в два часа ночи разогреваешь замороженные полуфабрикаты, потому что лень готовить? Я вам отвечу — я испытывал!

ecdd5942c3487d8faf4d7e52634c36c4.png

Видео в высоком разрешении со звуком смотрите ниже:

Хочу такую!

Если вас заинтересовал duckyPad, почитать о нём можно здесь! Но, если вы захотите повторить мой опыт один в один, это, к сожалению, будет гораздо сложнее.

У разных микроволновых печей разные схемы разводок матричной клавиатуры, поэтому вам придётся разобраться в них и самостоятельно спроектировать и собрать плату PMM. Предупреждаю — придётся постараться, но по крайней мере всю исходную информацию можно найти в этой статье! Захотите пойти по моим стопам — пишите мне, если возникнут вопросы!

Хочу также предупредить: при разборке микроволновки существует опасность поражения током высокого напряжения. Также не надо забывать о микроволновом излучении, поэтому будьте осторожны!

Разумная осторожность нужна и в обращении с С++ — языком, где совсем немного запутавшись или упустив из виду маленькую деталь очень легко выстрелить себе в ногу. На нашем курсе опытные менторы и эксперты в своём деле научат вас технике безопасности программирования на С++, работе с базами данных на этом языке, расскажут о С++11, поделяться знаниями о новом стандарте — С++20, о разработке для десктопа и не только. Приходите — будет сложно, но интересно!

efa428b7dd4db456494203198485a809.png

Узнайте, как прокачаться и в других специальностях или освоить их с нуля:

Другие профессии и курсы

ПРОФЕССИИ

КУРСЫ

© Habrahabr.ru