DS18B20 デジタル温度センサが便利。1-wire で複数のデバイスを同時に扱える。Klipper も対応している。
Raspberry Pi の場合 1-wire を有効にして GPIO4 (PIN7) に信号線を接続する。3.3Vから 4.7kΩ (信号線の長さで調整する)) でプルアップする。
- 庫内温度(上) フレームあたり
- 庫内温度(下) 高さはベッド付近
- 室温(ファン近く)
あたりをモニタリングする。庫内温度は上と下で10℃ぐらい差があるのでどっちも見たい。
Raspberry Pi 上で
以下のように見える。22312 は1000倍した℃なのでこの場合は22.3℃
$ ls /sys/bus/w1/devices/ 28-03039794629e 28-0306979425a5 28-030f979445fd w1_bus_master1 $ cat /sys/bus/w1/devices/28-03039794629e/w1_slave 65 01 55 05 7f a5 a5 66 c5 : crc=c5 YES 65 01 55 05 7f a5 a5 66 c5 t=22312
Klipper での設定
以下のように設定する。
[temperature_sensor temp1] sensor_type: DS18B20 serial_no: 28-03039794629e sensor_mcu: host_mcu min_temp: 0 max_temp: 100
ただし、以下のように host_mcu が定義されていないとエラーになる。
Unknown config object 'mcu host_mcu'
rpi 自身をセカンダリーmcuとしてセットアップする必要がある。
上記ページの指示に従って host_mcu のサービスを起動する。そして printer.cfg に設定を追加する
[mcu host_mcu] serial: /tmp/klipper_host_mcu
これで動くようになる
1-wire
しょうがないけど 1-wire は遅い。
OS起動直後、なんらかの原因で一部の 1-wire デバイスと通信できずに serial_no が認識されないと Klipper が起動に失敗する。
また 1-wire の通信に失敗すると Kilipper がエラーを吐いて止まることがある (1度あった)。のであまり大量に繋げたりしないほうが安全そう。念のためフェライトコアを噛ませている。