nanoFramework.Iot.Device.LidarLiteV3 1.2.613

前缀已保留
dotnet add package nanoFramework.Iot.Device.LidarLiteV3 --version 1.2.613                
NuGet\Install-Package nanoFramework.Iot.Device.LidarLiteV3 -Version 1.2.613                
此命令旨在在 Visual Studio 的包管理器控制台中使用,因为它使用 NuGet 模块的 Install-Package 版本。
<PackageReference Include="nanoFramework.Iot.Device.LidarLiteV3" Version="1.2.613" />                
对于支持 PackageReference 的项目,将此 XML 节点复制到项目文件中以引用包。
paket add nanoFramework.Iot.Device.LidarLiteV3 --version 1.2.613                
#r "nuget: nanoFramework.Iot.Device.LidarLiteV3, 1.2.613"                
#r 指令可用于 F# Interactive 和 Polyglot Notebooks。将其复制到交互式工具或脚本的源代码中以引用包。
// Install nanoFramework.Iot.Device.LidarLiteV3 as a Cake Addin
#addin nuget:?package=nanoFramework.Iot.Device.LidarLiteV3&version=1.2.613

// Install nanoFramework.Iot.Device.LidarLiteV3 as a Cake Tool
#tool nuget:?package=nanoFramework.Iot.Device.LidarLiteV3&version=1.2.613                

LidarLiteV3 - LIDAR 脉冲式测距传感器

此设备属于一种称为脉冲式测距的传感器类别,通过计算主电磁波信号发射和反射回传信号之间的时间延迟来测量距离。与流行的基于超声波的 HC-SR04 不同,此设备使用低功率激光。优点是距离更长(达 40m),但主电磁波信号反射体表面更容易造成误差。

文档

官方手册和技术规格

用法

重要:在创建 I2cDevice 之前,确保正确设置了 I2C 引脚,特别是对于 ESP32,确保已安装 nanoFramework.Hardware.ESP32 nuget

//////////////////////////////////////////////////////////////////////
// when connecting to an ESP32 device, need to configure the I2C GPIOs
// used for the bus
Configuration.SetPinFunction(21, DeviceFunction.I2C1_DATA);
Configuration.SetPinFunction(22, DeviceFunction.I2C1_CLOCK);

对于其他设备(例如 STM32),请确保您正在使用您想要的 I2C 总线预设的引脚。

简单使用

using (var llv3 = new LidarLiteV3(CreateI2cDevice()))
{
    // Take 10 measurements, each one second apart.
    for (int i = 0; i < 10; i++)
    {
        Length currentDistance = llv3.MeasureDistance();
        Debug.WriteLine($"Current Distance: {currentDistance.Centimeters} cm");
        Thread.Sleep(1000);
    }
}

I2cDevice CreateI2cDevice()
{
    var settings = new I2cConnectionSettings(1, LidarLiteV3.DefaultI2cAddress);
    return I2cDevice.Create(settings);
}

电源模式

可以通过 GPIO 引脚控制对设备的电源。使用可选的构造函数参数指定 GPIO 控制器和电源启用引脚号(编号方案取决于 GpioController)。

int powerEnablePin = 13;
using (var llv3 = new LidarLiteV3(CreateI2cDevice(), new GpioController(), powerEnablePin))
{
    // Power off the device.
    llv3.PowerOff();
    // Device is completely turned off.
    Debug.WriteLine("Device is off.");
    Thread.Sleep(5000);
    // Power on the device, device is ready in ~22ms.
    Debug.WriteLine("Device is on.");
    llv3.PowerOn();
    // Sleep 50ms.
    Thread.Sleep(50);
    // Get a reading.
    Length currentDistance = llv3.MeasureDistance();
    Debug.WriteLine($"Current Distance: {currentDistance.Centimeters} cm");
}

还可以禁用接收电路(节省 40 mA)或将设备置于睡眠状态(节省 20 mA)。然而,建议使用电源启用引脚,因为初始化时间只短 2 毫秒。

using (var llv3 = new LidarLiteV3(CreateI2cDevice()))
{
   llv3.PowerMode = PowerMode.Sleep;
}

重复模式

与按需获取测量结果不同,设备可以被配置为重复n次,或者无限重复。

通过传递模式(OffRepeatRepeatInfinitely)、循环次数(如果模式是Repeat)以及测量之间的延迟(默认为10 Hz)来配置SetMeasurementRepetitionMode。延迟为20时大约是100 Hz

在设置重复模式后,使用Distance获取当前Length值。使用DifferenceBetweenLastTwoDistances来获取速度读数。负值表示对象正朝设备移动,正值表示正远离。这个值取决于延迟,默认的10 Hz大约为0.1 m/s。

using (var llv3 = new LidarLiteV3(CreateI2cDevice()))
{
    llv3.SetMeasurementRepetitionMode(MeasurementRepetitionMode.RepeatIndefinitely);

    while(true)
    {
        Thread.Sleep(5);
        Length currentDistance = llv3.Distance;
        Length currentVelocity = llv3.DifferenceBetweenLastTwoDistances;
    }
}

更改I2C地址

默认情况下,设备地址为0x62。可以将此地址更改为解决与其他设备的冲突或运行多个设备。

可用的地址是7位值,最低位为0。

using (var llv3 = new LidarLiteV3(CreateI2cDevice()))
{
    // Set device from default `0x62` to `0x68`
   llv3.SetI2cAddressAndDispose(0x68);
}

// Connect to the device again with the new address.
var settings = new I2cConnectionSettings(1, 0x68);
var i2cDevice = I2cDevice.Create(settings);

using (var llv3 = new LidarLiteV3(i2cDevice))
{
   // ...
}

优化

默认设置应该能够很好地工作,但可以做一些调整来调整设备。有关更多详细信息,请参阅用户手册。

更改采集次数

为了隔离信号噪声,设备执行一系列采集,并将结果累加,直到找到峰值。可通过MaximumAcquisitionCount配置采集次数(默认为128)。

较少的采集次数会导致测量速度更快,但限制最大范围并产生更多错误读数。这个数字大致与采集率为n/count和n^(1/4)相关。

using (var llv3 = new LidarLiteV3(CreateI2cDevice()))
{
    llv3.MaximumAcquisitionCount = 100
}
快速终止模式

快速采集读数,但错误读数的可能性略高。

using (var llv3 = new LidarLiteV3(CreateI2cDevice()))
{
    llv3.AcquistionMode |= AcquistionMode.EnableQuickTermination;
}
检测灵敏度

可以通过AlgorithmByPassThreshold配置找到峰值时的阈值。默认情况下,这是0,使用内部算法确定阈值。

建议的默认值是32以提高灵敏度但增加错误读数,以及96以减少错误读数并降低灵敏度。

using (var llv3 = new LidarLiteV3(CreateI2cDevice()))
{
    llv3.AlgorithmBypassThreshold = 32
}

MCU布线

设备通过I2C进行通信,尽管设备支持PWN模式,但尚未实现。

MCU上的I2C布线

LidarLiteV3布线 MCU GPIO引脚(物理编号)
5V(红色) 5V
接地(黑色) 接地
电源启用(橙色) 可选,可用的IO引脚
模式控制(黄色) 未使用
I2C SCL(绿色) SCL
I2C SDA(蓝色) SDA
产品 兼容和额外的计算目标框架版本。
.NET Framework net 兼容。
兼容目标框架
包含的目标框架(在包中)
有关更多信息和目标框架以及.NET Standard,请查看详细信息。

NuGet包

此包不用于任何NuGet包。

GitHub仓库

此包不用于任何流行的GitHub仓库。

版本 下载 最后更新
1.2.613 56 8/9/2024
1.2.601 48 7/26/2024
1.2.590 70 7/17/2024
1.2.573 76 6/19/2024
1.2.570 71 6/14/2024
1.2.560 83 5/29/2024
1.2.548 85 5/15/2024
1.2.536 109 4/15/2024
1.2.514 101 3/22/2024
1.2.494 88 2/28/2024
1.2.474 110 1/24/2024
1.2.462 142 1/5/2024
1.2.458 116 12/20/2023
1.2.436 148 11/10/2023
1.2.416 106 11/8/2023
1.2.403 127 10/6/2023
1.2.396 106 9/27/2023
1.2.384 130 9/6/2023
1.2.378 134 8/16/2023
1.2.369 133 8/2/2023
1.2.363 134 7/28/2023
1.2.357 129 7/19/2023
1.2.354 145 7/14/2023
1.2.345 146 6/21/2023
1.2.341 146 6/14/2023
1.2.337 170 6/7/2023
1.2.335 142 6/2/2023
1.2.329 150 5/26/2023
1.2.313 148 5/12/2023
1.2.302 177 5/10/2023
1.2.297 176 5/3/2023
1.2.273 243 3/17/2023
1.2.267 259 3/10/2023
1.2.263 255 3/8/2023
1.2.259 260 2/27/2023
1.2.256 270 2/24/2023
1.2.253 286 2/22/2023
1.2.222 306 1/9/2023
1.2.212 309 1/5/2023
1.2.208 309 1/3/2023
1.2.203 298 12/28/2022
1.2.159 372 11/14/2022
1.2.153 383 11/5/2022
1.2.141 402 10/25/2022
1.2.122 449 10/12/2022
1.2.114 406 10/8/2022
1.2.95 454 9/22/2022
1.2.87 503 9/15/2022
1.2.73 436 9/8/2022
1.2.63 428 9/3/2022
1.2.47 435 8/15/2022
1.2.40 459 8/6/2022
1.2.38 447 8/5/2022
1.2.28 459 8/1/2022
1.2.13 457 7/24/2022
1.2.10 453 7/23/2022
1.1.142.3202 480 7/7/2022
1.1.133.52556 459 6/30/2022
1.1.121.35854 474 6/26/2022
1.1.116.8772 440 6/24/2022
1.1.113.2032 440 6/23/2022
1.1.102.51394 458 6/15/2022
1.1.99.36719 450 6/14/2022
1.1.97.17326 465 6/13/2022
1.1.92.53000 456 6/8/2022
1.1.72.29765 456 5/31/2022
1.1.64.21380 457 5/26/2022
1.1.54.28879 462 5/23/2022
1.1.40 455 5/5/2022
1.1.3 489 4/15/2022
1.1.1 471 4/14/2022
1.0.300 471 3/31/2022
1.0.277-preview.126 119 3/25/2022
1.0.277-preview.125 114 3/25/2022
1.0.277-preview.116 100 3/22/2022
1.0.277-preview.115 101 3/21/2022
1.0.277-preview.112 106 3/19/2022
1.0.277-preview.110 113 3/18/2022
1.0.277-preview.105 113 3/15/2022
1.0.277-preview.99 120 3/10/2022
1.0.277-preview.98 112 3/8/2022
1.0.277-preview.89 112 2/27/2022
1.0.277-preview.87 106 2/26/2022
1.0.277-preview.77 114 2/18/2022
1.0.277-preview.75 109 2/16/2022
1.0.277-preview.73 120 2/12/2022
1.0.277-preview.70 113 2/10/2022
1.0.277-preview.65 106 2/9/2022
1.0.277-preview.53 127 1/31/2022
1.0.277-preview.41 122 1/28/2022
1.0.277-preview.32 132 1/27/2022
1.0.277-preview.30 126 1/27/2022
1.0.277-preview.17 130 1/24/2022
1.0.277-preview.15 115 1/21/2022
1.0.277-preview.13 119 1/21/2022
1.0.277-preview.1 132 1/11/2022
1.0.272 479 1/10/2022
1.0.259 333 12/9/2021
1.0.258 318 12/7/2021
1.0.218 196 10/18/2021
1.0.157 353 9/4/2021
1.0.155 330 8/31/2021
1.0.153 349 8/14/2021
1.0.151 370 8/6/2021
1.0.146 330 7/22/2021
1.0.136 405 7/17/2021
1.0.135 160 7/16/2021
1.0.134 167 7/15/2021
1.0.133 190 7/14/2021
1.0.130 160 7/6/2021
1.0.129 167 7/6/2021
1.0.127 177 7/5/2021
1.0.125 186 7/5/2021
1.0.122 205 6/30/2021
1.0.121 197 6/29/2021
1.0.119 221 6/28/2021
1.0.111 175 6/14/2021
1.0.105 272 5/29/2021
1.0.104 236 5/29/2021
1.0.97 169 5/28/2021
1.0.63 168 5/26/2021
1.0.34 159 5/24/2021