無線化したい
いちいちSDカードを抜いてpcにさしてデータ書いて抜いてさし直すのが面倒
pcでボタンポチるだけで印刷できたら最高
OctoPrint
RaspberryPiに入れてプリンタのUSBと繋ぐことで無線化できる
- メリット
- 情報がいっぱいある
- Klipper(簡単に言うと印刷品質が向上するやつ)が使える
- USBと電源だけ繋げば良い
- デメリット
- 起動に時間がかかる
- ラズパイとは言えPCを起動することになるので
- ラズパイの入手性の悪さ
- 高い
- そもそも品薄で売ってない
- 消費電力
- オーバースペック感ある
- 起動に時間がかかる
ESP3D
ESP8266/ESP32に入れてプリンタのシリアル線と繋ぐことで無線化できる
- メリット
- ESPの入手性の良さ
- チップ単体なら秋月で¥300~¥600程度
- 起動が数秒
- 物理的に小さい
- ESPの入手性の良さ
- デメリット
- 情報が少ない
- プリンタの改造(非破壊)が必要
- 細かな半田付け
- USB OTG対応のESPなら要らない
- SDカードの読み書きがすごく遅い(後述)
ESP3Dの導入
用意したもの
- ESP32-WROOM-32E モジュール ¥480
- 128x64 SSD1306 白色OLEDディスプレイ ¥580
- UEW、ビニール線、ピンヘッダ&ソケット等適当な配線材
ESP側の準備
PlatformIOのインストール
エディタの拡張として入れる方法が主流
普段使っている環境が汚されるのが嫌なのでCLIのみインストール
pipでインストールするとライブラリのバージョン違いで色々と問題が起きる
公式が良さげなインストーラを用意している
これをダウンロードしてpython get-platformio.py
する
ユーザーフォルダ直下にインストールされる
恐らくどの階層で実行しても大丈夫
pio
コマンドが動く事を確認する
ESP3Dの用意
このリポジトリを丸々ダウンロード
platformio.iniがある階層でpioを走らせると良い感じに全部やってくれる
異なるボードを使う場合はplatformio.iniの編集が要るかも
今回は生のモジュールを使ったためiniは特に編集はしていない
esp3d/config.h
の編集 !important
このまま使うと上手くシリアル通信ができないのでTXは別ピンを指定する必要がある
ここら辺は別記事にまとめた
- #define ESP_RX_PIN -1
- #define ESP_TX_PIN -1
+ #define ESP_RX_PIN 2
+ #define ESP_TX_PIN 0
書き込みの関係上io0は引き出してあったのでTXに割り当てた
片方だけ-1はできない模様
その他OLEDを用意したのでそのピン番号を書いた
諸々の編集が終わったあと
自家製ライタでpcと接続して
pio run -e esp32dev -t upload
で書き込んだ
index.html.gz のアップロード
書き込んでしばらくするとSSID: ESP3Dが現れる
パスワード: 12345678を入れて192.168.0.1にアクセスすると
index.html.gzが無いよと言われるのでesp3d/data/index.html.gz
をアップロードする
Ender3側の準備
うちのEnder3のメインボードはv4.2.2でstm32互換のチップが載っていた
このチップとUSBシリアル変換のch340gが繋がっている配線がある
これを引き出してespに繋げる
CPU | CH340G | ESP32 |
---|---|---|
TX | RX | RX |
RX | TX | TX |
今回はch330gの足からUEWで引き出した
ESPの電源はそこら辺に生えていたデバッグ端子から適当に引き出した
古いボードは5vらしいので3.3vである事を確認しておく
配線
ESP32にGND, 3.3v, TX, RXを繋ぐだけ
OLEDは必要に応じて
動いた
SDカードのアップロードが遅い問題
配線が ESP>プリンタcpu>SDカード な以上
ESPがSDにアクセスするにはgcodeのプロトコルを使うしか無い模様
現在アルファ版のESP3Dv3.0は直接結線することで解決できる模様