🏠: diy

Настройка пульта для встроенного ИК-датчика Orange Pi

Дано: Orange Pi PC Plus с установленным LibreELEC 11, которым хотелось бы управлять с помощью пульта. Инфракрасный приёмник у Orange Pi имеется, поэтому нужно просто научить систему понимать с этого пульта сигналы.

Прежде всего нужно купить какой-нибудь пульт или взять уже имеющийся, у которого есть кнопки стрелок, старт/пауза, стоп, ОК и тому подобные, чтобы можно было нормально управлять медиацентром. Я купил пульт для телевизора Supra RS41-MOUSE за 200 рублей.

Заходим по SSH в систему. В инструкции по настройке пультов сначала рекомендуют подбирать совместимые конфигурации из списка по пути /usr/lib/udev/rc_keymaps, но их там полторы сотни и нет ничего похожего по названию, так что я не стал возиться, а сразу перешёл к созданию собственной конфигурации, описанному в разделе Advanced.

Выводим список поддерживаемых протоколов управления (supported kernel protocols):

OrangePiPCPlus:~ # ir-keytable
Found /sys/class/rc/rc0/ with:
        Name: sunxi-ir
        Driver: sunxi-ir
        Default keymap: rc-empty
        Input device: /dev/input/event0
        LIRC device: /dev/lirc0
        Attached BPF protocols:
        Supported kernel protocols: lirc rc-5 rc-5-sz jvc sony nec sanyo mce_kbd rc-6 sharp xmp imon rc-mm
        Enabled kernel protocols: lirc
        bus: 25, vendor/product: 0001:0001, version: 0x0100
        Repeat delay = 500 ms, repeat period = 125 ms

Нужно подобрать протокол, с которым совместим пульт. В моём случае подошёл nec, после включения которого в консоли начали отображаться коды кнопок при их нажатии на пульте:

OrangePiPCPlus:~ # ir-keytable -p nec -t
Protocols changed to nec
Testing events. Please, press CTRL-C to abort.
1018.929441: lirc protocol(necx): scancode = 0x710205
1018.984459: lirc protocol(necx): scancode = 0x710205 repeat
1021.562363: lirc protocol(necx): scancode = 0x710205
1024.293455: lirc protocol(necx): scancode = 0x710204
1024.348472: lirc protocol(necx): scancode = 0x710204 repeat
1028.355072: lirc protocol(necx): scancode = 0x710268
1028.410087: lirc protocol(necx): scancode = 0x710268 repeat
1028.517783: lirc protocol(necx): scancode = 0x710268 repeat
1030.043425: lirc protocol(necx): scancode = 0x710262
1030.098426: lirc protocol(necx): scancode = 0x710262 repeat

Отлично, теперь нужно нарисовать карту кнопок (keymap), где прописывается протокол пульта и соответствие кодов кнопок с их функциями. Список функций можно посмотреть с помощью команды irrecord -l | grep ^KEY или в секции <remote device="devinput"> файла /usr/share/kodi/system/Lircmap.xml.

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

# table supra_rs41, type: nec
# 0x710202 KEY_POWER
0x710202 KEY_ENTER
# 0x71020f source
0x710220 KEY_RED
0x710234 KEY_GREEN
0x71022b KEY_YELLOW
0x71022c KEY_BLUE
0x710227 KEY_MUTE
0x710225 KEY_ZOOM
# 0x710200 freeze
0x710228 KEY_TEXT
0x710203 KEY_FAVORITES
0x710232 KEY_SUBTITLE
0x710240 KEY_AUDIO
0x710255 KEY_RECORD
0x710226 KEY_REWIND
0x71021e KEY_FORWARD
0x710239 KEY_PREVIOUS
0x710213 KEY_NEXT
0x71021a KEY_PLAY
0x710201 KEY_STOP
0x710260 KEY_UP
0x710261 KEY_DOWN
0x710265 KEY_LEFT
0x710262 KEY_RIGHT
0x710268 KEY_ENTER
0x71022d KEY_MENU
0x71021f KEY_ESC
0x710207 KEY_VOLUMEUP
0x71020b KEY_VOLUMEDOWN
0x710222 KEY_HOME
# 0x710221 mouse
0x710212 KEY_CHANNELUP
0x710210 KEY_CHANNELDOWN
0x710204 KEY_1
0x710205 KEY_2
0x710206 KEY_3
0x710208 KEY_4
0x710209 KEY_5
0x71020a KEY_6
0x71020c KEY_7
0x71020d KEY_8
0x71020e KEY_9
0x710211 KEY_0
0x710223 KEY_DISPLAYTOGGLE
# 0x710250 return

Теперь надо создать файл с нашей картой кнопок и запустить его:

OrangePiPCPlus:~ # nano /storage/.config/rc_keymaps/supra_rs41
OrangePiPCPlus:~ # ir-keytable -c -w /storage/.config/rc_keymaps/supra_rs41
Read supra_rs41 table
Old keytable cleared
Wrote 39 keycode(s) to driver
Protocols changed to nec

Пульт сразу же начинает работать. Осталось добавить эту конфигурацию в автозагрузку:

OrangePiPCPlus:~ # echo "* * supra_rs41" > /storage/.config/rc_maps.cfg

Новый неттоп

Когда-то давно, в прошлой жизни — 26 августа 2013 года — я купил прекрасный неттоп Pegatron Saishiat2+ за скромную цену в 5308 рублей, который проработал у меня без каких-либо проблем до вчерашнего дня. Он не сломался, нет — он всё так же отлично работает, просто мне уже нужен аппарат побыстрее, соответствующий сегодняшним требованиям; тем более, что старый компьютер уже на момент его покупки звёзд с неба не хватал, что уж говорить по прошествии стольких лет.

Критерии выбора:

  1. ПК должен быть компактным, времена громоздких жестяных ящиков давно ушли, поэтому форм-фактором также будет неттоп.
  2. Аппаратная поддержка процессором кодирования в x264 (AVC) и x265 (HEVC).
  3. Поддержка >= 32 ГБ оперативной памяти (виртуализация, контейнеры, вот это всё).
  4. Встроенный wi-fi c поддержкой 802.11ac.
  5. Нормальная работа Майнкрафта без тормозов на стандартных настройках графики.
  6. Цена — не космическая.

Выбор пал на линейку Intel NUC, где из современных вариантов есть 8-е и 10-е поколение процессоров. Десятое поколение дороже примерно на четверть и поддерживает аж до 64 ГБ памяти, но по производительности уступает восьмому из-за медленного графического ядра. Между вариантами на процессорах i3 и i5 я выбрал последний (i5-8259U), потому что разница в цене между ними — пара тысяч, а i5 ощутимо мощнее. Изначально я хотел рассмотреть что-то сопоставимое на процессоре AMD, но ничего похожего на сегодняшний день на рынке, к сожалению, не существует.

В восьмом поколении есть две модификации нужной мне модели — NUC8I5BEK и NUC8I5BEH, первый тоньше и в него можно вставить «жёсткий диск» только формата M.2; второй толще, потому что у него, помимо того же M.2, есть возможность поставить стандартный SATA-диск 2,5″.

Слева направо: старый неттоп, планки памяти, новый неттоп

Так как у меня уже есть SATA-диск Samsung SSD 850 EVO 250 GB, который стоит в старом неттопе, я выбрал второй вариант как более универсальный. Получается дешевле, так как не нужно прямо сейчас тратиться на диск M.2, да и переехать проще — просто переставить уже имеющийся диск из одной коробочки в другую. Памяти я взял 2 планки по 16 ГБ, с уменьшенной CAS Latency (CL15, стандартное значение — 17).

IMG_20210120_193005.jpg
IMG_20210120_193527.jpg

Всё-таки, к вещам привязываешься. Разбирая свой старый компьютер и вытаскивая из него диск, мне было жалко его, и я думал об этих прошедших 7 годах с какой-то ностальгией. Тем не менее, и монитор-долгожитель Benq G900, который мне подарили на новый 2008 год, и стол, и даже клавиатура с мышкой всё те же — вид моего рабочего места мало чем отличается от прежнего. У монитора недавно провалилась кнопка включения — отломились пластмассовые маленькие капельки, которыми кнопка была приварена одним концом к тыльной стороне передней панели, но я зафиксировал её с помощью смеси суперклея и соды — теперь монитор выглядит как новый, и менять я его на сегодняшний день не планирую.

IMG_20210120_194307.jpg
IMG_20210120_194536.jpg

Переезд прошёл безо всяких трудностей, Windows 10 завелась как ни в чём не бывало, нужно было только поставить несколько пакетов с драйверами да обновить пару прошивок; машинка работает отлично и шустро, надеюсь, на следующие 7 лет хватит. Впоследствии можно будет перейти на диск M.2 как более скоростной и прогрессивный вариант, но это совершенно не к спеху. Старый неттоп я буду продавать вместе с установленной в него планкой памяти на 8 ГБ, тем более, что у меня сохранился полный комплект — и коробка, и документация, и совершенно новая нога для установки на стол, и даже компакт-диск (Upd: 27 января ушёл за 2400).

Общий вид рабочего места

Починил стиральную машинку

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

Несмотря на то, что моей машинке Samsung WF6450N7W, судя по расшифровке серийного номера, в сентябре этого года стукнуло 12 лет, менять её на новую не хотелось, не говоря уже о стоимости такой внезапной замены. Работает она хорошо, и мне нравится её внешний вид — только кнопки, поворотная ручка выбора программ стирки, цифровое табло таймера и никаких попсовых ЖК-экранов и прочих побрякушек.

Я решил отремонтировать машинку самостоятельно по нескольким причинам — во-первых, это интересно, во-вторых, дешевле (если всё делать правильно), а в-третьих, и, наверное, это самое главное — хотелось сделать работу качественно. Повидал я достаточно «мастеров», которые делают свою работу тяп-ляп и за неадекватный ценник, и никакой гарантии, что в этот раз попадётся хороший добросовестный профессионал, у меня не было. Дополнительным аргументом к ремонту стал разборный бак — это гораздо более ремонтопригодный вариант по сравнению с баком клееным, который ставят в большинство современных недорогих стиральных машин.

На начальном этапе

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

Со снятой передней крышкой Бетонные балансиры Бак демонтирован Бак со шкивом, двигателем и амортизаторами

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

Посадочное место барабана Сальник после демонтажа

Крестовина барабана была в отличном состоянии — без трещин и не изъедена лимонной кислотой, которую у нас народ так любит сыпать в свои стиралки почём зря. Вал тоже не успел повредиться, но его необходимо полностью очистить от ржавчины и налёта.

Общий вид барабана после демонтажа

Дальше необходимо было выпрессовывать старые подшипники. Специального инструмента у меня, конечно, не было, поэтому я воспользовался рабоче-крестьянским методом — выколотил их с помощью молотка и половинки газового ключа. Это нужно делать аккуратно, смещая место удара по кругу, чтобы подшипник не заклинило.

Старые подшипники и импровизированное долото

В продаже есть удобные ремкомплекты для стиральных машин — в набор входят два подшипника, сальник и специальная смазка Hydra-2, которая не смывается водой и выдерживает широкий диапазон температур.

Вид моего ремкомплекта, фото с ozon.ru

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

Новый внешний подшипник. На заднем плане - инструменты, которыми я пользовался для запрессовки Новый внутренний подшипник после запрессовки

В интернете есть видеоролики устранения последствий самостоятельного ремонта, где люди мазали сальники литолом или ещё чем-то первым попавшимся под руку, и буквально через несколько месяцев всё приходится менять по новой. Необходимо понимать, что каждая смазка хороша для своей цели и может совершенно не подходить во всех остальных случаях (как пример можно привести смазку для велосипедной цепи, задача которой, с одной стороны, проникнуть внутрь звеньев, а с другой — удержаться внутри них). Смазку нужно от души наносить на сальник с его внутренней стороны, прилегающей к валу барабана (и только туда), а также немного смазать сам вал в месте примыкания сальника.

Сальник после установки и нанесения смазки Смазанный вал барабана, готовый к установке

Далее идёт процесс обратной сборки. Уплотнительная резинка по краю бака была довольно эластичная, поэтому я не стал её менять, но хорошенько прошёл по ней герметиком. Также, я принял решение поменять амортизаторы, так сказать, за компанию, раз уж проводятся такие масштабные работы. После сборки бак должен сохнуть 24 часа.

Герметик, старые и новые амортизаторы Кромка бака с нанесённым герметиком

Дополнительно я проверил состояние графитовых щёток мотора — с ними было всё в порядке, а ещё подпаял оторванный проводок заземления на корпус. Весь процесс от первичной разборки до финальной сборки — с перерывами, конечно — занял у меня две недели, включая поиск и покупку недостающего инструмента.

Видео, где слышна разница между состоянием до ремонта и после.

Работает отлично, будем надеяться, что я всё сделал правильно и машинка будет служить ещё долго.

Смета:

  1. Ремкомплект бака — 926 руб.
  2. Амортизаторы — 600 руб.
  3. Поворотный ключ — 550 руб.
  4. Удлинитель для поворотного ключа — 462 руб.
  5. Набор торцевых головок — 419 руб.
  6. Герметик — 300 руб.
  7. Стяжки — 39 руб.

Итого — 3296 руб.

Список использованного видео:

Торт для героя

Сын вычитал в комиксах рецепт торта:

IMG_20200317_201634.jpg IMG_20200317_201706.jpg

Вчера с ним воплотили этот рецепт в жизнь (флажками не заморачивались).

IMG_20200322_163832.jpg IMG_20200322_163849.jpg

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

Тортик получился довольно-таки съедобным. Там вроде бы ещё был рецепт каких-то печений, так что надо быть готовым к дальнейшим кулинарным экспериментам.

Реконструкция сетевого хранилища

Хранилище, которое я собрал без малого два года назад, совсем перестало запускаться. Оно и раньше не отличалось стабильностью при включении — один из дисков периодически не подхватывался, работало всё довольно медленно, один раз даже пришлось добавлять диск в RAID заново, так как он был потерян, хотя в системе присутствовал. В общем, в работе имелись странности.

Логично было предположить, что не хватает питания, и для проверки я приволок с работы стандартный блок (AeroCool KCAS-700W), подключил его и убедился, что хранилище прекрасно включается и работает. Вернув блок обратно, я решил пересобрать систему в новом корпусе и с новым БП.

Итак, корпус нужен как можно более компактный и совместимый с материнскими платами Mini-ITX, но чтобы туда влезали 2 диска 3,5″ и обычный блок питания ATX — со вcякой экзотикой связываться неохота. На рынке есть предложения компактных корпусов такого рода, например, компании Термалтейк, но стоят они как-то дороговато. К тому же, эти корпуса довольно широкие, а мне нужен был не шире 20 см, чтобы влезть на полку в коридоре. Что касается блока питания, то от него требуется бесшумность и наличие активного модуля коррекции коэффициента мощности (Active PFC). Самой мощности особой не нужно, 300 ватт вполне хватит.

В итоге взял супердешёвый и достаточно компактный корпус Exegate BA-110 и блок питания Zalman ZM400-LX (400 ватт, меньше они в этой линейке не делают), скрутил их вместе, пересадил туда всё остальное железо:

Стенки нового корпуса можно натурально гнуть руками, так как металл тонкий и мягкий, а винты в него нужно закручивать очень нежно, до малейшего сопротивления, иначе резьба тут же сорвётся и затянуть их потом будет невозможно. Но ничего другого от корпуса за 830 рублей и не ожидалось, а на самом деле за свои деньги это очень даже достойное изделие. Единственное, к чему может быть небольшое нарекание — что из четырёх верхних посадочных мест под 3,5-дюймовые диски реально можно использовать только два средних: сверху мешают внутренние разъёмы передней панели, а снизу проходит ребро жёсткости, соединяющее стойки корпуса — это не позволяет разнести диски дальше друг от друга. Но это не проблема, диски при работе всё равно холодные.

Светодиод питания (Power LED) оказался синим и очень ярким, я отключил его, вентилятор 80×80 из старой системы задействовать не стал. В результате хранилище получилось тихим и несветящимся — ровно то, что нужно.