IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    硬盘盒来电自动启动改造

    hev发表于 2020-03-31 15:00:36
    love 0

    市面上常见的硬盘盒或硬盘柜几乎都设计了电源按钮开关,并不是外部供电就自动开机的,这也是一种保护措施。但如果我们用这类产品连接家庭服务器或NAS的话,在意外停电恢复后,外置硬盘盒设备就不能访问了,需要手工按一下电源开关。那么,有没有方法可以使这类产品能自动开机呢?方法不仅有,还不止一种哦。

    https://hev.cc/wordpress/wp-content/uploads/2020/03/1585666601306.mp4

    下面,我们以ORICO 9528系列硬盘柜为例,介绍几种方案,其中短接和电容两种方法为来电自动开机方式,而继电器和伺服电机两种方法则可由单片机或各种派来远程控制。


    短接
    顾名思义,就是将微动电源开关一直按压住,可以使用强力胶带或其它任意有效方法实现。
    优势:1. 简单有效且无需拆机。
    缺陷:1. 仅部分产品有效。 2. 长期短接是否有风险。 3. 来电不稳定期损坏硬盘。

    电容
    相对直接短接,还可以串接电容来替换微动开关,在来电时,电容充电此时相当于开关按下,当电容充满时,相当于开关释放。
    优势:1. 适用于所有微动开关。2. 无长期短接的不确定风险。
    缺陷:1. 需要拆机,影响保修。2. 来电不稳定期损坏硬盘。

    继电器
    使用程控继电器替换电源开关,在来电后主机启动完成的情况下,由程序控制硬盘柜启动。
    优势:1. 适用于所有开关情况。2. 无长期短接的不确定风险。3. 无来电不稳定损坏硬盘。
    缺陷:1. 需要拆机,影响保修。

    伺服电机
    在硬盘柜电源按钮外安装伺服电机,由程序控制电机转动,再由连接在电机转轴上的机械臂按压微动开关。
    优势:1. 适用于所有开关情况。2. 无长期短接的不确定风险。3. 无来电不稳定损坏硬盘。4. 无需拆机,不影响保修。
    缺陷:暂无。

    综合来看,采用伺服电机方法即有安全保障,又无拆机风险,同时成本并不高,大概20元左右。

    清单
    1. MG90S型舵机 x 1。

    2. 母对公杜邦线 x 3。

    3. 3M VHB强力双面胶带 x 1 (搜索ETC专用类,这种双面胶有一定的厚度和弹性,在舵机旋臂按压时有缓冲空间)。

    安装
    1. 剪取与舵机机身等长的两段3M双面胶粘与机身一面。
    2. 再将舵机粘贴在硬盘盒微动开关处的合适位置之上。


    3. 将舵机GND线连接树莓派GPIO的任意GND引脚,舵机的5V线连接树莓派GPIO的其中一个5V引脚,最后将舵机的信号线连接树莓派的任意具有GPIO功能的引脚。

    4. 先不需要着急安装舵机的旋臂,在连接好线路并确认控制程序可工作后,再根据实际的旋转角度一点点调节旋臂,使之在转至最大角度时正好轻触微动开关,防止角度过大损坏设备。

    使用
    因为NanoPi M4的GPIO信号是3V电平,驱动不了MG90S舵机,正好手上有一块闲置的Rpi2,拿到当舵机控制模块(有点大材小用了,反面都是吃灰的命)。

    NanoPi M4使用USB3.0连接硬盘盒,真千兆网口传输数据,再通过GPIO发送开关信号给Rpi2。Rpi2就比较简单了,在GPIO上监听信号事件,事件触发就产生PWM脉冲信号控制舵机旋转,按压开关按钮。

    Rpi2自然也不需要跑完整的发行版啦,只要一个内核和initramfs中包含一个静态链接的控制程序作为init进程。

    如果仅用树莓派来控制,控制舵机的关键程序如下:

        const double duty_up = 2.0;
        const double duty_down = 4.0;
        int i;
    
        for (i = 0; i < 10; i++) {
            gpio_write (fd, 1);
            usleep (duty_down * 200);
            gpio_write (fd, 0);
            usleep ((100.0 - duty_down) * 200);
        }
    
        for (i = 0; i < 10; i++) {
            gpio_write (fd, 1);
            usleep (duty_up * 200);
            gpio_write (fd, 0);
            usleep ((100.0 - duty_up) * 200);
        }
    

    NanoPi+Rpi组合完整版控制程序:
    https://gist.github.com/heiher/1d48924da7f134315e7128aad74ca6e1

    Over!



沪ICP备19023445号-2号
友情链接