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

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

[复制链接]

11

主题

51

回帖

209

积分

中级渣柚V1

积分
209
QQ
 楼主| 发表于 2021-8-21 13:57:54 | 显示全部楼层 |阅读模式
本帖最后由 易记 于 2021-8-21 14:05 编辑 . t) I/ f; }8 A' F; _
5 z7 ^/ Z2 P" _
最近玩ESP8266,想做个天猫控制开关。: q1 t8 p5 m# _7 j" A$ Z) \  _
但是我很懒,一个个配元件嫌麻烦,于是想着能不能淘到便宜的带电源板的模块,多倒是蛮多,一般都要20多块钱。
8 N  P4 b. C. h/ t8 M( A$ G还是闲钱上逛一下看,找到一个联想的国外版8266智能插座,价格才8.5元一个。有一点不足,就是只有三孔,要是五孔的就好了。老板说五孔杂牌价格一样也有货,晚两天发布。1 |5 ?9 H  M1 ?$ l( E/ ^
QQ截图20210821125037.jpg # c! k8 W1 ]* _) y' Z* `

1 I3 @* k7 ]+ V1 p
. g$ ~8 B" x9 T) B, v
问了一下店主,买20个一盒才包邮,想着20个还是有点多,买了5个,连运费47.5元。" D. E: x1 J6 J
3 `5 `$ n/ n* V  G1 y; ]4 i7 I
QQ图片20210821124517.jpg
& d" U5 ?1 n5 e! I( [, c! ]& ]! \

/ Y& ?3 L' W, [7 g5 y: W& V
* Y7 Y7 |' I$ q, N$ H
% R4 e. g* A! h- N0 }, e
到手,当然是拆拆拆。9 Z+ h( H4 a) `" D$ d. e
IMG_20210820_134104.jpg ; h* N1 u# w( T0 h) {% j
6 z2 G( ^; x! M  A) l- i" {
# b: h7 r8 w) K; |! U
联想的做工,还是感觉不错的,光这个继电器应该也要个7-8块钱。
4 b6 F- Y1 v$ k1 M. C) { IMG_20210820_160634.jpg
1 K4 O: }* o( S9 A) l6 N9 P* ?% C+ l3 }/ f2 K5 G

% G! p( t/ F2 t1 L2 ~继电器是两组常开,感觉要是接电灯双控开关是不是有点麻烦的,不过用于插座是很安全,要断二条线都断开。* K1 h! }8 l, B+ C$ J
QQ截图20210821133707.jpg 0 a5 G1 _% \# ^+ l) _9 t% k
% ^2 n- m: _9 @! [3 t
IMG_20210820_134114.jpg
. m$ M9 b& t* ~- m1 e+ t2 m4 E
8 d1 p1 _+ u5 c* D3 j3 y
电源芯片/ n. C) R, W1 S! z

9 J/ [; e1 e  d, [9 b
; _" N% M! X: H
- r; z- @4 f3 R/ N; k
有一个按钮,按钮有二个蓝色LED灯
3 P( A: }+ P0 B$ L IMG_20210820_134157.jpg 6 g! ]% {" @) p% g" g4 q, T
5 _1 ~! \: h% D( P
! [, Z" o" E0 I! |" t
8266
3 m9 G- w) C/ a, ] IMG_20210820_141913.jpg
# W1 }. E+ a+ G$ B( Z% d# T
' ~/ y5 o! z( V; ]% U/ e
1 {& f8 r6 d" }1 W: h1 U
8 N% W7 N* ]7 ]- M# z$ e- @( i$ O

. i4 {8 H4 G! u, Q3 I* t接下来就是刷机了,版子上面都预留测试点。
" [/ s. |$ U- W0 C接线比较容易,上面都有标示,GND,3.3V,TXD-RX,RXD-TX,还有一个就是IO0接地后刷机。  j) x( c) H& R) V! B$ c5 C' g% W
未标题-1.jpg 1 k" ?% i* P" N& E1 d
注意RX这个点,就是3.3V边上的这个点,焊盘设计的就点问题,电烙铁热一点或是焊的刷机线过粗的话,容易掉焊盘。
4 }9 r5 V+ A9 M2 Z要是掉了就只有一个过孔了,要是焊不上,只能再拆开接在另一面,所以为了避免不必要的麻烦,请注意一下。

1 c: F$ l; m$ X- D8 H: F: g4 B+ Q$ y& C& J. \' X2 H/ q1 r
$ B9 Q9 V5 `% N8 ^

. N2 `1 ?! c+ m5 f* }  A$ O: e7 ?* j$ e- m

! V# H% k+ E! l6 ]    5号脚位是继电器输出
) Y) s, m6 l( y: }  G    12号脚位是灯输出4 E* ^4 h% g* D1 t
    4号脚位是按键
5 ~) B2 l" U, s& {4 ?" Z

/ h4 c2 N9 d4 b8 H( X* Q" {
3 ]( M- [" I; V. J4 g

2 x' k( [+ v- m
0 ~6 Y+ e$ W, f% R
卖家有发一个源码,如下
  1. #define BLINKER_WIFI                    //官方wifi协议库) f3 s. C- H% c: h1 V
  2. #define BLINKER_MIOT_LIGHT              // 设置小爱灯类库
    7 o( P; ]2 `. w5 y
  3. #define BLINKER_ALIGENIE_LIGHT          // 设置天猫灯类库& S& o3 A1 L$ p- U/ A
  4. #define BLINKER_PRINT Serial            //串口协议库
    ) s6 j' x& F# B4 l& ?
  5. #include <Blinker.h>                    //官方库
    - M7 |7 o8 C2 Q5 O3 U: G. o1 `
  6. #include <ESP8266WiFi.h>                //官方库" Y4 N8 ^. Y5 Q: ]
  7. WiFiServer server(80);                  // 服务器端口号% e  V0 A% C0 @# L& E

  8. : S' g! w& h* P/ P9 x
  9. char auth[] = "c4942fb1d5e4";     //设备key
    ; v' B  z. A; f! w7 _- F* A
  10. char ssid[] = "wanboshi";     //路由器wifi ssid6 q( c+ \( \6 Z1 k, F" W
  11. char pswd[] = "1365662999813586348220";     //路由器wifi 密码
    : Y% p1 c% b; t2 K0 E
  12. ! A5 d7 b, \# N' u  m8 E
  13. bool oState = false;! m2 C' h7 @  ?4 M  D5 ?4 `* i1 n, n( a

  14. 5 {9 p; W* E  B+ @7 x' }8 P
  15. int kg=5;//继电器输出
    , E0 M2 V1 J6 e( z1 b5 e2 e, t
  16. int de=12;//灯输出
    " s: c4 p: |6 {# L! S' r' x  A
  17. int key=4 ;//按键& L. X% a3 \! k( p! B
  18. //*******新建组件对象& T4 a; O% N# L

  19. # y: w( [; W. y) ^
  20. BlinkerButton Button1("btn-abc");              //设置app按键的键名
    % s- W; W4 O+ r% Y/ x
  21. //*******app上按下按键即会执行该函数app里按键' \; f3 c9 ^# \, V& Y" n
  22. void button1_callback(const String & state)
    . e" `* W8 o- k4 s6 f3 }1 c- g" y
  23. {6 F7 F# W/ b2 M! A3 g) u
  24.    if (digitalRead(kg)==LOW)! f! E3 c! R! e
  25.    {
    / |$ _& \' n% V9 \
  26.         BLINKER_LOG("get button state: ", state);
    7 c8 U5 H3 s0 |# L
  27.         digitalWrite(kg, HIGH);% T( o3 z+ a& O$ C* s$ G) N
  28.         digitalWrite(de, LOW);
      V2 |: w8 M; B8 i! E( U. Q
  29.         Button1.print("on");$ |5 _! ]- S- B) g) N3 A( ~' T) r- d
  30.         Button1.color("#0000FF");              //设置app按键是浅蓝色8 T- B; L# }- m1 e. |9 n/ L( |
  31.         Button1.text("开启中");; G" {% q. D- D2 `' ^; v
  32.    }8 E& s& @$ {$ Y7 y( R  B
  33.    else if (digitalRead(kg)==HIGH)) Z2 Y( k5 @5 Q/ Y, {7 E
  34.    {
    - i4 c) D% n" @/ G
  35.         BLINKER_LOG("get button state: ", state);, P5 A' Y( u% M3 p( X9 \
  36.         digitalWrite(kg, LOW);% e, L" V2 e6 }+ C& L8 Z$ n
  37.         digitalWrite(de, HIGH);
    / q! V" O9 g/ j
  38.         Button1.print("off");  K- y; i+ w) D. X5 G% J9 _" L
  39.         Button1.color("#00FFFF");              //设置app按键是深蓝色; z" D% s. }' W& J. x
  40.         Button1.text("关闭中");8 y( r0 i+ ]% E
  41.    }
    $ |+ d( D$ t3 U3 J2 z7 g6 z; U3 q
  42. }" {0 p; r" L) L/ }
  43. # `0 A9 S- x% v) p1 x
  44. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    & {4 N8 X, h0 _9 R) t8 S
  45. ( ?3 q# V$ u* i* k: x: i
  46. //*******如果小爱有对设备进行操作就执行下面$ T! d: l# t  W( [/ Q
  47. void miotPowerState(const String & state)
    0 @( d3 T& _, A7 V( g
  48. {
    1 n/ m! m. p- ^. B; a6 `  I
  49.     BLINKER_LOG("小爱语音操作!");              //串口打印& Z( {/ j  k  c0 Q7 f! y. Z. h
  50.     if (state == BLINKER_CMD_ON){
    * l2 g9 i! {4 y2 n8 j
  51.           E/ {% b! x' e. d9 k/ V, B4 Y
  52.         digitalWrite(kg, HIGH);. c2 o. Z8 @4 ?- |% ~) `
  53.         digitalWrite(de, LOW);
    4 A) b4 t! g/ }9 c- N0 T' l9 n
  54.         Button1.print("on");* x1 ]% b; {; e; W$ D
  55.         Button1.color("#0000FF");              //设置app按键是浅蓝色
      [# S2 t* q7 E" C9 E
  56.         Button1.text("开启中");
    4 c4 ^* v* O" L" U" s
  57.         BlinkerMIOT.powerState("on");
    4 i- \# M9 p. g' s$ F
  58.         BlinkerMIOT.print();
    2 f' b+ Y; E$ e/ l3 h' C& D' m! Z# {
  59.    }
    , e2 w+ `$ j6 @( h
  60.    else if (state == BLINKER_CMD_OFF)
    ; v7 K9 Q1 K2 ?9 X" _# h
  61.    {( V4 \, @; U$ t3 ^% g8 m
  62.         
    3 ?4 p5 E/ s5 E1 o8 V
  63.         digitalWrite(kg, LOW);
    ' \& L7 I9 \5 M, u8 }/ M$ k
  64.         digitalWrite(de, HIGH);! n$ o! _0 l: |
  65.         Button1.print("off");( Y$ O2 u2 A4 w9 _
  66.         Button1.color("#00FFFF");              //设置app按键是深蓝色
    : \+ x# f" `- S9 [: }; i
  67.         Button1.text("关闭中");
    6 S0 r5 P& z) N, ~
  68.         BlinkerMIOT.powerState("off");
    ! D6 C# p4 |  l, t; D
  69.         BlinkerMIOT.print();- ]1 j$ s  Q! v/ {: s. ~
  70.    }
    ' H1 I; N$ P9 q% ], @+ I2 a
  71.        : ]+ Y. q& H: M- x: r/ e7 A

  72. & W2 I( Y/ S% V4 v
  73. }
    / n' x4 d4 {/ |0 O+ x5 I
  74. //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ]6 Y( [# v0 G1 [. y
  75. //*******如果天猫精灵有对设备进行操作就执行下面
    , y% M& C3 `% b
  76. void aligeniePowerState(const String & state)
    7 _$ o7 r; ?. a& b  _" w
  77. {
    ) ?; M7 s" q% P6 |2 C5 ~. M
  78.     BLINKER_LOG("need set power state: ", state);9 k# {( @& {. p
  79.     if (state == BLINKER_CMD_ON)
    3 j9 q4 o- }- @+ \) t
  80.     {8 }4 Y: K* @8 _( i; g/ D! G( s
  81.         
    0 q6 o0 x% T: Q# g  ]
  82.         digitalWrite(kg, HIGH);
    5 d1 U; i0 _' V4 z3 [
  83.         digitalWrite(de, LOW);
    0 y8 M5 `" H0 }- |
  84.         Button1.print("on");3 N/ a- [" K9 j( t  i" O& v
  85.         Button1.color("#0000FF");              //设置app按键是浅蓝色0 p6 Q. h# |/ c0 p. P2 d( Q& U4 H( g
  86.         Button1.text("开启中");
    & H+ q& N6 f0 D0 b; }/ L7 D& W6 h% P
  87.         BlinkerAliGenie.powerState("on");& o6 w/ `  u$ L3 q. s
  88.         BlinkerAliGenie.print();
    # B% M9 A$ z$ b! W0 p; Q  _
  89.     }- f* V# d+ J* @' x% o" k
  90.     else if (state == BLINKER_CMD_OFF)
    7 w* j" V$ W, ]2 r( Z) @, C
  91.     {
    " ~* x, D& V' B' l5 p3 c
  92.         
    % _. H. @( L& g4 E/ l" D6 G
  93.         digitalWrite(kg, LOW);
    . f" }2 O4 U6 `5 ?. X
  94.         digitalWrite(de, HIGH);
    . L1 X0 N  X/ G: m
  95.         Button1.print("off");
    7 N: b) R% i/ x, N' A( z: U
  96.         Button1.color("#00FFFF");              //设置app按键是深蓝色
    ( [) e" ~6 L7 t3 J5 h
  97.         Button1.text("关闭中");
    7 a( T& q; F' v& X
  98.         BlinkerAliGenie.powerState("off");  B- B2 J5 @5 t( ~7 o) z% a
  99.         BlinkerAliGenie.print();* C' M+ k7 z2 z2 ~2 H3 Q* d
  100.     }+ T3 F- V+ @: @; l: f8 R
  101.         
    + `# c2 y* J5 g. _  e+ h
  102. . i+ |7 h3 ^8 Z# N# x. @8 b, @
  103. }8 s& R7 ]' v( R* [
  104.   //*******app定时向设备发送心跳包, 设备收到心跳包后会返回设备当前状态30s~60s一次
    4 X) o3 g( q; ]6 r  n0 h5 U$ q
  105. void heartbeat()3 h+ u0 A; `. r" v  p8 g
  106. {& r( s1 b% w, c
  107.   BLINKER_LOG("状态同步!");
    7 z9 L* f0 V8 K+ v
  108.    if (digitalRead(kg)==HIGH) 9 v. M! `9 p5 @% n2 [, j' f% ], w1 y
  109.     { 9 r2 A' c9 r) g4 ]7 w! ?
  110.       Button1.print("on");! v* q5 U$ S. z: L, i2 \1 U# a
  111.       Button1.color("#0000FF");              //设置app按键是浅蓝色# h- T# Y. D- n6 S
  112.       Button1.text("开启中");
    5 U! A) C2 T& U8 q( T5 V8 X
  113.     }
    5 d& J# W2 L" C# ]  V
  114.     else
    ! L( _1 l* ~& i/ u
  115.     {
    5 M! Z! q/ _; `, j( i' G8 a) N( G
  116.       Button1.print("off");
    " M3 `1 E# ]$ k* _# c# u$ t# \! ~
  117.       Button1.color("#00FFFF");              //设置app按键是深蓝色, g- [+ K9 i% b! v1 S
  118.       Button1.text("关闭中");: {+ ]2 ?; y: M+ Z+ x, [6 D: U
  119.     : z9 H' [" D# m( |, q5 A
  120.     }
    0 ]4 Y+ M6 s; O/ L9 \7 {
  121. }
    & D8 M; o& X, n6 n( d
  122. //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    ( e7 G# ^$ V8 T; w) s: u
  123. void setup()
    7 J5 D5 M) Z. q! r7 c! t
  124. {0 \/ x4 {4 p) u) X) {. _
  125.   // 初始化串口
    * k  v' |* x" x& S/ A' ]' B
  126.   Serial.begin(115200);' X6 i/ g6 F0 s8 A
  127.   delay(10);
    : D1 w( ^/ r. _5 c. Z! p
  128.   BLINKER_DEBUG.stream(Serial);
    . L# S1 ^  E- }: m5 O2 \
  129.   // 初始化有LED的IO
    & N) p/ d" ]9 _0 }
  130.   pinMode(kg, OUTPUT);                 
    , G6 g' H5 f* c" M+ a# g( }, k! b- P
  131.   digitalWrite(kg, LOW);//初始化继电器上电状态
    + |# ^! S/ [0 a/ Z4 X# S7 k
  132.   pinMode(de, OUTPUT);3 q4 m+ I3 c( @
  133.   digitalWrite(de, HIGH);
    # z4 M; E1 ^2 H
  134.   pinMode(key, INPUT);            # ^/ \: ]9 j7 S3 m6 S4 V! J
  135.   Serial.println();
    9 b- n  |! B, @* S
  136.   Serial.print("Connecting to ");
    & y7 U. f& c' p4 [) S- _5 Q, l& }
  137.   Serial.println(ssid);2 G. ^( d  G" @% u/ L3 ?
  138.   WiFi.begin(ssid, pswd);
    : t. j3 w- B- r% O
  139.   while (WiFi.status() != WL_CONNECTED) {0 U0 C  \: N* H6 \4 _9 p0 M0 u/ G
  140.     delay(500);
    & @9 x$ o% A# l* r& j
  141.     Serial.print(".");2 W" R5 F& n' t) T  E  ^* g
  142.   }' D  V+ D! y4 |) m, s2 Q3 [
  143.   Serial.println("");
    & t' {% {( L/ d( J+ K7 X6 e$ b
  144.   Serial.println("WiFi connected");3 u  |' |1 y" y& I  f& m6 l9 Y
  145.   server.begin();
    7 j  g9 A. F8 J4 C6 ]  [5 s8 s
  146.   Serial.println("Server started @ ");
    % L5 q$ k: A: [8 d& r7 S
  147.   Serial.println(WiFi.localIP());3 b. m$ M. K4 C# |7 H
  148.   //打印出IP地址,后期可以制作显示器来外部硬件显示ip% j* f/ l* y) M8 U$ _) c
  149.   Serial.println("To control GPIO, open your web browser.");
    7 c8 u. H2 z: O9 p. R0 F# t$ E/ Z$ m
  150.   Serial.println("To set GPIO 0 high, type:");! s4 n! d) f5 j0 l" [, Z) C4 }
  151.   Serial.print(WiFi.localIP());
    & U+ D" }9 h2 M5 p
  152.   Serial.println("/gpio/1");! C; @. B" Y. Z3 _: X8 O* ^* V+ G2 w
  153.   Serial.println("To set GPIO 0 low, type:");/ l+ o$ O1 `- ]# b; O8 r
  154.   Serial.print(WiFi.localIP());
    8 [3 I+ a. i9 I; [4 q4 b. L6 G
  155.   Serial.println("/gpio/0");# \8 W* P+ i. d$ h1 X/ I" D
  156.   Serial.println("To toggle GPIO 0, type:");
    : Q" B7 h4 }- f4 w: h) E0 l
  157.   Serial.print(WiFi.localIP());2 b1 k/ D5 n  D$ ~; I  t" B
  158.   Serial.println("/gpio/4");1 L  Q+ Q: b5 H' I6 Z! N3 j
  159. , g8 }1 }5 F# \6 C' R
  160.   // 初始化blinker
    9 R8 E8 R* N4 ~& T7 w+ h$ B7 u
  161.   Blinker.begin(auth, ssid, pswd);+ U2 v' u& |1 |% ?) y0 \
  162.   BlinkerMIOT.attachPowerState(miotPowerState);              //小爱语音操作注册函数
    " l/ R% p* l: ]+ Y0 [3 \( D, z
  163.   BlinkerAliGenie.attachPowerState(aligeniePowerState);      //天猫语音操作注册函数
    ' ?' ?, D" d* V0 J: f1 k
  164.   Blinker.attachHeartbeat(heartbeat);              //app定时向设备发送心跳包, 设备收到心跳包后会返回设备当前状态进行语音操作和app操作同步。
    1 y2 f( n7 |8 W- `  W
  165. / a+ ^8 I) r; }" ]7 l* P; y
  166.   Button1.attach(button1_callback);             //app上操作必须的注册回调函数关联按键名“Button1”和判断程序“button1_callback0 U& o$ h, E+ T% t4 ~; g1 Q& o
  167. }
    ) l" Q$ L, G+ R% m
  168. void dataRead(const String & data), X/ x  a" ?$ L/ d) D, M
  169. {
    5 C) y6 F- N/ Z) l8 U) [3 G. S
  170.     BLINKER_LOG("Blinker readString: ", data);
    ( P6 \/ F7 i1 w- E! `# M6 L

  171. / b6 C! L1 Z& |  O
  172.     Blinker.vibrate();
    " J6 T9 d3 P, g0 L' u
  173.    
    / H8 u4 G6 E; C0 J2 S
  174.     uint32_t BlinkerTime = millis();
    & i1 l# V. C) i( U) O, D
  175.     8 y- U/ W' D8 d! Z5 r* s
  176.     Blinker.print("millis", BlinkerTime);; P" ?0 _/ ~$ ^  M5 Z! F
  177. }/ F4 a- n" h/ ]  Q# X0 c. y
  178. void loop()
    . t) }' h% [/ s5 n4 f
  179. {5 I6 m6 {7 j& j3 A4 u' a) G1 c
  180.   Blinker.run();
    / B7 C0 q. K9 t- a  ]6 @! G
  181.   if (digitalRead(key)==LOW)/ X% a. t0 v% ~( _2 n
  182.   {! L8 `( ], {2 N' ~( a) V
  183.     Blinker.delay(200);: P2 e( R+ T  q+ }
  184.     if (digitalRead(key)==LOW)
      n. e* k7 _  c& R, Y
  185.     {( T# }0 ]( d2 V* y
  186.           if (digitalRead(kg)==LOW)
    9 V/ j) t+ \. M3 E* z+ ]
  187.        {
    * I' F2 G, o: C0 x. F: y/ c- ^
  188.             0 G2 O; a) x" O* j. m: c# b
  189.             digitalWrite(kg, HIGH);
    8 ?- q8 \3 D5 i* m. F" N( o
  190.             digitalWrite(de, LOW);6 ?; W: l+ Z1 @3 f/ b5 u
  191.             Button1.print("on");8 Z* V& L2 _! L) N5 {
  192.             Button1.color("#0000FF");              //设置app按键是浅蓝色
    9 m+ C, O! ?( p! V
  193.             Button1.text("开启中");
    ! d5 g9 _# |3 }2 |- n8 Y7 h
  194.        }
    0 b: p: b/ k( t/ n
  195.        else if (digitalRead(kg)==HIGH)
    8 f2 x$ b7 |2 |2 b$ u; J2 U
  196.        {" \5 r- `* M0 _7 a1 \0 i
  197.             digitalWrite(kg, LOW);, r. ?( `( q& b
  198.             digitalWrite(de, HIGH);
    5 F  g: p- L" m$ J( o9 _5 V/ }
  199.             Button1.print("off");0 v  J* c5 I& [. I  C; h
  200.             Button1.color("#00FFFF");              //设置app按键是深蓝色8 v0 L$ I$ Y! l; w
  201.             Button1.text("关闭中");
    " {) ]$ T5 P1 m" C5 U4 C
  202.        }5 u) m9 N# S/ P5 V( B* I
  203.       }' K7 l8 s+ N& y7 ?/ p
  204.     }
    ! b/ c, j/ k4 y, M/ d/ j
  205. }
复制代码

5 E7 e& v! i6 S4 v6 A2 I3 S. b, s
# A- @9 h, V, H& B) d我没有用卖家给的码,我自己写了一个,参考我前面的文章最简单的8266天猫精灵控制开关,点灯、Mixly可视模块化编程 https://bbs.nasdiyer.com/thread-18755-1-1.html, f+ u# H) G7 f. o8 {

1 g; y- @  }$ W3 D; R( r! L把上面的2改成5,把高低电平对调一下就可以使用天猫精灵来控制你的这个插座了。我是把我的第一个插座放在了我的落地电风扇中了,当我慵懒的在沙发上刷着手机时候感觉有一点点热,我只要呼唤“天猫精灵,打开风扇”,就可以了。/ D; T  l! |7 J/ b* Q

/ {$ F4 ]' B: p. F$ Z& M; c" }! R( H$ I& J1 ?5 }) H, @5 h5 I' D

0

主题

18

回帖

85

积分

初级渣柚V2

积分
85
QQ
发表于 2021-8-23 13:06:07 | 显示全部楼层
高手,没玩过!达人

2

主题

11

回帖

56

积分

初级渣柚V2

积分
56
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
& x1 A! L6 c, u1 O# [9 {+ b买了几个   做工挺扎实的,但是外壳怎么拆啊  拿斜口钳拨了一个,   四个圆角的卡口根本没法正常拆 ...
/ r$ w! z4 S. F$ S" k9 q
大力出奇迹呀

1

主题

8

回帖

256

积分

中级渣柚V1

积分
256
发表于 2021-8-29 08:14:58 | 显示全部楼层
a467913252 发表于 2021-8-24 15:53
, l/ m0 G/ c( M$ x" Z买了几个   做工挺扎实的,但是外壳怎么拆啊  拿斜口钳拨了一个,   四个圆角的卡口根本没法正常拆 ...
5 b& A) e, U& h+ n
昨晚拆了一个,废了老大劲,想和卖家说的无损拆下来,不拆个三五个积攒经验,基本不可能

2

主题

11

回帖

56

积分

初级渣柚V2

积分
56
QQ
发表于 2021-9-4 23:05:22 | 显示全部楼层
sevenup0719 发表于 2021-8-29 08:14
% z$ j6 j$ d* S. T; M昨晚拆了一个,废了老大劲,想和卖家说的无损拆下来,不拆个三五个积攒经验,基本不可能 ...
+ S5 K7 {, k! b: }. w
你的搞定没  为什么我的根本没法烧录   连接不上,,用esp01s还没问题的
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-6-3 07:47 , Processed in 0.088650 second(s), 3 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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