Подключение датчиков температуры к Octoprint

Материал из Ender 3 Wiki
Перейти к навигации Перейти к поиску

Цели:

Вывести температуру с датчиков температуры DS1820 в Octoprint, используя Orange PI.

Что потребуется:

  1. Датчики температуры DS1820, например такие https://qps.ru/6XdbW
  2. Установленный Octoprint на Orange PI (Например https://is.gd/Vvaclx), доступ по ssh.
  3. Резистор 4.7 кОм.
  4. Опционально: Макетная плата.
  5. Опционально: Паяльник, припой, флюс, изолента, термоусадка.

Начнем:
1. Подсоединяем датчики температуры к резистору 4.7 кОм и Orange PI, в соответствии с рисунком:

OrangePI DS1820.jpg









Для удобства коммутации я использовал небольшую макетную плату:

Макетная плата.jpg
















2. Приступаем к настройке. Заходим по ssh на наш одноплатный компьютер под пользователем root
3. Если уже реализовано управление питанием принтера через Octoprint статья в Вики то переходим сразу к пункту 7.

4. Переходим в домашнюю директорию пользователя, под которым работает Ocroprint. Для пользователей нашего установщика - пользователь octo).

cd /home/octo

5. Скачиваем библиотеку для управления пинами

git clone https://github.com/zhaolei/WiringOP.git -b h3 && cd WiringOP

6. Устанавливаем библиотеку

chmod +x ./build
sudo ./build

7. Проверяем работоспособность

cd ..
gpio readall

Должна появиться подобная таблица

+-----+-----+----------+------+---+-Orange Pi+---+---+------+---------+-----+--+
 | BCM | wPi |   Name   | Mode | V | Physical | V | Mode | Name     | wPi | BCM |
 +-----+-----+----------+------+---+----++----+---+------+----------+-----+-----+
 |     |     |     3.3v |      |   |  1 || 2  |   |      | 5v       |     |     |
 |  12 |   8 |    SDA.0 | ALT3 | 0 |  3 || 4  |   |      | 5V       |     |     |
 |  11 |   9 |    SCL.0 | ALT3 | 0 |  5 || 6  |   |      | 0v       |     |     |
 |   6 |   7 |   GPIO.7 | ALT3 | 0 |  7 || 8  | 0 | ALT3 | TxD3     | 15  | 13  |
 |     |     |       0v |      |   |  9 || 10 | 0 | ALT3 | RxD3     | 16  | 14  |
 |   1 |   0 |     RxD2 | ALT3 | 0 | 11 || 12 | 0 | ALT3 | GPIO.1   | 1   | 110 |
 |   0 |   2 |     TxD2 | ALT3 | 0 | 13 || 14 |   |      | 0v       |     |     |
 |   3 |   3 |     CTS2 | ALT3 | 0 | 15 || 16 | 0 | ALT3 | GPIO.4   | 4   | 68  |
 |     |     |     3.3v |      |   | 17 || 18 | 0 | ALT3 | GPIO.5   | 5   | 71  |
 |  64 |  12 |     MOSI | ALT3 | 0 | 19 || 20 |   |      | 0v       |     |     |
 |  65 |  13 |     MISO | ALT3 | 0 | 21 || 22 | 0 | ALT3 | RTS2     | 6   | 2   |
 |  66 |  14 |     SCLK | ALT3 | 0 | 23 || 24 | 0 | ALT3 | CE0      | 10  | 67  |
 |     |     |       0v |      |   | 25 || 26 | 0 | ALT3 | GPIO.11  | 11  | 21  |
 |  19 |  30 |    SDA.1 | ALT3 | 0 | 27 || 28 | 0 | ALT3 | SCL.1    | 31  | 18  |
 |   7 |  21 |  GPIO.21 | ALT3 | 0 | 29 || 30 |   |      | 0v       |     |     |
 |   8 |  22 |  GPIO.22 | ALT3 | 0 | 31 || 32 | 0 | ALT3 | RTS1     | 26  | 200 |
 |   9 |  23 |  GPIO.23 | ALT3 | 0 | 33 || 34 |   |      | 0v       |     |     |
 |  10 |  24 |  GPIO.24 | ALT3 | 0 | 35 || 36 | 0 | ALT3 | CTS1     | 27  | 201 |
 |  20 |  25 |  GPIO.25 | ALT3 | 0 | 37 || 38 | 0 | ALT3 | TxD1     | 28  | 198 |
 |     |     |       0v |      |   | 39 || 40 | 0 | ALT3 | RxD1     | 29  | 199 |
 +-----+-----+----------+------+---+----++----+---+------+----------+-----+-----+
 | BCM | wPi |   Name   | Mode | V | Physical | V | Mode | Name     | wPi | BCM |
 +-----+-----+----------+------+---+-Orange Pi+---+------+----------+-----+-----+

8. Редактируем файл armbianEnv.txt

nano /boot/armbianEnv.txt

9. Прописываем в файле:

overlays=w1-gpio
param_w1_pin=PA9		
param_w1_pin_int_pullup=0

Строка param_w1_pin=PA9 указывает, что датчики подключены к пину PA9, который соответствует физическому пину 33 (см. таблицу выше).
Строка param_w1_pin_int_pullup=0 указывает, что используется резистор, если =1, значит резистор не используется.

10. Сохраняем и закрываем файл

Ctrl + O
Enter
Ctrl + X

11. Редактируем файл modules.conf:

nano /etc/modules-load.d/modules.conf

12. Прописываем в файле:

w1-gpio
w1-therm

13. Сохраняем и закрываем файл

Ctrl + O
Enter
Ctrl + X

14. Перезагружаем систему:

reboot

15. После перезагрузки опять заходим по ssh под пользователем root и выполняем команду:

dmesg | grep -E 'w1|wire'

16. Если все сделали правильно, то должны увидеть примерно такое сообщение:

root@orangepilite:~# dmesg | grep -E 'w1|wire'
[    4.436632] Driver for 1-wire Dallas network protocol.
[    4.443777] gpio-9 (onewire@0): enforced open drain please flag it properly in DT/ACPI DSDT/board file                                                                                                                                                        
[    4.491932] w1_master_driver w1_bus_master1: Attaching one wire slave 28-03139779d52e crc 05                                                                                                                                                             
[    4.584033] w1_master_driver w1_bus_master1: Attaching one wire slave 28-051680b9b3ff crc 50

17. Копируем номер между slave и crс - это своего рода серийный номер датчика, он пригодится нам дальше
В моем случае это: 28-03139779d52e и 28-051680b9b3ff

18. Для того, чтобы проверить температуру конкретного датчика вводим команду:

cat /sys/bus/w1/devices/серийный номер датчика/w1_slave

19. Если все ввели правильно, то должны увидеть примерно такое сообщение:

root@orangepilite:~# cat /sys/bus/w1/devices/28-051680b9b3ff/w1_slave
87 01 4b 46 7f ff 0c 10 b7 : crc=b7 YES
87 01 4b 46 7f ff 0c 10 b7 t=24437

t=24437 - это и есть температура без разделительного знака, т.е. по факту это 24,437 градусов Цельсия

20. Устанавливаем в Octoprint плагин Enclosure Plugin
21. Заходим в настройки плагина

Enclosure Plugin.JPG











22. Можем написать свое название датчика в строке Label
23. Input Type и Sensor Type устанавливаем как на картинке выше
24. В строке Sensor Pin указываем номер пина, как в строке 9
25. В строке DS18B20 Serial указываем серийный номер вашего датчика из строки 17
26. Устанавливаем галку напротив Show temperature on navbar и сохраняем
27. Таким образом можно добавить несколько датчиков, я добавил два.
28. Если все сделали правильно, то в верхнем правом углу появится иконка плагина и по нажатию на нее открывается список датчиков с фактической температурой:

Enclosure temp.JPG








Спасибо за внимание!