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

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

[复制链接]

11

主题

51

回帖

209

积分

中级渣柚V1

积分
209
QQ
 楼主| 易记 发表于 2021-8-21 13:57:54 | 显示全部楼层 |阅读模式 IP:–浙江–嘉兴 电信
本帖最后由 易记 于 2021-8-21 14:05 编辑 % A+ D6 y6 k# @9 v& S( Q

* U0 J! |; x7 O$ v- m最近玩ESP8266,想做个天猫控制开关。& U2 V+ h9 E7 Q
但是我很懒,一个个配元件嫌麻烦,于是想着能不能淘到便宜的带电源板的模块,多倒是蛮多,一般都要20多块钱。- D% m  R* A# J7 U
还是闲钱上逛一下看,找到一个联想的国外版8266智能插座,价格才8.5元一个。有一点不足,就是只有三孔,要是五孔的就好了。老板说五孔杂牌价格一样也有货,晚两天发布。
6 j. ~9 d( Q2 H8 n2 z! ^: B' }: _ QQ截图20210821125037.jpg
- u& y  \, `7 q" ^3 d& d) @9 \9 H; D$ v6 p$ F' s9 j6 q/ W) n
$ r- I/ T2 ?9 N! n
问了一下店主,买20个一盒才包邮,想着20个还是有点多,买了5个,连运费47.5元。  Q5 Y" I9 z3 M9 ^7 [
# A$ h+ u9 l5 r) Z* X0 J2 W* ^" A
QQ图片20210821124517.jpg 0 r+ w5 e+ @  m& `  p
5 t; h; j) ^2 h1 ~

. N& n# E8 ~" d. d$ A. Q. A

& b: z* x; }# v# A2 L8 K到手,当然是拆拆拆。
7 D- O" K- M2 H IMG_20210820_134104.jpg - U: d7 V# {5 w; a4 o( O( i1 B

- S1 Q+ L$ x0 \$ q

( |# Y6 p/ T$ ]3 F/ ~4 d联想的做工,还是感觉不错的,光这个继电器应该也要个7-8块钱。
0 x# r2 h# J9 S% ?) K" T IMG_20210820_160634.jpg
! k  L, X( Q/ p) `
7 X* o$ Z; E8 m3 p
9 V) c1 F2 M$ p/ W: R0 `7 l
继电器是两组常开,感觉要是接电灯双控开关是不是有点麻烦的,不过用于插座是很安全,要断二条线都断开。
- D0 O& |+ a0 F; j3 q+ z QQ截图20210821133707.jpg
/ X9 X* V9 W; y/ J( M9 h3 d6 O# r
8 Q: H' v$ b' \) E& k" n6 O: h
IMG_20210820_134114.jpg # t% p4 L* V# _: r

: N: s4 W0 Y6 ?* m/ _/ j# y: L6 I电源芯片) E; s# f0 G$ s+ M! f5 }1 u2 H5 @

0 H; s+ D8 E' t. R$ s! |( T' e. y2 x
( ?$ T2 p! _# s! K# m' M8 e- `
有一个按钮,按钮有二个蓝色LED灯
. h2 t% |' A& O# f/ B% l5 q IMG_20210820_134157.jpg / g. t5 C. f9 Y

  ]; k& e1 r: F4 _
% V0 o/ L$ v# o$ l
8266
9 C8 g  C7 w9 W% O. h5 {0 Z% u IMG_20210820_141913.jpg
; e/ k2 j0 o4 m1 S6 G- ~, z
2 |- |- @; p+ T: I% Z* D/ P' d

" c0 T9 [% K  s- V/ A/ y
+ F: d: J2 C# W- f! g+ o& e
8 h/ u3 r4 ]$ G( p$ C
接下来就是刷机了,版子上面都预留测试点。
& p) O( ?- J: g9 H- z+ N% O8 c接线比较容易,上面都有标示,GND,3.3V,TXD-RX,RXD-TX,还有一个就是IO0接地后刷机。
* y6 ~6 a+ ~& d8 v+ N 未标题-1.jpg
) X+ w4 X9 r7 |* h# c
注意RX这个点,就是3.3V边上的这个点,焊盘设计的就点问题,电烙铁热一点或是焊的刷机线过粗的话,容易掉焊盘。
+ J) Z, E: B1 g/ `8 Q6 m要是掉了就只有一个过孔了,要是焊不上,只能再拆开接在另一面,所以为了避免不必要的麻烦,请注意一下。

7 W$ h! h. [) E- ~! n& E
' ^- N, i2 d# h* _, g4 ^- F8 H7 `' l& X: n% `" Z4 h, k2 w4 X

3 q+ A( U' Q2 u( k: Y+ U3 C
4 q, j8 G) B9 s" q) d, x, R6 ~) N# q7 z
* Z* y4 `( G" K9 u# q
    5号脚位是继电器输出6 s! @! y: {- i  |5 h& }+ f
    12号脚位是灯输出
' |# u$ _6 o. y: }( {    4号脚位是按键

( A9 T3 n7 K: x& f" Z' G6 C( N0 W+ r1 S6 v9 C. k. x. i

7 l% M+ U' \/ M8 b, M8 n- r  S& d; e1 t( J) X

. N' |; j6 |5 e( y卖家有发一个源码,如下
  1. #define BLINKER_WIFI                    //官方wifi协议库, o' m* n" X4 a2 _
  2. #define BLINKER_MIOT_LIGHT              // 设置小爱灯类库
      p$ \" U8 B% N/ o9 d9 v) U
  3. #define BLINKER_ALIGENIE_LIGHT          // 设置天猫灯类库
    9 R4 Q; M( \3 I$ r; V! C
  4. #define BLINKER_PRINT Serial            //串口协议库
    , N2 k" @9 F0 T0 f
  5. #include <Blinker.h>                    //官方库3 s! d+ @  w6 B
  6. #include <ESP8266WiFi.h>                //官方库
    + \) s6 `; I1 a% ~+ ^; B
  7. WiFiServer server(80);                  // 服务器端口号
    7 B/ v* \. H9 K) r) n3 ~# U
  8. ' I8 H, y3 W1 B/ z
  9. char auth[] = "c4942fb1d5e4";     //设备key
    ' N& d* G3 U- i* p
  10. char ssid[] = "wanboshi";     //路由器wifi ssid
    ! \% [0 L3 ?- j3 ]2 L, x
  11. char pswd[] = "1365662999813586348220";     //路由器wifi 密码
    ! ]8 m: w0 j3 ~! W! A3 c6 J

  12. ! y4 f4 \6 \5 U; I3 T
  13. bool oState = false;& q/ {1 S  E( o. e: Z

  14. ' e! b- D0 e1 l
  15. int kg=5;//继电器输出
    ( j8 O/ \9 z) A9 t! g( F7 ?: x0 r4 Z
  16. int de=12;//灯输出' u* E  ~( [* ?" n6 Y
  17. int key=4 ;//按键1 ]2 K- V9 z4 F5 k* Q2 e
  18. //*******新建组件对象
    ( F. W4 ^* p! i- P+ O

  19. , x& A4 \% O' y8 ^2 C" v  A
  20. BlinkerButton Button1("btn-abc");              //设置app按键的键名2 y$ P- ^+ b$ h! A, v' |  w" i6 x- t3 f
  21. //*******app上按下按键即会执行该函数app里按键
    6 ^& |8 J$ Q8 e$ G
  22. void button1_callback(const String & state)
    * b$ ]* R6 F* B+ h3 s
  23. {
    & ~( g/ r% N) L' |" K: T8 L: U+ b0 G
  24.    if (digitalRead(kg)==LOW)* }# ^# ~! P0 J; Z4 N4 _
  25.    {
    : e" }: r( ~2 s, j
  26.         BLINKER_LOG("get button state: ", state);
    + t3 x8 @0 p' t. a' n
  27.         digitalWrite(kg, HIGH);
    6 A! @5 t8 P! x- R) |
  28.         digitalWrite(de, LOW);6 {6 H% u- `; Q( m+ X0 i8 P# |
  29.         Button1.print("on");
    * h" a7 w% G! d+ Z$ ?% \  O
  30.         Button1.color("#0000FF");              //设置app按键是浅蓝色* J4 L2 ^6 J: q) W4 e7 o& ]2 B5 z2 B
  31.         Button1.text("开启中");
    ( l4 d. c+ x' U" j, |
  32.    }
    . W& @: Y* q% Y
  33.    else if (digitalRead(kg)==HIGH)
    ( @$ Q- e% e9 ]- ^
  34.    {
    * ~2 `! {* l; [) X
  35.         BLINKER_LOG("get button state: ", state);- @2 a  S/ s4 d( G1 Y9 y& l7 Z
  36.         digitalWrite(kg, LOW);2 d7 W2 [: s8 y2 _
  37.         digitalWrite(de, HIGH);
    7 P" A: L, |3 D% n8 i
  38.         Button1.print("off");
    # z$ m& J; b7 ~5 ^0 b) B
  39.         Button1.color("#00FFFF");              //设置app按键是深蓝色6 \9 V9 k# V' d$ j& r
  40.         Button1.text("关闭中");# {* k& Q+ G1 G
  41.    }
    & @9 t" q4 c7 D3 l0 Q
  42. }' {5 U( ^5 T/ G  X; E2 N7 K' p

  43. 3 j9 n7 V0 h) h' t. h3 V2 u  e( k! I
  44. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    2 }7 ]& B% O( f. r
  45. $ Y* T% A- U0 m3 u0 _6 C- E7 i
  46. //*******如果小爱有对设备进行操作就执行下面0 c0 W8 h& F2 J5 X- |
  47. void miotPowerState(const String & state)# R/ H+ K  l( ^2 c: ^
  48. {. J# {( `! i2 K
  49.     BLINKER_LOG("小爱语音操作!");              //串口打印
    $ h3 u  G- \  {1 z6 o1 Y! k& h
  50.     if (state == BLINKER_CMD_ON){, \% U/ Z' v2 }  }; \3 |1 Z
  51.         
    5 V- N5 _: [. Y& x9 F& f  v0 [& J
  52.         digitalWrite(kg, HIGH);5 L* }+ G: t6 d. R% W% \* m
  53.         digitalWrite(de, LOW);
    & t8 E1 p2 _  V8 C) t
  54.         Button1.print("on");+ r% g8 |3 F- F" ^3 V
  55.         Button1.color("#0000FF");              //设置app按键是浅蓝色
    5 |9 }4 Y5 @5 L8 h" V6 N( v$ P
  56.         Button1.text("开启中");* m# H( e5 u0 o4 v
  57.         BlinkerMIOT.powerState("on");" m4 ^! \1 u, R
  58.         BlinkerMIOT.print();
    8 I- p6 l' _6 H
  59.    }
    6 D: i2 c: p4 C3 @) w
  60.    else if (state == BLINKER_CMD_OFF)6 |( k8 ^$ A4 f5 z: ^4 V+ {# t
  61.    {
    " _( @& g* ~9 E
  62.         9 |5 C% a5 [4 v. n  M0 g+ o
  63.         digitalWrite(kg, LOW);! W6 ^+ g5 k/ Q% k
  64.         digitalWrite(de, HIGH);/ h8 f# p" |2 a7 R) _
  65.         Button1.print("off");; i: s8 o1 s3 b' G8 F/ U* q
  66.         Button1.color("#00FFFF");              //设置app按键是深蓝色
    - c* p4 b! ?  }0 A% @
  67.         Button1.text("关闭中");/ T2 r; Y9 n; v" H. f0 _8 T
  68.         BlinkerMIOT.powerState("off");
    6 q/ S1 X* V' M* H" R& Z5 z
  69.         BlinkerMIOT.print();
    3 r* H- `5 `4 Q- ~* T& W+ Z9 C! P
  70.    }
    7 S$ _3 @# O! k$ I: n5 [: g  L; ^
  71.       
    8 A* r# P/ F. P& s/ z$ C9 q. M! ^

  72. % c* ^) V' T& u. r5 J
  73. }
    $ d* d6 N, @! k) s1 I7 p; F
  74. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    + Z8 `2 Q( ?9 S
  75. //*******如果天猫精灵有对设备进行操作就执行下面: G' S# h; f4 P( {/ C
  76. void aligeniePowerState(const String & state)
    4 P' e& g% }" f# ]' F' u' W
  77. {
    - [( N- }. J& N2 Q' u8 i
  78.     BLINKER_LOG("need set power state: ", state);
    ( x( S& d# G8 E8 z& w, H
  79.     if (state == BLINKER_CMD_ON)+ s! y$ T4 S. r. B/ n
  80.     {* A- i4 A& T: `3 O: d
  81.         
    9 K# \5 z/ m  L6 M9 k, H) b
  82.         digitalWrite(kg, HIGH);
    " s9 ?) g8 T2 ?& o3 v5 Q$ a5 R
  83.         digitalWrite(de, LOW);+ d# c  A" v) s
  84.         Button1.print("on");
    2 w- Z: o% X9 E, Z! z
  85.         Button1.color("#0000FF");              //设置app按键是浅蓝色5 A& ?1 U$ v/ \& n" V9 {) _
  86.         Button1.text("开启中");
    / ~1 g7 c4 P, h6 Y6 g
  87.         BlinkerAliGenie.powerState("on");4 f1 }/ b6 ?6 i( C: n
  88.         BlinkerAliGenie.print();
    / h) A4 g+ o( S( J
  89.     }
    : }: u  k8 S. t
  90.     else if (state == BLINKER_CMD_OFF)8 i1 m) ^# ^% R) t4 U1 R: t
  91.     {+ e! g& Z2 A) Q2 w/ f% R) {
  92.         
    1 m/ a3 b2 A3 ^
  93.         digitalWrite(kg, LOW);. Y0 Y4 t9 R( l4 a! d- B% O
  94.         digitalWrite(de, HIGH);
    9 W( z* z/ n1 h, R" \3 ~7 x
  95.         Button1.print("off");9 l/ h  j2 P( l0 H) m
  96.         Button1.color("#00FFFF");              //设置app按键是深蓝色( w" t) Y& {7 c% u. ^, s, O3 F$ R
  97.         Button1.text("关闭中");% X9 J! C4 g% m( a) [1 H0 t( p
  98.         BlinkerAliGenie.powerState("off");
    6 E" S, [- A( c- S; `; D0 j
  99.         BlinkerAliGenie.print();, ~( K& J; q, e8 N
  100.     }
    " ^) g1 z/ I: [: s
  101.         
    0 y+ l7 [& a  m
  102. , ~$ d4 q, z+ x3 w9 K0 I6 y2 Z
  103. }
    # x: ?6 }: m6 L+ N2 M- Z
  104.   //*******app定时向设备发送心跳包, 设备收到心跳包后会返回设备当前状态30s~60s一次3 w1 L3 Y0 ]+ u8 `* U
  105. void heartbeat()
    & }& F- Q+ {5 W/ |; |
  106. {
    ; m9 M' s& j9 L  V
  107.   BLINKER_LOG("状态同步!");
    " u- W5 `! [9 N% I3 o8 X
  108.    if (digitalRead(kg)==HIGH)
    * p: H* k6 D* @  t; L# A- T
  109.     { 8 y  l* O% G1 W: W
  110.       Button1.print("on");3 L2 ?7 L+ D8 l2 W1 q
  111.       Button1.color("#0000FF");              //设置app按键是浅蓝色
    ) s9 G. L2 F% J' m6 ^3 @
  112.       Button1.text("开启中");
    ! {" V( z' G4 T; d+ s
  113.     }
    5 m& e1 S: k" t7 Y2 I3 a( Y. v
  114.     else
    0 B: v2 \, ?# u0 a
  115.     {
    / u  K" q1 p. s4 d
  116.       Button1.print("off");
    % c" A+ i2 d/ m8 u# H0 d' ^! I
  117.       Button1.color("#00FFFF");              //设置app按键是深蓝色. r" Q" O. T8 k; P0 t- J
  118.       Button1.text("关闭中");  F/ y- y1 m* ~( b% K
  119.     : n0 x* I* n! f: W7 p
  120.     }1 u+ `7 R6 A  n+ [( e; {: t
  121. }
    * w! h( ^7 b2 \" J5 \
  122. //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    / H* r+ \& E- Z% T! @& f) |. d
  123. void setup()% X& `4 Y/ ^. ~, j
  124. {+ L! i- G( w% X  u
  125.   // 初始化串口
    $ i0 f9 Q. J6 K1 R3 t5 X. e9 I& O2 l
  126.   Serial.begin(115200);5 x6 I; F* V3 v. |" w* i  @0 B
  127.   delay(10);2 B- W5 E* V: A3 q6 v5 D% i
  128.   BLINKER_DEBUG.stream(Serial);
    7 C6 N( ?5 F9 n& R
  129.   // 初始化有LED的IO/ [8 {# z! G- Y* O7 I( g" H3 Y5 u
  130.   pinMode(kg, OUTPUT);                 " X( Y$ r8 L; W5 r7 j: l
  131.   digitalWrite(kg, LOW);//初始化继电器上电状态 1 ]' u' J& O" o
  132.   pinMode(de, OUTPUT);
    ' a, G5 u; P1 L$ V# y
  133.   digitalWrite(de, HIGH);; B- S0 J7 g+ [; a* Q: e) |( G
  134.   pinMode(key, INPUT);            
    1 |& X- |3 W! D/ w1 k0 k
  135.   Serial.println();
    + N, @: W; ?% h
  136.   Serial.print("Connecting to ");
    : d8 |/ L9 ^' g
  137.   Serial.println(ssid);& `8 E# a" X: N$ I0 ]/ P) L) x
  138.   WiFi.begin(ssid, pswd);
    ) f: Q; Z$ K8 d8 |
  139.   while (WiFi.status() != WL_CONNECTED) {
    & f" I1 e. |5 V# j- T2 r
  140.     delay(500);
    2 w; Q4 R8 h8 P* Q1 b! [
  141.     Serial.print(".");
    " v+ o4 Y/ ~0 J$ F1 I% p
  142.   }
    / u% M6 e  ?+ m7 C& A, h9 l7 a! F
  143.   Serial.println("");
    & b. z# x  D& `( Q
  144.   Serial.println("WiFi connected");2 U4 m. B0 I5 v' D
  145.   server.begin();
    & V# Q! N3 X# U% C$ p6 _
  146.   Serial.println("Server started @ ");/ y- _! F+ q: ]8 J- |
  147.   Serial.println(WiFi.localIP());
    0 t; U, n5 J# ?
  148.   //打印出IP地址,后期可以制作显示器来外部硬件显示ip
    1 ~$ c' t$ E3 }+ H" B8 }5 B" M; I
  149.   Serial.println("To control GPIO, open your web browser.");& v: ~2 ?9 c, x8 Z
  150.   Serial.println("To set GPIO 0 high, type:");! P+ H" d; v, H& c- x9 i$ [/ A
  151.   Serial.print(WiFi.localIP());0 v, N. D# M# ]( U5 a
  152.   Serial.println("/gpio/1");
    + y8 `9 I' z3 e, N* D5 D2 m
  153.   Serial.println("To set GPIO 0 low, type:");
    / k5 }% Y6 \0 ~
  154.   Serial.print(WiFi.localIP());3 `3 Q, u9 i* S
  155.   Serial.println("/gpio/0");
    * M  Y4 |/ k: V' k
  156.   Serial.println("To toggle GPIO 0, type:");# G3 U2 T5 y: p( G! P8 s% a, M
  157.   Serial.print(WiFi.localIP());
    0 D1 K5 {# T& ^* d, o
  158.   Serial.println("/gpio/4");* I; h  X( W+ \. ~- I3 o( L

  159. 7 A. T8 d( E; c3 Y: r( r
  160.   // 初始化blinker* N3 D" T, y, N$ d
  161.   Blinker.begin(auth, ssid, pswd);( E1 }0 b# g0 ?
  162.   BlinkerMIOT.attachPowerState(miotPowerState);              //小爱语音操作注册函数* R8 d' {6 U1 [  L1 ~2 F
  163.   BlinkerAliGenie.attachPowerState(aligeniePowerState);      //天猫语音操作注册函数' Y) r: `" {8 x1 e
  164.   Blinker.attachHeartbeat(heartbeat);              //app定时向设备发送心跳包, 设备收到心跳包后会返回设备当前状态进行语音操作和app操作同步。; t6 \3 n6 q7 Q$ F+ |, a4 N
  165. ! U6 M$ G0 Z/ }$ @; l) f0 ]
  166.   Button1.attach(button1_callback);             //app上操作必须的注册回调函数关联按键名“Button1”和判断程序“button1_callback8 O4 ^8 D( G% B6 m4 M2 H' l
  167. }
    5 G3 p! M+ R9 b) B: H
  168. void dataRead(const String & data)0 C# n  m; [3 D/ T- f
  169. {& T; {5 s. N6 k# ~
  170.     BLINKER_LOG("Blinker readString: ", data);/ T- Z4 d. [+ b' t3 ]

  171. - f0 ]' }1 K# v  [% C) p. l  h
  172.     Blinker.vibrate();+ p7 t  ^7 H+ X0 [
  173.     ; P, E: s; N4 m# d2 p6 y4 A
  174.     uint32_t BlinkerTime = millis();
    4 G& S- }3 _2 Z3 u) ^1 p, Y5 h
  175.    
    6 N# a) }9 |; Z: P
  176.     Blinker.print("millis", BlinkerTime);
    # I. [8 c. [* L8 _
  177. }: h$ p/ q) g8 V# \6 w* l
  178. void loop()
    ) |5 Z; V$ `8 v3 D
  179. {: m/ W  O$ E$ V
  180.   Blinker.run();9 A/ c' T1 b+ f8 [
  181.   if (digitalRead(key)==LOW)
    3 M) n  C3 P1 Z, B3 @$ I! [
  182.   {
    0 t$ k7 p; L. S% B
  183.     Blinker.delay(200);
    * [' I6 U6 z7 l$ D' J+ t2 X
  184.     if (digitalRead(key)==LOW)1 h- W: {  v! c# p9 T& _; `  \
  185.     {
    / W! e$ k' ]2 D9 {! g2 A3 b
  186.           if (digitalRead(kg)==LOW)( A# M6 \) Y. ^' E
  187.        {
    5 _. u( B. C  S" P
  188.             . H+ M" H# `3 C2 F' k
  189.             digitalWrite(kg, HIGH);
    ) y0 p, ]# X& p" ]" ]) S
  190.             digitalWrite(de, LOW);  [9 j4 \" g% I; Q  L+ c. h2 d
  191.             Button1.print("on");$ W4 c3 m- t9 \" o. G
  192.             Button1.color("#0000FF");              //设置app按键是浅蓝色# s3 ^$ W; ^) I* q0 o' \; M
  193.             Button1.text("开启中");1 O8 E2 T5 n% `3 X. K- _- h
  194.        }
    $ l$ j! r6 F! T
  195.        else if (digitalRead(kg)==HIGH)
    3 e. a' R1 Y. M) j9 b* a
  196.        {
    2 N. _, ^; ?, r1 b! m( `. b
  197.             digitalWrite(kg, LOW);
    & U# M' S9 D, m/ m& B; F
  198.             digitalWrite(de, HIGH);
    $ P, y. D5 z8 W4 t- p% @' u- \  l
  199.             Button1.print("off");
    ' Z! b" C) i: u+ t
  200.             Button1.color("#00FFFF");              //设置app按键是深蓝色
    4 o& x3 X- ?$ N1 a. h& S+ P! l
  201.             Button1.text("关闭中");6 x* M8 W( h$ u' a" h1 e
  202.        }
    : C8 @; \! X; V
  203.       }5 D2 }) E$ G# ]$ N
  204.     }
    & y/ Y$ ~) @7 C9 Q7 C
  205. }
复制代码

- W3 e! e) o3 K' c8 V  P) A" S& ^' E- x& m1 q" m1 A8 P
我没有用卖家给的码,我自己写了一个,参考我前面的文章最简单的8266天猫精灵控制开关,点灯、Mixly可视模块化编程 https://bbs.nasdiyer.com/thread-18755-1-1.html! _( D+ s$ @. c+ _6 O( ]
4 T5 r) c% K, g5 f$ \/ B
把上面的2改成5,把高低电平对调一下就可以使用天猫精灵来控制你的这个插座了。我是把我的第一个插座放在了我的落地电风扇中了,当我慵懒的在沙发上刷着手机时候感觉有一点点热,我只要呼唤“天猫精灵,打开风扇”,就可以了。1 b) A. K1 k, A0 i. h% k# H

- L  e* e+ Q- U4 H: O9 _: ]- k" D" Y; u) C- k* C1 F

0

主题

18

回帖

85

积分

初级渣柚V2

积分
85
QQ
lucky999777 发表于 2021-8-23 13:06:07 | 显示全部楼层 IP:–浙江–台州 电信
高手,没玩过!达人

2

主题

11

回帖

62

积分

初级渣柚V2

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

11

主题

51

回帖

209

积分

中级渣柚V1

积分
209
QQ
 楼主| 易记 发表于 2021-8-24 17:20:24 | 显示全部楼层 IP:–浙江–嘉兴–桐乡市 电信
a467913252 发表于 2021-8-24 15:538 O1 b0 }1 ]; Q, _" v2 @: t
买了几个   做工挺扎实的,但是外壳怎么拆啊  拿斜口钳拨了一个,   四个圆角的卡口根本没法正常拆 ...

! R. q  ~3 O! S$ i) |( y' j6 p大力出奇迹呀

1

主题

8

回帖

257

积分

中级渣柚V1

积分
257
sevenup0719 发表于 2021-8-29 08:14:58 | 显示全部楼层 IP:–江苏–连云港 联通
a467913252 发表于 2021-8-24 15:53+ G' G1 g; e8 K! {( y6 N0 Q
买了几个   做工挺扎实的,但是外壳怎么拆啊  拿斜口钳拨了一个,   四个圆角的卡口根本没法正常拆 ...
: |5 d, X* r2 I8 u% B/ U
昨晚拆了一个,废了老大劲,想和卖家说的无损拆下来,不拆个三五个积攒经验,基本不可能

2

主题

11

回帖

62

积分

初级渣柚V2

积分
62
QQ
a467913252 发表于 2021-9-4 23:05:22 | 显示全部楼层 IP:–湖北–武汉–江夏区 电信
sevenup0719 发表于 2021-8-29 08:14& R* \1 I! W2 o! E: e# S, Q, F
昨晚拆了一个,废了老大劲,想和卖家说的无损拆下来,不拆个三五个积攒经验,基本不可能 ...
8 R  J2 Y: p. g$ b5 N5 d, Z
你的搞定没  为什么我的根本没法烧录   连接不上,,用esp01s还没问题的
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-7-10 01:20 , Processed in 0.071124 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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