結論
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バイト区切りで表示させています。
計測時は継続してデータが送られるため処理方法はこれから考えます。