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

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

[复制链接]

11

主题

51

回帖

209

积分

中级渣柚V1

积分
209
QQ
 楼主| 发表于 2021-8-21 13:57:54 | 显示全部楼层 |阅读模式
本帖最后由 易记 于 2021-8-21 14:05 编辑 3 [8 F- J' B( x9 d3 X
* a( |$ d: p0 b; H& }1 Z* L
最近玩ESP8266,想做个天猫控制开关。# S/ k: U2 a) g& V" W4 M+ `
但是我很懒,一个个配元件嫌麻烦,于是想着能不能淘到便宜的带电源板的模块,多倒是蛮多,一般都要20多块钱。' @- l+ \# \; `# Z8 o, l8 n; p- n
还是闲钱上逛一下看,找到一个联想的国外版8266智能插座,价格才8.5元一个。有一点不足,就是只有三孔,要是五孔的就好了。老板说五孔杂牌价格一样也有货,晚两天发布。
9 Y( X, w  o& M QQ截图20210821125037.jpg
; ]& b" I5 c1 R! u4 J. C$ N, r8 w6 g8 l
0 R, _0 @6 L" U& n$ I( U2 I
问了一下店主,买20个一盒才包邮,想着20个还是有点多,买了5个,连运费47.5元。
- y" E- }( H) ~: Y  B
# I( P* v7 p: N9 C  w; {: U% k( g QQ图片20210821124517.jpg
; m7 e2 h0 W7 w
3 }, V, C' h: C- n

! ?5 d# C: s. J0 @: f, N

- w5 y  M6 h! Q7 c到手,当然是拆拆拆。, S3 m+ C0 z/ R+ T  C. p! ]$ X
IMG_20210820_134104.jpg
6 U$ Y" _7 c& n9 ~
) X1 Y; i1 s* B0 R
' f" o1 O3 R9 A$ k) [/ t( d
联想的做工,还是感觉不错的,光这个继电器应该也要个7-8块钱。% o* A* n# _$ f' Y
IMG_20210820_160634.jpg 4 Z' y6 ^) c9 }% \" {
( y1 W- c- e- R# f6 Y+ J
0 m" q* H* z) N  F& c
继电器是两组常开,感觉要是接电灯双控开关是不是有点麻烦的,不过用于插座是很安全,要断二条线都断开。* o' G% Y/ o& Q- G4 u8 n: @, b
QQ截图20210821133707.jpg 7 S5 i2 V$ ]! U1 T  \' J
: R7 I7 R0 {4 f
IMG_20210820_134114.jpg
  w9 n" Y: i) y" F+ H
2 r" P- W1 I; p/ q3 _+ @# P
电源芯片) k8 D, |. N$ a5 H  {, V1 u- u
* o$ P0 L0 A- |( Z8 n3 k

# n' K  ^$ T, n* P" `( O! A& e
3 z' o8 i0 f, k) q
有一个按钮,按钮有二个蓝色LED灯9 v! u- p2 E' A( R/ }
IMG_20210820_134157.jpg , T9 N9 S7 C- D- U6 B5 t

$ Y9 _) B: M* l3 r5 A+ {, P3 h

3 I( M. H, K/ @4 [0 Z- ?- K8266
' d  V9 w9 {/ R* x5 p$ b IMG_20210820_141913.jpg ( i5 z2 X% b- N, C- V" R
0 }$ c! p! C$ `  T* c
1 ^$ Y( P$ g/ v
2 [7 Q8 A6 N6 [; {. l

! q* |7 N7 O  e; y/ j接下来就是刷机了,版子上面都预留测试点。
. w3 M' g) C9 ]) a+ u  R接线比较容易,上面都有标示,GND,3.3V,TXD-RX,RXD-TX,还有一个就是IO0接地后刷机。6 W9 q, g; M2 `
未标题-1.jpg / W0 R# U( ]: M- T7 ^
注意RX这个点,就是3.3V边上的这个点,焊盘设计的就点问题,电烙铁热一点或是焊的刷机线过粗的话,容易掉焊盘。
/ M8 k$ Z8 {! Z2 y/ x0 o1 }要是掉了就只有一个过孔了,要是焊不上,只能再拆开接在另一面,所以为了避免不必要的麻烦,请注意一下。
; ]7 k  Y# Q: U2 `4 Y$ M/ \& j/ t
- ~* U" W: b3 a8 v3 {

# H1 s" K- }, [- C

5 W. S1 r- m9 d2 Y" O4 F& z
* @( `; |" T  e; z9 I9 i
& o% d% w: X( l& a4 B
    5号脚位是继电器输出, k, b5 @# q# U- E+ y9 {
    12号脚位是灯输出
8 p: ?" t# j. s) o    4号脚位是按键
9 h1 v( P/ x# q& H* |5 u5 F9 w
4 c/ g6 @' a1 t2 {* Z: s

1 P3 |4 @  E8 ]9 h, [: \3 f9 l) {4 v* w' E& W
2 `7 j8 Z2 q% V( H' Z
卖家有发一个源码,如下
  1. #define BLINKER_WIFI                    //官方wifi协议库5 I5 L6 Z% S  a0 [5 M# k) F
  2. #define BLINKER_MIOT_LIGHT              // 设置小爱灯类库
    % [3 Y4 K: s1 q' k9 v- Y) }
  3. #define BLINKER_ALIGENIE_LIGHT          // 设置天猫灯类库
    " `+ j+ s$ p" t6 N9 E0 f
  4. #define BLINKER_PRINT Serial            //串口协议库% K+ A! ^, r: K6 b0 v* o
  5. #include <Blinker.h>                    //官方库4 d1 H8 s4 I$ ~) E" M$ ?
  6. #include <ESP8266WiFi.h>                //官方库. A# a9 K: ]) a7 D
  7. WiFiServer server(80);                  // 服务器端口号- e# C; L  O$ ^

  8. 9 o7 x8 p  x3 q* l+ h2 Z3 Y; y
  9. char auth[] = "c4942fb1d5e4";     //设备key
    ( ?9 b& i" T+ @
  10. char ssid[] = "wanboshi";     //路由器wifi ssid9 F2 V* k- f1 X+ h& G' u. z0 p/ Y
  11. char pswd[] = "1365662999813586348220";     //路由器wifi 密码
    / D) B+ ^, o  g+ _$ u7 Q

  12. ; w, X3 i6 u3 j: E# N; Q  x, w! D& _
  13. bool oState = false;
    $ m0 k6 w8 [9 O7 n2 S8 e$ C

  14. ; k7 r5 O5 k( |0 ]  I$ k7 S( _! V
  15. int kg=5;//继电器输出3 T' X: ~( f" z. m# @6 Y' d$ x9 _
  16. int de=12;//灯输出1 `( `6 c4 X8 e* n9 m1 L, n' k
  17. int key=4 ;//按键
    $ B( H$ r0 D# B1 D" \4 }4 A
  18. //*******新建组件对象
    # Y2 `2 d! B3 F% U' \/ w5 m

  19. , X% Z) _7 R' g# e, |- x5 {' r
  20. BlinkerButton Button1("btn-abc");              //设置app按键的键名
      e( ?. m0 [8 I
  21. //*******app上按下按键即会执行该函数app里按键% Z+ E8 l. I# b! j/ ~! `
  22. void button1_callback(const String & state)
    0 T) [) S% Z6 j4 U
  23. {
    9 O2 r2 o# o/ x  A
  24.    if (digitalRead(kg)==LOW)  V; B* X1 s$ _- H
  25.    {# ]4 U9 l% y7 O1 }
  26.         BLINKER_LOG("get button state: ", state);5 m- _  Y, P1 Y! h9 v; p9 O
  27.         digitalWrite(kg, HIGH);
      I) q/ V* _) d; b  c3 B2 X0 N- L
  28.         digitalWrite(de, LOW);% S; _% z/ |$ |
  29.         Button1.print("on");
    * N+ q! k! L! P: I
  30.         Button1.color("#0000FF");              //设置app按键是浅蓝色
    8 N6 k, D" j$ z4 C
  31.         Button1.text("开启中");2 q% r. A! a4 w% C* I1 O3 G
  32.    }3 T) t3 h" ~& ^: Q* L# x+ S
  33.    else if (digitalRead(kg)==HIGH)
    + B6 I0 g3 q4 a( f
  34.    {1 b1 F6 O, W/ Y# A2 P
  35.         BLINKER_LOG("get button state: ", state);3 A) P8 P( K" x& _& Z
  36.         digitalWrite(kg, LOW);2 F+ \! _' i5 F# U' z
  37.         digitalWrite(de, HIGH);
    / L& U2 S/ g! M  L$ w' Z
  38.         Button1.print("off");
    6 o3 c: r( n0 f5 C1 A# k- n
  39.         Button1.color("#00FFFF");              //设置app按键是深蓝色
    % K, K! F# s% m+ J/ d
  40.         Button1.text("关闭中");6 L: X% |- E, z7 g0 G6 K( }' D
  41.    }
    & u; l, h4 `& d% K; r
  42. }, s  u" m+ h9 o, U' y

  43. ) e$ [0 ~0 o1 I. g2 B" P( ^
  44. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    ' \) e9 L2 N% @$ J3 D% r' u

  45. / T, C0 A* Q) N1 u1 t( o
  46. //*******如果小爱有对设备进行操作就执行下面
    9 L0 a; L1 i7 J" s/ d) |0 F
  47. void miotPowerState(const String & state)
    0 v0 g0 r8 Q# G0 M/ U3 }$ x# E
  48. {- o7 ?/ g, [% D+ t0 p: |2 K, c
  49.     BLINKER_LOG("小爱语音操作!");              //串口打印
    " r+ i' }: x4 a* o9 J7 d
  50.     if (state == BLINKER_CMD_ON){
    / h/ n3 ^" W8 o! x6 d( R
  51.         ' P8 a! D! c* c( o) g; C
  52.         digitalWrite(kg, HIGH);
    2 Q% R" M/ f3 M( O) }5 N
  53.         digitalWrite(de, LOW);
    " p) r  u5 q  S* @# |
  54.         Button1.print("on");9 k- m7 X) Q+ g
  55.         Button1.color("#0000FF");              //设置app按键是浅蓝色- t8 I$ v: V  b! ~4 R
  56.         Button1.text("开启中");
    + h  J* d  F3 ?+ m$ o
  57.         BlinkerMIOT.powerState("on");1 U( N8 v: c7 l
  58.         BlinkerMIOT.print();% n* _. _# Q) Y0 h, b8 z$ Q8 i
  59.    }  ~/ `! _1 g" h# K$ w
  60.    else if (state == BLINKER_CMD_OFF); W' ]- \5 M. @  s+ r
  61.    {
    + z: q; ?4 V2 e$ x  P( `
  62.         6 V3 N" l+ K/ p4 I
  63.         digitalWrite(kg, LOW);9 ^! P& B  z$ B2 E# Z, B
  64.         digitalWrite(de, HIGH);
    & O/ x7 N$ z/ c- h, _/ k. q
  65.         Button1.print("off");
    . U( I' n+ f/ O1 m( \- Z* }
  66.         Button1.color("#00FFFF");              //设置app按键是深蓝色
    $ ?, \" u7 u% {
  67.         Button1.text("关闭中");$ M' v. ?7 j! j
  68.         BlinkerMIOT.powerState("off");
    ( ]( q, F2 [" {* a. q
  69.         BlinkerMIOT.print();7 e- \2 O5 ?2 m% L  t1 e4 g5 }
  70.    }
    - W+ d" ~) m0 x$ z& S9 ]7 ~
  71.        4 ?2 ]6 P% j! m) v

  72. % Y4 }+ I& M$ S2 Y9 p/ U4 C% m  y3 K6 B* L
  73. }
    * Z% q* N- v7 i2 R
  74. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    ! g2 B" h3 V) y8 x" J* m8 j$ [
  75. //*******如果天猫精灵有对设备进行操作就执行下面
    2 O- R) g! s0 T9 @) r5 M: Y1 }, k- o
  76. void aligeniePowerState(const String & state)
    ( I; y! p, P! C, J
  77. {
    ) f( B( T; o( R# h$ B/ N8 z, {
  78.     BLINKER_LOG("need set power state: ", state);
    # |4 [- G) z+ u9 i( ^6 G5 p/ e
  79.     if (state == BLINKER_CMD_ON)3 c, z0 b$ S. O0 s) M" {5 B
  80.     {# F9 @8 d% X- S; Z
  81.         
    ! p; z! \$ z! V/ J8 O1 v% N
  82.         digitalWrite(kg, HIGH);
    * s( X; l$ Q2 {7 c- Y0 Y- k/ w
  83.         digitalWrite(de, LOW);
    $ O7 Z- F$ ^9 ?% j+ [$ h! H* t
  84.         Button1.print("on");" o8 P3 j1 }9 k: }4 [- R
  85.         Button1.color("#0000FF");              //设置app按键是浅蓝色2 k& T8 \$ m6 Z  x  c$ B# `
  86.         Button1.text("开启中");( k9 _& ~- P* {1 I$ X
  87.         BlinkerAliGenie.powerState("on");$ @- s- M: l$ j/ g
  88.         BlinkerAliGenie.print();; @' G1 k' w4 l" s) k, j. |
  89.     }
    & I9 p( W0 f( m  G
  90.     else if (state == BLINKER_CMD_OFF)
    - P  z; k4 l! j8 Q6 i5 O+ e" ?
  91.     {" ^4 U- V' J; Y4 ^
  92.         3 [& w9 b' v- Z5 S! j5 U5 y; r
  93.         digitalWrite(kg, LOW);2 h) R- s: E  t( I6 O$ u/ t  o
  94.         digitalWrite(de, HIGH);
    * A0 t( E% b0 t/ g5 g  |
  95.         Button1.print("off");
    9 G. H+ Y/ H# e- F6 g
  96.         Button1.color("#00FFFF");              //设置app按键是深蓝色
    3 G- e2 j! I  p4 G1 N8 {
  97.         Button1.text("关闭中");
    2 S4 |* k2 k, R& \
  98.         BlinkerAliGenie.powerState("off");
    2 ?1 _$ t9 b+ X! ~9 E, Z
  99.         BlinkerAliGenie.print();5 C" n8 U+ C% k. S+ ?: V
  100.     }5 @0 R- m/ k' a% J7 ?- W
  101.         
    + c3 M6 q5 d. q" R

  102. # D$ T  H/ s% z
  103. }2 J+ v2 c8 e- c) n0 r) K, _9 v& U( s
  104.   //*******app定时向设备发送心跳包, 设备收到心跳包后会返回设备当前状态30s~60s一次
    # w7 |9 l2 k( y2 X1 ^; n
  105. void heartbeat()
    2 @* \& g1 A7 x+ Z! a5 ~* l5 x- I
  106. {% v& w: p& I. N' J; h9 U
  107.   BLINKER_LOG("状态同步!"); 1 A* l% X# V6 M7 i
  108.    if (digitalRead(kg)==HIGH) ; K6 r2 M: C  G( r! w1 T" ?7 @
  109.     {
    " A0 `! a2 z: C5 s# {( l3 g1 M6 s
  110.       Button1.print("on");! X' ~7 l# f% p& W, a# }6 \6 O
  111.       Button1.color("#0000FF");              //设置app按键是浅蓝色
    7 R  U5 \' T7 ]; r4 Z8 d
  112.       Button1.text("开启中");2 e6 ]5 [8 w! g
  113.     }/ z& K5 b/ U9 A
  114.     else 5 m2 c0 H" y0 `: H. }4 [/ Y. }
  115.     {
    5 Q) D) X4 l8 `) C
  116.       Button1.print("off");
    2 c4 R* h& R2 C+ u( v6 r/ Z+ ^
  117.       Button1.color("#00FFFF");              //设置app按键是深蓝色
    ) q  m6 e5 M1 M+ G0 @
  118.       Button1.text("关闭中");" Y5 m8 b. J, C
  119.     1 ]9 c6 A( ]* L( }2 ^. u
  120.     }! k7 r/ y2 E& \  V$ Y& o
  121. }! T5 s. q! [8 ]+ f3 d
  122. //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    ' O' t; P; z9 N3 G2 u5 o
  123. void setup()
    " I- A3 _# e# \$ F
  124. {9 z7 n. s2 P3 |/ C8 I
  125.   // 初始化串口' Q9 ^( X* Y. t- m3 D' }
  126.   Serial.begin(115200);
    , \, L3 m% V! I6 H- ]
  127.   delay(10);
    + F7 d' @# z7 J/ n! p
  128.   BLINKER_DEBUG.stream(Serial);
    ; o9 _- d" t" Y2 N+ f
  129.   // 初始化有LED的IO
    1 _+ n5 d+ o7 ]
  130.   pinMode(kg, OUTPUT);                 ( ?+ F+ `) r- U% K4 v. p
  131.   digitalWrite(kg, LOW);//初始化继电器上电状态 " d; ^* _0 }! h5 \
  132.   pinMode(de, OUTPUT);
    4 d7 P: u% r* n: R6 L! j+ s
  133.   digitalWrite(de, HIGH);4 P( g  z: G# Y# c" g( i9 M
  134.   pinMode(key, INPUT);            
    ( w7 g. A, c5 z/ {) Z
  135.   Serial.println();( k# Z- E$ r, N* L8 T
  136.   Serial.print("Connecting to ");
    7 G1 a1 o% d! Y
  137.   Serial.println(ssid);
    4 E0 ~  I# Q/ ?& }7 N1 @1 W) \5 F
  138.   WiFi.begin(ssid, pswd);
    0 O8 ^4 `- T; F& O7 t
  139.   while (WiFi.status() != WL_CONNECTED) {) [$ O( ]" G) V7 @
  140.     delay(500);
    , R: L0 `4 G2 y+ `* |. W% n
  141.     Serial.print(".");7 N, |2 z3 {0 P/ h9 c. R- V
  142.   }
    + I# P2 L, f8 ^
  143.   Serial.println("");
    ' Q6 y. }4 `7 G; f
  144.   Serial.println("WiFi connected");0 Y# Z, _4 K, j9 ?$ F; c4 n) s
  145.   server.begin();
    2 Q: T# t0 i+ |* J) ~* S6 }
  146.   Serial.println("Server started @ ");) m, m0 q! @0 _8 q0 I
  147.   Serial.println(WiFi.localIP());- a4 o2 t, {2 E) u# j% q0 k( c
  148.   //打印出IP地址,后期可以制作显示器来外部硬件显示ip* v4 B% P! C7 D
  149.   Serial.println("To control GPIO, open your web browser.");
    ! @$ R/ q  h" h; E7 M' [
  150.   Serial.println("To set GPIO 0 high, type:");
    9 z  w5 R* M& G6 Q0 G/ r( S7 E
  151.   Serial.print(WiFi.localIP());
    # ^* Q+ g9 ]; e2 p
  152.   Serial.println("/gpio/1");
    : K8 ~' |( r* p9 Q; r* `
  153.   Serial.println("To set GPIO 0 low, type:");- E; J/ D" R$ ?
  154.   Serial.print(WiFi.localIP());1 L2 X$ l- o* T' d& v& T
  155.   Serial.println("/gpio/0");
    / s& m: ^; m/ k6 o- P6 |1 z7 m( g
  156.   Serial.println("To toggle GPIO 0, type:");9 w: g' V1 }( |- U0 i" y
  157.   Serial.print(WiFi.localIP());+ B: s$ ?& ^- l% P6 M3 J) D! `
  158.   Serial.println("/gpio/4");2 a0 E' o$ R- U8 B* x" \, m
  159. 4 K. g( R) R) p' n7 x8 N% a
  160.   // 初始化blinker1 `& u/ \1 ]* G
  161.   Blinker.begin(auth, ssid, pswd);
    & q5 n4 p. z6 l  Z7 R0 w
  162.   BlinkerMIOT.attachPowerState(miotPowerState);              //小爱语音操作注册函数
    3 k2 ]4 [1 z# N& \
  163.   BlinkerAliGenie.attachPowerState(aligeniePowerState);      //天猫语音操作注册函数
    : K* I- C: C4 V4 R4 P
  164.   Blinker.attachHeartbeat(heartbeat);              //app定时向设备发送心跳包, 设备收到心跳包后会返回设备当前状态进行语音操作和app操作同步。
      x2 s6 X  @& \/ P9 ^. f

  165. , V! X! y5 d0 I( w& ~5 l. J% x
  166.   Button1.attach(button1_callback);             //app上操作必须的注册回调函数关联按键名“Button1”和判断程序“button1_callback
    + ^7 ]( v7 g; \) {% r
  167. }
    3 v& o' @9 \5 J) W& p, p) O' @0 b
  168. void dataRead(const String & data)9 l5 O2 D/ R- k0 }, R
  169. {7 B2 P0 j. V0 W8 U2 u
  170.     BLINKER_LOG("Blinker readString: ", data);
      V" Q$ u( S; k4 D7 y& L8 H. T
  171. ' i( `  f" X8 J" _1 @
  172.     Blinker.vibrate();) O! G3 t' Y; W7 m% O) c+ P, n
  173.     ) y" e  ^* d: N* ]& x2 c3 T
  174.     uint32_t BlinkerTime = millis();9 {4 I5 X) N2 z3 A
  175.    
    ; `% ^9 Q0 k9 Y8 _4 Q1 c; Y
  176.     Blinker.print("millis", BlinkerTime);
    " K: U" k4 ?9 s/ n* ]$ R* w3 F
  177. }) j9 G4 W6 w9 H# F
  178. void loop()
    ! w( M6 e6 I, ^( k9 R- {+ x& K
  179. {$ ]) z) h- E7 u/ M0 h
  180.   Blinker.run();+ i) }, K0 K- |6 p* I
  181.   if (digitalRead(key)==LOW)
    0 v. E2 O6 N+ a( g  g& ]4 j2 ~
  182.   {
    4 W8 C9 A& A$ s; o
  183.     Blinker.delay(200);" l. m) [/ _& j3 {9 W+ f/ _
  184.     if (digitalRead(key)==LOW)9 U) r; Z4 d& r! L
  185.     {$ x2 j' q4 a& Q$ q/ }, k4 ~
  186.           if (digitalRead(kg)==LOW)
    7 ~( w2 E; l: X4 R5 g% A$ x- S
  187.        {$ C: l  O( m8 f
  188.             * N2 Q" z8 Q* ~# z3 D
  189.             digitalWrite(kg, HIGH);
    ' H+ b* h7 M0 D2 J
  190.             digitalWrite(de, LOW);
    , p  L7 O) {" L  ]" I* @' Q
  191.             Button1.print("on");( Y) t5 J/ d9 k
  192.             Button1.color("#0000FF");              //设置app按键是浅蓝色
    & r, W+ [6 h$ N# ^2 d: t
  193.             Button1.text("开启中");
    1 E! O* [9 c" h7 |
  194.        }
    / o0 Z* h5 o  o% Z9 F' y
  195.        else if (digitalRead(kg)==HIGH)% A5 Y7 X0 l- I
  196.        {# A7 X, I) ~' o' L
  197.             digitalWrite(kg, LOW);
    9 w6 _! f9 x" ^$ u7 p9 a% W
  198.             digitalWrite(de, HIGH);
    0 a) }2 U: u' E: u
  199.             Button1.print("off");6 H$ _( {( X0 i6 t/ T) y
  200.             Button1.color("#00FFFF");              //设置app按键是深蓝色9 Z# i( A% F0 U' ~
  201.             Button1.text("关闭中");2 M" s9 Q6 ~% m
  202.        }
    + E! I" [* M$ z5 f! {5 b3 r
  203.       }- E8 ?* C# ~* T% B  H5 }1 G5 o
  204.     }
    $ G* p! V+ B5 A( ~# z% L
  205. }
复制代码

2 k& x; \+ X+ X  ^( g, g3 k: k
我没有用卖家给的码,我自己写了一个,参考我前面的文章最简单的8266天猫精灵控制开关,点灯、Mixly可视模块化编程 https://bbs.nasdiyer.com/thread-18755-1-1.html9 f6 y* ^$ G$ a# C; r( s1 [

) ^' H. m" M3 I4 [" n6 S, F8 f6 I8 E% ?! {把上面的2改成5,把高低电平对调一下就可以使用天猫精灵来控制你的这个插座了。我是把我的第一个插座放在了我的落地电风扇中了,当我慵懒的在沙发上刷着手机时候感觉有一点点热,我只要呼唤“天猫精灵,打开风扇”,就可以了。( U7 R: L2 |/ \# P! J8 u1 G
: _9 d( N$ h3 E. e9 A

# k9 @; |9 m" L. e

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
! M% @/ w& v- X" M- P买了几个   做工挺扎实的,但是外壳怎么拆啊  拿斜口钳拨了一个,   四个圆角的卡口根本没法正常拆 ...

; W2 H$ F3 b3 O8 ?大力出奇迹呀

1

主题

8

回帖

256

积分

中级渣柚V1

积分
256
发表于 2021-8-29 08:14:58 | 显示全部楼层
a467913252 发表于 2021-8-24 15:53
9 ^4 u# G7 v( @) N8 D$ f买了几个   做工挺扎实的,但是外壳怎么拆啊  拿斜口钳拨了一个,   四个圆角的卡口根本没法正常拆 ...
* _" F8 L/ S% X2 X6 g1 q
昨晚拆了一个,废了老大劲,想和卖家说的无损拆下来,不拆个三五个积攒经验,基本不可能

2

主题

11

回帖

62

积分

初级渣柚V2

积分
62
QQ
发表于 2021-9-4 23:05:22 | 显示全部楼层
sevenup0719 发表于 2021-8-29 08:14
0 Z# C% u$ t! U: v* V昨晚拆了一个,废了老大劲,想和卖家说的无损拆下来,不拆个三五个积攒经验,基本不可能 ...

# X! z0 E% ]! J& d8 B你的搞定没  为什么我的根本没法烧录   连接不上,,用esp01s还没问题的
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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