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

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

[复制链接]

11

主题

51

回帖

209

积分

中级渣柚V1

积分
209
QQ
 楼主| 发表于 2021-8-21 13:57:54 | 显示全部楼层 |阅读模式
本帖最后由 易记 于 2021-8-21 14:05 编辑
; }6 i; K/ b: c6 v! P8 }; J
, n) ~7 @9 [! F/ ^  ?最近玩ESP8266,想做个天猫控制开关。" C. D- O8 G! e4 i
但是我很懒,一个个配元件嫌麻烦,于是想着能不能淘到便宜的带电源板的模块,多倒是蛮多,一般都要20多块钱。
$ k1 t' X- w( F" w0 B4 ^& G还是闲钱上逛一下看,找到一个联想的国外版8266智能插座,价格才8.5元一个。有一点不足,就是只有三孔,要是五孔的就好了。老板说五孔杂牌价格一样也有货,晚两天发布。' c) [3 o# g6 \; [
QQ截图20210821125037.jpg ) Z9 k; D, a" n5 H
6 F& z* ?0 q9 b) J# y

8 X. Q; |2 \8 f" o问了一下店主,买20个一盒才包邮,想着20个还是有点多,买了5个,连运费47.5元。" L; l2 D. D& w. P+ `

: W- Y8 T( M3 o0 \4 J  Q/ i QQ图片20210821124517.jpg 2 p8 t/ n2 ]( U5 k( j% h+ ?
( Y/ o* c2 W1 N
6 A, _1 w( ~% ~, @. B
) }' E/ s6 X! l+ e
到手,当然是拆拆拆。
# u; P' `6 ?2 Z* _, R IMG_20210820_134104.jpg - {' f  l! m0 d* j; f4 B: B7 ]

) ]( r3 \( Y: H
1 P& X7 w( d9 ]' v' H2 @! u2 d) `
联想的做工,还是感觉不错的,光这个继电器应该也要个7-8块钱。
% k% }/ z2 X  u# i3 ~# j' W IMG_20210820_160634.jpg
, Q" T; J1 O  \: }1 o+ f4 q3 N1 q" x5 n9 R7 _

# ^* m6 x" b) X) X- G2 E+ F, t7 l继电器是两组常开,感觉要是接电灯双控开关是不是有点麻烦的,不过用于插座是很安全,要断二条线都断开。  T; D8 B4 T# \' _7 X
QQ截图20210821133707.jpg
! N& N& e( V# t

; V7 W3 b  `  y" M5 O+ U IMG_20210820_134114.jpg
) f% C: w% R6 X' t

% n  a0 T) r4 x  ~" W; `. b电源芯片
# }4 E! f! k. R0 X+ O/ ]+ W" C2 N7 B$ p% {
) K! |3 s8 R+ c+ \. a
% Q& M2 u% i7 P1 l# y
有一个按钮,按钮有二个蓝色LED灯
( d: \( P0 {/ W% p IMG_20210820_134157.jpg
( |0 t$ M" v0 b1 o# n
8 i: @: i( X$ k
8 Y0 K4 i* A, M2 O' W
8266
; F5 j5 G( A! E+ _' N! w IMG_20210820_141913.jpg
8 V' i& ]5 i7 I' _" V1 `. w
* E$ M' |- c: ?! Q0 O/ z

4 q3 x; K6 Q: p. O' F; @4 u5 V7 _- `& y4 z9 H7 I% A) `9 V
7 b8 f) D2 k7 T+ V
接下来就是刷机了,版子上面都预留测试点。- J; j* I8 c/ j
接线比较容易,上面都有标示,GND,3.3V,TXD-RX,RXD-TX,还有一个就是IO0接地后刷机。/ y& O4 O1 L: @' X1 O
未标题-1.jpg 4 ~8 G9 K! D4 [4 @
注意RX这个点,就是3.3V边上的这个点,焊盘设计的就点问题,电烙铁热一点或是焊的刷机线过粗的话,容易掉焊盘。0 Y( V2 S8 g# E( [+ @
要是掉了就只有一个过孔了,要是焊不上,只能再拆开接在另一面,所以为了避免不必要的麻烦,请注意一下。
8 t/ X+ l  t/ d# K3 D1 J# M2 H

2 x% u# I# e; _& L% a
- E1 U/ r7 K- c5 d# |9 K) ^

% M. _& F0 g: P. `7 ~
4 p8 ~, Q. I5 h8 v& Q$ Y# I( H

) [6 d! _7 v# _- r4 {5 @' l& f6 L! y    5号脚位是继电器输出+ |) z7 F/ T' o, |+ B
    12号脚位是灯输出3 p6 ~( N- R0 J: ]/ n
    4号脚位是按键
& a* O& V6 ~  J, q1 }) L2 H
3 O2 Z, o& ?! n; A

/ {: e7 o$ P5 S' u; p- L% j  F5 q( s/ S" Q& \6 G: l

1 c3 N* l4 `) I卖家有发一个源码,如下
  1. #define BLINKER_WIFI                    //官方wifi协议库
      H/ C2 E3 h6 D( y! G; t0 F- i0 n
  2. #define BLINKER_MIOT_LIGHT              // 设置小爱灯类库
    ' M* r. I  p% K; h
  3. #define BLINKER_ALIGENIE_LIGHT          // 设置天猫灯类库: q5 ]/ o9 x: D
  4. #define BLINKER_PRINT Serial            //串口协议库' ~4 i' F6 ~+ l$ d6 p" S* T
  5. #include <Blinker.h>                    //官方库
    5 C8 E) F* Z4 `5 a+ j2 t
  6. #include <ESP8266WiFi.h>                //官方库
    : b) l/ F- I. \; B; c
  7. WiFiServer server(80);                  // 服务器端口号4 [, P/ O1 E  D* M  Z  H& U

  8. ( C2 G  K9 m8 T2 N  G& T( P( B1 [  a
  9. char auth[] = "c4942fb1d5e4";     //设备key" ?% f# J+ E2 J# s2 j% h0 {6 W
  10. char ssid[] = "wanboshi";     //路由器wifi ssid
    / u  L# V+ S: s$ _' E
  11. char pswd[] = "1365662999813586348220";     //路由器wifi 密码
    ! ]( ]: Y) b- ^( G+ S+ ~; h
  12. : I; L: u+ h0 V+ \# v6 P
  13. bool oState = false;
    ( e' H+ d; Z3 ^% m- @
  14. - C: R6 y% u4 W4 z6 @! F: Q4 s+ d
  15. int kg=5;//继电器输出
    4 M# h" C" d2 ]. \: R, P
  16. int de=12;//灯输出! M) e2 n, U) ^! Z. Q2 i9 g  M3 u
  17. int key=4 ;//按键1 z3 t! o/ F" T0 ~3 G0 P0 N, p4 P
  18. //*******新建组件对象
    - i  |% @7 E; h- _, ~  @7 ]7 }6 N

  19. % i1 K4 B" Q; I; M. P2 ]" Y  w
  20. BlinkerButton Button1("btn-abc");              //设置app按键的键名+ e5 I2 \3 m* u
  21. //*******app上按下按键即会执行该函数app里按键8 q: A8 W/ G" u
  22. void button1_callback(const String & state)0 w  C8 Z' K5 w
  23. {
    1 _$ m  i  p0 Q/ |. }5 [
  24.    if (digitalRead(kg)==LOW)
    % h0 Y# g' b! V* I4 h( K! A5 g
  25.    {
    $ {' t$ C' q- C% P
  26.         BLINKER_LOG("get button state: ", state);
    + \6 T  e6 I* x  _3 `
  27.         digitalWrite(kg, HIGH);
    4 u, v* _" ]" {
  28.         digitalWrite(de, LOW);, m) [5 I- }9 S
  29.         Button1.print("on");
    ! A0 r& R! Z0 }; Q+ G5 n6 S
  30.         Button1.color("#0000FF");              //设置app按键是浅蓝色
    ! O, z/ \9 `+ N- |+ ~! [. E" D
  31.         Button1.text("开启中");. o! _. K, L$ l  J8 @8 I
  32.    }1 o" E5 ]+ v5 [4 x; j7 t( v8 W- q' s
  33.    else if (digitalRead(kg)==HIGH)7 j1 \/ t2 @" M# K
  34.    {
    3 [' `* R- g4 j8 R
  35.         BLINKER_LOG("get button state: ", state);  ^- X4 W& I" F- h; V4 l
  36.         digitalWrite(kg, LOW);
    " Q5 u2 w/ S0 w  y0 g3 z
  37.         digitalWrite(de, HIGH);4 j  V7 b* f% u0 z( D) m
  38.         Button1.print("off");
    , {, P- b; C* U) x: u) J6 \
  39.         Button1.color("#00FFFF");              //设置app按键是深蓝色
    * k( ~/ h7 v/ {9 i+ k- U2 Q
  40.         Button1.text("关闭中");
    . P8 ~$ s- w/ e$ |
  41.    }
    & o' W$ u) F' k/ \
  42. }, [8 S& b$ k: {7 r
  43. 4 s& T; q! R, K" ]. Q
  44. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++& R" j5 n# _) A

  45. ) t. R4 l6 t4 M0 |! ]% z( \
  46. //*******如果小爱有对设备进行操作就执行下面9 |* z, _/ z& t' f7 n7 @$ c
  47. void miotPowerState(const String & state)
    ' J" k8 t1 W! T9 K1 k
  48. {5 u0 x8 r, M9 D5 t
  49.     BLINKER_LOG("小爱语音操作!");              //串口打印
    6 `! V' S# M4 p. A0 g) ?' z
  50.     if (state == BLINKER_CMD_ON){
    ) w/ `( v9 v# Q7 d, S
  51.         
    5 ?9 o; N, z* }1 P9 {  R/ P
  52.         digitalWrite(kg, HIGH);
    / F/ K' G3 {+ F/ s
  53.         digitalWrite(de, LOW);
    * k& J* U# M" p
  54.         Button1.print("on");) |- ~2 \: L+ p; y, U
  55.         Button1.color("#0000FF");              //设置app按键是浅蓝色. o! B% D+ m' T  v5 m3 ?' f
  56.         Button1.text("开启中");* A+ w; ]* e! }8 b
  57.         BlinkerMIOT.powerState("on");& m- A) X$ y9 ^  P# V
  58.         BlinkerMIOT.print();
    ; \+ Y0 n, C) ^2 \6 {
  59.    }/ s) P. j& ?9 a, |
  60.    else if (state == BLINKER_CMD_OFF)( u0 D$ ?! z! @0 ?: K0 z  I5 E/ a
  61.    {; n" p+ F" n5 U1 {& u8 G
  62.         
    + m: L" C9 w7 V( c) f
  63.         digitalWrite(kg, LOW);; d3 {( t. O) D; X+ b
  64.         digitalWrite(de, HIGH);
    ! {% d' C) y; S
  65.         Button1.print("off");
    + V& O6 Y$ I/ C
  66.         Button1.color("#00FFFF");              //设置app按键是深蓝色+ G/ r1 `( q; G1 |4 X' ~' C/ R
  67.         Button1.text("关闭中");
    : v; P6 }) o: N( Z/ [' p& m- u" x
  68.         BlinkerMIOT.powerState("off");
    7 H, B) r6 X# q& P
  69.         BlinkerMIOT.print();4 r# E+ M% a. P4 \/ _' k
  70.    }
    + N7 h# L& \, E; @3 M
  71.        ( H- Z, e" f. Z( G! q7 R3 m* s
  72.   _9 ~* A8 O: w  O8 F
  73. }6 j) r: ?, N, @4 U* y$ H( R
  74. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
      i! m, B; R6 [/ j* y4 y- k2 Y
  75. //*******如果天猫精灵有对设备进行操作就执行下面
      ]! m4 Q; |3 |0 `
  76. void aligeniePowerState(const String & state)
    ( I- Z; u% R8 ]8 H  [
  77. {
    2 A1 ]# S0 W* |% z& `1 L5 X& z5 h
  78.     BLINKER_LOG("need set power state: ", state);
    9 g2 ?+ I# J: s) S; Q0 h% n$ m
  79.     if (state == BLINKER_CMD_ON)! M- j' H; F& Y2 u3 o% x
  80.     {  o9 J! e( W1 z: Y0 Q
  81.         
    $ p, B9 {4 w: a2 D
  82.         digitalWrite(kg, HIGH);, j. c5 t" i8 ~0 w, d! c6 M0 O2 i
  83.         digitalWrite(de, LOW);* U, I5 J7 A* [( }% i
  84.         Button1.print("on");) H4 l# h) g% }. @! ?" ?" r3 u
  85.         Button1.color("#0000FF");              //设置app按键是浅蓝色0 X% {) z1 F/ s! d. e( I" C+ _
  86.         Button1.text("开启中");: {& S* _' v. _) n' M
  87.         BlinkerAliGenie.powerState("on");
    5 B6 ^0 b+ q. k% Z4 ?
  88.         BlinkerAliGenie.print();
    ) I, A, R" d- I: l+ ^
  89.     }
    & r7 T4 Y! C, g! v
  90.     else if (state == BLINKER_CMD_OFF)% `$ u" u/ X/ R- F( \
  91.     {
    7 K8 V5 P) I# u9 z- u1 a  \
  92.         ; z2 @; T- B& T% W+ s
  93.         digitalWrite(kg, LOW);" m  r; ?5 x% U$ W& B9 ?" [
  94.         digitalWrite(de, HIGH);
    ) B! m* K! a9 L
  95.         Button1.print("off");3 J  j) W  v6 _! d. l6 j7 i
  96.         Button1.color("#00FFFF");              //设置app按键是深蓝色
    % v3 a3 N! I  L+ z+ k, D% T5 ?
  97.         Button1.text("关闭中");, M" d- x" y2 q1 K6 c
  98.         BlinkerAliGenie.powerState("off");, i  Y+ j) @: J* V
  99.         BlinkerAliGenie.print();
    5 p+ }8 p: w+ J' p% F* }
  100.     }; ^8 g% M3 O: c! O8 Q- Q
  101.         
    / _1 u- N! e  S. F

  102. 1 R) e: F, N  O* ^8 ]; U  b
  103. }3 P0 S5 O  O4 v0 i+ i
  104.   //*******app定时向设备发送心跳包, 设备收到心跳包后会返回设备当前状态30s~60s一次
    1 |" q; C/ T- r9 ~% u! H9 o" P& A  O( J$ b6 B
  105. void heartbeat()1 V; `/ o9 U5 V" r) q6 b7 B$ h
  106. {
    8 h  y5 O* Y5 h, c0 M$ _
  107.   BLINKER_LOG("状态同步!");
    6 R" n& u9 F) d5 O7 G
  108.    if (digitalRead(kg)==HIGH)
    5 z/ U1 b( k* R8 o5 i' n3 L
  109.     {
    * ~8 ]* h- C: Z% g3 f& D0 p4 T( l, D
  110.       Button1.print("on");- T2 T, r7 K: e. V% Z
  111.       Button1.color("#0000FF");              //设置app按键是浅蓝色: @3 U. ~& x( ~, `
  112.       Button1.text("开启中");
    , s+ g9 x! \9 h- `# _9 t4 C3 a7 I
  113.     }* Y5 o4 a7 {' b8 H
  114.     else ' \4 Z; k/ I7 k1 Z$ G
  115.     {
    + e8 [' D& m1 G! V. H/ z4 c, N
  116.       Button1.print("off");  Y0 O: V( J' F( C
  117.       Button1.color("#00FFFF");              //设置app按键是深蓝色
    " x. B; m# o: p4 s; ~
  118.       Button1.text("关闭中");# y9 Z: P9 C3 l+ j# w/ e
  119.     & G$ ^# s5 d$ Z1 \3 n
  120.     }! ?/ `* S! [. \" h5 Z: r3 [
  121. }
    7 P0 ?  O( V; x2 Y6 o
  122. //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++2 d& U7 W5 F) q7 c" c6 I4 `6 ^
  123. void setup()
    9 R4 i3 z/ D  o- \
  124. {
    ( m( V6 I( {. g: C6 S- r" m4 X- P
  125.   // 初始化串口
    8 \- L" G, {4 p4 n) {1 `0 s
  126.   Serial.begin(115200);
    4 v; @3 v3 ~" X* e" r1 _
  127.   delay(10);
    ' a# b. v0 }6 s2 s; q. j% m2 X. X/ Z
  128.   BLINKER_DEBUG.stream(Serial);
    0 L4 H* C; D' P8 d: x
  129.   // 初始化有LED的IO
    5 ^) F. d! a" r- K0 @
  130.   pinMode(kg, OUTPUT);                 % ~. Q' M' |. @4 X
  131.   digitalWrite(kg, LOW);//初始化继电器上电状态
    $ @5 h" o. |! h4 W: j9 e. e$ u9 ~3 D& V
  132.   pinMode(de, OUTPUT);$ Y  _8 M- p1 g7 G3 G1 g, r
  133.   digitalWrite(de, HIGH);" `. E9 b8 y8 T2 n1 z5 c. N' q9 C
  134.   pinMode(key, INPUT);            
    % W/ k  X( \" g5 W% q
  135.   Serial.println();
    6 A$ F7 p- j& K$ e1 d4 p4 O
  136.   Serial.print("Connecting to ");& w; D; \$ Q) Y, F# n
  137.   Serial.println(ssid);1 y: M. }$ J& M% G! P0 m
  138.   WiFi.begin(ssid, pswd);
    " t+ }8 w5 ~5 Y/ `7 h0 M# V* x
  139.   while (WiFi.status() != WL_CONNECTED) {
    , e( {/ x. `4 q) a( g3 c" `
  140.     delay(500);& W% Q" c4 _" Y% e8 @4 R5 S. V7 h4 Y
  141.     Serial.print(".");3 a# h, G' `% t4 ]; E; B. \; G0 A
  142.   }
    3 Z1 o, o. K7 i. v5 O% X" w; v
  143.   Serial.println("");# p0 u, A- F7 ]' q, \4 M
  144.   Serial.println("WiFi connected");
    6 ]2 A9 V; Z( X- n
  145.   server.begin();
    5 `0 T$ M: @, _; @1 q" i) V& ~
  146.   Serial.println("Server started @ ");& M; F1 y2 j2 t4 x  K% _
  147.   Serial.println(WiFi.localIP());
    5 t; Z; V. t0 }" V% j$ O) h% w, d
  148.   //打印出IP地址,后期可以制作显示器来外部硬件显示ip. P  F* C: _6 N. u" d! \2 Q
  149.   Serial.println("To control GPIO, open your web browser.");+ W! C7 E  Q5 ?5 X  K# r
  150.   Serial.println("To set GPIO 0 high, type:");
    ! n$ }( R* h8 G$ p* T* J
  151.   Serial.print(WiFi.localIP());
    * V* P7 n% v! s6 @- c8 X- V# g0 c
  152.   Serial.println("/gpio/1");
    ' z9 e3 n1 w, e6 f% U
  153.   Serial.println("To set GPIO 0 low, type:");
    9 \2 G/ S# W/ o
  154.   Serial.print(WiFi.localIP());
    6 R% O, g7 E6 E# U
  155.   Serial.println("/gpio/0");6 w$ f) N- I9 N9 ~0 W" E
  156.   Serial.println("To toggle GPIO 0, type:");
    - W3 ~* `; M0 o8 @: k$ g( J% ^
  157.   Serial.print(WiFi.localIP());
    ) b3 G$ J2 K7 j
  158.   Serial.println("/gpio/4");
    ; N& F* {# D4 F

  159. 2 m* m1 K( k) _9 D$ ]5 `- N
  160.   // 初始化blinker
    * \1 w( j! m+ m- k0 f$ ?
  161.   Blinker.begin(auth, ssid, pswd);; r5 t; H4 r8 n; K7 B7 O; S" ~, `' V
  162.   BlinkerMIOT.attachPowerState(miotPowerState);              //小爱语音操作注册函数& k1 u5 |" F8 k/ N) b3 E
  163.   BlinkerAliGenie.attachPowerState(aligeniePowerState);      //天猫语音操作注册函数* U! I" K2 e+ h
  164.   Blinker.attachHeartbeat(heartbeat);              //app定时向设备发送心跳包, 设备收到心跳包后会返回设备当前状态进行语音操作和app操作同步。* x, Q; l, N& B( ~; J3 _% R: @

  165. * }; ?$ N  v& T/ T. K
  166.   Button1.attach(button1_callback);             //app上操作必须的注册回调函数关联按键名“Button1”和判断程序“button1_callback
    " j$ o9 q4 B8 J9 E/ a$ V3 z3 t, @! Q
  167. }
    * }- a) B0 R  l  F# r9 s
  168. void dataRead(const String & data)
    ) c# `$ }4 ^3 @, X4 M7 D
  169. {/ a* q, g& X# k* Q& D
  170.     BLINKER_LOG("Blinker readString: ", data);) M+ q# J/ ~' s+ ~3 a$ I
  171. 1 b) V% W7 C! j& d1 }" u9 d3 L9 a
  172.     Blinker.vibrate();0 X8 X# g: E% f  C9 t
  173.    
    # A/ ~9 f- _' y) i+ c1 X( Z
  174.     uint32_t BlinkerTime = millis();
    8 K/ f5 ^1 ^# @5 i# e5 d+ K
  175.    
    ' a) E. _0 X8 B3 n
  176.     Blinker.print("millis", BlinkerTime);4 O  [" m2 K- X" r6 L9 G
  177. }( h' F) v$ ?7 N- V
  178. void loop()& M$ X) ?0 T! e) G
  179. {5 p$ W/ h7 j3 w
  180.   Blinker.run();8 Y) K& a: G/ d% m2 k; ^7 P
  181.   if (digitalRead(key)==LOW)$ _2 k5 a9 r8 S9 d2 o3 b/ [6 V
  182.   {: E" |1 e0 i5 T  Y( @. O
  183.     Blinker.delay(200);
    5 v3 P: c, I4 C7 f6 }5 w# e* I
  184.     if (digitalRead(key)==LOW)  y( l$ R+ I8 o( C$ Y
  185.     {
    7 [0 `7 ?/ j3 [. [2 Z2 ~, _
  186.           if (digitalRead(kg)==LOW)5 I7 _% U. m* z6 ^: U* U4 p
  187.        {$ ]* w0 ^# J8 K9 Q: Q) F
  188.             
    ( g) `  m- ?) g1 q( Y
  189.             digitalWrite(kg, HIGH);% _3 i3 X1 p- |2 y- _
  190.             digitalWrite(de, LOW);1 Y( F  ?! m* }9 I' X  n% X
  191.             Button1.print("on");9 X5 [1 e% H9 S/ E3 u, R4 _
  192.             Button1.color("#0000FF");              //设置app按键是浅蓝色
    2 ^) ?) }, c0 I. @9 Z, M
  193.             Button1.text("开启中");
    9 U% u! b0 t' \& N; b: N
  194.        }
    2 r' B. v' z) Q, I
  195.        else if (digitalRead(kg)==HIGH): [& f- O: i  Z0 l
  196.        {8 Z2 l" m4 r4 _% N. k& h+ p6 M
  197.             digitalWrite(kg, LOW);4 }3 l; Y( T$ q0 }( Y
  198.             digitalWrite(de, HIGH);: d6 o9 x1 p% j. W9 s2 i7 {
  199.             Button1.print("off");
    8 j$ D6 j$ b0 s4 N: s; |
  200.             Button1.color("#00FFFF");              //设置app按键是深蓝色8 N+ q- C. {6 M& u
  201.             Button1.text("关闭中");6 U/ c( R1 H, r  G$ }& Q
  202.        }0 l1 i, k7 t. A9 S  C! ?- F, U$ A5 Z
  203.       }5 }, F% J% ?) r+ x' C5 C7 L9 L1 ~
  204.     }% y$ w- N* k! R) E- S2 ]
  205. }
复制代码
: m- j. J2 q3 e; l$ @4 J

8 B0 R! B4 z, n+ V/ N3 D我没有用卖家给的码,我自己写了一个,参考我前面的文章最简单的8266天猫精灵控制开关,点灯、Mixly可视模块化编程 https://bbs.nasdiyer.com/thread-18755-1-1.html
! ?. Y+ u. z7 K2 v8 Q8 ]: V/ n
/ X* K8 f9 u1 a. n- m$ S1 `把上面的2改成5,把高低电平对调一下就可以使用天猫精灵来控制你的这个插座了。我是把我的第一个插座放在了我的落地电风扇中了,当我慵懒的在沙发上刷着手机时候感觉有一点点热,我只要呼唤“天猫精灵,打开风扇”,就可以了。
' W  M; |3 E( Y$ Y2 Z& w4 ^  B2 @+ V! C7 j4 p, A

8 ~9 k! W# Y( X0 I, R. A% t

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* }3 m+ ~. I6 E5 d7 c& Z
买了几个   做工挺扎实的,但是外壳怎么拆啊  拿斜口钳拨了一个,   四个圆角的卡口根本没法正常拆 ...

/ R  o* L5 i  L1 x; i大力出奇迹呀

1

主题

8

回帖

257

积分

中级渣柚V1

积分
257
发表于 2021-8-29 08:14:58 | 显示全部楼层
a467913252 发表于 2021-8-24 15:53
, J: m% K4 g( a  Q买了几个   做工挺扎实的,但是外壳怎么拆啊  拿斜口钳拨了一个,   四个圆角的卡口根本没法正常拆 ...
) Q2 _5 {% O' m3 r
昨晚拆了一个,废了老大劲,想和卖家说的无损拆下来,不拆个三五个积攒经验,基本不可能

2

主题

11

回帖

62

积分

初级渣柚V2

积分
62
QQ
发表于 2021-9-4 23:05:22 | 显示全部楼层
sevenup0719 发表于 2021-8-29 08:14+ Y/ h3 G1 m" \5 {$ K/ p2 i
昨晚拆了一个,废了老大劲,想和卖家说的无损拆下来,不拆个三五个积攒经验,基本不可能 ...

( z" V9 p( w, x) ^" K5 w/ }( v你的搞定没  为什么我的根本没法烧录   连接不上,,用esp01s还没问题的
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-4-5 20:18 , Processed in 0.119928 second(s), 31 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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