查看Hack mini K的源代码
←
Hack mini K
跳转到:
导航
,
搜索
因为以下原因,你没有权限编辑本页:
您刚才请求的操作只有这个用户组中的用户才能使用:
用户
您可以查看并复制此页面的源代码:
== 拆解 == 整个 mini K 的塑料外壳是超声波焊接,无螺丝设计 ;; 先撬开中间的白色上盖,再撬开绿圈,整个电路板就露出来了: [[文件:Minik-teardown1.jpg]] ;;零线火线的插脚是焊接到PCB上的,动烙铁取下电路板: [[文件:Minik-teardown2.jpg]] <br><br> == 分析 == 2015 年新的小 K 插座,全部使用 ESP8266 方案,由于芯片需求量大, ESP8266 的厂家乐鑫,提供芯片打标服务。看到控客的这个 LOGO,挺唬人的,实际还是 ESP8266: [[文件:Minik-wifimod.jpg]] ;;<font color=green> SPI Flash 为 MXIC 25L80 8Mbit,1MB 大小</font> 芯片引脚(详细参考: [[ESP8266_GPIO]]): [[文件:Esp8266ex-layout.jpg | 360px]] 借助万用表确认一下小 K 插座 WiFi 模块的引脚: [[文件:Minik-wifimod-pin.jpg]] 把 GND, VCC (3.3V), TX, RX 和 GPIO0 焊上杜邦线,就能用串口板快乐地刷机了 8-) GPIO0 接 GND,通电 (接上 VCC 3.3 和 GNU),就能进入刷机模式 ;;<font color=red>小K mini 对引脚资源布局为:</font> * GPIO15 控制继电器 * 红色 LED 指示继电器状态,自动,用户无需关心 * GPIO12 关联按钮,短按手动开关继电器,长按恢复出厂设置(需重新配置 WiFi) * RX (U0RX, GPIO3) 关联蓝色 LED,指示插座联网和 WiFi 配置状态 <br><br> == 刷机 == === 准备固件 === 获取 noduino-sdk: <source lang=bash> $ git clone --recursive git://github.com/icamgo/noduino-sdk.git noduino-sdk </source> 生成 toolchain (you need Python 2.7): <source lang=bash> $ cd noduino-sdk/toolchain $ ./gen.py </source> 编译: <source lang=bash> $ cd ../examples/plug-minik $ make </source> 更多参考: * [[Getting Started with Noduino SDK on Linux]] * [[Getting Started with Noduino SDK on Mac OS X]] * [[Getting Started with Noduino SDK on Windows]] === 进入刷机模式 === 上面我们已经把小 K 插座 WiFi 模块的 GND, VCC (3.3V), TX, RX 和 GPIO0 焊上杜邦线了 准备一个 USB 转串口板,此处我们使用一个 FT232RL USB 转串口板 [[文件:Ft232.jpg]] 如下接线: * USB_GND -----> miniK_GND * USB_RXD -----> miniK_TX * USB_TXD -----> miniK_RX * USB_GND ------> miniK_GPIO0 以上接好后,最后 USB_VCC3.3 -----> miniK_VCC 通电开机,即进入刷机模式 <br><br> === 刷写固件 === 还是在 examples/plug-minik 目录下,直接 make flash: <source lang=bash> $ make flash </source> 即可上传固件。不同平台下,你的串口设备号可能不一样,确认一下你的串口设备,比如在 Windows 下 FT232RL 板可能被识别为 COM3 (设备管理器里查看),则: <source lang=bash> $ make flash ESPPORT=COM3 </source> 即可 == 原始固件 == 默认串口波特率 74880,上电输出: <source lang=bash> ets Jan 8 2013,rst cause:1, boot mode:(3,0) load 0x40100000, len 612, room 16 tail 4 chksum 0x12 load 0x3ffe8000, len 788, room 4 tail 0 chksum 0x50 load 0x3ffe8314, len 264, room 8 tail 0 chksum 0x4a csum 0x4a 2nd boot version : 1.1 SPI Speed : 40MHz SPI Mode : SPI Flash Size : 8Mbit jump to run user2 pp_task_hdl : 3fff59b8, prio:14, stack:512 pm_task_hdl : 3fff63b0, prio:1, stack:176 ApiMsgMutex created idle_task_hdl : 3fff80a8 tim_task_hdl : 3fff83c0 xPortStartScheduler frc2_timer_task_hdl:3fff9018, prio:12, stack:200 OS SDK ver: 0.0.8 compiled @ Apr 16 2015 19:50:09 phy ver: 273, pp ver: 8.3 mode : sta(18:fe:34:f6:44:d1) add if0 scandone del if0 usl sul 0 0 add if0 scandone scandone add 0 aid 5 connected with Noduino-AP, channel 7 dhcp client start... cnt ip:192.168.1.50,mask:255.255.255.0,gw:192.168.1.1 </source> 可知,这个版本基于芯片厂 SDK 0.0.8 开发 (应该是 0.8), 1MB Flash 分区为 512KB + 512KB 支持 OTA,bootloader 版本 boot_v1.1.bin 风枪吹下 SPI Flash MXIC 25L80,用工具读取完整的 Flash 镜像 (1MB) 备份一下,取名 miniK-25l80.bin <source lang=bash> comcat@jackslab:/work/xwifi/noduino-sdk/examples/plug-minik$ ls -l ../../sdk/bin/boot_v1.1.bin -rw-r--r-- 1 comcat inetsim 1712 Dec 24 14:37 ../../sdk/bin/boot_v1.1.bin comcat@jackslab:/work/xwifi/noduino-sdk/examples/plug-minik$ dd if=fw/miniK-25l80.bin of=minik-boot.bin bs=1 count=1712 1712+0 records in 1712+0 records out 1712 bytes (1.7 kB) copied, 0.0110958 s, 154 kB/s comcat@jackslab:/work/xwifi/noduino-sdk/examples/plug-minik$ ls -l minik-boot.bin -rw-r--r-- 1 comcat inetsim 1712 Dec 24 14:39 minik-boot.bin comcat@jackslab:/work/xwifi/noduino-sdk/examples/plug-minik$ md5sum ../../sdk/bin/boot_v1.1.bin 8f5fe3c7e97afa8b743cc4a39ae9c535 ../../sdk/bin/boot_v1.1.bin comcat@jackslab:/work/xwifi/noduino-sdk/examples/plug-minik$ md5sum minik-boot.bin 636d02a38685ae0c48302ee2f9654f96 minik-boot.bin </source> md5 不一样,得具体看看差别在哪里: <source lang=bash> comcat@jackslab:/work/xwifi/noduino-sdk/examples/plug-minik$ xxd -g1 ../../sdk/bin/boot_v1.1.bin > boot_v1.1.bin.hex comcat@jackslab:/work/xwifi/noduino-sdk/examples/plug-minik$ xxd -g1 minik-boot.bin > minik-boot.bin.hex comcat@jackslab:/work/xwifi/noduino-sdk/examples/plug-minik$ diff -uN boot_v1.1.bin.hex minik-boot.bin.hex > x.diff comcat@jackslab:/work/xwifi/noduino-sdk/examples/plug-minik$ cat x.diff --- boot_v1.1.bin.hex 2015-12-24 14:40:04.523468413 +0800 +++ minik-boot.bin.hex 2015-12-24 14:40:15.991525280 +0800 @@ -1,4 +1,4 @@ -0000000: e9 03 00 00 70 00 10 40 00 00 10 40 64 02 00 00 ....p..@...@d... +0000000: e9 03 03 20 70 00 10 40 00 00 10 40 64 02 00 00 ... p..@...@d... 0000010: 14 83 fe 3f 30 83 fe 3f 60 83 fe 3f 44 83 fe 3f ...?0..?`..?D..? 0000020: 68 83 fe 3f 94 83 fe 3f 7c 83 fe 3f 9c 83 fe 3f h..?...?|..?...? 0000030: b0 83 fe 3f 10 80 fe 3f 00 80 10 40 d8 83 fe 3f ...?...?...@...? </source> 明了,差别在开头的第 3、4 字节 第 3 字节指示 SPI Flash Interface 的模式,0x03 表示 dout 模式,其他: 0x0 = QIO, 0x1 = QOUT, 0x2 = DIO, 0x3 = DOUT 第 4 字节的高四位指示 SPI Flash 的容量: 0 = 512KB, 1 = 256KB, 2 = 1MB, 3 = 2MB, 4 = 4MB;低四位指定 SPI Flash 的速度: 0 = 40MHz, 1= 26MHz, 2 = 20MHz, 0xf = 80MHz 这两个字节是生成固件的时候写入的,因此,可以肯定 mini K 就是用的 boot v1.1 <br><br> == 电路分析 == === 电源 === 非隔离电源,主芯片 F7298(丝印 1ADxx,2015年四月的批次大部分为 1ADGE),内带 500V 30 Ω MOSFET,最大 2W 输出 [http://wiki.jackslab.org/images/F7298DS.PDF F7298 Datasheet] 类似的有 MP155GJ [http://wiki.jackslab.org/images/MP155GJ.pdf MP155GJ Datasheet] 整流桥:MB6F 封装为SOT23-5,丝印为 ws33 ,是 WL2803E,3 .3V 的 CMOS LDO,Ultra low dropout, 500mA [http://wiki.jackslab.org/images/WL2803E_r1.6.pdf WL2803E Datasheet] <br><br> === Relay === 继电器为HKE(浙江汇港)的5V、10A,高灵敏型单组常开触点继电器,型号为 HRS3FNH-S-DC5V-A:http://zh.hke.cn/article/id-9 HRS3FNH Datasheet: http://zh.hke.cn/bg_attach/2015/07/93.pdf SOT-23 封装,丝印 J3Y 为 CJ(长电科技)的 S8050,是颗NPN三极管,用于驱动继电器工作。 <br><br> === 电路图 === [[文件:Minik-power.jpg]] [[文件:Minik-relay.jpg]] <br><br> <br><br> <br><br> <br><br> <br><br> <br><br>
返回到
Hack mini K
。
个人工具
登录
名字空间
页面
讨论
变换
查看
阅读
查看源代码
查看历史
操作
搜索
导航
首页
社区专页
新闻动态
最近更改
随机页面
帮助
工具箱
链入页面
相关更改
特殊页面