硬盘盒来电自动启动改造

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

下面,我们以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!

关于 VoIP 的一些想法

最近更换了电信CDMA网络的手机,使用的上网套餐并不适合通话,原计划使用 Skype 通过网络拨打电话,以补充这方面的不足。

使用了一段时间发现 Skype 通话效果非常的差,经常出现严重掉话的情况,基于上是不可用的。实验发现并不是因为手机的 CDMA 1X 网络带宽不够,也不是由于手机性能不足,而是 Skype 自己的 PSTN 网络问题。

于是就有自己架设语音网关服务的想法,这样可以使用本地的落地电话,从而达到最佳通话效果。

因为手机上集成了 SIP 客户端,想在自己的服务器上架设个 SIP 服务器端,并把这个服务器端桥接到 USB 接口的 CDMA 的无线上网卡上,这样在手机端连接服务器拨打 PSTN,服务器将使用 CDMA 网关拨出,从而达到较好的通话效果,费用和直接使用CDMA资费卡在手机上拨打相同。

目前对 SIP 协议的实现不清楚,不过这应该有相应的开源实现的库可以帮助解决。比较麻烦的应该是如果将 CDMA 上网卡作为一个语音网关接入进 SIP 系统。我的上网卡虽然多有个串口,但测试发现不能将语音数据从串口输出或输入,可能还要需要使用计算机的音频接口。

相关资料
VoIP-GSM шлюз для Asterisk на USB модеме HUAWEI E1550

Over!

更换龙梦系列机器的引导程序 Logo

龙梦系列机器使用的BIOS和引导程序是 PMON,这个程序的功能很强大,这里我教大家如何提取和更换引导程序的 Logo。

备份 Logo
在 Debian 操作系统的终端里执行下面的命令来备份原始 Logo。

sudo dd if=/dev/mem of=orig.bmp.gz bs=1 skip=470155264 count=52908
gzip -d orig.bmp.gz

执行完成这两条命令后就可以看到 orig.bmp 这张图片了,如下。

制作新 Logo
建议和原来的图片的 size(448×224) 相同的 bmp 格式图片,没有测试过其它形式。这里是我制作的 Logo,呵呵。制作好 bmp 图片后需要使用 gzip 压缩,命令如下。

gzip logo.bmp

注意:压缩后的文件 logo.gmp.gz 大小必需小于等于 52908 字节。

更换新 Logo
先将图片文件放入到 /dev/hda1 分区中,我是放在了根目录。重新启动到 PMON 命令行(启动时按住 DEL 键)。

load -r -f bfc60000 /dev/fs/ext2@wd0/logo.bmp.gz
reboot

下面是我更换后的实物照片。

Over!

Linksys WRT54G V4

买了一款 Linksys WRT54G v4 版本的无线路由器,这款路由器在刷了第三方开源固件 OpenWRT 后实在是太强大了。

原版硬件配置
芯片:Broadcom BCM5352 chip rev 0
CPU:BCM3302 V0.8 200MHz
RAM:现代 DDR 16-bit 16M
FLASH:4M
WAN:1
LAN:4
天线:2

可升级的硬件
RAM:可换64M内存颗粒
FLASH:可换8M芯片
USB:可增加USB接口

我准备先更换RAM为64M,为CPU增加一个散热片超频到225MHz,再搞定编程器后将FLASH芯片也更换了,最后在内部增加一个USB的闪存盘。

这款路由器的硬件配置还是不错的吧,在这配置基础之上的功能也是非常强大的。具体就看 OpenWRT 的文档吧。

Over!