#第六届立创电赛#智能网络看门狗 - 嘉立创EDA开源硬件平台

编辑器版本 ×
标准版 Standard

1、简单易用,可快速上手

2、流畅支持300个器件或1000个焊盘以下的设计规模

3、支持简单的电路仿真

4、面向学生、老师、创客

专业版 professional

1、全新的交互和界面

2、流畅支持超过3w器件或10w焊盘的设计规模,支持面板和外壳设计

3、更严谨的设计约束,更规范的流程

4、面向企业、更专业的用户

标准版 #第六届立创电赛#智能网络看门狗

  • 3.9k
  • 6
  • 3

暂无简介

开源协议: GPL 3.0

(未经作者授权,禁止转载)

创建时间: 2021-05-26 10:00:27
更新时间: 2023-03-29 16:59:59
描述

1、项目功能介绍


智能网络看门狗是监控网络中的设备并在其异常时为其重启的一个小设备。智能网络看门狗通过对网络中设备(交换机、路由器、无线路由器、其他网络设备等)进行ping操作,从而判断该网络节点是否正常。当其多次ping不通时,通过继电器的掉电和上电对其进行重启。其中,对交换机、路由器等网络组网关键设备的意义更大, 这些设备如果在运行期间不幸死机,就会做成网络的瘫痪,因此使用网络看门狗对其进行监控有着一定的实用意义。

 

本项目实用模块ESP32-WROVER-E为主控,其具有的wifi和以太网功能能满足对有线网络和无线网络的监控,官方提供的物联网开发框架ESP-IDF使用也很方便,提供很多实用的API,节省了很多开发的时间,同时丰富的例程也为功能的开发提供很好的参考。使用该主控还有一个重要的原因,就是我想顺便学习如何使用ESP32,日后方便搞点事情,嘿嘿。以太网phy使用dp83848ksqQFN封装,体积较小。通过2GPIO控制两个继电器,常开和常闭接口都引出,方便实用。电源部分使用lm2596ams1117-3.3,提供5V3.3V。

 

本项目电路板会自建一个AP,用手机或电脑连接后,可通过Web配置电路板的参数。有线以太网和无线STA作为两个独立的网卡,均可独立配置参数,Web网页采用Bootstrap前端架构来开发,通过GetPost方式与程序进行交互。可配置的参数包括:

1)有线以太网使能

2)有线以太网DHCP开启与否

3)有线以太网IP地址

4)有线以太网网关地址

5)有线以太网子网掩码

6)有线以太网MAC地址

7)有线以太网Ping目标地址

8)有线以太网Ping周期

9)有线以太网最大Ping次数

10)有线以太网Ping关断时间

11)有线以太网Ping重启时间

12)Wifi STA使能

13)Wifi STA SSID

14)Wifi STA 密码

15)Wifi STA DHCP开启与否

16)Wifi STA IP地址

17)Wifi STA网关地址

18)Wifi STA子网掩码

19)Wifi STA MAC地址

20)Wifi STA Ping目标地址

21)Wifi STA Ping周期

22)Wifi STA最大Ping次数

23)Wifi STA Ping关断时间

24)Wifi STA Ping重启时间

25)Wifi AP SSID

26)Wifi AP 密码

27)继电器0绑定规则

28)继电器1绑定规则

 

Ping周期:在正常情况下,主机向目标发起一次Ping测试的时间间隔。

最大Ping次数:Ping不通时重试的最大次数。

Ping关断时间:Ping测试失败后,会关闭继电器,过一段时间才重新开启,这个间隔的时间就是Ping关断时间。

Ping重启时间:当继电器关闭后重启,要过一段时间再重新进行Ping测试,这段时间给与目标重启的时间,这段时间叫Ping重启时间。

继电器绑定规则:继电器能绑定在有线以太网、wifi sta ping测试失败后进行动作,可绑定为有线以太网、wifi sta、有线以太网或wifi sta、有线以太网与wifi sta

 

电路板会按照配置的参数向目标地址发起Ping测试,Ping不通时,会进行限制次数内重试,如果还是不通,则判为Ping测试失败。之后会按照继电器规则关断继电器,一段时间后重新打开,再一段时间后重新开始Ping测试。

2、项目属性


原创/首次公开/没在其他比赛中获奖

3、开源协议


GPL3.0

 

4、硬件部分


电路板PCB使用KiCAD来设计,分为ESP32-WROVER-E模块最小系统模块、电源模块、网口模块和继电器模块。

ESP32-WROVER-E模块最小系统模块

模块最小系统的设计难度不大,按照数据手册来就行,这里使用IO33来控制运行灯,通过排针J3引出UART0,用于下载程序和调试程序,感觉一般的开发不用用到jtag接口来跟踪,esp-idf的串口debug能力已经足够好用了。J2引出boot脚,因为这里RMII接口使用了这个脚,用排针引出,跳线帽选择,下载程序时接地,运行时接CLK

 

电源模块

继电器驱动需要5V,其他芯片需要3.3V,这里使用lm2596s-5ams1117-3.3提供,允许7-40V输入。

 

网口模块

网口PHY使用dp83848ksq,网口使用HR911105A,设计一定要仔细看数据手册。这里使用ESP32发生的50MHZ时钟作为dp83848ksq的的时钟,中间需要经过一个非门。

 

继电器模块

采用一个三极管bc817去驱动继电器,同时并联一个led作为显示,并联一个二极管方便电流回流。

 

5、软件部分


软件开发环境:eclipse2020+esp-idf v4.2(编译时请关闭360~

Web网页:bootstrap+jquery

软件部分有主程序、网络模块、参数模块、继电器驱动模块、web模块组成。

 

网络模块

网络模块负责读取网络参数,然后通过网络参数调用apiethstaap进行初始化,同时定义一些处理网络基本的回调函数。

 

参数模块

参数模块使用nvs_flash api,在flash中对参数进行读写以及默认的设置。

 

继电器驱动模块

继电器驱动模块封装了一些GPIO初始化和置位的函数。

 

Web模块

Web模块使用http_server api,定义对应的url以及完成相应的回调函数。包括读参数、写参数、设置默认参数。

 

主程序

主程序采用状态机机制,状态机的状态切换图如下。

程序过程分成四个状态:空闲态、测试态、关断态、重启态。

在空闲态中,以系统时间戳为参考,检测是否到达测试周期,如果到达则发起测试并进入测试态;

在测试态中,通过回调函数判断ping的结果,如果成功则返回空闲态,如果失败则重试,重试都失败就关断继电器并进入关断态;

在关断态中,以系统时间戳为参考,检测是否到达关断时间,如果到达则开启继电器进入重启态;

在重启态中,以系统时间戳为参考,检测是否到达重启时间,如果到达则发起测试并进入测试态; 

 

注:在开发过程中发现了ESP-idf v4.2的一个bug

由于项目使用了多个网卡接入LWIP,因而使用ping api时需要指点网卡号。

在网卡初始化时可通过esp_netif_get_netif_impl_index来获取网卡号;

使用ping api 可通过配置interface属性来指定网卡号,然而这样的设置会报错。

打开esp-idf\esp-idf-v4.2\components\lwip\apps\ping\ping_sock.c

发现这里有个bug,导致选择网卡后会报错。

可根据

使用以下的方法绕开这个bug

 

6、BOM清单


 

7、大赛LOGO验证


 

 

 

设计图
原理图
1 /
PCB
1 /
未生成预览图,请在编辑器重新保存一次
工程视频/附件
工程成员
侵权投诉
相关工程
换一批
加载中...
添加到专辑 ×

加载中...

温馨提示 ×

是否需要添加此工程到专辑?

温馨提示
动态内容涉嫌违规
内容:
  • 153 6159 2675

服务时间

周一至周五 9:00~18:00
  • 技术支持

support
  • 开源平台公众号

MP