Найти в Дзене
Михаил Девятков

Управление питанием 3D принтера OrangePi c Klipper. Подключение ADXL345 к Orange PI

Подопытный образец Orange Pi 4 lts, ОС ubuntu 3.0.8 Jammy Linux 5.18.5. Первым делом советую ставить ОС которую предлагает производитель на своем сайте, а не Arbian. На некоторые платы есть Armbian, но на Pi4lts и Pi3lts на сегодняшний день нет. Вот официальный сайт. Управление GPIO Moonraker Остановлюсь на особенностях с OrangePi по управлению GPIO, если нужно подробнее про управление питанием, то можно почитать тут. Чтобы к портам GPIO OrangePI мог обращаться Moonraker, нам необходимо добавить права пользователю (по умолчанию orangepi) управлять портами GPIO. Для начала убедимся что это так: ls -l /dev/gpiochip* Добавляем группу gpio и добавляем в нее своего пользователя: sudo groupadd gpio
sudo usermod -a -G gpio orangepi Далее создаем правило для менеджера udev чтобы группе gpio дать права на запись и чтение в gpiochip[0-4]. Вводим: echo "SUBSYSTEM==\"gpio\", KERNEL==\"gpiochip[0-4]\", GROUP=\"gpio\", MODE=\"0660\"" |sudo tee -a /etc/udev/rules.d/60-gpio.rules Это создаст файл 60-
Оглавление
Orange Pi, Klipper, GPIO
Orange Pi, Klipper, GPIO

Подопытный образец Orange Pi 4 lts, ОС ubuntu 3.0.8 Jammy Linux 5.18.5. Первым делом советую ставить ОС которую предлагает производитель на своем сайте, а не Arbian. На некоторые платы есть Armbian, но на Pi4lts и Pi3lts на сегодняшний день нет. Вот официальный сайт.

Управление GPIO Moonraker

Остановлюсь на особенностях с OrangePi по управлению GPIO, если нужно подробнее про управление питанием, то можно почитать тут.

Чтобы к портам GPIO OrangePI мог обращаться Moonraker, нам необходимо добавить права пользователю (по умолчанию orangepi) управлять портами GPIO. Для начала убедимся что это так:

ls -l /dev/gpiochip*
Orange Pi, Klipper, GPIO
Orange Pi, Klipper, GPIO

Добавляем группу gpio и добавляем в нее своего пользователя:

sudo groupadd gpio
sudo usermod -a -G gpio orangepi
Orange Pi, Klipper, GPIO
Orange Pi, Klipper, GPIO

Далее создаем правило для менеджера udev чтобы группе gpio дать права на запись и чтение в gpiochip[0-4]. Вводим:

echo "SUBSYSTEM==\"gpio\", KERNEL==\"gpiochip[0-4]\", GROUP=\"gpio\", MODE=\"0660\"" |sudo tee -a /etc/udev/rules.d/60-gpio.rules
Orange Pi, Klipper, GPIO
Orange Pi, Klipper, GPIO

Это создаст файл 60-gpio.rules в каталоге /etc/udev/rules.d/ с содержимым:

SUBSYSTEM=="gpio", KERNEL=="gpiochip[0-4]", GROUP="gpio", MODE="0660"
Orange Pi, Klipper, GPIO
Orange Pi, Klipper, GPIO

Перезагружаем:

sudo reboot

И проверяем права:

ls -l /dev/gpiochip*
Orange Pi, Klipper, GPIO
Orange Pi, Klipper, GPIO

Дальше надо узнать номер gpiochip и номер gpio, и тут начинается самое интересное. Есть схема разъёма из документации, дальше в документации есть таблица в разделе GPIO.

Orange Pi, Klipper, GPIO
Orange Pi, Klipper, GPIO

Ни то, ни другое ответа на вопрос прямо не дали, а только косвенно намекнули. Думал я целый день и родилась таблица соответствия. Подробности тут.

-8

Если у Вас не OrangePi4lts, напишу логику нумерации, может помочь в разгадке с другими платами. На примере gpiochip1, так как gpiochip0 на гребенку GPIO не выведен. На распиновке из документации есть Pin GPIO1_C2, это означает что gpiochip1. Номер gpio нумеруется по такой методике: всего в gpiochip1 32 номера, 0 соответствует А0, 1 - А1... 7-А7, 8-В0, 9-В1... 16-С0... 24-D0. Думаю закономерность улавливается. Если разобраться не получилось, пишите, попробую помочь.

Теперь в moonraker.conf вставляем строки:

[power Printer]
type: gpio
pin: gpiochip1/gpio1
off_when_shutdown: True
restart_klipper_when_powered: True
restart_delay: 1
initial_state: off

Должен появиться переключатель, если не появился, значит или права на управление не выданы или gpiochip.../gpio... неправильно вычислили.

Подключение ADXL345 к Orange PI

Схема подключения

ADXL345 к OrangePi 4 lts
ADXL345 к OrangePi 4 lts

С подключением ADXL345 к OrangePi 4 lts в общем то никаких особенностей не встретил. Из интереса посмотрел и инструкцию к Orange Pi 3 lts, там надо внести изменения в orangepiEnv.txt: Вводим:

sudo nano /boot/orangepiEnv.txt

Вставляем "overlays=spi-spidev1". Перезагружаемся.

OrangePi 3 lts
OrangePi 3 lts

Делаем все точно также, как описано тут, до внесения изменений в printer.cfg. Потом на всякий случай проверяем работоспособность порта SPI:

ls /dev/spi*
Orange Pi, Klipper, adxl345
Orange Pi, Klipper, adxl345

Потом вносим изменения в printer.cfg

[adxl345]
cs_pin: host:None
spi_bus: spidev1.0
axes_map: x, z, y
[resonance_tester]
accel_chip: adxl345
probe_points: 150,100,20 # an example
Orange Pi, Klipper, adxl345
Orange Pi, Klipper, adxl345

И проверяем работоспособность из консоли Mainsail или FluiddPi:

ACCELEROMETER_QUERY
MEASURE_AXES_NOISE
Orange Pi, Klipper, adxl345
Orange Pi, Klipper, adxl345

У меня датчик лежал на столе, поэтому показания такие, но главное он работает.

Если кому нужно, у меня осталось пару реле рассчитанных на работу с одноплатниками, можно посмотреть тут.

Спасибо, что дочитали до конца. Подписывайтесь на этот канал.

Также что б ни чего не пропустить подписывайтесь на мое сообщество ВК и канал Telegram
https://vk.com/cncand3d
https://t.me/cncand3d