RepRapDiscount Full Graphic Smart Controllerもどきを買いました。RepRapDiscountのでは無いけど機能は同じ。大きなLCDが付いていて、価格が安い。デュアルノズルの温度表示にも対応しています。Full Graphic Smart Controllerを使えるようにするMarlinの設定方法と、さらにちょっと使いやすくなるように設定変更をしました。
AliExpressでとても安かった
今まで20文字×4列のLCDが付いているReprapDiscount LCD2004 smart controllerを3dプリンターにつなげて使っていました。プリンターをスタンドアローンで使えるのでとても便利でしたが、もっと画面の大きな128×64ドットのLCDが付いたコントローラーに変更しました。
AliExpressで3dプリンターの部品などを物色していたら、Ramps1.4用128×64ドットのLCDがついたコントローラーがとても安く売っていたので、思わず注文しました。画像を見てみると基板には”RepRapDiscount Full Graphic Smart Controller”と書いてはあるけど、RepRapDiscountのものでは無いみたい。だけど仕様などは公開されているから問題は無いでしょう、きちんと動けば。
そして何よりも買う決め手になったのはこの値段。RepRapDiscountの”Full Graphic Smart LCD Controller”が一つ69ドルなのに対して、AliExpressで買ったこの”12864 LCD control panel 3D printer smart controller”はなんと11.31ドル。送料無料なので千円ちょっとで買えました。(僕が買った時はセール中で、今日見てみたら12.99ドルでした。)
・12864LCD smart controller – AliExpress
Full Graphic Smart Controller
Full Graphic Smart Controllerの大きさは、横93mm、縦87mm、コネクターやダイヤルなどの突起部分を除いた厚さは15mmです。LCDの表示(ガラス)部分は、横72mm×縦40mm。LCDの下には右からクリック出来るダイヤル(エンコーダー)、スピーカー、ストップボタン、LCDのコントラストを調整する可変抵抗が付いています。
裏側にはSDカードのスロットとRamps1.4につなげるケーブル用のコネクターが付いています。このケーブルの長さは30cmなんだけど、もっと長ければ使い易いんだけどなあ。そのうち長いのに変更しようかな。
Marlin1.4にSmart Connectorでつなげるとこんな感じになります。
・RepRapDiscount Full Graphic Smart Controller – RepRapWiki
Marlin v1の設定変更とu8glibの追加方法
Full Graphic Smart ControllerをRamps1.4につなげて使うには、ファームウェアの設定変更とライブラリを追加する必要があります。僕はファームウェアにMarlin v1を使っているので、その一部を変更し、u8glibをライブラリに追加しました。
・Marlin v1の設定変更
ArduinoIDEでMarlin v1を開いて、Cofiguration.hのタブを表示します。 Configuration.hの523行目のコメントアウトを削除します。
#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER (“//”を削除。)
僕は今まで”LCD2004 smart controller”を使っていて、513行目のコメントアウトを削除していたので、こちらはもとに戻しておきます。今まで使っていなければ変更する必要はありません。
//#define REPRAP_DISCOUNT_SMART_CONTROLLER (“//”を付ける。)
※ArduinoIDEは、バージョン”1.0.5-r2″を使っています。
・u8glibのダウンロードとライブラリへの追加
次にu8glibをダウンロードします。これは”Universal Graphics Library for 8 Bit Embedded Systems”というもので、表示形式を8bitに変換するライブラリのようです。Arduino用u8glibの最新版(現在はv1.16)をダウンロードします。
・u8glibのページ:https://code.google.com/p/u8glib/wiki/u8glib
・Arduino用u8glibのダウンロードページ:https://bintray.com/olikraus/u8glib/Arduino/view
次にMarlin v1を開いているArduinoIDEで、メニューの「スケッチ」→「ライブラリを使用」→「Add Library」を開いて、先ほどダウンロードした”u8glib_arduino_v1.16.zip “を選択して読み込ませます。zip形式で圧縮したままで大丈夫です。
これでライブラリにu8glibが追加され、先ほど開いたようにして見ると「Add Library」の一番下に「u8glib」が表示されます。
これでMarlinの設定は終わり。ArduinoIDEでMarlinをコンパイルしてRamps1.4に書き込めばFull Graphic Smart Controllerが使えるようになります。
ちょっと使いやすくする方法
さて、Marlinを書き換えてRamps1.4に新しいコントローラーを繋げて使ってみたのだけど、なんかちょっと使いづらい。
何が使いづらいかと言うと、以前に使っていた2004LCDのコントローラーとダイヤルを回す方向が逆なんです。下のメニューに移動しようとすると上に行くし、数値を上げようとすると下がるし、そのうち慣れるとは思うけどなんとなく気持ち悪いし勉強のためと思って調べて変更しました。
さらに数値を1づつ増減出来るようにして、クリック時のうるさいビープ音も停止させました。
・ダイヤルの方向を逆にする
Arduino IDEでMarlinを開いて、pins.hのタブを開きます。pins.hのタブはIDEの右上の方にある「▼」から選ぶことが出来ます。
pins.hの694行目と695行目のピンの番号31と33を逆にします。
#define BTN_EN1 33 (31から33に変更)
#define BTN_EN2 31 (33から31に変更)
これで、ダイヤルの方向は逆になります。
・クリック時のビープ音を停止する
こちらもダイヤルの方向変更と同じくpins.hを変更します。
pins.hの692行目の”37″を”-1″に変更。
#define BEEPER -1 (37から-1に変更)
#define BEEPERが37の時はenabled、-1の時はdissabledだそうです。
・ダイヤルを回した時に数値を1づつ増減させる
今度はまたconfiguration.hに戻ります。 configuration.hの547行目の次に以下の二行を追加します。
#define REPRAP_DISCOUNT_SMART_CONTROLLER (←547行目)
#define ENCODER_PULSES_PER_STEP 4 (←追加)
#define ENCODER_STEPS_PER_MENU_ITEM 1 (←追加)
これでダイヤルを回した時に数値を細かく設定することが出来ます。
※Full Graphic Smart Controllerが使えるようにする方法や、Marlinの設定変更方法はThomas SanladererのYouTube動画“3D printing guides – Setting up a LCD and SD card controller panel”を参考にしました。
画面は大きくなったものの表示内容はほぼ一緒
Full Graphic Smart ControllerのLCDの大きさはSmart Controllerのほぼ倍になっているしトップ画面もグラフィカルになっているけど、シングルノズルで使うのであればSmart Controllerと表示内容はほぼ一緒です。画面が大きくなった割には、設定項目の表示は4行から5行に一行増えただけだし。
でも新しいものを自分の3dプリンターに組み込むだけでも楽しいので満足しています。さて何をプリントしようかな?
※LCDは写真よりもずっと綺麗に見えます。
蒼木 says
2016年5月1日 at 5:23 PMお知恵を貸してほしいのですが、自分の持っている3DプリンターのLCDをFull Graphic Smart Controller 12864 に変更しようとしています。
しかしLCDのロータリーエンコーダーの作動がおかしいです。
左回りしか反応しないようです、3Dプリンターの電源を入れLCDのトップ画面にFR100%がありますが左に回せば数値が下がりますが、右に回しても数値が下がってしまいます。
marineの書き換えでピン番号の31,33を逆に書き換えたり同じ番号に書き換えたりすると右回りに反応し数値が大きくなりますが、左に回しても大きくなってしまいます。
左右どちらにも反応するようにmarineの書き換えで出来ないものでしょうか?
AKIRA says
2016年5月3日 at 12:10 AM蒼木さん、コメントありがとうございます。
ここらへんは全然詳しく無い(特にMarlinに関しては)のでお力にはなれないと思いますが、ちょっと調べてみた事を書きますね。
ロータリーエンコーダーを右に回しても左に回しても数値が下がる(上がる)ということは、ロータリーエンコーダーのパルスがうまく出ていないのでは無いでしょうか?ココを見てみるとロータリーエンコーダーのA相とB相からパルスが出ていて、それらの位相のずれで回転方向が分かるそうです。そこで僕が考えたことがロータリーエンコーダーのハンダ付けの不良です。Full Graphic Smart Controllerの裏側のロータリーエンコーダーの足が三つ並んだところのハンダ付けはどうでしょうか?ココらへんを確認してみてください。また、2本のケーブルのうち、EXP2のコネクタはキチンと接続されているでしょうか?コチラも確認してみてください。Full Graphic Smart Controllerの図面左下にあるEN1 BC111E5244B2と言うのがロータリーエンコーダーで、1(BTN_EN1)と3(BTN_EN2)がパルスが出ているところです。そして図面中央のEXP2がそれらとつながっているコネクタです。
知識不足でこの程度しか分からず大変申し訳ありません。まだ問題が解決しないようであれば、mixiのRepRapコミュニティや2ちゃんねるの3Dプリンター個人向け@電気・電子板あたりで質問してみてはいかがでしょうか?ハードルが高いかもしれませんが、詳しい人からアドバイスがあるかもしれません。
僕のFull Graphic Smart Controllerでロータリーエンコーダーを回してみましたが、きちんとFRの数値が上下しました。なので、一応僕が今使っているMarlin一式をココにアップロードしておきますので、参考にしてみてください。全部の設定が僕のプリンター用そのままです。
蒼木 says
2016年5月5日 at 7:47 PMAKIRAさん、お返事ありがとうございます。
ロータリーエンコーダーのハンダ付けは問題なく、コネクターのピンの接触が悪いかなと思いピンを少し曲げたりしてみましたがダメでした。
ロータリーエンコーダー自体の不良かなと思い交換しましたがダメでした。
marineの変更で改善しないみたいなので、LCDの基盤の不良かもしれないです。
別なのを購入してみたいと思います。
ありがとうございました。
n says
2023年7月19日 at 4:45 PMこのプログラムをコンパイルしてマイコンボードに書き込んでもうまく画面表示ができません。どうすればいいか教えていただいてもよろしいでしょうか?