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

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

[复制链接]

11

主题

51

回帖

209

积分

中级渣柚V1

积分
209
QQ
 楼主| 发表于 2021-8-21 13:57:54 | 显示全部楼层 |阅读模式
本帖最后由 易记 于 2021-8-21 14:05 编辑
+ q& s3 J# }. |! q, V
2 W$ c) h. d( k最近玩ESP8266,想做个天猫控制开关。
. Q' h4 p: P  |# w) _+ S但是我很懒,一个个配元件嫌麻烦,于是想着能不能淘到便宜的带电源板的模块,多倒是蛮多,一般都要20多块钱。  V9 S& p" C' _; K# }
还是闲钱上逛一下看,找到一个联想的国外版8266智能插座,价格才8.5元一个。有一点不足,就是只有三孔,要是五孔的就好了。老板说五孔杂牌价格一样也有货,晚两天发布。4 Y& d! ~7 G" a7 T
QQ截图20210821125037.jpg
, r, _7 i' W8 y! C- J2 z# E7 n" Q* I9 W* ]5 N3 K

$ b1 q4 P! g7 O7 V2 ?/ _6 c7 i7 N问了一下店主,买20个一盒才包邮,想着20个还是有点多,买了5个,连运费47.5元。
6 N# q+ X0 J( l% F! V# n% U* h- H7 P7 d
QQ图片20210821124517.jpg 4 Z& F5 ^! o- |2 Y' \6 n, }
+ `/ B2 l2 k0 w7 m6 \" @% K5 L
4 |: C6 ~' @5 L: [1 u) z, Z

9 E4 _% r, }4 j+ N9 S# E4 B; h' L到手,当然是拆拆拆。) Z* k; H' [9 v6 u
IMG_20210820_134104.jpg / d6 s( t  F8 \3 O3 T8 b- y" B4 v+ b
) J2 S) Q+ B# v" S! e' G

- C( a1 ~- p% G9 z7 ?# y联想的做工,还是感觉不错的,光这个继电器应该也要个7-8块钱。" D: \" \4 p4 R
IMG_20210820_160634.jpg 4 U! y  ?- x, Y9 j) U

7 @2 w- e1 T. j  W2 H$ {+ c$ p
4 e- u6 Y% }2 x& K. I. X9 W% W( L1 b
继电器是两组常开,感觉要是接电灯双控开关是不是有点麻烦的,不过用于插座是很安全,要断二条线都断开。
) B- B: |+ ]! n0 \8 G2 @, ~ QQ截图20210821133707.jpg & S' H7 L  I5 p, a+ W
& y. {4 C, [: I# h! \- C
IMG_20210820_134114.jpg
9 c1 a& E$ W- x# h( G$ k0 Y) F, V

) y: O' o3 e9 {电源芯片
$ b+ n' K" l4 c- D) K9 i7 u4 I5 ~4 H( t5 ]6 K9 Z
; A% V2 }) ]' m
3 V% {  ]; R& J3 h2 Y
有一个按钮,按钮有二个蓝色LED灯
; h. S7 j1 N7 X" R0 a6 Q IMG_20210820_134157.jpg / R' v  W/ V$ N' j3 |) K! C, \
( I% F% w& ?  O3 r. G
6 |3 _+ d! \9 X7 ~4 }! A  P" t% Z
82660 `# T$ w  M4 N$ S
IMG_20210820_141913.jpg / \1 p- E7 Z1 q2 z' `
# _% ]! o. i$ h0 v2 [! p
, ^4 [) G) N9 \8 P- R( n3 D( Q
. y3 W2 j0 W8 f+ E0 [

7 U: K0 J) Q% }) K接下来就是刷机了,版子上面都预留测试点。5 }& Y# V  t2 ~0 S8 R
接线比较容易,上面都有标示,GND,3.3V,TXD-RX,RXD-TX,还有一个就是IO0接地后刷机。
! e5 V( U4 o1 f& B; ^ 未标题-1.jpg * v/ E5 M2 n4 T) J) W6 g( {$ ^
注意RX这个点,就是3.3V边上的这个点,焊盘设计的就点问题,电烙铁热一点或是焊的刷机线过粗的话,容易掉焊盘。
4 j, b; I+ _5 @! u0 T! L2 F要是掉了就只有一个过孔了,要是焊不上,只能再拆开接在另一面,所以为了避免不必要的麻烦,请注意一下。
1 x* |2 N2 J3 u2 p6 l  f% }
& A& i, R% Y3 q9 ~( J
5 `! O- _& v' C! |3 y# ], o

) f4 ~  g" y, t3 v- `" m% ~! W( @7 e# s: D9 a
# r+ P6 C5 B2 |! @0 J
    5号脚位是继电器输出4 w3 [9 g% V9 s- C* ~0 T
    12号脚位是灯输出7 g) V6 M" h9 V: U  W+ c
    4号脚位是按键

7 }) g  _; w2 T5 W; V4 g! E" a. r% a0 a! d7 ]# w/ Q7 w
( J( I3 m2 I8 S7 T

7 Z) O: l: R& ?+ [: q! X

2 @% H# M; T3 H- y卖家有发一个源码,如下
  1. #define BLINKER_WIFI                    //官方wifi协议库- ]7 t, j$ _- X1 x
  2. #define BLINKER_MIOT_LIGHT              // 设置小爱灯类库0 ~1 j! H5 b+ @0 ~2 T. [% f
  3. #define BLINKER_ALIGENIE_LIGHT          // 设置天猫灯类库$ }' t4 W1 k9 f/ M: O2 p2 o' B
  4. #define BLINKER_PRINT Serial            //串口协议库: }5 {" ]7 a5 S* t  V1 Z
  5. #include <Blinker.h>                    //官方库) c+ O+ }& G* ^6 k
  6. #include <ESP8266WiFi.h>                //官方库
    9 s! d( `9 ^$ {
  7. WiFiServer server(80);                  // 服务器端口号! x# ]. N+ V8 C' b; O  g1 g7 q! q' w

  8. % B( Q' J8 e& X/ R8 _9 t# C
  9. char auth[] = "c4942fb1d5e4";     //设备key$ _) h! ]' R" }0 O+ Z
  10. char ssid[] = "wanboshi";     //路由器wifi ssid. Y7 B- ]) D1 h* H3 t% z& n  T
  11. char pswd[] = "1365662999813586348220";     //路由器wifi 密码
    8 e& R+ }8 q$ l5 P3 W' @

  12. 9 A& `0 H( x- ]2 k1 W( v  m
  13. bool oState = false;
    ) a$ H3 d: W* z, o0 x
  14. + D0 w  ~+ C$ V5 J/ Q, Q) y) H
  15. int kg=5;//继电器输出
    # l4 K) r: a+ z. r0 z) D" o* h2 C
  16. int de=12;//灯输出* ~; h& y/ {2 J* A7 V3 v
  17. int key=4 ;//按键
    ) Q+ m* y% c2 t# f* J9 C1 j* f
  18. //*******新建组件对象
    ; E" I: v- Z1 ]6 ^# E+ l& W
  19. 4 O9 ^- [; ^( ^& {% o
  20. BlinkerButton Button1("btn-abc");              //设置app按键的键名
    , N$ W- i5 I" r
  21. //*******app上按下按键即会执行该函数app里按键" j- R" b# }: \) X# p3 }* V1 t/ ?
  22. void button1_callback(const String & state): f/ `% @8 F" s
  23. {* c& F* r7 `2 g" f7 f# r* k% Q
  24.    if (digitalRead(kg)==LOW)
    % B6 |3 D: i2 Y' T
  25.    {
    " e# e% e" P5 u
  26.         BLINKER_LOG("get button state: ", state);8 w( N' j8 J- h1 I
  27.         digitalWrite(kg, HIGH);
    $ k( r3 z# f. ^6 I4 q/ b4 n
  28.         digitalWrite(de, LOW);: O' k0 ^! E2 B& S+ |, z7 ]. V: L
  29.         Button1.print("on");
    # H6 h  H  D3 @' u
  30.         Button1.color("#0000FF");              //设置app按键是浅蓝色- y& z3 ^5 P$ A& B4 x' g
  31.         Button1.text("开启中");
    $ }/ U; o4 E: N& O* M* v( v! y
  32.    }
    1 d1 B5 X% Y! l  Z& a
  33.    else if (digitalRead(kg)==HIGH)
    0 e* R7 J0 E; i# I% \1 X
  34.    {" f/ \8 k" t2 e' b1 i
  35.         BLINKER_LOG("get button state: ", state);
    & [$ Y7 U' t. e( H3 j+ I
  36.         digitalWrite(kg, LOW);( `; C5 C4 a6 Z
  37.         digitalWrite(de, HIGH);: G8 b& O  G( R6 H2 m
  38.         Button1.print("off");  d0 p7 M# x' K& k+ e" w' h
  39.         Button1.color("#00FFFF");              //设置app按键是深蓝色1 X6 q! `9 j* G
  40.         Button1.text("关闭中");5 l9 l  U1 U3 S, x  v  @, d
  41.    }
    . D8 S) z7 ]! I: I- S; S
  42. }
    $ i# p, G6 v2 n: j7 B8 Z" E3 J

  43. 8 w% R2 C0 h) w' M* B% Y3 w& }
  44. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    ( D1 z1 b& ?# |" k% O
  45. - j' G( c( ~5 `$ o. R
  46. //*******如果小爱有对设备进行操作就执行下面2 O3 }. P) I) z9 T
  47. void miotPowerState(const String & state)+ A9 E8 ?' V' y6 ?3 M4 C( c/ A5 Q
  48. {
    . {+ ]' h4 a" t" G2 E* b" t/ d5 m
  49.     BLINKER_LOG("小爱语音操作!");              //串口打印* g$ G& v) w7 ~- _& }
  50.     if (state == BLINKER_CMD_ON){0 [# |2 A; ^6 s9 y
  51.         : g+ X9 e* E  g6 y% S- j
  52.         digitalWrite(kg, HIGH);, q# i1 m! Q+ X: I9 c7 G0 H
  53.         digitalWrite(de, LOW);
    ; ~( h+ E2 P$ o, _
  54.         Button1.print("on");
    - ^7 T# g) Q9 W0 \6 l: I% h
  55.         Button1.color("#0000FF");              //设置app按键是浅蓝色( R  G, _6 |% e7 t
  56.         Button1.text("开启中");3 [( F1 A( J4 u5 j2 H' n
  57.         BlinkerMIOT.powerState("on");# X+ R! ?) g! {! Y3 m
  58.         BlinkerMIOT.print();
    8 U  f2 s$ m  |; B) K9 {
  59.    }
    . G4 r% U$ y0 N7 o
  60.    else if (state == BLINKER_CMD_OFF)  B. C, `, N5 p: m( C( B
  61.    {8 f  P; ?: W+ J8 c) E
  62.         3 e/ m6 U1 C! ?5 M" a7 o3 d
  63.         digitalWrite(kg, LOW);
    / ?+ {1 e8 s  x3 ^1 I0 x" S1 }1 L
  64.         digitalWrite(de, HIGH);5 q9 u/ q* Q2 Q$ v9 j- G9 |
  65.         Button1.print("off");
    & R! Q8 b0 {+ s: V  @! x0 H( w
  66.         Button1.color("#00FFFF");              //设置app按键是深蓝色2 h1 O2 d/ q, d5 e  C
  67.         Button1.text("关闭中");  c  R9 ]3 a# q5 j; ^7 R( p- z
  68.         BlinkerMIOT.powerState("off");
    ( T0 X; g& s# M- v6 d6 D  C3 ~
  69.         BlinkerMIOT.print();5 ?+ [7 Q- X5 ^2 n
  70.    }
    # @% X  }  ?5 {1 t# t% h. b7 z/ e7 N9 r( s
  71.       
    ) r2 X* H* |5 y! ~4 D/ |! V. e# z
  72. ) ]+ K5 I3 w1 ^- ?- F
  73. }. T# l; h# c6 ~, Z! o
  74. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    ( w! w9 \" j$ ~% v9 q
  75. //*******如果天猫精灵有对设备进行操作就执行下面+ R0 A9 y  t# F* v  M
  76. void aligeniePowerState(const String & state)
    ; `) }% q% a" J/ }' l$ C  q
  77. {
    # T$ M" q9 f+ d% O
  78.     BLINKER_LOG("need set power state: ", state);5 \: r) o* [! J* e! D( w9 f6 H% t& |
  79.     if (state == BLINKER_CMD_ON)
    3 X* z& e7 G( |& S; Z
  80.     {
    - k- u+ O. Z' t0 `
  81.         
    * w8 W  s  _" _+ a+ q7 o2 w6 V
  82.         digitalWrite(kg, HIGH);1 v9 C+ ~' X6 z4 D3 a- S/ |" ^
  83.         digitalWrite(de, LOW);6 D* s0 {, G8 v; }: \- n
  84.         Button1.print("on");( L# c3 _8 Y! o- C' j, S9 s% c$ l
  85.         Button1.color("#0000FF");              //设置app按键是浅蓝色/ E/ e1 P$ p: E% Z5 G" g$ A. `
  86.         Button1.text("开启中");7 I, i! h( n, H1 Z9 l+ o/ ]
  87.         BlinkerAliGenie.powerState("on");9 X% R. g7 \8 V9 E; s8 A% X  ^& y/ Q9 n
  88.         BlinkerAliGenie.print();
    8 G* F8 E& n- _7 a
  89.     }
    4 g5 ?2 Z  \" D6 F: h% ^: W
  90.     else if (state == BLINKER_CMD_OFF)3 U$ \. F) y$ P& {) M
  91.     {0 j$ N3 P" h# M7 R) R; K# t& H' ?
  92.         
    & F. Q" j: B0 f1 F5 H
  93.         digitalWrite(kg, LOW);
    2 I" R; z& ]8 U' B% }. O% Y
  94.         digitalWrite(de, HIGH);
    ' E( R6 y$ i. S7 @* m) Z5 m
  95.         Button1.print("off");
    / x3 l6 y1 D- H4 p2 n
  96.         Button1.color("#00FFFF");              //设置app按键是深蓝色
    0 W" D7 u" c, _$ J5 ~9 [. t) f  o
  97.         Button1.text("关闭中");
    ' Y9 P# ^3 [2 R! u
  98.         BlinkerAliGenie.powerState("off");6 u6 _, H7 E5 {9 B! F8 }& d2 K
  99.         BlinkerAliGenie.print();  ?4 O2 B6 R6 s0 k7 j
  100.     }
    . j7 E! c4 ~3 k
  101.         * z- S7 }! F+ C* ]' a5 H  V

  102. ; P0 z. K* F# e6 f
  103. }
    ; R8 n( w& `; ^+ O( [: r
  104.   //*******app定时向设备发送心跳包, 设备收到心跳包后会返回设备当前状态30s~60s一次
    + E% v; G$ E( y, _2 H- }) d
  105. void heartbeat()) |  }0 Q$ \6 u$ h" g2 J
  106. {
    , R! ?. I0 s. f( P' O
  107.   BLINKER_LOG("状态同步!");
    ! o% J- T& E" x) J7 P& i+ o: W
  108.    if (digitalRead(kg)==HIGH)
    ) w: W& K, B2 M. H8 \4 N0 F& C& d
  109.     { # W  H, i* {2 b4 Y5 t( c; C
  110.       Button1.print("on");8 D  |4 I1 T8 S! |" r
  111.       Button1.color("#0000FF");              //设置app按键是浅蓝色6 O0 A1 @: d$ c. r) X5 ^$ M
  112.       Button1.text("开启中");
    ; n) H% M' a" C" a% n9 o7 ^+ Y
  113.     }4 ?* \+ d" I+ q- f$ b
  114.     else " O' D+ ^" I4 o2 R# j
  115.     {2 {) m  p: T) Z) y6 U* R
  116.       Button1.print("off");
    ! k. h+ e! B* v
  117.       Button1.color("#00FFFF");              //设置app按键是深蓝色3 }, H6 z- {+ B$ B( d0 a+ `0 _
  118.       Button1.text("关闭中");
    ) O8 |. u0 H) N; w$ A
  119.     , g+ C4 C9 a4 l; X; X! X0 j  A
  120.     }
    + B- |* I8 N9 F9 w* ]7 p4 t
  121. }
    6 b. r8 v4 D0 d( j& E
  122. //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++) u4 E  |  {8 H7 F
  123. void setup()% t0 r9 T9 R! x* v# k
  124. {1 k7 r# q  S3 S: A
  125.   // 初始化串口
    7 V$ o- E7 p6 }6 Y4 d
  126.   Serial.begin(115200);
    $ G; s  {/ d. d6 m% \
  127.   delay(10);
    8 y$ ~. @' }8 B
  128.   BLINKER_DEBUG.stream(Serial);
    8 A( R$ N7 q' ^- a: U2 W9 W0 d
  129.   // 初始化有LED的IO. [0 e" ^/ E$ n, `, |/ X7 r& l) ^& B
  130.   pinMode(kg, OUTPUT);                 $ _# \1 m: n& t& @' c: s
  131.   digitalWrite(kg, LOW);//初始化继电器上电状态 0 \& v* h4 l* _; S
  132.   pinMode(de, OUTPUT);- E4 [* k) }- f0 @$ k3 J. @
  133.   digitalWrite(de, HIGH);/ w; k& {' T0 g! E
  134.   pinMode(key, INPUT);            
    . m/ w$ F! Q. W9 F
  135.   Serial.println();" _+ I. e, L- |* a
  136.   Serial.print("Connecting to ");( G2 H. S+ s, a
  137.   Serial.println(ssid);
    ; X4 w. k) p' A, a3 `5 i
  138.   WiFi.begin(ssid, pswd);
    + \& B" R# b9 X1 @
  139.   while (WiFi.status() != WL_CONNECTED) {
    + n+ p% ~2 {" F8 p% w- M1 r$ H' Q
  140.     delay(500);' c( G! w6 t& ^* E/ ]! l) l
  141.     Serial.print(".");
    * _+ L) @  O! d; }
  142.   }
    + u$ ~5 @# I% i
  143.   Serial.println("");
    5 ]6 d; A0 ]- Y% h( m; x+ B3 V. m
  144.   Serial.println("WiFi connected");, Q6 t/ T) x" j
  145.   server.begin();
    : c# E0 A2 S0 ?
  146.   Serial.println("Server started @ ");
    1 e, J, N3 {! M( A5 k( J
  147.   Serial.println(WiFi.localIP());
    4 b' K8 G+ \! K0 ~
  148.   //打印出IP地址,后期可以制作显示器来外部硬件显示ip
    + w5 _1 P6 W. S
  149.   Serial.println("To control GPIO, open your web browser.");2 W% f0 K" h8 i
  150.   Serial.println("To set GPIO 0 high, type:");% L" X# i9 y( w4 F; p! x( @5 C2 f
  151.   Serial.print(WiFi.localIP());3 B' O! P6 n( C
  152.   Serial.println("/gpio/1");
    # t0 Z. }' O! C8 H
  153.   Serial.println("To set GPIO 0 low, type:");; X  z. j, O# J! _, m, o% g4 |
  154.   Serial.print(WiFi.localIP());9 b/ \! |, _8 C  l& x
  155.   Serial.println("/gpio/0");
    ; g0 d+ P: u( W
  156.   Serial.println("To toggle GPIO 0, type:");, w' ~' o7 w. g, O1 d
  157.   Serial.print(WiFi.localIP());3 w, Q( z9 A2 _7 `! q" R/ K
  158.   Serial.println("/gpio/4");
    . U9 O8 z2 ]$ s. m

  159. 2 N5 l: l  `, H* I7 h
  160.   // 初始化blinker
    # D* {6 J2 d5 E% {0 A% G0 B1 {
  161.   Blinker.begin(auth, ssid, pswd);5 J1 B; C+ Q  |! k8 E; J
  162.   BlinkerMIOT.attachPowerState(miotPowerState);              //小爱语音操作注册函数
      M! a# g- Y, P6 B) J2 ^
  163.   BlinkerAliGenie.attachPowerState(aligeniePowerState);      //天猫语音操作注册函数
    ' e3 y0 }0 F. _- D
  164.   Blinker.attachHeartbeat(heartbeat);              //app定时向设备发送心跳包, 设备收到心跳包后会返回设备当前状态进行语音操作和app操作同步。
    7 x$ y5 \2 D$ N8 f8 p

  165. , _% c8 g' ]2 O- k. b% @: T
  166.   Button1.attach(button1_callback);             //app上操作必须的注册回调函数关联按键名“Button1”和判断程序“button1_callback* C5 `9 O. G# t1 _8 r
  167. }
    4 o3 T/ q5 U4 A: k
  168. void dataRead(const String & data)! m6 S  }/ a1 A3 Z. B% L/ ]
  169. {
    9 [3 T0 H( G% w2 R
  170.     BLINKER_LOG("Blinker readString: ", data);5 f7 k% h0 a1 o' b+ n. d2 s0 y: f
  171.   {% U4 q  R4 V5 c/ o
  172.     Blinker.vibrate();
    5 o( O7 r5 J/ L3 z% W: W. ?3 m  k6 G
  173.     - z! \9 f( d$ E, `
  174.     uint32_t BlinkerTime = millis();
    2 u9 h+ S3 i$ Z7 e5 L2 f" x& N& G
  175.     % h. }- \/ ?1 |2 H# O
  176.     Blinker.print("millis", BlinkerTime);
    # x$ d% Y# A; x& s7 t
  177. }0 g1 P$ `! q8 U9 L# w
  178. void loop(): a  _% A$ \  R1 i6 C
  179. {" f4 M& o! W, \! r- U
  180.   Blinker.run();
    ; v0 p+ H/ `3 e0 ^; P7 p# t
  181.   if (digitalRead(key)==LOW)* o* G) r7 h& _: o8 d0 G
  182.   {
    * r2 o( H+ e* _2 a$ s
  183.     Blinker.delay(200);
    $ L" B/ ]: g  ~
  184.     if (digitalRead(key)==LOW), }$ g, K5 j, Y- z- z
  185.     {; b2 r. p. b- u% j' R
  186.           if (digitalRead(kg)==LOW)
    0 M% R5 }" W5 i* R. Q: }
  187.        {
    . c  ~! d9 T2 y5 {' z0 s$ Z
  188.             6 ~* Z0 H+ p+ ?5 p& C
  189.             digitalWrite(kg, HIGH);
    0 \+ x+ [1 ]( R, ]7 S! S
  190.             digitalWrite(de, LOW);, `" |3 ]9 r! o/ n
  191.             Button1.print("on");  h+ S! q: a3 o! H+ n
  192.             Button1.color("#0000FF");              //设置app按键是浅蓝色
    3 e- W3 e4 J: U- s$ J
  193.             Button1.text("开启中");. l8 ?2 `  l; I
  194.        }
    0 Q: u* M# B) V' U( P. e6 F+ U
  195.        else if (digitalRead(kg)==HIGH)  Q1 J% v. z- ?9 r* q
  196.        {
    ( e' b1 Y9 f) q2 J( N
  197.             digitalWrite(kg, LOW);
    7 `0 y; V! ~& y  T* V( z- k
  198.             digitalWrite(de, HIGH);
    2 O0 h, `+ D% B% |. k! O- M- ^
  199.             Button1.print("off");  p+ \" N' s/ z# c
  200.             Button1.color("#00FFFF");              //设置app按键是深蓝色
    * B" }4 {% o8 A" S) Q0 l& v  t- V$ t
  201.             Button1.text("关闭中");
    ' W" n; X* C( R$ Q
  202.        }2 l6 \+ C. n9 Y( S
  203.       }9 s; H" ^4 x  p/ k
  204.     }
    " @0 Q% F& q: C
  205. }
复制代码
; R( z/ _6 {$ y6 y$ G9 o
5 c* F4 ^# b. m; D) m
我没有用卖家给的码,我自己写了一个,参考我前面的文章最简单的8266天猫精灵控制开关,点灯、Mixly可视模块化编程 https://bbs.nasdiyer.com/thread-18755-1-1.html  L9 B! w' H7 N% ^! E

: j- f, ^$ ?% P1 a把上面的2改成5,把高低电平对调一下就可以使用天猫精灵来控制你的这个插座了。我是把我的第一个插座放在了我的落地电风扇中了,当我慵懒的在沙发上刷着手机时候感觉有一点点热,我只要呼唤“天猫精灵,打开风扇”,就可以了。
  v! o5 U) D" F
2 \5 F1 X2 U& {" T- b* [
9 G1 t' W/ x1 B/ s8 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
, _& W- o# m7 g7 j- m买了几个   做工挺扎实的,但是外壳怎么拆啊  拿斜口钳拨了一个,   四个圆角的卡口根本没法正常拆 ...
7 h9 |! k4 `) `& G. @5 K4 }0 Z
大力出奇迹呀

1

主题

8

回帖

256

积分

中级渣柚V1

积分
256
发表于 2021-8-29 08:14:58 | 显示全部楼层
a467913252 发表于 2021-8-24 15:53
# i+ v, J* v1 W买了几个   做工挺扎实的,但是外壳怎么拆啊  拿斜口钳拨了一个,   四个圆角的卡口根本没法正常拆 ...
+ Y/ D2 ~6 S( x( s* w: I
昨晚拆了一个,废了老大劲,想和卖家说的无损拆下来,不拆个三五个积攒经验,基本不可能

2

主题

11

回帖

62

积分

初级渣柚V2

积分
62
QQ
发表于 2021-9-4 23:05:22 | 显示全部楼层
sevenup0719 发表于 2021-8-29 08:14
' s4 [6 {: _( b/ F, r0 L6 X3 I/ ?. _2 k昨晚拆了一个,废了老大劲,想和卖家说的无损拆下来,不拆个三五个积攒经验,基本不可能 ...

+ n& Y& T/ F( E/ ~! W/ l( _7 f' P你的搞定没  为什么我的根本没法烧录   连接不上,,用esp01s还没问题的
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-6-2 00:30 , Processed in 0.070674 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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