Дискламер:
О себе: я человек на ВЫ общающийся с электроникой и программированием, но без должного уважения… По сему вы все это делаете на свой страх и риск… случись что, я в домике…
Для реализации задуманного вам понадобится:
- разобрать сушилку (опционально),
- паять провода (опционально),
- перепрограммировать (очень увлекательное занятие) датчик,
- доустановить в Klipper определенное количество пакетов и модулей (я несилен в Python уж сорян) для Python (после датчика? одной левой, если понимаете что такое линукс),
- создать новый файл датчика (вообще “cp /path/file /new_path/file”),
- откорректировать другой файл датчиков (здравствуй nano, новый год)
- внести изменения (точнее дополнения) в printer.cfg (тут у меня шутки не родилось, похоже выдохся я…)
Если вам понятно что будет происходить, читайте дальше... Если нет... то может не надо? А?
Моя конфигурация:
- Принтер - FlyingBear Ghost 6 (зачем эта информация не знаю… пусть вудет…)
- Датчик - термогигрометр Xiaomi MiJia LYWSD03MMC
- Сушилка филамента - CREALITY Space pi PLUS (в дополнительной статье будем интегрировать датчик внутрь корпуса с подключением к питанию контролера сушки. нет батарейки, нет проблем... если интересно следите да объявлениями)
- Контроллер - Raspberry Pi B+
Операционка - Raspberry Pi OS (он же Debian 13)
Система принтера - Klipper
Klipper - v0.13.0-610-g35ace529
Moonraker - v0.10.0-19-g1ed102ed
Fluidd - v1.36.2
Python - v3.13
Шьем и отшиваем датчик…
Пока я не понял как сделать, это был самый эмоциональный процесс, но я Вас лишу этого удовольствия…
Если вы купили датчик совсем недавно имейте в виду: БЕЗ РАЗБОРА КОРПУСА его прошить не получится ни при каких обстоятельствах. Если я это осознал сразу то не потратил бы на эксперименты полторы недели своего времени. Эксперименты проводились на компьютерах с Windows 11, 10, 7 (специально установил), на 2 телефонах один на Android 16 и даже откапал старый телефон на Android 10… результат NULL.
Разбираем тамагочи…
Открываем заднюю крышку, извлекаем батарейку и выкручиваем 2 саморезика (красные кружки). Номера саморезиков не подскажу, там звездочки очень маааленькие звездочки, но я открутил их “часовой” шлицевой отверткой.
Затем поддевая за выступы по периметру (зеленые прямоугольнички) выколупываем заглушку для получения доступа к плате. Любуемся на результат (но не долго) и продолжаем… Кстати в окошке отмеченном желтой стрелочкой ничем не тыкать, тут находится сам датчик (!)
Берем преобразователь USB-SERIAL на CH340 как на фото (как, например, у меня). подключаем провода из набора юного ардуинщика в: Красный (плюс 3,3 В), черный (на GND), коричневый (на TxD).
Берем провода из набора юного ардуинщика с подключенным преобразователем USB-SERIAL и подключаемся к плате. (ВНИМАНИЕ: напряжение питания 3,3 В, подача на плату 5 В отправит ее в рай, и заставит вас оплакивать безвременно почившие 500 рублей…) На фото красный (плюс), черный (минус), коричневый у меня в пальцах (блин даже немного не удобно, что забыл маникюр сделать… и у некоторых людей это вызовет дискомфорт…)(сигнал на пин P14) его мы коснемся перед самой прошивкой
Примерились? Посмотрели что все удобно? Открываем ссылку:
https://pvvx.github.io/ATC_MiThermometer/USBCOMFlashTx.html
Дополнительно скачиваем файл ATC_v57.bin или более свежий из этого репозитория:
https://github.com/pvvx/ATC_MiThermometer/tree/master/bin
В ранее открытом окне выбираем:
Кнопка “Open“ - указываем COM порт выданный преобразователю.
Кнопка “Выберите файл“ - выберите ранее скачаный файл по ссылке выше
После того как кнопка “Write to Flash“ прижимаем пин коричневого провода к P14 на плате нажимаем его и ждем чуда. Приход чуда наступает после примерно 30-40 секунд. Набираемся терпения и ждем. В процессе главное не убирать пин с контакта. В процессе записи его ход будет отображаться на экране.
После успешного завершения прошивки открываем ссылку на смартфоне:
https://pvvx.github.io/ATC_MiThermometer/TelinkMiFlasher.html
Включаем (если выключен) BlueTooth и нажимаем кнопку коннект:
В списке доступных устройств выбираем устройство с именем похожим как на картинке и нажимаем подключить:
После подключения ищем пункт “Advertising type“ и выбираем из выпадашки “BTHome v2“, Чекит на “AdFlags“ установлен, а на “Encrypted beacon“ снят (короче как на фото) и нажать кнопку “Send Config“
Ждем несколько секунд и мы готовы дальше развлекаться…
Настройка Klipper:
Входим…
Первым делом запускаем Pytty, Windows PowerShell или консоль под линукс… (в зависимости от того что Вам доступно и удобно)
в терминалке вводим (у меня пользователь “pi“ и адрес принтера “192.168.2.10“ вы указываете свои значения):
ssh pi@192.168.1.10
Поcле этого вы вводите пароль (в процессе ввода символы или звездочки не отображаются!) и нажимаете ввод (Enter… тут должна была быть шутка про большую кнопку но не будет…)
Если вы указали правильный пароль то вы попадаете в удивительный мир Линукс… и тут все просто… говорили они…
Устанавливаем пакетики и пакетики с пакетиками…
Перед установкой правилом хорошего тона обновить систему до последней актуальной версии посему вводим:
sudo apt update -y && sudo apt upgrade -y
далее я всегда ставлю Midnight Commander ибо люблю его, прям не могу… (копировать, перемещать, просматривать и редактировать файлы, путешествовать по директориям в поисках этих файлов… но время от времени вам придется из него выходить для создания например пустых файлов. Для выхода используем F10, для входа снова “mc“)
sudo apt install mc -y
Устанавливаем Python (зачем не подскажу у меня записано, но предупреждаю я это делал в районе 3 часов ночи и мог затупить…)
sudo apt install python3-pip libglib2.0-dev -y
Устанавливаем пакетик BlueZ для Клиппера (эту штуку точно надо ибо долго ловил ошибки пока не понял почему…)
sudo apt install bluez -y
Klipper работает в своем виртуальном окружении (venv), поэтому библиотеки Python нужно установить именно туда, иначе наш модуль будет сыпать ошибками ImportError (как это было у меня). Устанавливаем модули Python
~/klippy-env/bin/pip install requests bleak bthome-ble home-assistant-bluetooth
При установке библиотек Python я ловил ошибки “NewConnectionError“ Эти предупреждения были связаны с тем что Raspberry Pi не смогла подключиться к серверу библиотек Python (PyPI) из-за проблем с интернетом. Если словите тоже самое то откройте resolv.conf
sudo nano /etc/resolv.conf
И добавьте в него DNS сервер GOOGLE
nameserver 8.8.8.8
после сохранения изменений (Ctrl+S) и выхода (Ctrl+X) перезапустите сетевую службу…
sudo systemctl restart networking
Цветочно-букетный период заканчиваем и переходим к бытовухе…
откроем файл temperature_sensors.cfg
nano ~/klipper/klippy/extras/temperature_sensors.cfg
и добавим в него
# Загружаем модуль LYWSD03MMC
[lywsd03mmc]
после сохранения изменений (Ctrl+S) и выхода (Ctrl+X) создаем новый файл с именем lywsd03mmc.py (внимание имя этого файла исключительно в нижнем регистре)…
Скачиваем мой файл по ссылке:
Создаем новый файл lywsd03mmc.py:
nano ~/klipper/klippy/extras/lywsd03mmc.py
и вставим в него содержимое одноименного файла (либо можете скинуть файл на флешку, подмонтировать ее и с нее в эту директорию через команду CP или с помощью Midnight Commander)
перед началом поиска выполним проверку статус Bluetooth-сервиса:
sudo systemctl status bluetooth
если видим статус inactive или disabled, проверим доступен ли он нам. Откроем файл config.txt:
sudo nano /boot/firmware/config.txt
или если у вас старый Klipper
sudo nano /boot/firmware/config.txt
проверьте, есть ли в файле фраза "dtoverlay=disable-bt" (а она у вас с вероятностью 99% присутствует если вы принтер подключали по UART), заменим ее на "dtoverlay=miniuart-bt". Если "dtoverlay=disable-bt" нет то и ничего дописывать не надо. miniuart-bt считается менее эффективным и стабильным но под наши задачи сойдет.
dtoverlay=miniuart-bt
и включим его...
sudo systemctl enable --now bluetooth
Ищем свой датчик (он может называться “ATC_8115E5”) и сохраним его mac-адрес, нас интересует что-то похожее на “A5:C4:32:61:45:E9” … (поиск у меня занимал до 30 секунд, терпим…)
sudo hcitool lescan
Идем в вебморду → Конфигурация → Файлы конфигурации → добавляем в printer.cfg:
[respond] - необходим для отправки запросов в терминал (в том числе и через макросы), я добавил у меня заработало…
[respond]
[temperature_sensor dryer] - раздел и его содержимое добавляем в ту часть файла где у вас расположены прочие датчики (по желанию и личного удобства ради…). В указанном разделе укажите адрес своего датчика температуры…
[temperature_sensor dryer]
sensor_type: LYWSD03MMC
address: A5:C4:32:61:45:E9 # !!! Укажите свой адрес !!!
[gcode_macro CHECK_DRYER] - вызов макроса для отображения информации о сушилке в Колсоле (нажили макрос и побежали смотреть в консоль Клиппера). К сожалению вывод показаний датчика в секцию “Температура“ в настоящее время не получилось. Клиппер очень не любит подключение сторонних датчиков и вывести информацию по аналогии с BME280 невозможно (А невозможно, как известно, лишь означает, что пока никто не догадался как это сделать). Возможно, позже займусь… Я пока и так переполнен от успеха и неудач (неудач, поверте, было намного больше).
[gcode_macro CHECK_DRYER]
gcode:
{% set sensor = printer["lywsd03mmc dryer"] %}
{ action_respond_info("ОТЧЕТ О СУШИЛКЕ ФИЛАМЕНТА:
Температура: %.2f C
Влажность: %.1f %%
Батарея: %d %%" % (
sensor.temperature,
sensor.humidity,
sensor.battery)) }
Да, кстати, наслаждайтесь успехом…
Для проверки:
Смотрим секцию "Температура" на главной странице вебморды и видем в списке новый датчик.
Если видим идем в макросы и ищем макрос "CHECK_DRYER". После нажатия в консоли видим наш результат.
Дочитали до этого места? Вам подарочек! По ссылке ниже лежит скриптик позволяющий настроить все на Klipper автоматически (Единственное, скрипт на ваш страх и риск). Он написан для моего варианта и в вашем случае, очень маловероятно, но могут быть нюансы... ведь я не знаю вашей конфигурации)!
ВНИМАНИЕ! Скрипт располагать в той же директории куда скопировали lywsd03mmc.py (например /home/pi/) и запускать из нее.