多台TFmini-I²C在Arduino使用的参考方案

多台TFmini-I²C在Arduino使用的参考方案

概述

本方案使用4台TFmini-I²C雷达,通过一组I²C总线在Arduino UNO开发板进行接收数据。
I²C通讯采用主从模式,Arduino开发板作为主机,TFmini-I²C作为从机。每一台TFmini配置为独立的地址,主机查询对应地址的TFmini的数据并等待数据返回。

测试工具

  • TFmini-I²C,4台
    多台TFmini-I²C在Arduino使用的参考方案_第1张图片
  • Arduino UNO开发板,1块;

多台TFmini-I²C在Arduino使用的参考方案_第2张图片

  • 5VDC/2A电源,1个;
  • 杜邦线,若干。

连接测试

  1. 设置TFmin-I²C地址

设置方法可参考《产品说明书》。本方案将4台TFmini的从机地址分别设置为0x10、0x11、0x12和0x13。

  1. 连接

注意:因为电脑USB接口输出电流有限,接多台TFmini同时使用需要外接5V供电。同时雷达与Arduino开发板需要共地。
多台TFmini-I²C在Arduino使用的参考方案_第3张图片

  1. Arduino参考代码
/*This is a reference code about Arduino UNO receive TFmini-I²C Data from I²C bus
 * Arduino is Master, TFmini-I²C is slave. Master send check 
 * Author:zhaomingxin@Benewake
 * Update date:2019.4.28
 */
#include 
void setup() {
  Wire.begin();        // join i2c bus (address optional for master)
  Serial.begin(115200);  // start serial for output
  pinMode(LED_BUILTIN, OUTPUT);//LED
}
void loop() {
  Get_LidarDatafromIIC(0x10);
  Get_LidarDatafromIIC(0x11);
  Get_LidarDatafromIIC(0x12);
  Get_LidarDatafromIIC(0x13);
  delay(250);
  digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(250); 
  digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
}
void Get_LidarDatafromIIC(byte address){
  char i = 0; 
  byte rx_buf[7] = {0}; 
  Wire.beginTransmission(address); // Begin a transmission to the I2C Slave device with the given address. 
  Wire.write(1); // Reg's Address_H 
  Wire.write(2); // Reg's Address_L 
  Wire.write(7); // Data Length 
  Wire.endTransmission(0);  // Send a START Sign 
  Wire.requestFrom(address, 7); // request 7 bytes from slave device address
  //print the result via serial
  Serial.print("Address=0x");
  Serial.print(address,HEX);
  Serial.print(":   ");
   while ( Wire.available()) 
  { 
    rx_buf[i] = Wire.read(); // received one byte 
    Serial.print("0x");
    Serial.print(rx_buf[i],HEX);
    Serial.print(";");
    i++; 
    if(i>=7)
    {
      i=0;
      Serial.print("---------->");
      Serial.print("Distance=");
      Serial.print(rx_buf[3]*256+rx_buf[2]);
      Serial.print(";");
      Serial.print("Strength=");
      Serial.print(rx_buf[5]*256+rx_buf[4]);
    }
  }
  Serial.print("\r\n"); 
}

测试效果

Arduino通过I²C总线查询雷达数据,再通过串口将数据打印出来。
多台TFmini-I²C在Arduino使用的参考方案_第4张图片
多台TFmini-I²C在Arduino使用的参考方案_第5张图片

你可能感兴趣的:(多台TFmini-I²C在Arduino使用的参考方案)