Как я прокачал свою микроволновку

Автор оригинала: dekuNukem
  • Перевод

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



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

Предыстория

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

Проблема

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 кнопки управления. Есть ещё много других кнопок, но я не стал с ними заморачиваться, так как всё равно не собираюсь использовать их. Я быстро набросал простую схему:

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

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

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

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

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

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

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

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

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

Плата PMM

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Хочу такую!

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

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

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

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

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

Другие профессии и курсы
SkillFactory
Школа Computer Science. Скидка 10% по коду HABR

Комментарии 18

    +16
    всегда умиляют комментарии автора «ни стоило ни гроша». я видел статью о том как собрать руку робота за 10$, где куплено было 2 разъема а остальное было найдено в гараже. мы же не считаем что что то стоило нам если это у нас уже было. и не важно что мы это когда то купили. не так давно был автор который так же писал про 10$ и использовал телефон который «у него уже был» в качестве пульта… давайте будем честны с собой и читающими — все эти кнопочки, макетные платы и т.п. — вы купили, пусть и не для этого проекта. вы их не нашли на улице, вам их не отдали бесплатно с доставкой домой. вы их купили!!! то что у вас что то уже было — не значит что вы не потратили на это денег…

    я вот могу собрать сейчас маленький завод за 100руб у себя. у меня есть помещение, все запчасти и пара станков. в итоге готовое производство которое стоило мне 100руб, за которые я распечатал новую табличку на дверь чтобы знали что теперь тут завод. просто у меня уже всё было чтобы сделать завод, так что по всеобщей логике — это не стоит учитывать в расходах? значит ли это что я сделал завод за 100руб?
      +8
      Мы видим, что она получает -26 В от трансформатора

      Это все, что надо знать о техническом уровне данной статьи :)
        0
        Datasheet на МК говорит что питание МК ровно 5V+
        +3
        к перфорированной плате
        perf board переводится как «макетная плата»
          +4
          Замечу, кстати, что производитель микроконтроллера TMP47C412AN — Toshiba. Это четырёхразрядный процессор с 4 кбайт ROM и 128 байт RAM, который может напрямую управлять работой вакуумных люминесцентных ламп. В общем, мы имеем дело с весьма специализированным чипом для бытовой техники. Его производительность крайне низка по сравнению с Arduinos и STM32. Но, тем не менее, со своей задачей он справляется!

          Этот микроконтроллер показывает часы, и автоматизирует работу одного галетного переключателя и одного таймера. Прямо не знаю, как тут без мощного микроконтроллера можно справиться:):):)
            +5
            Тоже имеется микроволновка, которой нужно поменять кнопки с мембран на что-то понадёжней. Думал увидеть решение, как красиво менять мембрану, а у автора оказался какой-то лютый колхоз с подсветкой и контроллером.
              +4
              Под пластиковую подложку прекрасно влезают т.н. тактовые кнопки. image
              Постоянно делали управление на них в тех случаях, когда саму панель клавиатуры уже просто негде заказать.
                +2
                На микроволновке используется одна кнопка "+30 секунд".
                Как вариант можно две крутилки — мощность и время.

                Остальное от лукавого.
                И уж точно — желание везде засунуть rgb.
                  0
                  Ну хз. С одной стороны да, этого достаточно. С другой воткнуть можно:
                  1)крутилка для мощности гриля.
                  2)а можно вставить термометр и добавить задачу разогреть до N градусов? потому как ошибиться во времени на глаз на 20% легко. а разогреть до 50 или до 60 градусов разница заметна.
                    0
                    99 процентам юзеров микроволновки надо просто «разогреть».
                    К тому же, 50 градусов в микроволновке — это профанация будет. Температуру в какой точке измерять?
                      0
                      по центру сверху, при падении температуры(теплопередача к непрогретому центру) включать повторно. Это не кейс: хочу жрать, согрей мне тарелку супа быстро.
                      Это кейс: проходя мимо микроволновки поставил суп греться, зайду минут через 15 как вспомню что уже должно было сограться.
                  +2

                  Я надеялся увидеть как на микроволновку ставить веб сервер и через айфончик тонко управлять готовкой на уровне шеф-повара.

                    +5
                    Единственная вещь, которая требует улучшения в микроволновке — это сохранение работы часов при отключении питания, например черед RTC или автоматическую синхронизацию. Большинство приборов имеющих функцию отображения времени требуют выставления часов при кратковременном пропадании эл. энергии в сети.
                      +1
                      +1
                      Больше всего бесит именно сброс часов.
                        0
                        О дааа!
                        А еще точность часов у них +- километр.
                        За неделю на двух соседних приборах разница становится 5 минут, и на обоих неправильно.
                        Мне не нужны эти часы, но внутренний перфекционист страдает каждый раз когда замечает разницу.
                          +2
                          Эту проблему элегантно решила koteeq, воткнув микроволновку в умную розетку, которая дергала питание в полночь. Для нечастых пропаданий электричество сгодится.
                          Правда подойдёт это только для тех микроволновок, которые после включения питания просто запускают часы с 00:00, а не ждут ввода времени от кожаного мешка.
                          +1
                          Какое дежавю, уже комментил такое: habr.com/ru/news/t/528220
                            0

                            Тоже была микроволновка Daewoo , мембраны отказали. Перечертил схему с кнопок, сделал плату, впаял кнопки, корпус на 3d принтере распечатал. Я снова смог греть себе еду. И это не стоило мне ни гроша. )

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

                            Самое читаемое