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

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

[复制链接]

11

主题

51

回帖

209

积分

中级渣柚V1

积分
209
QQ
 楼主| 易记 发表于 2021-8-21 13:57:54 | 显示全部楼层 |阅读模式 IP:–浙江–嘉兴 电信
本帖最后由 易记 于 2021-8-21 14:05 编辑
* w1 P" N  `+ S5 J! k) l( l9 [
$ n6 O' V. m' C8 {最近玩ESP8266,想做个天猫控制开关。
1 X3 k5 {( |0 Z$ E6 Z. o但是我很懒,一个个配元件嫌麻烦,于是想着能不能淘到便宜的带电源板的模块,多倒是蛮多,一般都要20多块钱。
; A8 V! ^: J9 g1 a0 T6 l还是闲钱上逛一下看,找到一个联想的国外版8266智能插座,价格才8.5元一个。有一点不足,就是只有三孔,要是五孔的就好了。老板说五孔杂牌价格一样也有货,晚两天发布。
! v5 u2 Z5 d; g0 F* j QQ截图20210821125037.jpg
* ?7 G4 v6 [$ \* R/ F6 M
) Y" o. B" n5 W1 R- x7 m

& B/ c% A/ `& i  e+ `问了一下店主,买20个一盒才包邮,想着20个还是有点多,买了5个,连运费47.5元。; }$ L/ ^5 r3 M) Q

' h, N+ `: U" n% N' x6 H QQ图片20210821124517.jpg " c8 S- w8 J0 r5 Z

' |& J7 j/ c% U. m- s
0 E, ]; w; q; s# D6 M; J* ~

5 x' `  S" {3 T0 {" C到手,当然是拆拆拆。" m' @* r" O8 e$ @$ }" Z
IMG_20210820_134104.jpg
: Z4 w4 W  T2 c2 D) y& |
( o! p2 M9 r: c. s5 n- G. `

( t) p2 \0 \  j) G联想的做工,还是感觉不错的,光这个继电器应该也要个7-8块钱。/ t: m* x! o5 d/ A. V7 T
IMG_20210820_160634.jpg & _4 m& J4 g) ~" R- w
+ `: ?8 Z5 k* s2 B4 G  m5 p' Y

" }) h3 D6 T* ^7 S' @继电器是两组常开,感觉要是接电灯双控开关是不是有点麻烦的,不过用于插座是很安全,要断二条线都断开。
, y4 d* B% I* }, n( [. y3 \5 g. a QQ截图20210821133707.jpg
$ Z% Z5 z5 z2 S" {5 C0 @3 _& o: S

0 L) n* h9 W- L IMG_20210820_134114.jpg , u5 u. h) |" U6 ~2 E2 Q5 Q

& a5 h# n( d2 c9 u9 [, J2 z+ p电源芯片$ H/ a$ M3 ^  X0 [" T& ?. K: b

/ B% j( w" J% o% q0 J$ R0 v0 S+ M# F' r

. i+ j9 l( x0 s+ T* @7 @( a有一个按钮,按钮有二个蓝色LED灯
( G9 a. D! [; U3 a IMG_20210820_134157.jpg
( w# B$ k; J+ {2 D8 k+ S
; d  W6 y+ w! t: b. e$ l1 I
6 o- s1 O% h9 ^( l3 U: B! _% v5 w
8266; O6 F3 ]" `9 w! o2 W; E$ ?& l
IMG_20210820_141913.jpg   B" T* r. G0 Z% N8 j* x7 H
8 h) v; G5 u8 M" Z
8 o; Q% @8 \+ q4 ]
7 `3 U8 V* D  T* q

/ t) i. ^* e- p4 {# ~; i( ~5 d接下来就是刷机了,版子上面都预留测试点。% m- w( w1 B$ `  g& G, E
接线比较容易,上面都有标示,GND,3.3V,TXD-RX,RXD-TX,还有一个就是IO0接地后刷机。6 x! }" U! i5 S  G, _! l
未标题-1.jpg
$ \9 S" E: S! n1 e
注意RX这个点,就是3.3V边上的这个点,焊盘设计的就点问题,电烙铁热一点或是焊的刷机线过粗的话,容易掉焊盘。
) {7 W$ b: T' O' \5 }要是掉了就只有一个过孔了,要是焊不上,只能再拆开接在另一面,所以为了避免不必要的麻烦,请注意一下。
6 s( r# K+ p; @, l8 K. R
6 i$ f, g  @8 [3 e, @
* B9 I- z" |/ j& y5 W' V3 X/ {$ B5 I2 N
1 ]' D" t( j9 S* E- Y) B- A! F

" m+ @5 b# ~2 }3 r, G6 u

5 t& s7 H& D5 a0 O) R5 |    5号脚位是继电器输出5 S# ~# U& T5 X( x: ^1 a7 ?  h
    12号脚位是灯输出( Y. N7 @* M) a: ^9 i
    4号脚位是按键
& x8 D+ u5 e7 U! N% `; A) z' S+ Y
# i# ~1 X  ^# U! c* G

# X, H5 _$ L. o
+ r0 E0 P. R4 E: J% d- B* ^

9 r; e5 f: m8 c6 a# ^卖家有发一个源码,如下
  1. #define BLINKER_WIFI                    //官方wifi协议库
    8 e, D. H  K# T! [- F1 x# I- B
  2. #define BLINKER_MIOT_LIGHT              // 设置小爱灯类库
    ) N" l! i  a+ b
  3. #define BLINKER_ALIGENIE_LIGHT          // 设置天猫灯类库
    3 H" O4 y3 N$ q9 g
  4. #define BLINKER_PRINT Serial            //串口协议库. G: K6 Z/ g7 A( l2 }! @* O+ ]
  5. #include <Blinker.h>                    //官方库
    , N  x+ ]' |1 d" y9 p, Z( z
  6. #include <ESP8266WiFi.h>                //官方库8 d" W$ {4 p" M: ]
  7. WiFiServer server(80);                  // 服务器端口号& i4 }& J& K& e: C9 Q

  8. ! U) C3 |7 B) V5 |9 i" `$ V  Q
  9. char auth[] = "c4942fb1d5e4";     //设备key
    # o2 H5 k4 x: {4 I# H: D" ^6 L
  10. char ssid[] = "wanboshi";     //路由器wifi ssid
    ! K* l7 e  ^' V
  11. char pswd[] = "1365662999813586348220";     //路由器wifi 密码
    % c. V. ]6 R& ~) g) w
  12. 8 v4 a" u& H6 F: S' b! @
  13. bool oState = false;) z& _6 D, f9 g* _- }

  14. # D( k2 c) k( O  @5 D) W9 G
  15. int kg=5;//继电器输出& z+ @, \9 A: }' q; R) Y6 o5 n
  16. int de=12;//灯输出
    ; [. s. u  \% m( T) h
  17. int key=4 ;//按键
    5 w# k  [* L2 X2 n3 E+ m* g6 T
  18. //*******新建组件对象9 C& G4 C" ?# x5 S' `5 W* s. ^

  19. - Z+ M4 V3 E& I/ u7 E. W; I
  20. BlinkerButton Button1("btn-abc");              //设置app按键的键名
    . {% l4 y# O1 w
  21. //*******app上按下按键即会执行该函数app里按键
    0 ~& w* W  g% M  T4 s6 j2 @6 A9 n
  22. void button1_callback(const String & state)1 i- W  b$ d; c, u5 O
  23. {# }/ `3 z; L3 N5 B, Z% F. g
  24.    if (digitalRead(kg)==LOW)2 `; Q( \. E( s  H, T
  25.    {+ `  h' w; L) E8 _) ~* i$ i! Y1 g
  26.         BLINKER_LOG("get button state: ", state);
      L+ Y$ {  O! O2 T9 e0 {; g+ v
  27.         digitalWrite(kg, HIGH);) e: r6 [4 k9 M2 A# R
  28.         digitalWrite(de, LOW);. O6 R  Z9 S( F3 m7 L" X! G
  29.         Button1.print("on");
    ; V! _" Z  P+ q; d4 c; i! q1 K$ K
  30.         Button1.color("#0000FF");              //设置app按键是浅蓝色! n8 C5 \% {5 X
  31.         Button1.text("开启中");) M# D3 I1 T9 F, n
  32.    }$ ?+ v' z: _" W9 c$ x; S+ U
  33.    else if (digitalRead(kg)==HIGH)  x  a; I2 W2 P/ x
  34.    {
    ; d0 M& Z; k8 ^0 Y# Z
  35.         BLINKER_LOG("get button state: ", state);
    0 b. `% w) ]* Q, ~. C& L# f
  36.         digitalWrite(kg, LOW);0 W' }$ |+ |) M7 P" `
  37.         digitalWrite(de, HIGH);
    5 |8 q! _+ d7 R& J
  38.         Button1.print("off");
    0 I5 [  v  G, }8 I7 g/ e
  39.         Button1.color("#00FFFF");              //设置app按键是深蓝色! B4 V& x5 [3 n1 [7 p+ _& _
  40.         Button1.text("关闭中");2 y1 p: m: g# \
  41.    }  Z% d* a( S6 b2 W$ P% ]# R& X2 J6 D
  42. }
    ! {/ R+ X: o/ c- M3 F5 x

  43. 0 B* B+ U; i2 ^0 c
  44. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++0 `5 `9 E) V8 r& N" h% ^$ E

  45. 6 E  h8 q# A! J
  46. //*******如果小爱有对设备进行操作就执行下面& n1 B" G+ D. q2 H! y+ P; _; S
  47. void miotPowerState(const String & state)
    + _! p8 N* A2 J6 \8 [
  48. {
    + q6 p8 {# }, J
  49.     BLINKER_LOG("小爱语音操作!");              //串口打印
    4 z" U% w; x3 ^2 X) U6 o6 ^& \
  50.     if (state == BLINKER_CMD_ON){
    / C) x8 e$ o& M. f/ y7 w* I
  51.         % R- f8 ]$ ]* r  o
  52.         digitalWrite(kg, HIGH);- m7 I0 M2 B1 Z' Z' y
  53.         digitalWrite(de, LOW);
    - K5 d9 t8 X  U; t  ?
  54.         Button1.print("on");
    . g3 N0 }/ E5 j( G/ Z: h  C
  55.         Button1.color("#0000FF");              //设置app按键是浅蓝色
    ) p2 c4 s6 N- }7 k. V
  56.         Button1.text("开启中");* b3 c' a1 _8 S
  57.         BlinkerMIOT.powerState("on");5 ?* y6 S7 V3 x  J1 ?: z+ b% R# w
  58.         BlinkerMIOT.print();5 Q! R, R) w+ ~. l
  59.    }. y* C" K5 P. x8 J. g
  60.    else if (state == BLINKER_CMD_OFF)
    5 Z+ d4 I8 _$ O( s( @5 D
  61.    {
    + L6 L3 o" x$ R* w
  62.         ( I5 x4 q- Y  u' X
  63.         digitalWrite(kg, LOW);
    6 W0 M, O; L: _" s0 }# S
  64.         digitalWrite(de, HIGH);
    ' R, n' o4 u- h/ `& e/ Y6 b
  65.         Button1.print("off");/ H1 ]1 W2 f7 K/ j: g7 r
  66.         Button1.color("#00FFFF");              //设置app按键是深蓝色6 c- X4 i" b8 T6 n
  67.         Button1.text("关闭中");9 h9 u) ^* h9 O
  68.         BlinkerMIOT.powerState("off");
    6 V5 _8 c2 X0 W+ C3 C6 Y, D
  69.         BlinkerMIOT.print();! D& i) v; y0 [. B8 c
  70.    }
    & a: D9 h8 z; X" I! \
  71.        3 E! H. [) w2 \# F
  72. # f- [5 L# L6 x5 Y" E. U' F0 T. p! y
  73. }
    ) C# K! n4 ~7 j  w1 G) `
  74. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    4 @, R' N7 o& u! p& P$ E3 F3 M3 J
  75. //*******如果天猫精灵有对设备进行操作就执行下面1 O$ D  ^# H5 t6 w, C# N
  76. void aligeniePowerState(const String & state)/ B5 Q- H. R: I& t; T$ Z7 \. D
  77. {8 K+ i# V1 L; k0 {' L9 D! {
  78.     BLINKER_LOG("need set power state: ", state);
    * M! W% ]5 {4 e2 }# E2 u9 I/ H  y
  79.     if (state == BLINKER_CMD_ON)+ A8 V( |" Y& o/ k$ H8 T# `
  80.     {
    6 h" D6 K4 P- y
  81.         
    $ d9 T3 \# R8 g
  82.         digitalWrite(kg, HIGH);
    ! m0 }& ^0 \) J5 N& ~) \* q! D
  83.         digitalWrite(de, LOW);
      x( Y# x: Q6 h' m$ G, W; r2 j
  84.         Button1.print("on");* X; g; u& @6 y8 c' y) g& i
  85.         Button1.color("#0000FF");              //设置app按键是浅蓝色
    1 R4 K, O& ^6 |0 Z( X# I
  86.         Button1.text("开启中");( `5 Y- G* k! T! Z4 r$ V* _
  87.         BlinkerAliGenie.powerState("on");) G2 g1 |/ n- a& V) f% n4 V
  88.         BlinkerAliGenie.print();
    1 D/ o6 e) T8 z7 t" [  I( u' D; L7 x
  89.     }/ n  t9 h5 ]2 I: H! i2 }' t
  90.     else if (state == BLINKER_CMD_OFF)2 i% j. H( m! }1 Y1 \1 a
  91.     {
    $ U+ |  ?: y; f  k: {/ ~
  92.         $ e1 h% A+ F+ r: c5 S! ]+ L, s
  93.         digitalWrite(kg, LOW);2 h# [: }, J5 ^) ~
  94.         digitalWrite(de, HIGH);
    / E  e1 K2 Y5 B. B# Q( S
  95.         Button1.print("off");
    ) q7 ^' a, a! P. {! k/ x4 f% o
  96.         Button1.color("#00FFFF");              //设置app按键是深蓝色
    0 V3 Q( }) F; b/ j* Y0 P
  97.         Button1.text("关闭中");1 R7 C# B; A0 _0 w9 q/ d8 J
  98.         BlinkerAliGenie.powerState("off");; j1 Z) H8 A% g* N; e( [
  99.         BlinkerAliGenie.print();
    5 k  Z& j' \0 G8 H, R
  100.     }% u) A* }7 M. h  @- z
  101.         
    6 F0 j7 e/ @9 C  {- A8 K5 q5 b

  102.   K, ?& _4 K" j
  103. }! t: z7 G% k* v) ?
  104.   //*******app定时向设备发送心跳包, 设备收到心跳包后会返回设备当前状态30s~60s一次
    1 B- E0 F0 I9 u0 q
  105. void heartbeat()/ F6 i" S5 v3 c) f# A
  106. {
    + Z) ]) R. \7 |: j: V0 G$ }7 d1 K
  107.   BLINKER_LOG("状态同步!"); * x) A+ H& e1 B% G, x- ]: }  _2 a+ l
  108.    if (digitalRead(kg)==HIGH)
      D0 O7 J4 S4 x( P6 @4 F
  109.     { , F  v+ l' a" t/ `
  110.       Button1.print("on");# D) ^/ j# l8 j9 t( G5 a
  111.       Button1.color("#0000FF");              //设置app按键是浅蓝色
    - z3 p$ P0 p6 w- x( K4 o2 t
  112.       Button1.text("开启中");
    $ K; j: M( s. m) I
  113.     }
    5 C9 k8 K/ i1 g$ }& M
  114.     else . j; d' Q2 k$ N
  115.     {0 p. o  z1 W4 i6 Q4 f2 j7 _
  116.       Button1.print("off");& f4 `" G3 {8 M, r1 p7 X
  117.       Button1.color("#00FFFF");              //设置app按键是深蓝色; ]. ~/ f  I8 P
  118.       Button1.text("关闭中");, H' U+ q6 k( k: v
  119.    
    ' S6 V" k: m0 h+ ^6 K
  120.     }2 L0 F/ r; w9 ?& \9 s, k5 B
  121. }6 E3 j! H; c* H- j' r1 P/ w
  122. //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    ! F% z# G4 j5 r4 R
  123. void setup()
    $ y; ]( ^+ B. t5 t5 ?+ Z- @- ?) E) R
  124. {. B. D" v" x# c+ n9 E2 i
  125.   // 初始化串口
    # ]. F# t, ~/ d6 ~/ t4 H
  126.   Serial.begin(115200);' v% \! ^! ~: w7 ?
  127.   delay(10);+ M/ P5 p0 X6 Z& _$ n
  128.   BLINKER_DEBUG.stream(Serial);
    6 A2 V# ~! p/ L& K
  129.   // 初始化有LED的IO# i: ^5 i* E0 F+ z+ h9 ?. C/ E
  130.   pinMode(kg, OUTPUT);                 ' u" G& K9 E0 Q
  131.   digitalWrite(kg, LOW);//初始化继电器上电状态
    , z' L2 w# N2 f1 W1 c% {) ?
  132.   pinMode(de, OUTPUT);
    & p% A" a) T' V8 _" `
  133.   digitalWrite(de, HIGH);0 t5 z( c, h2 a6 S
  134.   pinMode(key, INPUT);            7 N/ L) B/ T9 l0 K9 M4 e
  135.   Serial.println();8 g  \/ k2 J/ q* T8 ^
  136.   Serial.print("Connecting to ");0 Q. i5 V! m  s# [6 N7 l+ q
  137.   Serial.println(ssid);
    5 i  v- k4 d+ }" c+ u5 s
  138.   WiFi.begin(ssid, pswd);
    . |) c- [* ~5 K; Z0 \
  139.   while (WiFi.status() != WL_CONNECTED) {  [" ]1 `8 h% Q- I+ Y& A
  140.     delay(500);  Z, Y+ J& R" q6 q8 C
  141.     Serial.print(".");: {4 r' Z% f6 p: L& c
  142.   }
    + j/ a9 V, n" z( L* g3 Q) h
  143.   Serial.println("");9 W1 A4 w6 b: E6 o, a6 S6 @
  144.   Serial.println("WiFi connected");
    1 F! w+ |+ U9 C$ g9 u
  145.   server.begin();) k* X2 l1 Z. R7 F% t+ A- Q  x& d
  146.   Serial.println("Server started @ ");
    , q) Y) e3 z/ }
  147.   Serial.println(WiFi.localIP());/ r) t1 O" e: p7 l9 P" P' e
  148.   //打印出IP地址,后期可以制作显示器来外部硬件显示ip
    & R& N, K6 k& b3 X4 b, w- G# d% }
  149.   Serial.println("To control GPIO, open your web browser.");
    ! U* S7 s4 c: j) {
  150.   Serial.println("To set GPIO 0 high, type:");
    % X+ [& g0 ]8 A7 |2 w3 q: O  `5 V
  151.   Serial.print(WiFi.localIP());
    7 ]5 J, H1 ^3 Y5 U% P
  152.   Serial.println("/gpio/1");/ Q) S8 L8 s) B! o
  153.   Serial.println("To set GPIO 0 low, type:");. V3 [' G+ Q! `  ~" b
  154.   Serial.print(WiFi.localIP());
    " _- B( }& |- K. C& \% S2 {# y! ~
  155.   Serial.println("/gpio/0");* h. f; d3 @; V" k( H% [1 M  B
  156.   Serial.println("To toggle GPIO 0, type:");
    ) F- U/ {7 W# x; s. k- K, _$ C
  157.   Serial.print(WiFi.localIP());
    3 P4 q2 c0 Z/ [+ L) A  m: h
  158.   Serial.println("/gpio/4");2 E& M7 J5 x. s

  159. 6 O7 D" }  \6 V8 |7 y
  160.   // 初始化blinker$ T# x1 w, K0 c7 d; A$ E/ d
  161.   Blinker.begin(auth, ssid, pswd);9 V6 u9 T8 A( p" H
  162.   BlinkerMIOT.attachPowerState(miotPowerState);              //小爱语音操作注册函数5 t# C% W, O( B# u9 E
  163.   BlinkerAliGenie.attachPowerState(aligeniePowerState);      //天猫语音操作注册函数5 ]" L+ d) T/ F8 h' f! x3 P
  164.   Blinker.attachHeartbeat(heartbeat);              //app定时向设备发送心跳包, 设备收到心跳包后会返回设备当前状态进行语音操作和app操作同步。
    $ V3 G: E- y5 O

  165. . K4 \8 M3 L5 s% j
  166.   Button1.attach(button1_callback);             //app上操作必须的注册回调函数关联按键名“Button1”和判断程序“button1_callback" B) I2 M# M- I. E; c  h0 o
  167. }1 \' d1 J3 r1 H0 w, Q7 M+ x
  168. void dataRead(const String & data)) x8 y* Q: u7 e
  169. {
    & p4 p( ?$ ~, J7 H2 _  r
  170.     BLINKER_LOG("Blinker readString: ", data);. ]# |3 A% B0 j

  171. 7 F+ G- H( w- v  Q9 ~# |/ n& v
  172.     Blinker.vibrate();
    # {8 n  t- d) ?- t) {4 _
  173.    
    , i! D  I* M/ C
  174.     uint32_t BlinkerTime = millis();8 O' c% N7 e# k
  175.    
    / `$ n/ T2 N8 F# v, N
  176.     Blinker.print("millis", BlinkerTime);+ N& n& `$ K7 y% _; l) H0 B
  177. }
    * j5 W2 C2 K: d! r2 F* x
  178. void loop()
    . ]; q& e" B6 `- F- s) S
  179. {
    ! M% O! w8 J) N- _5 i: n
  180.   Blinker.run();
    # B4 P( b0 f8 q* H
  181.   if (digitalRead(key)==LOW)
    . {/ j$ C4 p" h# m8 \
  182.   {
    $ l# d% r# c  x/ n/ m, `' ?4 f
  183.     Blinker.delay(200);
    & D9 F3 i% T/ n/ c
  184.     if (digitalRead(key)==LOW)
    1 ?4 n  ?% \5 l: L, n: H, W5 }
  185.     {5 ~1 ^: H9 U8 ^8 n1 L/ I! J1 p
  186.           if (digitalRead(kg)==LOW)
    + X# \! _4 `9 f4 f$ ]* y+ `
  187.        {& G! ^5 S, Y+ O( b8 v/ m1 |9 [
  188.             
    3 [' j! k9 @/ Z. A6 g* r
  189.             digitalWrite(kg, HIGH);
    ! y/ C6 B5 I8 Y3 Y0 B
  190.             digitalWrite(de, LOW);% v$ t8 r( V4 U9 }( k
  191.             Button1.print("on");
    + A3 q, E9 ]5 F0 m$ H( a
  192.             Button1.color("#0000FF");              //设置app按键是浅蓝色$ o) }' z/ i2 `* E0 ^
  193.             Button1.text("开启中");
    ! L  e, [5 B6 p' b
  194.        }% y& }6 ]- j7 J8 s" G/ f
  195.        else if (digitalRead(kg)==HIGH)
    5 c# I5 r- e# ]: X+ x# p& {: L% n
  196.        {
    - b$ l! j& @7 l) l( Z, @0 u
  197.             digitalWrite(kg, LOW);( V& i- T) \% u, O! y
  198.             digitalWrite(de, HIGH);" _' y( }5 }- t# l9 C
  199.             Button1.print("off");6 ]* V7 G$ g4 ~, @; R' `
  200.             Button1.color("#00FFFF");              //设置app按键是深蓝色
      @- ?( D0 y6 L* B5 B8 J+ f% Q
  201.             Button1.text("关闭中");
    / z' ~6 B6 t3 ?) z" I( y
  202.        }
    1 M" c' n: b  o4 M. Q
  203.       }5 r9 F8 M7 ?+ o  r! ]
  204.     }
      ], |# z2 j' N
  205. }
复制代码
" O, H4 ^3 ]+ v" l$ L6 H+ `4 X
* d1 o5 d! o3 _! @2 u# C) w& N
我没有用卖家给的码,我自己写了一个,参考我前面的文章最简单的8266天猫精灵控制开关,点灯、Mixly可视模块化编程 https://bbs.nasdiyer.com/thread-18755-1-1.html
' i6 Q& n' w. a, S/ }% F" r/ A! m7 @, |* U
把上面的2改成5,把高低电平对调一下就可以使用天猫精灵来控制你的这个插座了。我是把我的第一个插座放在了我的落地电风扇中了,当我慵懒的在沙发上刷着手机时候感觉有一点点热,我只要呼唤“天猫精灵,打开风扇”,就可以了。8 l& Y) a$ g% o- j  g; g
  i. X: t5 {+ M( f
+ g! L/ H" G* w# p

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:53; ]4 W" `5 }+ t# Y1 G1 T0 s& a
买了几个   做工挺扎实的,但是外壳怎么拆啊  拿斜口钳拨了一个,   四个圆角的卡口根本没法正常拆 ...
# I6 M& ~/ p: H/ H0 f) r
大力出奇迹呀

1

主题

8

回帖

257

积分

中级渣柚V1

积分
257
sevenup0719 发表于 2021-8-29 08:14:58 | 显示全部楼层 IP:–江苏–连云港 联通
a467913252 发表于 2021-8-24 15:53
; L. }; h% k% s4 I# ~买了几个   做工挺扎实的,但是外壳怎么拆啊  拿斜口钳拨了一个,   四个圆角的卡口根本没法正常拆 ...
% m' p. \: ^5 T# [  t+ K6 i
昨晚拆了一个,废了老大劲,想和卖家说的无损拆下来,不拆个三五个积攒经验,基本不可能

2

主题

11

回帖

62

积分

初级渣柚V2

积分
62
QQ
a467913252 发表于 2021-9-4 23:05:22 | 显示全部楼层 IP:–湖北–武汉–江夏区 电信
sevenup0719 发表于 2021-8-29 08:14) A& n4 N. K, n* c1 z
昨晚拆了一个,废了老大劲,想和卖家说的无损拆下来,不拆个三五个积攒经验,基本不可能 ...

& Q9 f+ x  A) A1 }$ F6 v你的搞定没  为什么我的根本没法烧录   连接不上,,用esp01s还没问题的
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-6-19 22:35 , Processed in 0.094196 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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