找回密码
 立即注册
查看: 5424|回复: 5

[原创] 8.5元联想ESP8266智能wifi插座拆解、刷机天猫语音控制

[复制链接]

11

主题

51

回帖

209

积分

中级渣柚V1

积分
209
QQ
 楼主| 发表于 2021-8-21 13:57:54 | 显示全部楼层 |阅读模式
本帖最后由 易记 于 2021-8-21 14:05 编辑 % d/ L5 q" V6 a3 _; Y9 V; X  d; i% F
6 \) ^1 t; L7 c# ^, `( b- d
最近玩ESP8266,想做个天猫控制开关。
" J# s8 A" }0 _% R但是我很懒,一个个配元件嫌麻烦,于是想着能不能淘到便宜的带电源板的模块,多倒是蛮多,一般都要20多块钱。
, j! [0 f: A" ~% j  [' }( N  W2 u还是闲钱上逛一下看,找到一个联想的国外版8266智能插座,价格才8.5元一个。有一点不足,就是只有三孔,要是五孔的就好了。老板说五孔杂牌价格一样也有货,晚两天发布。
3 e. l  H. c. Y$ l! u QQ截图20210821125037.jpg
. g$ {. n9 k. ]' R! z+ N) n8 O+ Y; \8 |6 f
# I; J6 f! H) {. u( _
问了一下店主,买20个一盒才包邮,想着20个还是有点多,买了5个,连运费47.5元。
* ~! x: h: Y: ~: U8 B" R8 x9 F+ w' ]/ o, ?# I; q. c- W
QQ图片20210821124517.jpg
- |2 S6 K( N0 B

1 U2 e; W/ ?/ `& `, e+ E6 j1 l) V
0 @, p# A2 |6 i* ^; F5 W1 k
  p: r9 w. m' n( M- ^8 r6 P) `1 n
到手,当然是拆拆拆。
1 r9 b% m8 B: y, \3 K! j IMG_20210820_134104.jpg
2 d# E( u, z1 s8 j2 X- @: m! J$ g: L1 Z) P' n' |/ M
) V8 e% b  p, B, {, W5 R$ X5 [+ _
联想的做工,还是感觉不错的,光这个继电器应该也要个7-8块钱。/ g* t# W- f0 ?* @. _, e
IMG_20210820_160634.jpg - I! E: A0 n9 E5 s# x4 m
/ J, k8 E4 g" d  Q

0 l  ]5 a, t( V% T继电器是两组常开,感觉要是接电灯双控开关是不是有点麻烦的,不过用于插座是很安全,要断二条线都断开。- m9 f' N' p$ y3 I
QQ截图20210821133707.jpg ; ^9 m( o4 v/ Z8 L

) u! ^* @$ v3 Q% x0 T. b IMG_20210820_134114.jpg
4 S4 z, v  T0 _$ i4 _5 l0 H
( B5 m9 }( L4 ^5 L
电源芯片
+ ]1 N3 S/ d( t- f7 S- R% Y+ n' L! C: c/ D/ a3 y5 U( `% c% Y/ \

6 @' t2 S& s; S* P7 z- z" B" _
% @$ n9 R' y2 X/ A' y$ G7 x
有一个按钮,按钮有二个蓝色LED灯
- B+ O5 }' O5 q9 ` IMG_20210820_134157.jpg 9 V- G5 A- I) L: j6 M3 l

3 m4 J) [& N% d0 A

0 ?! D: R0 I4 a0 ~8266
( F3 c. G5 s( m3 I) w3 U5 V! m, \ IMG_20210820_141913.jpg 1 G: S  V6 X% O, f! Q
0 p( X$ M8 C) J6 b

% ]( W2 K) w) C3 E4 ]; r7 R1 L- a  x! n+ D# B

9 s5 y0 |; S) B5 Y接下来就是刷机了,版子上面都预留测试点。7 u% j' H' m* l& t$ r% {! d( I
接线比较容易,上面都有标示,GND,3.3V,TXD-RX,RXD-TX,还有一个就是IO0接地后刷机。/ w9 F  l9 j! C) L
未标题-1.jpg
7 v4 r, w" S# c! r1 M3 R) p% e
注意RX这个点,就是3.3V边上的这个点,焊盘设计的就点问题,电烙铁热一点或是焊的刷机线过粗的话,容易掉焊盘。' Z6 s' G5 N) Y+ u6 u/ _
要是掉了就只有一个过孔了,要是焊不上,只能再拆开接在另一面,所以为了避免不必要的麻烦,请注意一下。
( H3 b- A8 d' n' ~/ ^
$ j, U% o3 l9 s% \6 v  Z
2 l( e. n3 r7 s' A# N0 J/ d

2 x. ~3 u" o) A* G1 e' c1 P8 o; O/ e! |  _* N1 W
8 R3 [' |1 S5 f; c- M6 A  T; p! A
    5号脚位是继电器输出
9 r/ G7 E9 K; M$ s) K  F- W* ]    12号脚位是灯输出$ ]) {6 K+ [4 J3 {1 E* f: I$ Y- H! X
    4号脚位是按键

3 O( Q/ V! Y$ H# g
4 \) _3 ~! Y5 I' @7 T
. N" |  M" Z" y3 a# M1 C
+ [. y1 a& e9 N( \% g
0 [+ d3 L6 c6 R: H. u
卖家有发一个源码,如下
  1. #define BLINKER_WIFI                    //官方wifi协议库& n) L3 p: |. z. O* @" j. F
  2. #define BLINKER_MIOT_LIGHT              // 设置小爱灯类库2 K' G" @! O1 Y/ a
  3. #define BLINKER_ALIGENIE_LIGHT          // 设置天猫灯类库$ k; b; O1 t% B
  4. #define BLINKER_PRINT Serial            //串口协议库, Q  C+ [! E* V( ?$ h
  5. #include <Blinker.h>                    //官方库; V, _- P7 i  Q' p7 m. u# B' \
  6. #include <ESP8266WiFi.h>                //官方库5 Z! x# i: }5 c. J
  7. WiFiServer server(80);                  // 服务器端口号
    ) t6 j" l7 r. R' C

  8. ; N0 V0 A( Y1 {5 q' V
  9. char auth[] = "c4942fb1d5e4";     //设备key$ \# b$ w( V4 U$ G! F) }
  10. char ssid[] = "wanboshi";     //路由器wifi ssid/ Y, Y7 ?* I9 k
  11. char pswd[] = "1365662999813586348220";     //路由器wifi 密码
    $ J( Y# E. o( s  p# T( A5 W

  12. 2 N+ }, A. }  I" N" E8 b
  13. bool oState = false;+ |$ [. P+ [; M- C. t, V4 N
  14. : h# l( S+ I" j. ^
  15. int kg=5;//继电器输出
    4 ?. E8 r, r* q  J! S
  16. int de=12;//灯输出+ [0 c! L% m% t8 U1 I
  17. int key=4 ;//按键9 P/ A$ _/ \1 U) H% c
  18. //*******新建组件对象
    2 {9 U4 |! V% j* b; Y( b, p

  19. 3 r! B: L% P6 w/ }; W: Q
  20. BlinkerButton Button1("btn-abc");              //设置app按键的键名0 Q9 Z$ I, N! z8 z) p7 ~) V
  21. //*******app上按下按键即会执行该函数app里按键
    4 i  P1 f, n1 H- n( W2 [
  22. void button1_callback(const String & state)
    8 B4 y  ^, ~3 `. Z1 c3 G& V. T. X( b
  23. {
    3 F8 H# G$ x3 l/ W4 N: B# I
  24.    if (digitalRead(kg)==LOW)' s( l8 ]/ V9 G
  25.    {
    * X, f' \3 r# j/ m2 L' i) R+ m
  26.         BLINKER_LOG("get button state: ", state);
    ( [3 Z# y, B1 Z9 o! ~5 V
  27.         digitalWrite(kg, HIGH);, ~$ K5 k7 q" W5 Q+ O
  28.         digitalWrite(de, LOW);
    . l) H, M( g5 h8 G; y: v% j* f! z
  29.         Button1.print("on");
    , d1 m  R  m# t" A8 B* H! x+ U
  30.         Button1.color("#0000FF");              //设置app按键是浅蓝色
    $ U- X+ |* @' v: [8 W
  31.         Button1.text("开启中");
    + l  Z! }, o. Q
  32.    }5 }  T) ^. l1 @7 i" j
  33.    else if (digitalRead(kg)==HIGH)
    ) d5 I4 i3 X1 n9 D
  34.    {
    / \! ^0 ^2 k4 }: R% Y
  35.         BLINKER_LOG("get button state: ", state);
    ) Z. o0 H; D% ^: v" l, ^
  36.         digitalWrite(kg, LOW);2 i8 v8 |8 L, j! ]# V
  37.         digitalWrite(de, HIGH);  V$ o+ i4 l+ g" z# m
  38.         Button1.print("off");. I$ L3 }& \! n
  39.         Button1.color("#00FFFF");              //设置app按键是深蓝色# Y: r5 h& w* L( S0 M
  40.         Button1.text("关闭中");% p. L% l, ^& E4 c
  41.    }
    % {& u$ E; e! g: `
  42. }
    $ V# n4 x) _% g) G  }1 F

  43. 2 \9 a) ?6 {* E; T- S; p( h" R4 c
  44. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    ( a( b2 z7 |" r
  45. / x3 @4 |/ O4 o
  46. //*******如果小爱有对设备进行操作就执行下面- [. Y" m9 c9 Q" O9 v6 |  F  D0 N
  47. void miotPowerState(const String & state)
    * ]+ R3 e' D3 L. f
  48. {
    9 d4 p4 @0 D5 Y3 c0 R
  49.     BLINKER_LOG("小爱语音操作!");              //串口打印
    " o* g' |+ K" M' I- ~; c6 A# l
  50.     if (state == BLINKER_CMD_ON){
    . M1 i" c' }/ [2 W' |) d0 A) i5 ]! U
  51.         ( H" ?2 Q) J( g/ ]3 X& ^+ L, g- W
  52.         digitalWrite(kg, HIGH);  ]7 R% i7 A: \- H' X! o6 m/ y
  53.         digitalWrite(de, LOW);8 I- W( d! M) ]$ N
  54.         Button1.print("on");
    ) Z, Q/ A% e) ^! r4 x$ T
  55.         Button1.color("#0000FF");              //设置app按键是浅蓝色
    ! ]" P" X* l4 s* A; ~$ B
  56.         Button1.text("开启中");! _: Y& ^4 l- v/ {* C
  57.         BlinkerMIOT.powerState("on");6 k( ?. P, V; d+ Y8 J+ b
  58.         BlinkerMIOT.print();9 \3 T; D4 ?9 t3 `8 l# D
  59.    }2 C  r% ^- m5 M7 h& P' L7 q* o
  60.    else if (state == BLINKER_CMD_OFF)
    6 t$ u3 A, ~2 f( X
  61.    {9 d- \& N& W8 Y9 Q! [. w
  62.         - `4 ]  _% L2 B# N. v! C1 S4 J$ O
  63.         digitalWrite(kg, LOW);0 X: U: ~2 G0 ]
  64.         digitalWrite(de, HIGH);3 C4 Y* X4 C( |; e( y
  65.         Button1.print("off");8 a- M4 Z  c# Q/ `/ E7 L# {
  66.         Button1.color("#00FFFF");              //设置app按键是深蓝色; F' F/ j1 q& J0 T6 I
  67.         Button1.text("关闭中");6 ]6 Y" I; W" l9 f" z$ d
  68.         BlinkerMIOT.powerState("off");
    , M& W2 U( p# F( [" p' @
  69.         BlinkerMIOT.print();
    3 e: B$ D9 R8 ]" R- N
  70.    }3 U" _; n' F2 ^( N
  71.       
    " a/ t% E" r5 Q, ]: Z: B1 X
  72. 8 K! r) h& y# o7 w) U6 l# {" Q
  73. }
    ' @- h0 U4 T$ h# r, J
  74. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    ; ~" X- D, _& t# B% g
  75. //*******如果天猫精灵有对设备进行操作就执行下面
    , T1 V& m- _" S% R; A8 @
  76. void aligeniePowerState(const String & state)
    / M/ K7 N* S1 H7 s( p/ B% j( M
  77. {5 @5 n, V- h: W% L: v5 Y; h5 l
  78.     BLINKER_LOG("need set power state: ", state);
    ( o. H: h2 \# c, R1 `
  79.     if (state == BLINKER_CMD_ON)
    2 q& l" `0 U$ t0 S) _6 v  x
  80.     {1 L6 Y$ x4 K5 x8 K9 R
  81.         , p2 p! j- \3 T. E3 Z7 x
  82.         digitalWrite(kg, HIGH);9 i' n5 R! \) J0 H$ ]6 X
  83.         digitalWrite(de, LOW);
    $ j9 r* u4 ]/ e5 O
  84.         Button1.print("on");( Y! x* P  o& s( z, S5 E- o
  85.         Button1.color("#0000FF");              //设置app按键是浅蓝色$ l* I5 O1 a* h/ E
  86.         Button1.text("开启中");
    7 U6 h' ~. s- S7 M0 E
  87.         BlinkerAliGenie.powerState("on");9 C, x! E- t7 H0 x" ]: [' _$ f
  88.         BlinkerAliGenie.print();
    5 L/ a% E9 ?! [! {8 @* t! `) n5 F) B
  89.     }7 B3 `1 m4 Q( ~) {, w% [
  90.     else if (state == BLINKER_CMD_OFF), \4 d6 b7 q6 C( ~
  91.     {
    1 c6 Y4 w0 ?. ]+ A% \
  92.         
    2 i$ N6 V* ?' P5 d
  93.         digitalWrite(kg, LOW);5 _: [* `  f- K; x7 J
  94.         digitalWrite(de, HIGH);
    0 m3 k/ N+ W6 q/ Y, O8 v5 y
  95.         Button1.print("off");) ]& D; v$ I% ?* C4 a8 r: Y
  96.         Button1.color("#00FFFF");              //设置app按键是深蓝色
    1 j/ }1 T) f! ]8 A( j
  97.         Button1.text("关闭中");" |" @  [3 `3 F3 y+ I7 Z
  98.         BlinkerAliGenie.powerState("off");9 [( V9 l: `3 a# U+ J, v
  99.         BlinkerAliGenie.print();
    : v/ x8 R5 B0 |' b8 y! m
  100.     }
    7 e8 N) [$ t$ H
  101.         
    2 ~  k/ T% c8 Z

  102. / S8 o# B: A! [
  103. }" q" }. w+ j: v% ~  Q" U9 \1 g/ u
  104.   //*******app定时向设备发送心跳包, 设备收到心跳包后会返回设备当前状态30s~60s一次
    + T4 R* n$ Z0 t% W
  105. void heartbeat()1 R, y& c' C! ^* F% X
  106. {5 y! C% x, T. I  i0 w: U/ M/ M! p
  107.   BLINKER_LOG("状态同步!");
    ; g" _6 u: [* z
  108.    if (digitalRead(kg)==HIGH)
    6 Q$ l9 H8 I0 W
  109.     {
    ) E* u6 [( e' Y+ M, a
  110.       Button1.print("on");
    5 o0 ]1 D8 C7 F
  111.       Button1.color("#0000FF");              //设置app按键是浅蓝色
    4 x9 T  y/ Z6 b" Y* K. z1 W
  112.       Button1.text("开启中");
    , E2 y! C7 F9 d( b
  113.     }) M5 G. H5 `4 H& d
  114.     else 2 A: h4 G3 [1 q( d
  115.     {
    # p# l. |* v* y; ~
  116.       Button1.print("off");
    3 A3 W) H: {" e
  117.       Button1.color("#00FFFF");              //设置app按键是深蓝色
    - x8 r+ O" I1 q
  118.       Button1.text("关闭中");/ r8 i+ {8 F4 Z* ?
  119.    
    7 c2 z/ J  s9 w
  120.     }. d; u0 b) S: ?0 y, M9 P) {
  121. }
    # c( J; }. C$ k( |
  122. //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++7 Q5 ]# y, C, P, g8 D- o/ d4 P
  123. void setup()2 a6 j8 V: Q. ]
  124. {) j+ J# O0 {* r5 y
  125.   // 初始化串口
      A4 ]) e1 t. {' L0 D" q; b
  126.   Serial.begin(115200);: F3 j' z0 b1 q6 L6 K  V: g
  127.   delay(10);
    ; V/ o% @$ b& I2 ^  v
  128.   BLINKER_DEBUG.stream(Serial);
    7 t$ i; L) r5 x$ Z* t' L# i
  129.   // 初始化有LED的IO
      b  W/ L) G' S
  130.   pinMode(kg, OUTPUT);                 : Q5 F; S1 y" l' I1 K
  131.   digitalWrite(kg, LOW);//初始化继电器上电状态
    + p, C2 K& x! U
  132.   pinMode(de, OUTPUT);
    : ^. r) a6 c4 U$ O  l
  133.   digitalWrite(de, HIGH);( O4 O) \+ K/ `* K
  134.   pinMode(key, INPUT);            
    3 s& r$ R/ n  k) g% A0 D
  135.   Serial.println();3 n( `* L' M2 y+ ?# O* B
  136.   Serial.print("Connecting to ");/ T/ d+ m( v: C" @0 z
  137.   Serial.println(ssid);
    4 s2 J9 o7 g: ?
  138.   WiFi.begin(ssid, pswd);
    3 I- m- T7 I5 D7 W. A2 {
  139.   while (WiFi.status() != WL_CONNECTED) {
    % }- U& O, t: B7 M5 \
  140.     delay(500);/ ]2 X0 s" U5 ~3 P! d9 m
  141.     Serial.print(".");1 D& K6 x- @6 r$ {* d
  142.   }
    : |4 L9 n4 X3 U
  143.   Serial.println("");. g# w& {: ?3 E& ~( ?. `
  144.   Serial.println("WiFi connected");
    , J5 D' T+ i) M7 n
  145.   server.begin();
    4 `; Y2 a( a% q, m, `: e( [  w
  146.   Serial.println("Server started @ ");& f5 ?6 j/ h4 h) g2 i  `, }
  147.   Serial.println(WiFi.localIP());. A# K8 M0 f# S
  148.   //打印出IP地址,后期可以制作显示器来外部硬件显示ip9 Z, X" A3 V0 o( ~
  149.   Serial.println("To control GPIO, open your web browser.");
    3 I) G8 M7 q( ~; U, {" z- _# u
  150.   Serial.println("To set GPIO 0 high, type:");
    9 g. Y; `9 E% p2 i6 }3 a
  151.   Serial.print(WiFi.localIP());2 J6 s- G0 u4 P+ w# Y8 f
  152.   Serial.println("/gpio/1");8 z% H+ d1 A5 g) l
  153.   Serial.println("To set GPIO 0 low, type:");
    3 w) [+ D! V& @( ^
  154.   Serial.print(WiFi.localIP());
    2 H9 D+ [$ H6 z% p/ P* D
  155.   Serial.println("/gpio/0");/ A$ t+ S/ f% `# u
  156.   Serial.println("To toggle GPIO 0, type:");
    / [+ [% k$ V6 y: [5 B4 E9 ~  u
  157.   Serial.print(WiFi.localIP());% h! f; |9 T: `3 X6 P
  158.   Serial.println("/gpio/4");0 W4 o8 ^6 y/ ], Z
  159. 6 ]$ r* g( E- ~8 F! ~! R, K
  160.   // 初始化blinker
    ) A  D1 C' h$ q0 f' n. z8 {
  161.   Blinker.begin(auth, ssid, pswd);
    ' l# \/ F8 `# I* i& F- _
  162.   BlinkerMIOT.attachPowerState(miotPowerState);              //小爱语音操作注册函数$ I2 t" H5 l8 k" ?/ _5 X
  163.   BlinkerAliGenie.attachPowerState(aligeniePowerState);      //天猫语音操作注册函数
    ( U2 K7 m( R# u. H) X
  164.   Blinker.attachHeartbeat(heartbeat);              //app定时向设备发送心跳包, 设备收到心跳包后会返回设备当前状态进行语音操作和app操作同步。3 |6 q" R, z4 `1 F& ?

  165. 3 ]2 N# f1 Z( ]" e9 c, \2 n
  166.   Button1.attach(button1_callback);             //app上操作必须的注册回调函数关联按键名“Button1”和判断程序“button1_callback
    6 U( k5 ]1 ?5 I9 d. `
  167. }4 n, w. t6 y, m! ]) S
  168. void dataRead(const String & data)1 T) z2 _: h& @) S0 Q1 l
  169. {
    , [# ]* @  Y! G6 b
  170.     BLINKER_LOG("Blinker readString: ", data);2 T- `5 b& i: m/ E4 W

  171. . A* |$ J% V5 P, J9 |$ ~$ [
  172.     Blinker.vibrate();! J2 Q+ A' Q# ]# n
  173.     0 c7 J4 A. |& x( e- i
  174.     uint32_t BlinkerTime = millis();
    1 w) _8 M9 q/ ], ~& s0 P, F
  175.     0 Z! z) J2 v7 V- z; Y
  176.     Blinker.print("millis", BlinkerTime);
    . `% P# a7 G5 L" }* k
  177. }
    & a3 j5 x/ K2 U+ N2 D
  178. void loop()
    $ ]6 w$ T! o/ q1 }) F
  179. {9 D* @% ?+ f" [
  180.   Blinker.run();
    % D, I% a. X: i5 Q1 y
  181.   if (digitalRead(key)==LOW)6 b; @- u1 d/ ~) n3 ?
  182.   {4 m9 `% I) o! {) s# Y. J. b: D
  183.     Blinker.delay(200);
    0 [/ p0 h: }9 n  l$ z
  184.     if (digitalRead(key)==LOW)5 r) I0 j! r5 Y( t2 C+ V1 x
  185.     {' u- v* ], z6 l4 W
  186.           if (digitalRead(kg)==LOW)
    3 @' {( }, }2 B; V5 h2 d
  187.        {4 s  I0 V. }1 c6 m
  188.             
    & i- `7 I, k8 Q
  189.             digitalWrite(kg, HIGH);- T$ W1 L. F4 w8 z1 D" o0 O' n3 d: O+ m
  190.             digitalWrite(de, LOW);
    + ^: f2 w% x5 s& @
  191.             Button1.print("on");/ d9 j9 w+ V# n
  192.             Button1.color("#0000FF");              //设置app按键是浅蓝色  E) y1 A2 U# f- K  `: y" C% ?/ J, f. A
  193.             Button1.text("开启中");* s$ W/ A/ g; Z* B' `
  194.        }/ @( [: Z. M& {
  195.        else if (digitalRead(kg)==HIGH)
    3 T* o# b! O9 y4 ^8 i
  196.        {
    3 h" t: v7 Y# \+ U% F/ b6 g& y
  197.             digitalWrite(kg, LOW);
    ( u# _- }; E' C3 Z# B- N6 O
  198.             digitalWrite(de, HIGH);
    6 R2 b* J: J! H/ d
  199.             Button1.print("off");
    1 W7 D; U( y' W- c/ ?- R; @
  200.             Button1.color("#00FFFF");              //设置app按键是深蓝色) E1 g8 y# W' @2 F) Y/ G
  201.             Button1.text("关闭中");
    , Z5 H+ F2 Z0 c6 a4 P# j: L5 t
  202.        }5 v, Y% I) h! p1 |
  203.       }
    , L7 n+ W* \: \: ]- b. H! O) z
  204.     }
    % c2 _6 x* X) s; m3 z) _
  205. }
复制代码
- b! u! @; U  r+ N+ v
# K8 z0 c/ f( x  W* u+ R
我没有用卖家给的码,我自己写了一个,参考我前面的文章最简单的8266天猫精灵控制开关,点灯、Mixly可视模块化编程 https://bbs.nasdiyer.com/thread-18755-1-1.html
7 K& v* m1 l" ~2 D' x
0 d& U1 g0 A& N! d# W把上面的2改成5,把高低电平对调一下就可以使用天猫精灵来控制你的这个插座了。我是把我的第一个插座放在了我的落地电风扇中了,当我慵懒的在沙发上刷着手机时候感觉有一点点热,我只要呼唤“天猫精灵,打开风扇”,就可以了。" r; j4 c( r& r) d. o" F

+ Y2 @5 D/ J2 m* y& U: p7 m- }+ L$ N. a# M/ C

0

主题

18

回帖

85

积分

初级渣柚V2

积分
85
QQ
发表于 2021-8-23 13:06:07 | 显示全部楼层
高手,没玩过!达人

2

主题

11

回帖

62

积分

初级渣柚V2

积分
62
QQ
发表于 2021-8-24 15:53:16 | 显示全部楼层
买了几个   做工挺扎实的,但是外壳怎么拆啊  拿斜口钳拨了一个,   四个圆角的卡口根本没法正常拆

11

主题

51

回帖

209

积分

中级渣柚V1

积分
209
QQ
 楼主| 发表于 2021-8-24 17:20:24 | 显示全部楼层
a467913252 发表于 2021-8-24 15:53' \; d7 ?& l$ j4 p8 D- o
买了几个   做工挺扎实的,但是外壳怎么拆啊  拿斜口钳拨了一个,   四个圆角的卡口根本没法正常拆 ...

, q' o  I( v8 ]' C8 ]0 `7 @. j9 j# F大力出奇迹呀

1

主题

8

回帖

256

积分

中级渣柚V1

积分
256
发表于 2021-8-29 08:14:58 | 显示全部楼层
a467913252 发表于 2021-8-24 15:53
. `/ o8 l% {3 N; b. s& R买了几个   做工挺扎实的,但是外壳怎么拆啊  拿斜口钳拨了一个,   四个圆角的卡口根本没法正常拆 ...

- j7 O) s% Y1 v; p  U1 U2 d昨晚拆了一个,废了老大劲,想和卖家说的无损拆下来,不拆个三五个积攒经验,基本不可能

2

主题

11

回帖

62

积分

初级渣柚V2

积分
62
QQ
发表于 2021-9-4 23:05:22 | 显示全部楼层
sevenup0719 发表于 2021-8-29 08:14
* F7 ~3 [  v- d! z3 ]昨晚拆了一个,废了老大劲,想和卖家说的无损拆下来,不拆个三五个积攒经验,基本不可能 ...

- Q$ P' c+ y8 N4 j9 B; a5 ]你的搞定没  为什么我的根本没法烧录   连接不上,,用esp01s还没问题的
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|矿渣社区 ( 黔ICP备2024020525号-1 )

GMT+8, 2026-1-8 10:06 , Processed in 0.130307 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表