やりましたー!
-
小型卓上 CNC を用いて実験。本装置(ESPDuino+
魔改造CNC Shield)から 3 軸制御が可能であることを確認しました。 -
加えて、3.3V 入力を持つ Arduino 用 SD カードリーダー(5V 入力のみのリーダーもあるので注意、自分は買って繋いでから気付きました)の取り付けと読み取りにも成功!
-
さらに、microUSB から ESPDuino に給電している場合、Bluetooth 経由であれば CNC の無線制御も行けました。
- USB は携帯電話用アダプタから給電のみに使用、PC を繋がずに制御可能、Bluetooth 経由の ESPコマンドで SD カード内の G コードを読み取らせ、ヘッドを移動させることも出来ました。
自分が遭遇した問題
-
Wifi/WebUI 経由で動かそうとすると落ちる
-
DC プラグによる ESPDuino 給電時、動作が不安定
-
microUSB による ESPDuino 給電時、コネクタに少しでも触れると再起動する(接触不良?)
-
余計な振動をあたえた、余計な力を加えた場合もフリーズ/再起動する
割と振動に弱いのをどうしたものか。とはいえおとなしい用途向けの実験用としては十分ではあるのですが
今後の予定
-
GRBL-ESP32 をリビルドし、4 軸制御が可能か確認
-
Partition Scheme で “Huge APP” を選ばないとビルドが通らない原因を調査
-
You must select the Minimal SPIFFS (1.9MB APP with OTA/190KB SPIFFS) partition scheme under the Tools...Partition Scheme... menus, otherwise the firmware will not fit.
との記載があるので、Minimal SPIFFS で行けるはずなのに上手く行きません。
-
-
Probe 接続部が来ている IO39 はアナログ入力可能→GRBL_ESP32 を経由するアナログ出力距離計の接続テスト
-
ESPDuino 専用 CNC Shield の開発
おまけ、GRBL_ESP32 with Bluetooth
公式ドキュメント
公式おすすめの Android アプリ
https://zeevy.github.io/grblcontroller/index.html
SDカード内データの動作確認に用いた G-Code
※ SDカードのルート(/)に test.gcode
として保存。
実験時用いたコマンド
シリアルコンソール(USBシリアル)から
$Bluetooth/Name=ESP32_BT
$Radio/mode=BT
$System/Control=Restart
※ Wiki によると、ESP32 では Bluetooth と Wifi は排他的であり、BT と WLAN の併用は出来無いそうです。
Example: **$Bluetooth/Name=ESP32_BT**. This would set the Bluetooth name to "ESP32_BT".
Put the radio mode into Bluetooth mode with the **$Radio/mode=BT**. The ESP32 uses the same hardware for Wifi and Bluetooth, so only one can be used at a time.
A reboot is required to change radio modes. Reboot the ESP32 to turn on Bluetooth with that name. You can reboot by power cycling, pushing the reset button on the ESP32 module or sending the **$System/Control=Restart** command.
Grbl Controller(BTシリアル)から
$SD/Status
$SD/List
$SD/Run=/test.gcode
※ コマンド
$SD/Status:Get SD Card Status
$SD/List:Get SD Card Content
$SD/Run:Print SD file
再びシリアルコンソール(USBシリアル)から
$Radio/Mode=AP
$System/Control=Restart
※ Mode
- AP:AP for WiFi Access Point mode
- STA:STA for WiFi station mode
- BT:BT for Bluetooth
- NONE:OFF
※ Wiki の記述で $SD/Run が $#D/Run と書かれている箇所がありますが、恐らくは打ち間違え。$SD/Run=/test.gcode
で問題なく通りました。
※ SDカードから動かす場合、gcode ファイルや ncファイルの書き方によっては読み込みに失敗するようです。単なる G コードの羅列であれば割と上手く行く感触です。
※ 手元の iPad(第7世代)では GRBL_ESP32 の Bluetooth を拾ってくれませんでした。Windows 機も同様。Linux 機と Android スマホは行けました。
→SPP(Serial Port Profile)の取扱いについての OS 毎の差が原因と推測します。
参考
SPPでの接続方法とCOMポート番号の変更手順 | IODATA アイ・オー・データ機器
https://www.iodata.jp/support/qanda/answer/s30213.htm
Serial Port Profile - Bluetooth (Is it possible on iPhone?) | Apple Developer Forums
https://developer.apple.com/forums/thread/37608
追伸
うーん、SD 関連では色々難しい話があります。なんだかなぁ。
SD アソシエーションへの加入 - SD Association
https://members.sdcard.org/jp/join/
ねむいさんのぶろぐ | いろいろ試す25
http://nemuisan.blog.bai.ne.jp/?eid=220698
ESP32 ( ESP-WROOM-32 ) で micro SDHC メモリカードを使う場合の注意点 | mgo-tec電子工作
https://www.mgo-tec.com/blog-entry-esp32-wroom-micro-sdhc-01.html
MMC/SDCの使いかた
http://elm-chan.org/docs/mmc/mmc.html
Arduino IDE添付のSDライブラリの修正: 猫にコ・ン・バ・ン・ワ
とりあえず、MMC 対応だよん、と言っておけば大丈夫なのかな?
↓
CMD1による初期化ルーチン
が大切(from ねむいさんのぶろぐ)みたいっす。
↓
↑こちらに CMD1 関連が入っているか確認してみます。
Arduino SD Library support for MMC Cards – A BIT OF MYSTERY
↑こちらの方のポストに SD Library for Arduino に “古代の” MMC へのサポートを加える具体的な話が載っていました。これを現行の SD Library に適用、手持ちの ancient な MMC を認識出来ることを確認することで、個人開発であっても何とか言い訳が出来そうです。
ねむいさんのぶろぐ | いろいろ試す26
http://nemuisan.blog.bai.ne.jp/?eid=220939
↑ふたたびねむいさんのブログを眺めると、実際の試行錯誤の過程が。
うーむ。実際に CMD1 初期化が通るカードを用意した上でこれらソースを元に色々試すとしますか。