最新情報

GRBLをESP32で無線 (Bluetooth) 化

CNCのGRBL基板、パソコンと有線接続なので、これを無線化にチャレンジ。

現行システムは、GRBLマイコンのATMEGA328Pからのシリアル信号を
秋月電子さんのAE-FT231Xを介してパソコンにUSB接続しています。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

「ESP32-Devkit」でBluetoothのシリアル通信ができるそうなので、トライしてみます。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ブレッドボードでテスト。

ATMEGA328Pは「5V」、ESP32-Devkitは「3.3V」

注意点はここくらいでしょう。

 

いろいろネットで調べていると、ESP32でBluetooth経由の通信を試みている
nWorldさんのホームページがありました。

nWorld: ESP32のBluetoothでSPPを使ってみた (firtel.blogspot.com)

 

有難く、コピー 参考にさせていただきました。

シリアル1で受信したものをBluetoothで飛ばし
Bluetoothで受信したものをシリアル1に吐き出すだけです。

nWorldが「RN-42」ライクなLED表示にしてくれているので
そのまま利用させていただいております。

 

 

 

 

//———————————————
//  2022/10/07      Ver 1.00
//  ESP32 Blutooth  <———-> UART(TTL)
//  ESP32Devkit 26pin RX    —–   Tx
//  ESP32Devkit 27pin Tx    —–   Rx
//
//  Daiyu Kano
//———————————————
#include <Arduino.h>
#include “BluetoothSerial.h”
#include “Ticker.h”
BluetoothSerial SerialBT;
Ticker ticker;
#define BUILTIN_LED 23      // BluetoothインジケーターLED
//———————————————
void ledBlink() {
  volatile static int led = HIGH;
  digitalWrite(BUILTIN_LED, led);
  led = !led;
}
//———————————————
void callbackBT(esp_spp_cb_event_t event, esp_spp_cb_param_t *param) {
  if (event == ESP_SPP_SRV_OPEN_EVT) {
    //接続後LEDを点滅→点灯
    ticker.detach();
    digitalWrite(BUILTIN_LED,HIGH);
  }else if (event == ESP_SPP_CLOSE_EVT) {
    //切断後LEDを点滅させる
    ticker.attach(0.5, ledBlink);
  }
}
//———————————————
void setup() {
    pinMode(BUILTIN_LED, OUTPUT);           //BluetoothインジケーターLED
    Serial.begin(115200);
    Serial1.begin(115200, SERIAL_8N1, 26, 27);  // 26pin=Rx 27pin=Tx
    //BluetoothのMACアドレス取得?
    uint8_t macBT[6];
    esp_read_mac(macBT, ESP_MAC_BT);
    //BluetoothのMACアドレスの下4桁を使用して固有のデバイス名作成
    char btname[17];
    sprintf(btname,”ESP32-GRBL-%02X%02X”,macBT[4],macBT[5]);
    //Bluetoothのcallback関数設定
    SerialBT.register_callback(callbackBT);
    //先ほど作成したデバイス名でBluetooth開始
    if(SerialBT.begin(btname)){
    //Bluetoothが開始できたらLED点滅開始(接続待ち)
    ticker.attach(0.5, ledBlink);
    }
}
void loop() {
    if (Serial1.available()) {      // シリアル1 から来たデータを
        char ch=Serial1.read();     // シリアル0(USB) と
        Serial.write(ch);           // Bluetooth へ
        SerialBT.write(ch);
    }
    if (SerialBT.available()) {     // Bluetooth から来たデータを
        char ch=SerialBT.read();    // シリアル0(USB) と
        Serial1.write(ch);          // シリアル1 へ
        Serial.write(ch);
    }
}

回路図は、こんな感じ。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

なんの工夫もありません。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

基板に実装し、取り付けました。

ノートパソコンはもちろんの事、スマホからでも操作ができるで便利です。

 

加納大裕

 

最新の投稿記事

加納製作所の商品開発

  • 薪ストーブ
  • メッキアノード
  • 粉体塗料
  • ミニトマト選別機

開発でお悩みの方、

まずは新たな発想を生む
私達の開発環境へお越しください。
知識・経験・ノウハウがそのお悩みを解決します。

開発のご相談