Hack mini K
(→WL2803E) |
(→进入刷机模式) |
||
(未显示1个用户的25个中间版本) | |||
第74行: | 第74行: | ||
<source lang=bash> | <source lang=bash> | ||
− | $ cd ../ | + | $ cd ../sketch/plug-minik |
$ make | $ make | ||
</source> | </source> | ||
第91行: | 第91行: | ||
上面我们已经把小 K 插座 WiFi 模块的 GND, VCC (3.3V), TX, RX 和 GPIO0 焊上杜邦线了 | 上面我们已经把小 K 插座 WiFi 模块的 GND, VCC (3.3V), TX, RX 和 GPIO0 焊上杜邦线了 | ||
− | 准备一个 USB 转串口板,此处我们使用一个 FT232RL USB 转串口板 | + | 准备一个 USB 转串口板,此处我们使用一个 FT232RL USB 转串口板,此物某宝有售:[http://s.click.taobao.com/bPo0xTx FT232RL USB 转串口板] |
+ | |||
[[文件:Ft232.jpg]] | [[文件:Ft232.jpg]] | ||
第134行: | 第135行: | ||
打开微信,扫一扫如下二维码: | 打开微信,扫一扫如下二维码: | ||
− | [[文件: | + | [[文件:Maike-wifi-ctrl-2233-all.jpg]] |
自动进入如下: | 自动进入如下: | ||
− | [[文件: | + | [[文件:MK-Noduino-MJYUN-NFF-1.jpg | 450px]] |
第157行: | 第158行: | ||
− | + | 表示此时设备在等待配网 | |
− | + | 点上图中的 "配置设备上网" 进入: | |
− | + | [[文件:MK-Noduino-MJYUN-NFF-2.jpg | 450px]] | |
− | |||
+ | 输入您的路由密码,点 “连接”,等待配网完成(注意,目前此快速配网模式不支持 5G 路由,只支持 2.4G;另外企业级安全认证也不支持) | ||
− | |||
+ | WiFi 配置完成后,微信自动进入局域网发现设备模式,其会列出当前路由环境里同一类型的设备列表: | ||
− | |||
− | [[文件: | + | [[文件:MK-Noduino-MJYUN-NFF-3.jpg | 450px]] |
− | [[文件:Mjyun-plug-h5.jpg]] | + | |
+ | 第一个设备,最后四个字母是为该设备的 MAC 地址,这个可与串口输出对应 | ||
+ | |||
+ | |||
+ | 点击第一个设备,进入页面,在页面最下面会有 “绑定设备” 按钮 (如果已经绑定过改设备,最下面的按钮为“进入公众号”),点击按钮,完成设备绑定 | ||
+ | |||
+ | |||
+ | 完成后,点“进入公众号”,在公众号菜单的 “智能设备”,即可列出你绑定的所有设备。触摸一下插座图标的设备,即可进入该设备的控制界面: | ||
+ | |||
+ | |||
+ | [[文件:MK-Noduino-MJYUN-NFF-4.jpg | 450px]] | ||
+ | |||
+ | |||
+ | [[文件:Mjyun-plug-h5.jpg | 450px]] | ||
<br><br> | <br><br> | ||
第307行: | 第320行: | ||
− | 超快开关二极管 WUGC10JH (600V 1A) | + | 超快开关二极管 WUGC10JH (600V 1A) |
<br><br> | <br><br> | ||
第349行: | 第362行: | ||
;;Feature: | ;;Feature: | ||
+ | * 500mA CMOS LDO | ||
* Ultra low dropout, 130mV (Typ.) @ 500mA load current | * Ultra low dropout, 130mV (Typ.) @ 500mA load current | ||
* The quiescent current is typically 150uA | * The quiescent current is typically 150uA | ||
+ | * Vin MAX = 6.5V | ||
* SOT23-5 small package | * SOT23-5 small package | ||
+ | * Output 3.3V is marking WS33/YYWW (YY - Year code, WW - Week code) | ||
[[文件:Wl2803-pin-app.png]] | [[文件:Wl2803-pin-app.png]] | ||
+ | <br><br> | ||
+ | |||
+ | ==== AP2112 ==== | ||
+ | |||
+ | ;;Feature: | ||
+ | |||
+ | * 600mA CMOS LDO | ||
+ | * Low Dropout Voltage (3.3V): 250mV (Typ.) @ 600mA | ||
+ | * Low Quiescent Current: 55μA (Typ.) | ||
+ | * Low Standby Current: 0.01μA (Typ.) | ||
+ | * Vin MAX = 6.5V | ||
+ | * Provides SOT-23-5, SOT-89-5, and SOIC-8 packages | ||
+ | |||
+ | |||
+ | [[文件:AP2112-pin-app.png]] | ||
<br><br> | <br><br> | ||
+ | |||
+ | ==== WL2803G ==== | ||
+ | |||
+ | 需要低 dropout voltage 的场合,替换 AMS1117 | ||
+ | |||
+ | ;;Feature: | ||
+ | |||
+ | * 1000mA CMOS LDO | ||
+ | * Dropout voltage : 260mV @ Iout = 800mA load current | ||
+ | * The quiescent current is typically 150uA | ||
+ | * Vin MAX = 6.5V | ||
+ | * SOT-223-3L package | ||
+ | * Output 3.3V is marking 2803G**/YYWW [ ** - Voltage code (33: 3.3V), YY - Year code, WW - Week code ] | ||
+ | |||
+ | |||
+ | [[文件:Wl2803g-pin-app.png]] | ||
+ | |||
<br><br> | <br><br> | ||
+ | |||
+ | ==== AMS1117-3.3 ==== | ||
+ | |||
+ | ;;Feature: | ||
+ | |||
+ | * 1000mA LDO | ||
+ | * Dropout voltage : 1.1V @ Iout = 800mA load current | ||
+ | * The quiescent current is typically 5mA | ||
+ | * Vin MAX = 15V | ||
+ | * SOT-223-3L package | ||
+ | |||
+ | |||
+ | [[文件:AMS1117-pin.png]] | ||
+ | |||
<br><br> | <br><br> | ||
+ | |||
+ | === DC-to-DC === | ||
+ | |||
+ | ==== TPS63001 ==== | ||
+ | |||
+ | * Input Voltage Range: 1.8 V to 5.5 V | ||
+ | * Fixed and Adjustable Output Voltage Options from 1.2 V to 5.5 V | ||
+ | * Up to 96% Efficiency | ||
+ | * 1200-mA Output Current at 3.3 V in Step-Down Mode (VIN = 3.6 V to 5.5 V) | ||
+ | * Up to 800-mA Output Current at 3.3 V in Boost Mode (VIN > 2.4 V) | ||
+ | * Automatic Transition Between Step-Down and Boost Mode | ||
+ | * Device Quiescent Current less than 50 μA | ||
+ | * Power-Save Mode for Improved Efficiency at Low Output Power | ||
+ | * Load Disconnect During Shutdown | ||
+ | * Overtemperature Protection | ||
+ | * Small 3mm × 3mm 10-Pin VSON Package (QFN) | ||
+ | |||
+ | |||
+ | [[文件:TPS63001-APP-SCH.png]] | ||
+ | |||
+ | |||
+ | |||
+ | [[文件:TPS63001-APP-Layout.png]] | ||
+ | |||
<br><br> | <br><br> | ||
+ | |||
+ | ==== BQ27441 ==== | ||
+ | |||
+ | * http://www.ti.com/product/bq27441-g1 | ||
+ | |||
+ | <br><br> | ||
+ | |||
+ | == MP2307 == | ||
+ | |||
+ | 宽电压输入、至少 90% 转换效率 | ||
+ | |||
+ | |||
+ | 典型应用电路: | ||
+ | |||
+ | [[文件:Power-mp2307.png]] | ||
+ | |||
+ | |||
+ | R1 的大小,控制输出电压的值 | ||
+ | |||
+ | |||
<br><br> | <br><br> | ||
<br><br> | <br><br> | ||
<br><br> | <br><br> | ||
<br><br> | <br><br> |
2016年9月2日 (五) 14:13的最后版本
目录 |
[编辑] 1 拆解
整个 mini K 的塑料外壳是超声波焊接,无螺丝设计
- 先撬开中间的白色上盖,再撬开绿圈,整个电路板就露出来了:
- 零线火线的插脚是焊接到PCB上的,动烙铁取下电路板:
[编辑] 2 分析
2015 年新的小 K 插座,全部使用 ESP8266 方案,由于芯片需求量大, ESP8266 的厂家乐鑫,提供芯片打标服务。看到控客的这个 LOGO,挺唬人的,实际还是 ESP8266:
- SPI Flash 为 MXIC 25L80 8Mbit,1MB 大小
芯片引脚(详细参考: ESP8266_GPIO):
借助万用表确认一下小 K 插座 WiFi 模块的引脚:
把 GND, VCC (3.3V), TX, RX 和 GPIO0 焊上杜邦线,就能用串口板快乐地刷机了 8-)
GPIO0 接 GND,通电 (接上 VCC 3.3 和 GNU),就能进入刷机模式
- 小K mini 对引脚资源布局为:
- GPIO15 控制继电器
- 红色 LED 指示继电器状态,自动,用户无需关心
- GPIO12 关联按钮,短按手动开关继电器,长按恢复出厂设置(需重新配置 WiFi)
- RX (U0RX, GPIO3) 关联蓝色 LED,指示插座联网和 WiFi 配置状态
[编辑] 3 刷机
[编辑] 3.1 准备固件
获取 noduino-sdk:
$ git clone --recursive git://github.com/icamgo/noduino-sdk.git noduino-sdk
生成 toolchain (you need Python 2.7):
$ cd noduino-sdk/toolchain $ ./gen.py
编译:
$ cd ../sketch/plug-minik $ make
各平台下,Noduino SDK 使用,更多参考:
- Getting Started with Noduino SDK on Linux
- Getting Started with Noduino SDK on Mac OS X
- Getting Started with Noduino SDK on Windows
[编辑] 3.2 进入刷机模式
上面我们已经把小 K 插座 WiFi 模块的 GND, VCC (3.3V), TX, RX 和 GPIO0 焊上杜邦线了
准备一个 USB 转串口板,此处我们使用一个 FT232RL USB 转串口板,此物某宝有售:FT232RL USB 转串口板
如下接线:
- USB_GND -----> miniK_GND
- USB_RXD -----> miniK_TX
- USB_TXD -----> miniK_RX
- USB_GND ------> miniK_GPIO0
以上接好后,最后 USB_VCC3.3 -----> miniK_VCC 通电开机,即进入刷机模式
[编辑] 3.3 刷写固件
还是在 examples/plug-minik 目录下,直接 make flash:
$ make flash
即可上传固件。不同平台下,你的串口设备号可能不一样,确认一下你的串口设备,比如在 Windows 下 FT232RL 板可能被识别为 COM3 (设备管理器里查看),则:
$ make flash ESPPORT=COM3
即可
[编辑] 3.4 尝试
刷入的固件是可用微信控制的,上传完成后,拔掉 GPIO0 ---> GND 的链接,断电重启一下,系统即进入新固件运行。
打开微信,扫一扫如下二维码:
自动进入如下:
与此同时串口的输出:
bcn 0 del if1 usl mode : sta(18:fe:34:f9:0f:17) add if0 SC version: V2.5.1 f r0, scandone f r0, scandone SC_STATUS_FIND_CHANNEL
表示此时设备在等待配网
点上图中的 "配置设备上网" 进入:
输入您的路由密码,点 “连接”,等待配网完成(注意,目前此快速配网模式不支持 5G 路由,只支持 2.4G;另外企业级安全认证也不支持)
WiFi 配置完成后,微信自动进入局域网发现设备模式,其会列出当前路由环境里同一类型的设备列表:
第一个设备,最后四个字母是为该设备的 MAC 地址,这个可与串口输出对应
点击第一个设备,进入页面,在页面最下面会有 “绑定设备” 按钮 (如果已经绑定过改设备,最下面的按钮为“进入公众号”),点击按钮,完成设备绑定
完成后,点“进入公众号”,在公众号菜单的 “智能设备”,即可列出你绑定的所有设备。触摸一下插座图标的设备,即可进入该设备的控制界面:
[编辑] 4 原始固件
默认串口波特率 74880,上电输出:
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
可知,这个版本基于芯片厂 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
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
md5 不一样,得具体看看差别在哪里:
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 ...?...?...@...?
明了,差别在开头的第 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
[编辑] 5 电路分析
[编辑] 5.1 电源
非隔离电源,主芯片 F7298(丝印 1ADxx,2015年四月的批次大部分为 1ADGE),内带 500V 30 Ω MOSFET,最大 2W 输出
类似的有 MP155GJ MP155GJ Datasheet
整流桥:MB6F
封装为SOT23-5,丝印为 ws33 ,是 WL2803E,3 .3V 的 CMOS LDO,Ultra low dropout, 500mA
超快开关二极管 WUGC10JH (600V 1A)
[编辑] 5.2 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三极管,用于驱动继电器工作。
[编辑] 5.3 电路图
以下由 Jack Tan 分析、手绘草图:
[编辑] 6 电源参考
[编辑] 6.1 强弱电转换
主控非隔离电源芯片 F7298 典型应用电路:
[编辑] 6.2 3.3V LDO
[编辑] 6.2.1 WL2803E
- Feature
- 500mA CMOS LDO
- Ultra low dropout, 130mV (Typ.) @ 500mA load current
- The quiescent current is typically 150uA
- Vin MAX = 6.5V
- SOT23-5 small package
- Output 3.3V is marking WS33/YYWW (YY - Year code, WW - Week code)
[编辑] 6.2.2 AP2112
- Feature
- 600mA CMOS LDO
- Low Dropout Voltage (3.3V): 250mV (Typ.) @ 600mA
- Low Quiescent Current: 55μA (Typ.)
- Low Standby Current: 0.01μA (Typ.)
- Vin MAX = 6.5V
- Provides SOT-23-5, SOT-89-5, and SOIC-8 packages
[编辑] 6.2.3 WL2803G
需要低 dropout voltage 的场合,替换 AMS1117
- Feature
- 1000mA CMOS LDO
- Dropout voltage : 260mV @ Iout = 800mA load current
- The quiescent current is typically 150uA
- Vin MAX = 6.5V
- SOT-223-3L package
- Output 3.3V is marking 2803G**/YYWW [ ** - Voltage code (33: 3.3V), YY - Year code, WW - Week code ]
[编辑] 6.2.4 AMS1117-3.3
- Feature
- 1000mA LDO
- Dropout voltage : 1.1V @ Iout = 800mA load current
- The quiescent current is typically 5mA
- Vin MAX = 15V
- SOT-223-3L package
[编辑] 6.3 DC-to-DC
[编辑] 6.3.1 TPS63001
- Input Voltage Range: 1.8 V to 5.5 V
- Fixed and Adjustable Output Voltage Options from 1.2 V to 5.5 V
- Up to 96% Efficiency
- 1200-mA Output Current at 3.3 V in Step-Down Mode (VIN = 3.6 V to 5.5 V)
- Up to 800-mA Output Current at 3.3 V in Boost Mode (VIN > 2.4 V)
- Automatic Transition Between Step-Down and Boost Mode
- Device Quiescent Current less than 50 μA
- Power-Save Mode for Improved Efficiency at Low Output Power
- Load Disconnect During Shutdown
- Overtemperature Protection
- Small 3mm × 3mm 10-Pin VSON Package (QFN)
[编辑] 6.3.2 BQ27441
[编辑] 7 MP2307
宽电压输入、至少 90% 转换效率
典型应用电路:
R1 的大小,控制输出电压的值