V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
longmeier90
V2EX  ›  C#

客户让我用 c#给开发一个红外检测距离的小工具,不知道如何下手。

  •  
  •   longmeier90 · 2023-04-17 15:23:04 +08:00 · 2306 次点击
    这是一个创建于 622 天前的主题,其中的信息可能已经有所发展或是发生改变。

    1.目的是通过左右移动设备,红外模块输出高低电平。 2.开发的 c# 程序根据输出的高电平、低电平进行相关的操作。

    开发过这方面的大佬,有没有什么相关的 SDK 。

    红外模块(拼多多上买的,不提供 sdk ,是主板上插的那种 红外避障传感器) 3 块多钱

    13 条回复    2023-05-09 10:19:32 +08:00
    ilovey482i
        1
    ilovey482i  
       2023-04-17 15:24:37 +08:00
    这得看你那设备有无提供 SDK 文档了
    longmeier90
        2
    longmeier90  
    OP
       2023-04-17 15:29:43 +08:00
    @ilovey482i 红外避障传感器,不能直接使用,需要往主板上插的。拼多多上 3 块钱
    Eiden
        3
    Eiden  
       2023-04-17 15:37:56 +08:00
    买个带串口输出的模块
    Armor
        4
    Armor  
       2023-04-17 15:49:18 +08:00
    测距离还是要雷达精准一些,红外的买欧姆龙的
    xyfan
        5
    xyfan  
       2023-04-17 17:04:48 +08:00
    3 块钱的传感器能得到什么高精度结果,都不值得花时间写代码。
    找一找嵌入式方面的代码,根据红外信号测距应该有很多 C 代码可供参考,把整体逻辑改成 C#实现,不过 IO 驱动这部分得用板卡的 SDK 实现。
    aureole999
        6
    aureole999  
       2023-04-17 17:13:31 +08:00
    3 块钱的传感器是啥,就是有三个针脚的那种?
    你得有个树莓派或者 arduino 或者 esp 之类的开发板才能接吧,接上就很简单了,一条线供电,一条 GND ,一条输入读数就行。C#一般不行吧,用 C 或者 Micro python 之类的。
    longmeier90
        7
    longmeier90  
    OP
       2023-04-17 18:16:15 +08:00
    @aureole999 是的,我能不能用 USB-TLL 模块*1 、杜邦线*1 连接电脑进行测试
    aureole999
        8
    aureole999  
       2023-04-17 18:34:31 +08:00
    @longmeier90 我也不是专业的,但红外模块本身应该是不具备串口通讯的功能,所以我觉得不行。买个 NodeMCU 或者 D1 mini ,最好是焊好了引脚的,然后加 3 根杜邦线就行。再接电脑用 wifi 或者 usb 都可以了。
    l1ve
        9
    l1ve  
       2023-04-17 18:34:47 +08:00
    红外模块什么样的? TTL 协议还是电平输出还是 Modbus ?
    但看起来三块多钱我觉得就是个高低电平,如果你平台能读 IO 的话就直用平台的 SDK ,不行的话就要单独找个 AD 模块了。
    businessch
        10
    businessch  
       2023-04-17 19:21:33 +08:00 via iPhone
    有没这样一种工具,检测显示器前面有没有人,没人锁屏。
    aureole999
        11
    aureole999  
       2023-04-17 19:53:23 +08:00
    @businessch 人在传感器呗,毫米波,小贵。接入智能家居可以实现人走关屏。
    红外的话就很不准了,我曾经有一台显示器就带这个功能。
    LXGMAX
        12
    LXGMAX  
       2023-04-18 09:40:03 +08:00
    几块钱没什么协议,三个脚的就是一个红外接收三极管输出模拟信号,后面跟着一个电压比较器,达到一个电平就输出信号;要连接电脑就得再加一个小单片机识别然后转串口之类的,如果要识别具体数值就得引出模拟量接口或者换模块
    ybs123
        13
    ybs123  
       2023-05-09 10:19:31 +08:00
    首先,你需要准备一个能够读取红外模块输出信号的硬件设备,比如一块 Arduino 、一块树莓派等等。根据设备的型号,你需要相应的红外接收器模块和电路连接。

    接着,你需要编写一段 C# 程序,与硬件设备进行通信,并获取红外模块输出的信号。以下是一个简单的 C# 程序示例,可供参考:

    ```csharp
    using System;
    using System.IO.Ports;

    namespace IRDistanceDetector
    {
    class Program
    {
    static void Main(string[] args)
    {
    // 初始化串口
    SerialPort serialPort = new SerialPort("COM3", 9600);
    serialPort.Open();

    while (true) // 循环读取数据
    {
    string data = serialPort.ReadLine(); // 读取数据
    if (data.Contains("HIGH")) // 判断输出电平为高电平
    {
    // 进行操作
    Console.WriteLine("发现距离变化,当前距离为:xx cm");
    }
    }
    }
    }
    }
    ```

    在这个示例程序中,我们通过 SerialPort 类打开串口 COM3 ,并通过 ReadLine() 方法读取串口数据。每次读取到数据后,我们通过 Contains() 方法判断是否为高电平信号,如果是,就执行相关操作,比如输出当前距离。

    你需要根据自己的硬件设备和电路连接,调整程序中串口的参数。此外,你还需要找到红外模块输出信号的电平变化与实际距离的关系,以便将信号转换为距离值。

    希望这些信息能对你有所帮助。如果你还有任何问题,欢迎继续提问。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2720 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 14:55 · PVG 22:55 · LAX 06:55 · JFK 09:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.