硬盘盒来电自动启动改造
市面上常见的硬盘盒或硬盘柜几乎都设计了电源按钮开关,并不是外部供电就自动开机的,这也是一种保护措施。但如果我们用这类产品连接家庭服务器或NAS的话,在意外停电恢复后,外置硬盘盒设备就不能访问了,需要手工按一下电源开关。那么,有没有方法可以使这类产品能自动开机呢?方法不仅有,还不止一种哦。
下面,我们以ORICO 9528系列硬盘柜为例,介绍几种方案,其中短接和电容两种方法为来电自动开机方式,而继电器和伺服电机两种方法则可由单片机或各种派来远程控制。
短接
顾名思义,就是将微动电源开关一直按压住,可以使用强力胶带或其它任意有效方法实现。
- 优势:1. 简单有效且无需拆机。
- 缺陷:1. 仅部分产品有效。 2. 长期短接是否有风险。 3. 来电不稳定期损坏硬盘。
电容
相对直接短接,还可以串接电容来替换微动开关,在来电时,电容充电此时相当于开关按下,当电容充满时,相当于开关释放。
- 优势:1. 适用于所有微动开关。2. 无长期短接的不确定风险。
- 缺陷:1. 需要拆机,影响保修。2. 来电不稳定期损坏硬盘。
继电器
使用程控继电器替换电源开关,在来电后主机启动完成的情况下,由程序控制硬盘柜启动。
- 优势:1. 适用于所有开关情况。2. 无长期短接的不确定风险。3. 无来电不稳定损坏硬盘。
- 缺陷:1. 需要拆机,影响保修。
伺服电机
在硬盘柜电源按钮外安装伺服电机,由程序控制电机转动,再由连接在电机转轴上的机械臂按压微动开关。
- 优势:1. 适用于所有开关情况。2. 无长期短接的不确定风险。3. 无来电不稳定损坏硬盘。4. 无需拆机,不影响保修。
- 缺陷:暂无。
综合来看,采用伺服电机方法即有安全保障,又无拆机风险,同时成本并不高,大概20元左右。
清单
- MG90S型舵机 x 1。
- 母对公杜邦线 x 3。
- 3M VHB强力双面胶带 x 1 (搜索ETC专用类,这种双面胶有一定的厚度和弹性,在舵机旋臂按压时有缓冲空间)。
安装
- 剪取与舵机机身等长的两段3M双面胶粘与机身一面。
- 再将舵机粘贴在硬盘盒微动开关处的合适位置之上。
- 将舵机GND线连接树莓派GPIO的任意GND引脚,舵机的5V线连接树莓派GPIO的其中一个5V引脚,最后将舵机的信号线连接树莓派的任意具有GPIO功能的引脚。
- 先不需要着急安装舵机的旋臂,在连接好线路并确认控制程序可工作后,再根据实际的旋转角度一点点调节旋臂,使之在转至最大角度时正好轻触微动开关,防止角度过大损坏设备。
使用
因为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