【问题标题】:How to tell an IP address with 4 LEDs?如何用 4 个 LED 判断 IP 地址?
【发布时间】:2011-03-26 10:19:03
【问题描述】:

我正在使用 .NET Micro Framework 开发网络管理设备。由于想法是在办公室中拥有一堆设备,因此有时用户需要知道特定设备的 IP 地址。

所以我一直在尝试提出如何指示用户 IP 地址的想法。唯一的用户界面是 4 个 LED 灯,我可以以不同的速度闪烁。

到目前为止,我能想到的最好的想法是:看看 IP 地址是如何由 4 个部分组成的,而我有 4 个 LED,每个 LED 负责一个 IP 地址部分是有意义的。 所以对于像 192.168.0.34 这样的地址,我会让 LED1 闪烁一次,然后暂停,然后闪烁 9 次,暂停,然后闪烁 2 次。然后动作将转移到 LED2,它会以类似的方式闪烁 168,依此类推。数字 0 将通过真正快速闪烁半秒来表示。

还有其他想法吗?

【问题讨论】:

  • 好吧,如果您一次只使用一个 LED,那么您还不如只使用一个 LED。如果你想利用所有这些,你可以用二进制做一些事情(例如,获取地址的 32 位二进制表示并将其分成 8 个 4 位的块,然后使用所有 4 位一个接一个地显示LED - 0 关闭,1 开启)。如果可读性是一个问题,它会变得有点棘手......
  • 是否有用户触发的机制?您不希望它们连续闪烁。设备是什么 - 添加一个小型、廉价的 LCD 显示器会不会有其他好处?
  • @David 我可以以任何方式、形状或方式、一起或单独闪烁所有 LED。 @Rup,是的,有一种机制。没有 LCD 的原因是它增加的价值很少,但会增加大量成本。
  • @AngryHacker,您从未听说过 BIOS 错误哔声代码...如果用户无法正确获得 2 到 3 次哔声,您如何期望他们正确地获得 4 到 12 次闪烁? pchell.com/hardware/beepcodes.shtml
  • 至少有 50 种不同类型的日本手表使用 LED 来显示时间。我建议看看他们中的一些人如何实施他们的系统来了解你自己的。虽然多了两个 LED,你可以用基本乘法来组合 0-9。

标签: hardware ip-address .net-micro-framework


【解决方案1】:

为每个数字同时使用所有 4 个显示,以二进制显示。快速闪烁所有 4 个 0,点亮所有 4 个更长的时间来表示一个点。

[ ] [ ] [ ] [x] # 1
[x] [ ] [ ] [x] # 9
[ ] [ ] [x] [ ] # 2
[x] [x] [x] [x] # . (long)
[ ] [ ] [ ] [x] # 1
[ ] [x] [x] [ ] # 6
[x] [ ] [ ] [ ] # 8
[x] [x] [x] [x] # . (long)
[x] [x] [x] [x] # 0 (short)

或者,您可以使用未使用的数字(即:10)来表示 0

[ ] [ ] [ ] [x] # 1
[x] [ ] [ ] [x] # 9
[ ] [ ] [x] [ ] # 2
[x] [x] [x] [x] # . 
[ ] [ ] [ ] [x] # 1
[ ] [x] [x] [ ] # 6
[x] [ ] [ ] [ ] # 8
[x] [x] [x] [x] # . 
[x] [ ] [x] [ ] # 0 

对于不懂二进制的人来说,设备准备好查找表就足够了。

【讨论】:

  • 2 应该是 10 而不是 11(我的 4 最初也是错误的!)
  • 我的用户不太可能理解二进制。虽然真的很酷很聪明,但我严重怀疑我的用户是否会理解它,即使经过培训。
  • @AngryHacker 可以通过在设备旁边放置一个备忘单来缓解这种情况。而且真的没那么难学。为我做了一个星期……
  • Finger Binary。等等,这听起来很脏。
  • @Will,我确定有人写这篇文章只是为了在维基百科上展示一张 128 指二进制文件的照片。
【解决方案2】:

我会反其道而行之。从控制站,我会调出我的设备使用的所有 IP 的列表。然后,我会选择一个以易于识别的模式开始闪烁(如 1 2 3 4 一遍又一遍),直到关闭。这样我就可以问每个 LED 都像这样闪烁的人,并知道哪个设备拥有该 IP。

然后我会用魔法标记在设备底部写下 IP。 Sharpie 的带宽惊人。

【讨论】:

  • 我喜欢这个想法,但有时扫描网络以查找 IP 是有问题的(设备是否响应 ping?它们是 DHCP 并且可能会更改吗?)。另外,我不会在设备上写IP,因为它可能是DHCP,或者公司网络拓扑可能随时变化。
  • @jYelton 您可以随时使用 [广播数据包](en.wikipedia.org/wiki/Broadcasting_(computing) 让设备知道您正在寻找它们。但是,我的第一个网络应用程序之一使用广播数据包来通知安装这被严重滥用了....
【解决方案3】:

为用户提供一根安装良好的绳索,让用户可以像套索一样在空中摆动设备

Then flash the LEDs like a propeller clock


(来源:embedds.com

【讨论】:

  • 我实际上也在考虑这些方面。数字可以用 4 个 LED 来实现。但是,我认为您需要某种加速度计来检测运动。
【解决方案4】:

您也可以考虑使用二进制,一次显示一个数字。但这需要用户了解(或参加速成课程)二进制。

9: 1 0 0 1
8: 1 0 0 0
7: 0 1 1 1
6: 0 1 1 0
5: 0 1 0 1
4: 0 1 0 0
3: 0 0 1 1
2: 0 0 1 0
1: 0 0 0 1
0: 0 0 0 0

要表示小数点,您可以显示1 1 1 1。如果您有一个按钮或某种形式的用户交互以便您可以遍历数字,那将是理想的选择。

【讨论】:

  • 您的用户必须掌握快速翻译它的能力——我可以建议一个练习吗? xkcd.com/74
【解决方案5】:

您可以将数字转换为十六进制并以二进制形式打印出十六进制表示。

F: 1 1 1 1
E: 1 1 1 0
D: 1 1 0 1 
C: 1 1 0 0
B: 1 0 1 1
A: 1 0 1 0
9: 1 0 0 1 
8: 1 0 0 0 
7: 0 1 1 1 
6: 0 1 1 0 
5: 0 1 0 1 
4: 0 1 0 0 
3: 0 0 1 1 
2: 0 0 1 0 
1: 0 0 0 1 
0: 0 0 0 0 

192.168.0.34 变为 C0.A8.00.22。与@JYelton 提出的解决方案非常相似,只是进一步减少了个人从 LED 中读取信息所需的工作量。不过仍然需要一些翻译,因为您必须再次从十六进制转换为十进制(标准计算器是一种简单/方便的工具)。

【讨论】:

    【解决方案6】:

    我正在跳出框框思考.. 但我在这里看到的最大抱怨之一是翻译。拍摄视频(录制或预先录制)并进行解释的应用程序呢?这让我想起了可以读取upc代码的iphone应用。

    或者,但按照同样的想法,并行端口或 USB 呢?

    【讨论】:

      【解决方案7】:

      您为什么不使用外部 LCD 屏幕...不教用户二进制,您可以显示加载更多信息。如果您向我提供您正在使用的微框架设备,我可能会提供更详细的帮助。

      【讨论】:

      • 两行 LCD 屏幕的成本在 10 到 15 美元之间......这将节省很多与教用户理解二进制/十六进制相关的痛苦和努力。
      • 此外,allelectronics.com(加利福尼亚州的一家剩余电子零件公司)经常有像这样的廉价 LCD:allelectronics.com/make-a-store/item/LCD-111/24-X-1-LCD//1.html 这是一个 24x1 的液晶显示器,价格不到 2 美元,包括驱动程序。 24 个字符足以轻松显示 IP 地址(255.255.255.255)。
      • 使用 GHI Electronics 的嵌入式主芯片。 ghielectronics.com/product/108
      • 我无法证明在产品成本上增加 10-20 美元来解决本质上的故障是合理的。此外,硬件设计已经完成,所有这些额外的电路都没有空间。但是给了我其他产品的想法,所以感谢这个链接。
      【解决方案8】:

      根据您的用户的极客程度,您还可以使用:

      • Morse code
      • 将 IP 显示为二进制数字序列
      • ...

      【讨论】:

        【解决方案9】:

        如果它是 DHCP,并且他们可以访问设备 MAC 地址旁边的计算机上的设备 IP 地址列表,您可以在每台设备上写下 MAC 地址,然后他们就能知道哪个设备拥有哪个IP。

        如果您认为 MAC 地址对用户来说太不友好,那么您可以有一个 MAC 地址表,其中包含简短描述或设备名称。

        更重要的是,您可以编写一个程序,获取 MAC 地址旁边的 IP 地址列表,并将其与 MAC 地址旁边的设备名称表相匹配。

        【讨论】:

          【解决方案10】:

          如果您将其中一个 LED 替换为 IR LED,您可以为手机 IR 传感器编写一个应用程序,该应用程序解码并显示 IP 地址的二进制模式。

          【讨论】:

            【解决方案11】:

            如何广播 UDP 数据包并使用 winforms 应用程序来监听这些数据包。如果您有多个这样的设备,以下可能会起作用。

            1. 打开正在侦听正确端口的 Windows 客户端。
            2. 重置设备或按下设备上的按钮以激活 UDP 广播。
            3. 可能会结合该设备上的 LED 主动闪烁 1 分钟。
            4. Windows 客户端随后将接收 IP 地址和任何其他状态信息。

            此处可能有一个选项可以在设备中设置唯一 ID(1-16 二进制),该 ID 显示在设备上并与 IP 信息一起广播。 (??拨码开关??) 这避免了让用户解释 LED 的二进制闪烁。

            所以设备 1010 显示它的 LED,Windows 应用程序中的输出显示 开、关、开、关 = 192.168.0.150

            如果您对此感兴趣,使用 LED 开和关的图像会更好。

            我处于类似情况,尚未测试这些理论。

            【讨论】:

            • 我已经在 Netduino 上尝试过这种技术。我认为这两种协议(TCP/UDP)可以同时在不同的端口上处于活动状态,但是在我花在这个问题上的几个小时内却无法让它工作。所以至少要做到这一点很棘手。如果您只是想避免添加很少需要的显示器并且不使用网络连接,则此技术仍然非常有用。
            【解决方案12】:

            那么,IP 地址需要由机器还是由人来解释?因为您的建议是使用十进制数字,这对人类来说很棒,但对于计算机来说理解起来却非常复杂。

            IP 地址实际上只是一个 32 位二进制数。 IP 192.168.0.34 被路由器看到(并通过互联网广播)为 11000000 10101000 00000000 00100010

            如果您让计算机或其他硬件设备解释 IP 地址,我建议只使用二进制文件。您可以有一个灯显示下一个数字,另一个切换“就绪”灯以指示该数字实际上是下一个数字,而不是前一个数字的重复。这只需要 2 个 LED,您基本上会像这样显示上述地址:

            开启, 开关, 关闭, 关关, 关闭, 关关, 关闭, 关关, 开开, 关关, 开开, 关关, 开开, 关关, 关闭, 关关, 等等

            确保在读取第一位之前第二位已切换,否则您可能会读取两次相同的数字。

            如果您想使用四个 LED 来显示它以供人类解释,那么让 LED 根据数字闪烁可能会很困难,因为人类很难同时计算 4 个数字。如果您只是遍历所有数字 1、9、2、1、6、8、0、0、0、0、3、4(每个数字 3 位)并使用所有四个 LED 以二进制形式显示这些数字,可能会更容易.

            关闭关闭关闭, 开关关开, 关闭关闭关闭, 等等

            每句之间都有停顿。

            【讨论】:

              【解决方案13】:

              添加一个 LCD 显示器效果会非常好,但会增加很多成本。但是,如果使用 8 个 LED 而不是 4 个呢?如果您以 7 段带小数点的 LED 显示屏的形式购买 8 个 LED,它的成本可能不会超过 4 个离散 LED,但它可以让您按顺序显示 IP 地址的十进制数字。用户无需掌握复杂的翻译方案。

              【讨论】:

                【解决方案14】:

                这取决于您的环境,但我不会显示完整的 IP 地址,只显示相关的组件,并将其本身映射到单个 4 位数字。这假设您只需要唯一标识

                这样,您只需要指定一个本地映射,然后就可以通过本地内部网站查找实际 IP 地址。您可以使用此线程中已经描述的典型二进制策略让 LED 闪烁 4 位数字,并且应该很容易训练人们(设备上的适当标签)。

                【讨论】:

                  猜你喜欢
                  • 2013-11-07
                  • 1970-01-01
                  • 2013-07-30
                  • 2010-11-19
                  • 2014-03-27
                  • 1970-01-01
                  • 2014-08-23
                  • 2015-02-09
                  • 1970-01-01
                  相关资源
                  最近更新 更多