Выпускаем кракена — как подружить осьминога с 3D принтером, и причем тут апельсины?
Мультиобзор. Инструкция с картинками. Много картинок.
Нет, принтера пока не будет (недообзор), только подготавливаемся.
Всем заинтересовавшимся — добро пожаловать под кат.
Некоторое время назад [совсем для другого проекта] был приобретен одноплатный компьютер Orange Pi R1 Plus LTS. Официальный сайт, официальный магазин на aliexpress (вообще-то их 3: еще и еще).
Как всегда [у меня было много устройств Orange Pi], в фирменной коробке и запаянный в антистатический пакет.
Это Headless-устройство. Только терминал, только хардкор (вообще-то есть аналоговый TV-выход. Осталось монитор с таким входом найти).
Штука довольно занятная,
одно печалит — USB 2.0. 26-pin GPIO и отдельного выхода для LCD, как у старших собратьев тоже нет.
• 10M/100M/1000M Ethernet (YT8531C)
• 10M/100M/1000M USB Ethernet (RTL8153B)
• TV CVBS выход
• Аудио выход (стерео)
• IR порт
• щепотка GPIO
Плата компактная. Осталось найти радиатор и прикрутить к нему плату. Или наоборот.
Посмотрим поближе:
16MB SPI Flash 25VQ128ASIG. Можно скомпилировать OpenWrt и прошить сюда. В этой теме ищем в шапке по слову "SPI" — плата другая, но принцип тот же.
Корпуса разъемов запаяны как обычно.
64-битное сердце (или мозг) Rockchip RK3328.
Оперативная память ATL3A0832 — 1Гб.
Power management chip RK805.
1G Ethernet Motorcomm YT8531C.
Процессор имеет 1 USB 3.0 порт, на котором сидит Realtek RTL8153B 1G сетевая карта.
UART (уровни 3.3 В, скорость 1500000) и разъем вентилятора (5 В)
Сейчас у Xunlong есть устройства и поинтересней. Так, Orange Pi 5 имеет на борту M.2 PCIe2.0, а к Pi 4/4B, подключается PCIe устройства через адаптер.
Есть и монстр Orange Pi 5 Plus с 2x 2.5G Ethernet, 2x USB3.0 + 2x USB2.0 + 1x TypeC, M.2, 4-16 Gb RAM, 2.4GHz 8-ядерном RK3588.
Страница загрузок на оф. сайте. Предоставляют даже электрические схемы.
Для чего можно применить подобное устройство? Для интернет маршрутизатора, само собой, без экрана и 2 LAN'ами то, или для контроллера умного дома. Немного поговорим о применении в качестве роутера.
OpenWrt — встраиваемая операционная система на базе Linux, предназначенная, в первую очередь, для роутеров.
Мы уже собирали OpenWrt в одном из предыдущих обзоров. Теперь мы все это знаем и умеем. Но стоит кое-что дополнить:
Во-первых для устройств Orange Pi PC, Orange Pi Plus [уже нет в продаже], Orange Pi Zero Plus [нет в продаже] существуют готовые прошивки ROOter.
Сборка OpenWrt из исходных кодов
подробно рассматриваться не будет, мы же это уже умеем. Пробежимся по истории поддержки этого устройства:
Товарищ walmartshopper 2 года назад создал репозиторий (место для хранения программ и их исходных кодов) с исходными кодами OpenWrt v22.03.2, имеющими необходимые изменения для работы на устройствах Orange Pi R1 Plus и LTS.
Затем товарищ kgoerbig создал форк (отдельное направление развития программного кода), который лег в основу официальной поддержки OpenWrt.
А потом (2 года спустя) OpenWrt выкатили официальный билд 23.05.0-rc2 (r23228-cd17d8df2a) с поддержкой сабжа.
Это то, что нужно знать о поддержке редкого и нового оборудования.
Но свистелки все равно самому прикручивать, и не так все просто в официальной версии. Например, они убили Кенни сломали драйвер YT8531C, поэтому 2-й LAN не работает очень плохо. Но в 23.05.0-rc3 вроде исправили.
И вот тут стоит упомянуть про diffи патчи, чего я не сделал ранее.
Для плат Orange, FriendlyARM, Banana и пр. частенько нужны патчи для работы того или иного оборудования. Кстати, взгляните на клона [кто чей еще клон] — NanoPi R2S.
Например, патчи будут нужны для установки OpenWrt в набортный SPI Flash, можно почитать тут и тут.
Или в некоторых конфигурациях плата R1 Plus [LTS] после программной перезагрузки не стартует. Выглядит это как выключение вместо перезагрузки. Это проблема ряда устройств на Rockchip, пруфы: 1, 2, 3, 4, 5, 6.
В данном случае нам нужно поправить работу с картой памяти — нужно накатить патч.
Итак, идем по пути [если ~/openwrt-orangepi-r1-plus/ — каталог сборки]
~/openwrt-orangepi-r1-plus/target/linux/rockchip/patches-5.10/
соответственно для устройств rockchip и ядра 5.10. Создаем файл 107-mmc-core-set-initial-signal-voltage-on-power-off.patch
From 0d329112c709d6cfedf0fffb19f0cc6b19043f6b Mon Sep 17 00:00:00 2001
From: Jonas Karlman <[email protected]>
Date: Wed, 20 Feb 2019 07:38:34 +0000
Subject: [PATCH] mmc: core: set initial signal voltage on power off
Some boards have SD card connectors where the power rail cannot be switched
off by the driver. If the card has not been power cycled, it may still be
using 1.8V signaling after a warm re-boot. Bootroms expecting 3.3V signaling
will fail to boot from a UHS card that continue to use 1.8V signaling.
Set initial signal voltage in mmc_power_off() to allow re-boot to function.
This fixes re-boot with UHS cards on Asus Tinker Board (Rockchip RK3288),
same issue have been seen on some Rockchip RK3399 boards.
I am sending this as a RFC because I have no insights into SD/MMC subsystem,
this change fix a re-boot issue on my boards and does not break emmc/sdio.
Is this an acceptable workaround? Any advice is appreciated.
Signed-off-by: Jonas Karlman <[email protected]>
---
drivers/mmc/core/core.c | 2 ++
1 file changed, 2 insertions(+)
--- a/drivers/mmc/core/core.c
+++ b/drivers/mmc/core/core.c
@@ -1354,6 +1354,8 @@ void mmc_power_off(struct mmc_host *host
mmc_pwrseq_power_off(host);
+ mmc_set_initial_signal_voltage(host);
+
host->ios.clock = 0;
host->ios.vdd = 0;
Число в названии патча — порядок применения, просто возьмите любое свободное не в начале (вообще-то есть правила нумерации, но не сегодня). Делаем make clear, при следующем make патчи применятся. Как проверить? Все будет в логе (с подробным выводом -j1 V=sc):
Applying /target/linux/rockchip/patches-5.10/107-mmc-core-set-initial-signal-voltage-on-power-off.patch using plaintext:
patching file drivers/mmc/core/core.c
Затем запускаем инструмент настройки нашей прошивки
make menuconfig
и дальше все как обычно.
И еще одно — форк ImmortalWrt для данной платы собирается с полпинка, в отличие от оригинала.
Но сегодня мы будем ставить Armbian. И о софте поговорим позже.
BIGTREETECH свой стиль соблюдает.
Привет, старый друг.
Материнская плата для 3D принтеров Octopus V1.1 поставляется в фирменной коробке
Черный поролон, пакеты от статики — все как положено. В комплекте кабель USB A -> Type-C и россыпь джамперов.
Красивое
К качеству изготовления в общем и пайке в частности претензий нет.
Силовые клеммы выглядят внушительно.
Силовые линии защищены флажковыми предохранителями (автомобильные mini).
Клеммы для подключения нагревателей с лифтовым зажимом обеспечиваю надежное соединение и рассчитаны на провод 1.5 мм².
Это не LAN, это CAN. До чего техника дошла — рассчитано на использование вот таких плат на голове принтера.
А вот именно эта погнутая ножка — не единичный случай, если верить отзывам.
Мой осьминог работает на STM32F446ZET6. В указанном лоте есть версия на STM32F407ZE (меньше флеш), а в дикой природе водится еще и Octopus Pro, так что можно встретить STM32F429ZG или STM32FH723ZE. Для Klipper или Marlin разницы не будет.
В комплекте кабель USB A -> Type-C длиной 0.5 м.
Я приобрел комплект с экраном. С клиппером он особо и не нужен, но мне так нравится.
Дисплей Bigtreetech mini 12864 с цветной подсветкой. Там, где была ручная пайка флюс не отмыт.
В остальном — качество исполнения так же на высоте.
Переходим к драйверам. У меня вариант с TMC2209, но желающие могут приобрести TMC2226.
В комплекте радиаторы и цветная схема с обозначениями пинов. С ножками все в порядке — приехали в целости и сохранности.
Все и вся я креплю на DIN рейку. Быстренько начертил крепеж для апельсинки и пустил на печать
Крепление Octopus принципиально не отличается
Скачиваем свежий образ без графики — вариант CLI (Command Line Interface — интерфейс командной строки).
Заливаем образ прошивки на microSD с помощью Win32DiskImager (нужно распаковать .xz) или balenaEtcher (извлекать образ из архива не нужно).
Подключаемся к одноплатнику витой парой в разъем, который ближе к USB, подаем питание.
Rockchip'ы обычно заметно греются, поэтому без радиатора не тестируем. Но и с маленькими радиаторами без активного охлаждения процессор под нагрузкой греется до 75°C.
Я не тру одмин — на домашнем компьютере у меня винда, поэтому для удобства работы мы скачаем свободный графический клиент протоколов SFTP и SCP — WinSCP. Но работать преимущественно будем все равно через PuTTY.
Через интерфейс роутера или nmap узнаем, какой IP получил одноплатник, логин — root, пароль — 1234. Ни символы пароля, ни звездочки при авторизации отображаться не будут.
После первого подключения система предлагает изменить пароль root'а и создать нового пользователя, выбрать командную оболочку по умолчанию, региональные настройки.
Для смены пользователя не выходя из консоли выполняем (где your_username — имя пользователя, которое мы ввели ранее):
su - your_username
Нужно обновиться:
sudo apt update
sudo apt upgrade -y
На уже настроенной системе с ключом -y нужно быть очень осторожным — мало ли что сломается в очередном обновлении (у меня так умный дом падал — не обновляйтесь в воскресенье вечером, если в понедельник Вам на работу).
Есть определенные проблемы в работе KIAUH с UART, но если надумаете:
sudo nano /boot/armbianEnv.txt
Добавляем строку
overlays=uart1
Если строка с overlays уже есть, то дописываем uart1 в конец.
Проверим работу набортного UART, нам нужен этот порт:
Сначала посмотрим порты в системе:
Что-то их много — найдем нужный. Я подключу одноплатник к компьютеру через USB UART адаптер, но можно просто замкнуть RX-TX, тогда мы увидим набираемые символы в этом же терминале. Запускаем эмулятор терминала на ПК и screen на апельсинке:
sudo screen /dev/ttyS1 115200
Это определенно он — /dev/ttyS1, запомним. Для выхода из screen нужно нажать Ctrl+A, после чего нажать D.
На осьминоге колодка J26 порт USART2 контакты PD6/PD5.
А настройка Klipper выглядит так:
У меня однопланик будет иметь свободный USB, поэтому по данному пути я не пойду. При подключении по UART мы экономим один USB порт и в теории получаем большую стабильность.
WARNING! Прошивать на столе, с отключенными нагревателями. В сети зафиксированы случаи самопроизвольного включения нагревателей HE0 и HE1 на штатной прошивке.
Все манипуляции можно провести при питании от 5В.
Мы пойдем по простому пути, потому что все уже украдено до нас добрые люди создали KIAUH — Klipper Installation And Update Helper — утилиту автоматической установки/обновления Klipper, Web-интерфейсов к нему и ряда вспомогательных утилит. Для установки и запуска выполняем:
cd ~ && git clone https://github.com/dw-0/kiauh.git
./kiauh/kiauh.sh
Простой и интуитивный интерфейс, хоть и без графики. Посмотрим, что мы можем установить:
Хороший выбор средств. Мы будем использовать Klipper и Mainsail. Mainsail — Web интерфейс для Klipper, одна из альтернатив OctoPrint.
При установке Klipper нужно указать версию Python для использования (если на этом этапе возникли вопросы — выбираем Python 3.x) и количество экземпляров == количеству подключаемых принтеров.
Установка займет немного времени:
Возвращаемся назад (вводим B), и посмотрим что у нас получилось:
В главном меню KIAUH видим, что Klipper успешно установлен. С этого момента обновляться придется только через KIAUH, иначе велика вероятность сломать Klipper.
Перейдем к компиляции и прошивке:
4) [Advanced]
2) [Build only]
Настройки сборки:
[*] Enable extra low-level configuration options
Micro-controller Architecture (STMicroelectronics STM32) --->
Processor model (STM32F446) --->
Bootloader offset (32KiB bootloader) --->
Clock Reference (16 MHz crystal) --->
Communication interface (USB (on PA11/PA12)) --->
(250000) Baud rate for serial port
() GPIO pins to set at micro-controller startup
После настройки нажимаем ESC, подтверждаем изменения Y. Наблюдаем процесс компиляции прошивки.
При удачной компиляции создается файл прошивки klipper.bin, который сохраняется в папке ~/klipper/out.
Тепь нам нужна microSD карточка, отформатированная в FAT32.
С помощью WinSCP скидываем файл klipper.bin на флешку, переименовываем в firmware.bin.
Выключаем Octopus
Вставляем карту microSD
Включаем Octopus (питания от USB достаточно)
Через несколько секунд Octopus должен прошиться.
Выходим из скрипта B, Q, проверяем
ls /dev/serial/by-id
Плата успешно прошита на Klipper, а файл на флешке был автоматически переименован.
Для использования Mainsail сначала нужно установить Moonraker. В главном меню скрипта:
1) [Install]
2) [Moonraker]
Y
Это займет некоторое время. Затем ставим Mainsail
3) [Mainsail]
Y
Проверяем в браузере:
Еще бы он подключился. MACHINE -> редактируем printer.cfg,
в строчку
serial: /dev/serial/by-id/<your-mcu-id>
Вместо <your-mcu-id> вставляем вывод ls /dev/serial/by-id, например
serial: /dev/serial/by-id/usb-Klipper_stm32f446xx_100022001650335331383520-if00
И не забываем включить экран:
[board_pins]
aliases:
# EXP1 header
EXP1_1=PE8, EXP1_2=PE7,
EXP1_3=PE9, EXP1_4=PE10,
EXP1_5=PE12, EXP1_6=PE13, # Slot in the socket on this side
EXP1_7=PE14, EXP1_8=PE15,
EXP1_9=<GND>, EXP1_10=<5V>,
# EXP2 header
EXP2_1=PA6, EXP2_2=PA5,
EXP2_3=PB1, EXP2_4=PA4,
EXP2_5=PB2, EXP2_6=PA7, # Slot in the socket on this side
EXP2_7=PC15, EXP2_8=<RST>,
EXP2_9=<GND>, EXP2_10=PC5
## mini12864 LCD Display
[display]
lcd_type: uc1701
cs_pin: EXP1_3
a0_pin: EXP1_4
rst_pin: EXP1_5
encoder_pins: ^EXP2_5, ^EXP2_3
click_pin: ^!EXP1_2
contrast: 63
spi_software_miso_pin: EXP2_1
spi_software_mosi_pin: EXP2_6
spi_software_sclk_pin: EXP2_2
[neopixel btt_mini12864]
# To control Neopixel RGB in mini12864 display
pin: EXP1_6
chain_count: 3
initial_RED: 0.1
initial_GREEN: 0.5
initial_BLUE: 0.0
color_order: RGB
# Set RGB values on boot up for each Neopixel.
# Index 1 = display, Index 2 and 3 = Knob
[delayed_gcode setdisplayneopixel]
initial_duration: 1
gcode:
SET_LED LED=btt_mini12864 RED=1 GREEN=1 BLUE=1 INDEX=1 TRANSMIT=0
SET_LED LED=btt_mini12864 RED=1 GREEN=0 BLUE=0 INDEX=2 TRANSMIT=0
SET_LED LED=btt_mini12864 RED=1 GREEN=0 BLUE=0 INDEX=3
Нажимаем SAVE & RESTART. Подключение успешно, можно цвет подсветки экрана менять.
Этот экран уже можно считать игровым?
Готовые конфиги и прошивки от BTT можно подсмотреть в их гитхабе. А мы на этом сегодня закончим.
Orange Pi R1 LTS далеко не лучший вариант для подобного проекта, изначально собирался сделать роутер на этом одноплатнике, но потом подвернулся Nanopi R4S — в итоге переделал проект. А тут как раз начал собирать новый принтер… и пустил апельсинку в дело.
+62 |
3003
201
|
+28 |
2257
89
|
+61 |
2972
56
|
Пара шорткатов для айфона и в два тапа можно распечатать что угодно — список покупок, заметку, наклейку на коробку.
OrangePI отдаёт такой вебинтерфейс через nginx и крутит на себе Питон:
P.S. Только ведь сейчас тенденция размещать драйвер экструдера на отдельной плате в голове со своим МК, а тогда получается, что на основной плате 4-х всё равно будет достаточно — 2Х, Y и Z?
У меня принтер Репликатор 1 (подарили, чему я очень рад), там клиппер не стаёт, вариант только прошивка Сейлфиш и управление через октопринт через юсб.
Orange Pi 3B
NanoPi NEO3
Могу смело рекомендовать
По USB3 подрублен SSD на 2 Тб, используется в качестве файловой помойки, качаю туда торренты и все прочее, затыков нет
У меня стоит DietPi, это сборка Debian с доп.скриптами разными, но можно и Армбиан, если хочется, я просто поставил что под руку подвернулось из дэб-бэйзед
Вот сейчас сижу, работаю и тут пишу на основном компе, а NanoPi и качает там что-то у меня, и показывает мне сериальчик на втором мониторе, идеальный вариант вышел
Смотрел на 6ку, но понял, что наверное хватит мне уже домашних серверов, у меня и так Малинка 4 с 8 гигами и вот Р5Ц в квартире и Апельсинка одна в доме
У меня таких задач нет, потому три армовых сервера здесь и возможно скоро еще один армовый сервер для HA у старшего брата появится
Несколько лет я пользовался проприетарным софтом видеонаблюдения, билда под ARM не было в природе.
Да и при кросс-компиляции какой-нибудь прошивки, да и просто при компиляции какого-нибудь специфичного софта можно познать
дзенмного нового — с 86-64 банально проще (больше материалов).А я иногда собираю что-нибудь именно на сервере, а не на ПК, если не знаю, сколько времени это займет. Задачи, конечно, необычные для домашнего сервера. Да и поддержка ARM с каждым годом все лучше.
У меня два домашних сервера висят на отдельной умной розетке и я как-то смотрел сколько они электричества поедают, они совсем копейки жрут, тут никакой x86/x86_64 рядом не ляжет
P.S. Для видеонаблюдения в крупных офисах в свое время прекрасно юзали ZoneMinder, он оперсорсный и вроде развивается, могу его рекомендовать
Хотя я для домашнего использую motionEye, мне его хватает вполне
Если софт использует специфичный набор инструкций, вроде SSE2, тогда при портировании на ARM не нужно ли вызывать шамана?
У меня сервер на Intel j1900 с TDP 10 Вт. Не особо мощный, но мне хватает на все.
Видеонаблюдение пока остановился на Юкка — не идеально, зато активно допиливается, посмотрю, как будет дальше.
А у прикладного софта работающего на серверах я такого как-то не встречал особо
У майнеров работающих на процах еще были завязки на AES в проце, но в нынешних армах есть свое аппаратное для AES
Ну, то есть наверное мы можем найти какой-то софт с которым будут проблемы, но по факту за последние лет 5 я уже проблем не видел(раньше видел, кстати, когда пытался собирать и кое-что даже сам был вынужден править, что бы завелось)
> Видеонаблюдение пока остановился на Юкка — не идеально, зато активно допиливается, посмотрю, как будет дальше.
Ну тут главное, что бы тебя самого устраивало
Я всегда придерживаюсь позиции, что нужен не условный «лучший» софт, а софт который будет комфортен тому кто пользуется, я к софту отношусь примерно как к одежде и обуви, все должно быть комфортно тебе, а мнения остальных всегда идут побоку :-)
Просто поделился опытом и тем что сам когда-то юзал и что сейчас юзаю
Потом обновлялся через Mainsail, ничего не сломалось.
Но лучше не трогать, «работает — не трожь».
А что посоветуете для DIY роутера?
для особых месье в которых роутер грузит огромные таблицы с некими сайтами которые с высокой долей вероятности посещать никогда не будут — мини комп на x86 и хорошим обьемом оперативки. он и для nas до кучи будет хорош.
мой домашний сервер крутиться на openwrt который крутиться в виртуальной среде на тв боксе под андройдом.
это довольно авантюрное решение НО оно достаточно быстрое для безпроблемного покрытия моих нужд.
но не думаю что стоит рекомендовать такое.
на свой роутер я таки нарисовал подробную инструкцию по прошивкам но толп повторить я тоже не наблюдаю, зачем тогда такое рекомендовать
в топике по выбору одноплатных компьютерах на одноплатники за 1500 хотят уcтановить винду, кубернетис и рендер для unrealengine (или че то такое, бинарники x86 only) — вот это авантюизм, и он не иссекает
Banana Pi BPI-R4
Но лучше взять готовый роутер типа Xiaomi AX6S, поставить OpenWRT со всем необходимым и не мучаться больше ни с чем
В AX6S нормальный армовский проц и если чего-то нет в OpenWRT(например shadowsocks-rust), то можно просто взять бинарник с гитхаба, из официальных релизов, для arm64 и спокойно юзать
Наконец-то убогий MIPS отправился на помойку и роутеры начали делать на человеческом арме
Ну можно глянуть их же 3ку, если этой много
А так вот Бананы это конкретно платы под роутеры-самоделки, то что запрошено, круче не найти, наверное
Применив валяющийся без дела смартфон и сэкономил на экране.
Не думаю, что это будет проблемой, будет время — порешаю.
Могу заметить, что самсунговые смартфоны наимение подходят для этого
, надо ставить кастомную прошивку, слишком много защиты.
Хорошо или не очень, будет время, посмотрю.
ESP раздельно включает питание одноплатника и самого принтера. При включении UPS`а все включается автоматически. При простое, после окончания печати — принтер отключается. Если долго не пользуюсь — выключаю одноплатник, затем ESP выключает питание на нем с небольшой задержкой (достаточной для штатного завершения работы).
Потом через ESP`шку можно все включить.
Основная — прорваться на юсб со стороны установленного на АНдроид Линукса, вот там пока некоторые «танцы с бубном».
Но все окупается ненужностью малинапельсин и необходимостью прикручивания экрана.
Так что о применении в качестве роутера можно забыть.
Для 3D-принтера сгодился бы и Orange Pi Zero.
И под катом про OpenWrt: