查看: 887|回复: 0

[评测分享] 【热门器件来 Arrow】DFR0868模块之路由器自动重启辅助模块

[复制链接]
  • TA的每日心情
    郁闷
    2024-1-31 23:05
  • 签到天数: 144 天

    连续签到: 1 天

    [LV.7]常住居民III

    发表于 2022-12-6 20:55:37 | 显示全部楼层 |阅读模式
    分享到:
    本帖最后由 jobszheng5 于 2022-12-6 21:02 编辑

      现在家里基本都安装了宽带,也就离不开光猫与路由器,这些基础网络设备。就拿我家来说,有联通公司安装宽带时随机赠送的光猫,还有一个N年前的2.4G的路由器。——没错,就是2.4G的网络。年代久远之后,性能就跟不上潮流了。但我发现,每次重启路由后的一两天,家庭网络性能还是非常不错的。于是,定时手动重启路由便成为了一项家庭任务。
      今天开始,这项家庭任务将升级为计划任务。由我们的DFR0868自动执行。兴不兴奋!!
      话说三周前,载有DFR0868模块的快递送到了我的手上。这是本人第一次接触ESP32,看到包装后有些惊讶!想到了它很小,但没有想到这么小。

      包装一共3部分,DFR0868-A,DFR0868-B与两个排针。比起其它电子产品使用防静电袋来装,感觉这个包装袋更像是装糖果的——也许是新型的防静电袋吧!也说不准。

      剪开包装,主角ESP32也就登台了。精致而小巧,非常适用物联网模块等体积受限的应用场景。DFROBOT将其封装成了模块化,更加方便电子工程师进行二次开发,甚至高中生上手也会非常容易。



      官方的wiki说明在Arduino IDE的操作流程上面撰写得非常详细。
      不过,可能是我家网络的原因,或者众所周知的原因,Arduino在更新ESP32库的过程中几个安装包无法下载,只能采用手动模式一个一个自行下载。浪费了一些时间,减少了一些体验分。

      在熟悉了Arduino IDE的开发环境后,我们继续设计了3个测试实验:
    实验项目1:数字IO控制
      此实验项目,我们在Demo示例中的LED灯闪烁已经完成。本次主要另寻找一个GPIO引脚用做DO数字输出。我们选用Pin2.实验代码如下:
    1. int led = 10;
    2. int DO_light = 2;
    3. void setup() {
    4.   // put your setup code here, to run once:
    5.   pinMode(led, OUTPUT);
    6.   pinMode(DO_light, OUTPUT);
    7. }

    8. void loop() {
    9.   // put your main code here, to run repeatedly:
    10.   digitalWrite(led, HIGH);
    11.   digitalWrite(DO_light, HIGH);
    12.   delay(1000);
    13.   digitalWrite(led, LOW);
    14.   digitalWrite(DO_light, LOW);
    15.   delay(1000);
    16. }
    复制代码
    实验项目2:连接家中wifi
      DFR0868小模块虽然小,但其功能一点也不少。其板载的WiFi模块支持多个协议,IEEE 802.11b/g/n。wifi的模式也有多种,Station模式,SoftAP模式,SoftAP+Station模式。本次项目所使用的为Station模式。在代码中的实现也比较容易。
      我们定义好要连接的家庭WiFi的SSID与Password即可。
      我使用的手机的wifi热点来做的测试,开机几秒后,DRF0868就成功连接上了,超级快速的。

    1. #include <WiFi.h>

    2. const char *ssid = "mi_hengheng";
    3. const char *password = "www.cirmall.com";

    4. WiFi.begin(ssid, password);
    5. while (WiFi.status() != WL_CONNECTED) {
    6. delay(500);
    7. Serial.print(".");
    8. }
    9. Serial.println();
    10. Serial.println("WiFi connected!");
    复制代码
    实验项目3:获取网络时间
      在设立这个实验项目的时候,还想着需要解析时间校对协议呢!没有想到在ardunio里面使用一个函数就可以轻松解决。不得不说,这种封装下的二次开发真是省心!

    1. configTime(gmtOffset_sec, daylightOffset_sec, ntpServer);
    复制代码

      理论的知识与原型验证均已通过,下面我们就开始硬件的实践吧!

      在经过前面的几个原型验证实验后,我们就可以开始DIY我们的硬件了。

      路由器的供电为+9v,不同于我们的ESP32的+5v,需要另外一个独立电源。此应用场景符合弱电的典型应用。因此,我们采用电磁继电器来控制路由器的供电,变向达到重启路由器的目的。

      解决了如何控制路由器的问题,剩下就是何时重启的问题了。

      根据我的平时作息,我将重启时间设置为了每天凌晨3点,即将每天的秒计数器10800(3*60*60)时,对路由器进行断电,10秒后恢复供电。

      还有一个现实问题!最近,正是卡塔尔世界杯时间,凌晨3点又是比赛时间,这里断网重启有点过分。所以,我又设计了取消重启按钮。使用引脚8做为输入信息,当引脚8为高电平时,取消本次重启操作。

      是不是文字说明有点多?来一个流程图吧!

    与非网16.png



      最后,上一张实物连接图:
    与非网17.jpg

    总结
      DFR0868模块的ESP32 C3在各种软件与硬件封装下,在ArdunioIDE开发环境下,仅使用少量代码就完成了本次项目的设计。有效集中了80%的精力在20%的核心代码编写,余下的80%,由DFR0868的开发人员帮我们实现了。
      软件环境与硬件环境搭建在官方wiki的指导下,一步一步轻松完成。
      最后,感谢一下ARROW提供ESP32 C3模块,感谢与非网提供试用机会,感谢与非网的工作人员在发帖与试用过程中的各种耐心细致的指导。














    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-11-22 16:59 , Processed in 0.116798 second(s), 17 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.