LoginSignup
3
0

More than 1 year has passed since last update.

ESP32でYDLidar GS2を動かす①

Posted at

結論

BaudRate を921600にしたらURAT通信できるのです!!
しかしこのことはDeveropmentマニュアルには書いていないのです!

配線

下記のようにつなげればOKです。

《ESP32》 - 《GS2センサー》
Rx(16ピン) - Tx
Tx(17ピン) - Rx
3.3V - Vcc
GNG - GND

ESP32からの電流供給量が足りるか不安でしたが、
3台繋げても計測開始されるところまでは確認できました。
コネクタのタイプはJSTのZHコネクタが入ります。

参考コード

参考コード
// 各コマンド
uint8_t sensorCount[] = {0xA5, 0xA5, 0xA5, 0xA5, 0x00, 0x60, 0x00, 0x00, 0x60};
uint8_t sensorVer[] = {0xA5, 0xA5, 0xA5, 0xA5, 0x00, 0x62, 0x00, 0x00, 0x62};
uint8_t sensorParam[] = {0xA5, 0xA5, 0xA5, 0xA5, 0x00, 0x61, 0x00, 0x00, 0x61};
uint8_t scanStart[] = {0xA5, 0xA5, 0xA5, 0xA5, 0x00, 0x63, 0x00, 0x00, 0x63};
uint8_t scanStop[] = {0xA5, 0xA5, 0xA5, 0xA5, 0x00, 0x64, 0x00, 0x00, 0x64};
uint8_t reset[] = {0xA5, 0xA5, 0xA5, 0xA5, 0x00, 0x67, 0x00, 0x00, 0x67};

void setup()
{
  // ArduinoIDEのシリアルモニタはBoudRateが921600に対応していなかったため、SerialとSerial2で役割を分けました
  Serial.begin(115200); // シリアルモニタに出力用
  Serial2.begin(921600); // YDLidarGS2との通信用
 
 // コマンドをバイナリで送信する ここでは接続しているセンサー数をチェックするコマンドを送信した例
  Serial2.write(&sensorCount[0], sizeof(sensorCount));
}

void loop() {
  // 受信したバイナリデータ1バイト分を区切って16進数表記した例
  if (Serial2.available() >= 1) // 1バイトのデータが到着した場合
  {                                  
    int binaryData = Serial2.read(); // シリアルから1バイト読み込み
    Serial.print("0x");              // 16進数表記のプレフィックス
    Serial.println(binaryData, HEX); // 16進数で表示
  }
}

各コマンドによって送られてくるバイト数が異なるため、参考コードでは1バイト区切りで表示させています。
計測時は継続してデータが送られるため処理方法はこれから考えます。

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0