魔改 K2T AP 的电源
一个人在家里出现哪种情况最蛋疼?
- 家里服务器突然从内网消失了
- 自己的 Home Assistant 设备全部变成了不可用
- 发现网络突然不通了
这个周末凌晨我的 K2T 突然爆炸了. 想调整空调温度的时候发现 Home Assistant 里的设备全部都是不可用, 并且发现家里出现了一万个 Fallback Hotspot 并且热点全没了
然后我就发现了我的旧 AP (韭讯 K2T) 的红灯闪烁, 并且连接了机器的 Serial Port 发现并没有任何的输出.
~~然后第一件事情就是下单了新的 TPLink AP~~ (毕竟当时还不是很确定是电源坏了, 万一是 AP 坏了还是要买的)
拆机
在网络上搜索了一下发现 K2T 的电源很容易坏, 坏掉了表现就是插入电源之后 LED 灯就开是直接闪烁并且串口没有输出. 于是就是先把电源拆开了.
然后 K2T 的这个电源真的是巨难拆, 我拆了大概 1h 才把这个电源拆开, 电源内部是一个 220V 转 12V 然后有一个子板接收这个 12V 并且把网口的数据 Pack 到 TypeC 接口当中去.
飞线
从桌面上的电源引出一个 12V 然后直接拿一个 XH2.5 的接口插上发现 AP 亮了
那就没什么问题了, 确定是 220V 转 12V 的地方出问题了, 本来我看这个适配器大小这么大也有点不是很舒服, 这次正好趁着这个机会把他改成用 12V DC 输入的(
然后 3D 给这个电源打印了一个外壳, 不过这个外壳的 DC 接口有时候会给 TypeC 挡住, 你需要自己修改一下. 以下是 OpenSCAD 的代码, 如果你也想魔改的话就可以用这个代码生成 STL 去拿 3D 打印机打印出来(
board_width = 75;
board_depth = 32;
base_height = 25;
base_wall = 5;
slide_height = 8;
slide_width = 5;
board_height = 2.5;
screw_r = 8;
screw_d = 20;
$fn = 50;
screw_width = 1.2;
screw_offset = screw_width;
module screw(){
rotate([90, 0, 0]) difference(){
translate([screw_width, screw_width, -10]){
cylinder(10, screw_width, screw_width);
}
}
}
module base_slide_in() {
difference() {
cube([slide_width, board_depth, slide_height]);
translate([0, 0, (slide_height - board_height) / 2])
cube([slide_width, board_depth, board_height]);
}
}
module base() {
difference() {
cube([board_width + base_wall, board_depth + base_wall, base_height + base_wall]);
translate([base_wall / 2, 0,base_wall / 2])
cube([board_width, board_depth, base_height]);
}
}
module board_screw() {
union() {
translate([screw_offset, 0, screw_offset]) screw();
translate([board_width + (base_wall / 2) - screw_offset, 0, screw_offset]) screw();
translate([screw_offset, 0, base_height + screw_offset]) screw();
translate([board_width + (base_wall / 2) - screw_offset, 0, base_height + screw_offset]) screw();
}
}
module board() {
difference() {
union() {
base();
translate([base_wall / 2, 0, base_wall / 2])
base_slide_in();
translate([board_width + (base_wall / 2) - slide_width, 0, base_wall / 2])
base_slide_in();
translate([0, 0, base_height]) cube([5, board_depth, 5]);
translate([board_width, 0, base_height]) cube([5, board_depth, 5]);
}
board_screw();
}
}
cover_width = 1;
module cover() {
lan_width = 48;
lan_height = 14;
difference() {
// Base cover
cube([board_width + base_wall, cover_width, base_height + base_wall]);
// LAN
translate([base_wall / 2 + 6, 0, base_wall / 2 + 4])
cube([lan_width, cover_width, lan_height]);
// DC Jack
translate([base_wall / 2 + 6 + lan_width, 0, base_wall / 2 + 6])
cube([9, cover_width, 12]);
// TypeC
translate([base_wall / 2 + 9 + lan_width, 0, base_wall / 2 + 4])
cube([12, cover_width, 4]);
// Screw
board_screw();
}
}
translate([0, (base_height + base_wall) * 2 + 10, 0]) rotate([90, 0, 0]) cover();
translate([0, 0, board_depth + base_wall]) rotate([270, 0, 0])board();
还有一些小问题, 如果下次要折腾的话再修改吧(因为我新的 AP 到了)