Arduino Web Server并检测网络连接丢失

时间:2013-03-09 23:35:46

标签: networking webserver arduino ethernet

我有一个带有以太网屏蔽的arduino,我希望能够检测到网络连接丢失(即,如果有人断开以太网电缆与arduino的连接)。我在网上看了看,但没找到任何东西。即使在拔下电缆后,以太网全局对象的IP地址也保持不变。任何建议都非常感谢!

2 个答案:

答案 0 :(得分:1)

我可以想到两种粗暴的方式和一种艰难的方式。首先是粗暴的方式:

DHCP请求

请求新的DHCP地址并检查是否失败(假设IP地址是动态分配的)。失败可能意味着电缆已断开连接(或者您的DHCP服务器已被断开:)

if (Ethernet.maintain() % 2 == 1) {
    // Cable disconnected or DHCP server hosed
}

平/连接

Ping一个已知地址,也许是路由器。如果它失败,则无法连接,因为电缆已拔下或出于其他一系列原因(路由器关闭,网络连接等)。

如果您未间隔连接某些服务以检测电缆移除,则可以执行ping或DHCP续订方法。

链接

看起来W5100(这个以太网屏蔽的核心)有一个LINKLED信号,它不会通过其寄存器使处理器可用。如果您愿意将电线焊接到屏蔽层上,您可以自己构建断路检测器。显而易见的选择是LINKLED,然而,它在TX / RX活动期间闪烁。因此,如果您知道自己处于100Mbps网络状态,则可以将电线焊接到SPDLED(RJ45连接器正下方),但我无法确定您应该焊接到哪一侧。 SPDLED处于低电平有效状态,因此您可以抓住万用表,并在LED熄灭时找出它最接近0V的哪一侧。然后,您可以将此线路连接到您的Arduino和digitalRead()

答案 1 :(得分:0)

我有一些不能容忍公共IP地址更改的网络硬件(如果需要,则需要重新启动)。此代码将检测到以太网电缆已断开以及公共IP地址的更改。存根任务可用于根据公共IP地址的获取或更改采取行动。我正在使用W5500电路板,该电路板已硬连线至Arduino PRO(即不是屏蔽层),并且效果很好。随意使用它。

    /*
        ---------------------------------------- IMPORTANT ----------------------------------------

ExpectedCondition