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

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

[复制链接]

11

主题

51

回帖

209

积分

中级渣柚V1

积分
209
QQ
 楼主| 发表于 2021-8-21 13:57:54 | 显示全部楼层 |阅读模式
本帖最后由 易记 于 2021-8-21 14:05 编辑
0 e7 f6 t4 j  T* \3 q$ g; D/ I  Z$ S- \3 B( x1 Z' O' H3 z1 `6 y
最近玩ESP8266,想做个天猫控制开关。
( _$ p/ B9 _6 x" M- b) j" g& f: l. \- X% ^但是我很懒,一个个配元件嫌麻烦,于是想着能不能淘到便宜的带电源板的模块,多倒是蛮多,一般都要20多块钱。- c  V, U, W& ]; R* d. d$ b
还是闲钱上逛一下看,找到一个联想的国外版8266智能插座,价格才8.5元一个。有一点不足,就是只有三孔,要是五孔的就好了。老板说五孔杂牌价格一样也有货,晚两天发布。" y+ ^& s6 J& k+ q; U. A0 `7 U
QQ截图20210821125037.jpg
6 [1 D- d+ K" e$ t, \
( y5 Q: C9 k' a/ I. r
  r6 T7 p; m& D1 E. \$ C5 `. Y: z2 l
问了一下店主,买20个一盒才包邮,想着20个还是有点多,买了5个,连运费47.5元。
4 ^- u4 f  R) J, x: S. w0 W' Z* x) |% l; A6 p. Y
QQ图片20210821124517.jpg
, W( F9 S9 e5 c

* z/ [* ^0 q0 u9 i7 V2 I# i( R2 x: d+ A' I! U3 _9 n
8 c1 w, G6 K  a
到手,当然是拆拆拆。/ h: O$ @5 s  W* ~- {
IMG_20210820_134104.jpg / w$ _5 E1 o, Z* _9 d) P: J* d# C
3 D3 C2 j. [7 U+ i% \# }
: B- V, L) n& t" c5 E  ^1 N
联想的做工,还是感觉不错的,光这个继电器应该也要个7-8块钱。! _/ D( t1 a& v& x
IMG_20210820_160634.jpg
8 }: @' ~0 F1 N
% O3 t3 e* f& r5 h( S7 Y- M2 T

* u$ c$ ?2 H: h9 d/ D: K9 ]5 B; f继电器是两组常开,感觉要是接电灯双控开关是不是有点麻烦的,不过用于插座是很安全,要断二条线都断开。* g9 I( N* T& h) g1 s) D- ]
QQ截图20210821133707.jpg
$ {" R1 V9 V1 U5 z$ E" ?

3 P, k7 l8 F: k2 {* V0 i4 C IMG_20210820_134114.jpg # v6 X. e) L% c" `

) W  C; _7 A0 d0 n电源芯片0 [3 j# J2 n1 Q- i# W* ~9 {1 S
5 K  [1 a. v; J5 Y0 W/ s

8 y5 F6 j; n1 ^9 S" Z6 }! V& k

* M3 W. f2 n7 a( H# Q# I5 P$ N有一个按钮,按钮有二个蓝色LED灯
% L& ~/ R0 q4 E! x9 R. n1 ^9 H IMG_20210820_134157.jpg
" H4 V6 r. S, B: H3 R! r2 i1 _
/ k. i6 E- c+ ^3 d, V  Q
# G( l. v3 q) M( c
8266
4 E1 [7 ~3 B+ M% g  Y' Z  S IMG_20210820_141913.jpg
4 S' ~) U6 \3 }7 w" ~; |5 {  ?! B7 q) [' g6 U

+ M: k) F( w3 _8 Q" H2 x
1 K( @0 e1 t% L+ M* h/ k0 o

* A( z  ?- e# g! }: H接下来就是刷机了,版子上面都预留测试点。8 D3 Y: z+ m) @* t( c1 I
接线比较容易,上面都有标示,GND,3.3V,TXD-RX,RXD-TX,还有一个就是IO0接地后刷机。
9 @3 s% z) u! k, E 未标题-1.jpg
+ L1 x8 O: R5 s
注意RX这个点,就是3.3V边上的这个点,焊盘设计的就点问题,电烙铁热一点或是焊的刷机线过粗的话,容易掉焊盘。( E, q1 @  e1 D5 l6 k9 D
要是掉了就只有一个过孔了,要是焊不上,只能再拆开接在另一面,所以为了避免不必要的麻烦,请注意一下。

# l" r) H4 C0 B* f3 `5 J2 R; {  A" u) \& [; A! ]9 e! |

- q) n2 B& U, Y5 t

5 s1 y, q& y7 h9 J5 |5 t. |, b! }* m# u2 D

- r5 l$ l. A  C( h3 L4 T1 S. k- N    5号脚位是继电器输出9 }# S9 ]. n# V- P
    12号脚位是灯输出( H' _: }3 H. g( t$ Y. ?
    4号脚位是按键
7 P" n- d- Z1 g: Y! a3 ]% V+ |

8 h% ^3 d1 O& p& s4 S8 ?  ^

% _7 e7 a, A2 L* D' Q3 l% R
. c) t5 s) Z# J! Y2 Q# T
# [% `; y: K5 a+ k/ I
卖家有发一个源码,如下
  1. #define BLINKER_WIFI                    //官方wifi协议库: ~8 R) }. ]3 H4 U& l- [4 c( {
  2. #define BLINKER_MIOT_LIGHT              // 设置小爱灯类库
    - L4 ]0 j9 B: v/ l+ Q' r5 L
  3. #define BLINKER_ALIGENIE_LIGHT          // 设置天猫灯类库  V8 l: P) T% ?7 ?
  4. #define BLINKER_PRINT Serial            //串口协议库
    , c9 w& S* M+ [6 Q. v3 o2 Z3 F
  5. #include <Blinker.h>                    //官方库- ^6 o8 F" b2 L* A! O6 a, i: ^6 U
  6. #include <ESP8266WiFi.h>                //官方库
    ; i! W& x9 B5 M& {4 M! f
  7. WiFiServer server(80);                  // 服务器端口号
    1 B: q1 I5 r" n. E; o! @
  8. . K8 L( Q$ K+ e8 _* M
  9. char auth[] = "c4942fb1d5e4";     //设备key( J  P# {! Z: h- i7 s
  10. char ssid[] = "wanboshi";     //路由器wifi ssid1 S- i4 H! `7 g) _+ H/ i; p) U' Q; }
  11. char pswd[] = "1365662999813586348220";     //路由器wifi 密码4 `# G; G$ F" x' H) j
  12. ; j% h! d  N9 G4 Q: U& r/ ^: D* B
  13. bool oState = false;0 [. y$ I) D6 @$ o3 S, O

  14. ) X+ Z1 G- a3 l) j
  15. int kg=5;//继电器输出
    5 C) q; f1 N- z8 @' y
  16. int de=12;//灯输出( G4 {2 N# z% a# |
  17. int key=4 ;//按键) c7 I) K( f6 |3 k" s
  18. //*******新建组件对象- D3 D: P! F+ O$ V$ K1 n: m& \4 I

  19. : Z1 {7 c+ F# R# \4 y4 a
  20. BlinkerButton Button1("btn-abc");              //设置app按键的键名
    : x1 C+ ~0 q* \' \0 g( i3 q8 W
  21. //*******app上按下按键即会执行该函数app里按键
    ( o2 v. }. t" ]9 _
  22. void button1_callback(const String & state)
    1 M( `$ c8 r$ a7 `* j/ N" K1 o
  23. {0 f" f% P/ o, I: S; ]) g3 r8 n
  24.    if (digitalRead(kg)==LOW)# }" |3 Z( w0 O$ g9 M; j
  25.    {
    : q/ m) c3 R7 t6 b# `/ F
  26.         BLINKER_LOG("get button state: ", state);$ E. _3 B$ J* x; l3 [; G& X
  27.         digitalWrite(kg, HIGH);; n0 c  h5 E2 d/ t& `  H
  28.         digitalWrite(de, LOW);+ }' }  n2 B# G
  29.         Button1.print("on");
    $ l: `$ c4 A" s- v( Y( F# X- ]5 q
  30.         Button1.color("#0000FF");              //设置app按键是浅蓝色9 D; P4 f, l! d3 d- {
  31.         Button1.text("开启中");+ w1 b- p/ q7 m3 A1 ~
  32.    }
    0 r4 I2 @; X- N# v0 k% L0 P* g
  33.    else if (digitalRead(kg)==HIGH)5 s) v3 G* a) }2 a
  34.    {3 e9 l% g' O1 ?% r! Y, F2 T
  35.         BLINKER_LOG("get button state: ", state);
    3 B4 S' z8 L. z1 m
  36.         digitalWrite(kg, LOW);& u6 M% L+ k; W
  37.         digitalWrite(de, HIGH);* y# e; _  I" b& j8 f
  38.         Button1.print("off");' l5 K2 B0 z" B3 Q+ n6 L
  39.         Button1.color("#00FFFF");              //设置app按键是深蓝色/ @: u: `4 P" [* L* e' |2 l
  40.         Button1.text("关闭中");
    ' Y7 ]& ~- i7 S4 d1 J
  41.    }( j/ r9 }* n  L$ @4 E& u/ a: M
  42. }
    # Z6 l) o7 ?% ~/ q1 ?

  43. 1 j% E$ c" M6 C" x8 |$ d
  44. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- }) L4 R( l$ b2 B' G5 ~7 N( G0 h

  45. / o( }" f9 [7 \
  46. //*******如果小爱有对设备进行操作就执行下面( G. ^# ^4 k* B1 x. h
  47. void miotPowerState(const String & state)1 v# {1 ], A) ]
  48. {: p/ ~% f" `$ n$ y
  49.     BLINKER_LOG("小爱语音操作!");              //串口打印
      l5 d, q  Z8 f: `8 D
  50.     if (state == BLINKER_CMD_ON){! }2 R, L% R2 H2 z- ~1 e0 o
  51.         
    1 c6 S; O0 v$ V' v4 C5 `
  52.         digitalWrite(kg, HIGH);
    8 \# f' ]- Y) o( E$ D0 D
  53.         digitalWrite(de, LOW);% [7 B8 \  X  T  o( ?& J+ e
  54.         Button1.print("on");
    & i2 o  K8 C5 U( i6 b- y' e
  55.         Button1.color("#0000FF");              //设置app按键是浅蓝色
    $ U( W9 X7 @' B/ C% N0 i' G
  56.         Button1.text("开启中");
      C: C' G  b* z& [7 |
  57.         BlinkerMIOT.powerState("on");  m7 G( O% [/ W
  58.         BlinkerMIOT.print();
    ; u2 ?4 |3 X2 V( ~3 S
  59.    }) q( d5 v5 e  k4 `) c
  60.    else if (state == BLINKER_CMD_OFF)
      K( W$ P/ u% j; A0 z  T+ ~
  61.    {7 v7 [! T4 L. K% Z
  62.         3 X* m- Q, P8 a# [& R3 C. T
  63.         digitalWrite(kg, LOW);
    9 c9 u( N% Z* _% k
  64.         digitalWrite(de, HIGH);
    ! j6 Y4 ]) K% o; J6 t* v
  65.         Button1.print("off");. k6 b3 J$ j* ~. K- {: i3 |* x+ q& u& m
  66.         Button1.color("#00FFFF");              //设置app按键是深蓝色5 e$ J" \; \; N6 [  i5 L
  67.         Button1.text("关闭中");
    6 c2 l8 P4 N+ z2 @" Q9 Q6 q8 p3 S
  68.         BlinkerMIOT.powerState("off");
    + I/ q' o6 W: U( q* s2 @
  69.         BlinkerMIOT.print();. [& i5 O8 K5 p, v8 l
  70.    }
    ( ~$ t+ u. L4 ^2 f, w
  71.       
    6 v# N7 E3 w# T( b

  72. - W  I. ^* z5 ~. @
  73. }
    / N0 P8 c6 ~/ g* @/ F2 [$ [! P9 s
  74. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    / b/ w6 R$ \9 X3 W! x# K3 H
  75. //*******如果天猫精灵有对设备进行操作就执行下面
    6 V  Q4 A- c% e& B& `
  76. void aligeniePowerState(const String & state)
    1 I" Z# M" F3 d* x' ~: p0 h
  77. {$ u' g8 O4 z) m& Y) J# A5 W
  78.     BLINKER_LOG("need set power state: ", state);
    4 s* {6 B6 D$ s* H
  79.     if (state == BLINKER_CMD_ON)
    1 j4 e$ _6 O2 K- D$ O
  80.     {
    ' K/ O0 t+ c; Y/ m. |/ u
  81.         
    % l* g$ z5 k% P1 F& I) s  c
  82.         digitalWrite(kg, HIGH);
    6 W: E/ `: u. s9 }
  83.         digitalWrite(de, LOW);2 D7 ^" [+ w3 C5 v. D
  84.         Button1.print("on");
    ( e' r, h3 g" p* N
  85.         Button1.color("#0000FF");              //设置app按键是浅蓝色: c4 Q! e( v  \1 e8 Q
  86.         Button1.text("开启中");" }* D) Y& g3 U7 _6 `
  87.         BlinkerAliGenie.powerState("on");. e1 J& a) i/ c& ]' t8 y
  88.         BlinkerAliGenie.print();
    + j. U2 j6 {; X( W% S8 O0 @
  89.     }
    4 r' F' I- X- v& V1 i. F+ |
  90.     else if (state == BLINKER_CMD_OFF)
    ( R9 v' W! ]1 y3 C( U' J3 X' i5 h
  91.     {' ~( f, r4 ^+ ?* D5 ]5 A) ?
  92.         
      u8 k/ Q# Y8 @, F' E
  93.         digitalWrite(kg, LOW);
    8 U- m8 D" z$ v! K
  94.         digitalWrite(de, HIGH);, y5 S$ x# E; V+ J
  95.         Button1.print("off");# A' n- p7 k5 h& C' V- f( V
  96.         Button1.color("#00FFFF");              //设置app按键是深蓝色. D5 u( U( W$ V
  97.         Button1.text("关闭中");$ D, g# w# M) A7 v
  98.         BlinkerAliGenie.powerState("off");9 A/ Y- @. C3 G/ U8 j: q1 G
  99.         BlinkerAliGenie.print();
    3 [6 P$ @8 E' j* d/ c7 \) i) m( h
  100.     }+ n8 R: [9 A6 m+ x/ j5 I: p
  101.           Q0 A1 i. N/ ^9 y7 j: a* c( {
  102. * t$ q7 g+ ~1 }: O0 `) r/ C
  103. }
    / r% v: ^. d6 C
  104.   //*******app定时向设备发送心跳包, 设备收到心跳包后会返回设备当前状态30s~60s一次
    * s; E2 f0 n, ~
  105. void heartbeat()
    * L) I; i, `  \/ J5 m, B. r5 j
  106. {
    5 K5 u! E; ?5 Y
  107.   BLINKER_LOG("状态同步!"); : m9 `$ G' s/ @. P
  108.    if (digitalRead(kg)==HIGH)
    ) `. u/ p% Q, B, c. `3 X+ j
  109.     {
    * q( I5 c  j: I8 d. b+ i3 T
  110.       Button1.print("on");' P' N. y5 ]6 \4 K3 Z
  111.       Button1.color("#0000FF");              //设置app按键是浅蓝色3 W2 f8 V! Z  n1 k! S
  112.       Button1.text("开启中");
    ( q! h2 }9 M1 ^
  113.     }% G8 s2 f. U. L
  114.     else 7 h# w* [" f. H  `( i5 }) O
  115.     {
    / a" ?0 z7 k( b& ], N
  116.       Button1.print("off");
    4 }+ E. R6 L0 o' d. Y- D# U
  117.       Button1.color("#00FFFF");              //设置app按键是深蓝色
    " x8 G  J- m; w; @5 ?  m! E) u0 |/ |
  118.       Button1.text("关闭中");+ D# a2 u% a% P" G# Y& Y
  119.     8 i+ C" l7 l) b" P8 D1 K( y
  120.     }7 t1 v& f: Q* i3 S/ \& ]; ?6 u# ^
  121. }! P2 ^- |0 i; t# Q( t
  122. //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    4 U8 B* V/ l- ^; S" |& x/ Q) _& [+ N
  123. void setup()
    $ t$ H1 ]) x: p2 _
  124. {; c6 q+ h- g. c8 x
  125.   // 初始化串口+ B  T4 J$ I* G# |7 E% W
  126.   Serial.begin(115200);5 c2 H; X( _) l7 p
  127.   delay(10);2 F0 s" d. J- F% j
  128.   BLINKER_DEBUG.stream(Serial);7 M& `  j2 q; |2 x& P8 x5 W8 t
  129.   // 初始化有LED的IO
    & e. O$ q8 i; w
  130.   pinMode(kg, OUTPUT);                 & J, @$ G# J# y) y( B. M; B9 Q
  131.   digitalWrite(kg, LOW);//初始化继电器上电状态 + _+ h- o! P5 E# z. {
  132.   pinMode(de, OUTPUT);
    # N, ?$ X! V: K- f  d( p4 }7 B1 W4 v$ `
  133.   digitalWrite(de, HIGH);9 ^: X; F: e4 o; j
  134.   pinMode(key, INPUT);            
      }! Q8 e. b- R6 p! q3 g
  135.   Serial.println();( K1 f4 n! J. J9 \2 ~
  136.   Serial.print("Connecting to ");
    ) m7 c$ {# l# X( ]- U4 k
  137.   Serial.println(ssid);/ L$ `5 p5 \9 d3 t( `3 c' {' ]
  138.   WiFi.begin(ssid, pswd);- |) M4 x% T/ k- L; a
  139.   while (WiFi.status() != WL_CONNECTED) {4 x4 v( s& ^5 G6 _/ T! ?: e, h
  140.     delay(500);
    7 G0 u( G( Z/ Z  Q  v1 p
  141.     Serial.print(".");7 v9 i$ O& M2 p+ m% {) O- n! N
  142.   }' H' W* Q2 d% ~1 s% {2 T
  143.   Serial.println("");
    1 K$ w6 ^, w/ j7 p
  144.   Serial.println("WiFi connected");* l' J1 m& a1 b# g
  145.   server.begin();
    / ^- M& l6 c4 ~+ S
  146.   Serial.println("Server started @ ");8 i! L- ?- t4 ]! G3 Z6 }
  147.   Serial.println(WiFi.localIP());( f& M5 }+ a2 f; V) {
  148.   //打印出IP地址,后期可以制作显示器来外部硬件显示ip
    ; N) Z5 r4 i  I9 |5 X
  149.   Serial.println("To control GPIO, open your web browser.");. q1 ~. K& j8 n# z9 B
  150.   Serial.println("To set GPIO 0 high, type:");
    - _; N  s) r' H- r/ B/ ~4 X
  151.   Serial.print(WiFi.localIP());
    3 U$ U" d* H6 h: H+ E+ A4 ^
  152.   Serial.println("/gpio/1");
    9 Z6 W; E; @2 M& Q
  153.   Serial.println("To set GPIO 0 low, type:");/ m- _# m2 x3 v" f* q
  154.   Serial.print(WiFi.localIP());
    / R- f; T3 R/ o( v5 ~4 I
  155.   Serial.println("/gpio/0");, z# t/ N4 d( |! M6 s# o8 c" x% h
  156.   Serial.println("To toggle GPIO 0, type:");+ }! D/ v9 `, X; C  e2 q. e
  157.   Serial.print(WiFi.localIP());4 f3 w) w( i) ~) W3 I) n
  158.   Serial.println("/gpio/4");& U+ `4 q5 K7 Z7 o/ q9 L

  159. . C- z: a  D/ e2 z$ B
  160.   // 初始化blinker' Q3 s) V$ Z1 S
  161.   Blinker.begin(auth, ssid, pswd);( ~& h5 }3 E2 V% S0 ]6 O
  162.   BlinkerMIOT.attachPowerState(miotPowerState);              //小爱语音操作注册函数+ o0 ~  e- B; p. P) I0 z2 ~8 m
  163.   BlinkerAliGenie.attachPowerState(aligeniePowerState);      //天猫语音操作注册函数
    & R4 Y; W- s2 X% C6 p
  164.   Blinker.attachHeartbeat(heartbeat);              //app定时向设备发送心跳包, 设备收到心跳包后会返回设备当前状态进行语音操作和app操作同步。- e  g/ p) c  S7 e

  165. ! J! i  f: y' |
  166.   Button1.attach(button1_callback);             //app上操作必须的注册回调函数关联按键名“Button1”和判断程序“button1_callback0 Z/ t' {" D& Y) M7 k+ u
  167. }  d% _4 r8 p& q( A6 C+ l( F
  168. void dataRead(const String & data)! H( {' X& X3 ]. t
  169. {
    3 G% x7 U: Y: R3 _. ]5 G$ _
  170.     BLINKER_LOG("Blinker readString: ", data);1 M; J5 [% U- R$ S

  171. / c8 S& O3 u. D9 u3 e
  172.     Blinker.vibrate();
    ) A2 n0 {2 |& O0 ]) W
  173.    
    2 S( l, Z- q* V' ?# y' ^
  174.     uint32_t BlinkerTime = millis();; e. o5 G6 a" y/ j
  175.     6 J& w5 l7 W  E2 A6 D, K2 h
  176.     Blinker.print("millis", BlinkerTime);
    # M2 Q4 y; u( U3 m+ ]/ @* v; W4 |
  177. }$ h, R) N7 v2 S9 R. i
  178. void loop()# W9 z! N4 \( p8 W+ m
  179. {; X2 R+ x4 t) b( t; `( e7 l
  180.   Blinker.run();
    * [. Z1 v! [" T/ d. X. |/ M# X
  181.   if (digitalRead(key)==LOW)0 x8 x$ u* C7 o! U4 B2 N( E
  182.   {
    - e2 `  }* ?4 i7 A
  183.     Blinker.delay(200);( @$ v2 Y1 @# K# s3 f
  184.     if (digitalRead(key)==LOW)! c9 n" w1 f8 B4 h! M
  185.     {% x" e7 }# }3 q& S
  186.           if (digitalRead(kg)==LOW)
    ! |/ W2 k( X: n5 z1 t' {6 u$ g3 G+ u: {
  187.        {
    ( m$ x- o& Z  j5 @3 B# G  S
  188.             
    ( ?3 C7 a- g1 @; t% G' ^
  189.             digitalWrite(kg, HIGH);
    + w' f2 p5 f0 g" I% w1 \
  190.             digitalWrite(de, LOW);
    4 A3 X5 A( V  J! ~9 [9 i  E& P8 P
  191.             Button1.print("on");
    5 {6 o. c8 k/ V3 |/ l& Y
  192.             Button1.color("#0000FF");              //设置app按键是浅蓝色
    , N/ V6 K* I- W& U% ~, ?5 J
  193.             Button1.text("开启中");* X/ D9 o3 f5 W% u1 {
  194.        }
    3 A% G) w8 h: _; q3 s3 e
  195.        else if (digitalRead(kg)==HIGH)/ r) |: q0 t& ~( ^/ ~
  196.        {
    1 p3 ~! W! ]& k% Q" a
  197.             digitalWrite(kg, LOW);2 z9 L3 ~1 B6 j7 |# A
  198.             digitalWrite(de, HIGH);/ [2 j' z" c9 s2 w( M
  199.             Button1.print("off");. U- e8 ?3 q, Q& R. T
  200.             Button1.color("#00FFFF");              //设置app按键是深蓝色& w3 R9 v7 q* Y% B2 |  q
  201.             Button1.text("关闭中");
    * d* b0 v1 R. C+ |$ R' d
  202.        }, ]. E2 L) l, r2 l' C. Y6 ^
  203.       }
    - c% j  c4 m7 k- ?" a' @
  204.     }
    % S: f, n! O3 ]( X3 d0 [
  205. }
复制代码

; F6 ?' b5 ]/ U' e* e/ o
: U8 S& ^! B- {我没有用卖家给的码,我自己写了一个,参考我前面的文章最简单的8266天猫精灵控制开关,点灯、Mixly可视模块化编程 https://bbs.nasdiyer.com/thread-18755-1-1.html
+ C/ {/ y# Q; z3 A2 |5 r6 P% i% C, ~" w- E! j
把上面的2改成5,把高低电平对调一下就可以使用天猫精灵来控制你的这个插座了。我是把我的第一个插座放在了我的落地电风扇中了,当我慵懒的在沙发上刷着手机时候感觉有一点点热,我只要呼唤“天猫精灵,打开风扇”,就可以了。
: H: e" Q% Q0 ]1 R$ p+ b
3 ]. H5 I% @! T0 Y- o  _4 |% Z9 p- u

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
7 r# X/ z$ X! b) L# ~买了几个   做工挺扎实的,但是外壳怎么拆啊  拿斜口钳拨了一个,   四个圆角的卡口根本没法正常拆 ...
- p* p2 z$ Y1 ^5 d
大力出奇迹呀

1

主题

8

回帖

256

积分

中级渣柚V1

积分
256
发表于 2021-8-29 08:14:58 | 显示全部楼层
a467913252 发表于 2021-8-24 15:53& }) G- b' E# \5 [* \* U) z
买了几个   做工挺扎实的,但是外壳怎么拆啊  拿斜口钳拨了一个,   四个圆角的卡口根本没法正常拆 ...

4 q/ o- q; [: b9 f" P( s2 n8 C昨晚拆了一个,废了老大劲,想和卖家说的无损拆下来,不拆个三五个积攒经验,基本不可能

2

主题

11

回帖

62

积分

初级渣柚V2

积分
62
QQ
发表于 2021-9-4 23:05:22 | 显示全部楼层
sevenup0719 发表于 2021-8-29 08:144 l) d/ T% U& D
昨晚拆了一个,废了老大劲,想和卖家说的无损拆下来,不拆个三五个积攒经验,基本不可能 ...

) B/ C. h! x/ z5 y9 q9 D你的搞定没  为什么我的根本没法烧录   连接不上,,用esp01s还没问题的
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-5-10 04:40 , Processed in 0.106073 second(s), 5 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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