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

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

[复制链接]

11

主题

51

回帖

209

积分

中级渣柚V1

积分
209
QQ
 楼主| 发表于 2021-8-21 13:57:54 | 显示全部楼层 |阅读模式
本帖最后由 易记 于 2021-8-21 14:05 编辑
- @# X9 T2 Y8 r& a+ u: {& d* p4 @7 R. [+ i& |
最近玩ESP8266,想做个天猫控制开关。
+ {" }; H2 ?& a+ d$ A  \但是我很懒,一个个配元件嫌麻烦,于是想着能不能淘到便宜的带电源板的模块,多倒是蛮多,一般都要20多块钱。
! u9 q  e* |+ ~# A* ]7 Y3 }! j还是闲钱上逛一下看,找到一个联想的国外版8266智能插座,价格才8.5元一个。有一点不足,就是只有三孔,要是五孔的就好了。老板说五孔杂牌价格一样也有货,晚两天发布。4 Z" ?' _' i: `& t; Y+ Z# C6 V! A
QQ截图20210821125037.jpg ( E  X2 n3 v# _% z" T( Y3 \

0 `# S( \3 f" g# a8 t

- U5 w1 |1 f8 j  @; v$ }5 Q; f6 I, k问了一下店主,买20个一盒才包邮,想着20个还是有点多,买了5个,连运费47.5元。
" H8 I- B8 X3 O3 u
" C: Z) o9 |( a9 q; h3 Q QQ图片20210821124517.jpg
  W0 S9 \0 _# ~1 D7 R
* Y( X2 }/ u9 v8 B
8 w0 k1 K- Q* m) f

* k+ g2 a  a' i1 j到手,当然是拆拆拆。. }/ q: U) M; ?
IMG_20210820_134104.jpg 9 {5 r4 a4 S' j& l( w

1 }! Z. D( k$ i5 V  N1 \6 Q
* L% e5 @' L4 r0 U* u1 h
联想的做工,还是感觉不错的,光这个继电器应该也要个7-8块钱。
! f$ S, q" x  [3 y IMG_20210820_160634.jpg $ ~5 h' Z  u( }2 v! a6 }6 w

  e! W' }+ m; J5 F  Q3 f
# E8 N, J+ K' ^" C- c. ?& [
继电器是两组常开,感觉要是接电灯双控开关是不是有点麻烦的,不过用于插座是很安全,要断二条线都断开。
6 e0 O5 p2 L8 Q8 T2 z QQ截图20210821133707.jpg
/ C) ^/ W$ N# |0 n% X* r) f  w0 N' V
/ l9 C# b: v7 H- f
IMG_20210820_134114.jpg
& x9 X' G- Y  Q7 }4 I

5 T" w* w8 Z: r2 n2 \2 c9 z# a电源芯片
) }* o6 c  Y2 x& y: m# e; |- j. {$ w& x. v
) g) a6 [4 S3 i4 E7 `+ I+ S, d8 c
' Q, K& }) S* o; y/ t: k
有一个按钮,按钮有二个蓝色LED灯5 V1 M7 M! S/ l# W; |& l
IMG_20210820_134157.jpg 4 U' U3 s' a  D* C$ j2 v. ~0 Z5 G
: D6 b5 c% x& g) a  ^; a% P

0 |* h0 E% ]. {# F5 _5 S8266: D1 W( ]7 U8 k
IMG_20210820_141913.jpg 3 m1 O7 J1 a. ?
* o* ?6 l7 n/ f

7 K  f$ ]3 _0 f5 T3 g# u% j% K  E3 Z2 ~. A% |/ f

! @0 M: ]4 }0 X( W, H: }7 k接下来就是刷机了,版子上面都预留测试点。% s' |; M' I" Y
接线比较容易,上面都有标示,GND,3.3V,TXD-RX,RXD-TX,还有一个就是IO0接地后刷机。& {9 A8 A; a  C6 Y: S
未标题-1.jpg
6 R* _3 N+ Z9 P8 I
注意RX这个点,就是3.3V边上的这个点,焊盘设计的就点问题,电烙铁热一点或是焊的刷机线过粗的话,容易掉焊盘。
% s  l2 \" J: g( S要是掉了就只有一个过孔了,要是焊不上,只能再拆开接在另一面,所以为了避免不必要的麻烦,请注意一下。
; i* P6 }, [6 _; o5 L& D
, m- s) Z- \# a4 w

* }6 G' ?2 V* B- }8 h9 y
; F: L( {" e3 j$ S
8 ~/ z% o( J" P4 K! Q

0 _4 F* g- m( d! o0 n    5号脚位是继电器输出
, a; j6 q* u: S: ^    12号脚位是灯输出
2 r- w; F/ U4 X2 W$ D* q    4号脚位是按键

1 H) T6 t0 l  F# I
. a0 d1 [& m. x; d- V5 `  Q# e: H

" G' R/ F% u+ n' B8 m8 z1 r& ~5 V; N  V

; @+ B. b- S) T0 ]. h6 G, l卖家有发一个源码,如下
  1. #define BLINKER_WIFI                    //官方wifi协议库
    - h! U. S2 F" V
  2. #define BLINKER_MIOT_LIGHT              // 设置小爱灯类库
    * I. {7 \$ I7 b2 b
  3. #define BLINKER_ALIGENIE_LIGHT          // 设置天猫灯类库6 Z' v0 [( _5 |% ^( B  l
  4. #define BLINKER_PRINT Serial            //串口协议库
    8 K. R8 G2 o( V
  5. #include <Blinker.h>                    //官方库: s$ O3 k' S/ Y7 ]& {. I4 }
  6. #include <ESP8266WiFi.h>                //官方库
    # d* G  O7 ^, P- z# i/ `9 p
  7. WiFiServer server(80);                  // 服务器端口号
    2 N8 ?: i, b, i+ [$ }
  8. # }  U1 {3 y! L& F6 w
  9. char auth[] = "c4942fb1d5e4";     //设备key
    2 E4 C/ S( {7 x  X
  10. char ssid[] = "wanboshi";     //路由器wifi ssid
    ; \  d- t, y" D, q5 F3 s7 x- C
  11. char pswd[] = "1365662999813586348220";     //路由器wifi 密码
    $ Y1 H. A# \( I' ]# v- i. R; `
  12. ; ?1 {1 z, c) ~" M" t
  13. bool oState = false;- u$ s9 J, I; `

  14. ) B; B7 M9 t& s9 i5 v1 i5 P
  15. int kg=5;//继电器输出( ^* r% R3 G* a5 ?( e5 R) |
  16. int de=12;//灯输出
    ! c' h9 E( o/ `$ ~  P" c
  17. int key=4 ;//按键* Y- }# w3 z4 M7 x
  18. //*******新建组件对象  Q0 j- h! `- |, }) Y+ c
  19. : V1 e; k2 }, P6 F0 Q: j! E
  20. BlinkerButton Button1("btn-abc");              //设置app按键的键名, ?* T1 G5 D  O
  21. //*******app上按下按键即会执行该函数app里按键
    - \, B5 S. l3 C: m
  22. void button1_callback(const String & state)
    8 q  Z# \8 i/ H
  23. {9 i$ C! r' G6 n7 S% ?9 g! }
  24.    if (digitalRead(kg)==LOW)
    - F' P# Q3 t% J% A8 x& s# ]
  25.    {
    2 ~; U6 P2 n# f8 ]- r
  26.         BLINKER_LOG("get button state: ", state);& e, O! C! e& ^- r! P
  27.         digitalWrite(kg, HIGH);
    : _9 V7 r( p4 N# x2 \) y9 I
  28.         digitalWrite(de, LOW);# |; l% X" ?/ h3 D' X' s- Z
  29.         Button1.print("on");$ P/ `/ h5 X9 g- @
  30.         Button1.color("#0000FF");              //设置app按键是浅蓝色
    - N# a7 k2 \: P
  31.         Button1.text("开启中");8 b+ ^) }" f% [9 Z  l2 C
  32.    }2 e- b( W: b1 _+ ^0 q: w
  33.    else if (digitalRead(kg)==HIGH)
    " i( ^! b: w) n3 c- P4 i
  34.    {
    4 w$ m  Y* H2 o$ j
  35.         BLINKER_LOG("get button state: ", state);
    : F) u$ v1 w% Q# U3 a4 T) g
  36.         digitalWrite(kg, LOW);
    0 _; Q# z  E& t, P' i* s
  37.         digitalWrite(de, HIGH);
    ! V" M: Q% |; V$ M3 N
  38.         Button1.print("off");
    2 i* z& x7 D) L% w9 Z
  39.         Button1.color("#00FFFF");              //设置app按键是深蓝色# f! r2 g  h5 Z# r& h$ P; [
  40.         Button1.text("关闭中");
    3 G3 i' f- K9 a% q
  41.    }; F8 S' o' G* l) O0 X7 V
  42. }
    - W5 V$ R& A+ T* ?- t9 ~
  43. # o% d4 {8 y( l
  44. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    * M" m2 O6 V% B$ @& i; X$ S2 b

  45. ) E2 k8 W3 k1 S! \# G9 i6 s  ^6 C
  46. //*******如果小爱有对设备进行操作就执行下面$ n$ b4 Y+ J, O' @
  47. void miotPowerState(const String & state)
    7 K  ^' X" Q/ i7 b  z% |+ O
  48. {/ w$ L* q8 n. g
  49.     BLINKER_LOG("小爱语音操作!");              //串口打印
    ; W& D1 W/ |) t# B, T2 Z
  50.     if (state == BLINKER_CMD_ON){
    ! j% R0 ~, v+ [  s; O0 S! {6 @
  51.         ; ~. T4 ]/ V) X  O7 W9 J  |
  52.         digitalWrite(kg, HIGH);- u8 \1 A) s2 |% ?5 m
  53.         digitalWrite(de, LOW);' r0 |4 O1 w- c: _- Z, i* L+ Z0 }
  54.         Button1.print("on");8 b; q* a$ s) y  x' I
  55.         Button1.color("#0000FF");              //设置app按键是浅蓝色* d$ g$ @+ L1 ?* K9 \& ]" s
  56.         Button1.text("开启中");
    - |1 w6 @0 H- L9 H7 {1 k/ s
  57.         BlinkerMIOT.powerState("on");
    7 j# \2 T( W& v
  58.         BlinkerMIOT.print();& f0 s- o5 m0 O8 H: A
  59.    }
    7 p$ r, g% @1 r
  60.    else if (state == BLINKER_CMD_OFF). I$ f7 l# R. V8 N
  61.    {7 |! x6 f* N" P$ q0 m0 [5 z
  62.         
    ! Z- W; Q7 G3 }: ]
  63.         digitalWrite(kg, LOW);0 m# s3 y- A& F- w& s: g
  64.         digitalWrite(de, HIGH);0 D1 y( q5 e* D0 }$ W7 h% W' V
  65.         Button1.print("off");
    : B" |$ }# P/ O" Q% R+ j
  66.         Button1.color("#00FFFF");              //设置app按键是深蓝色: W% G! W6 M( }( V0 ?
  67.         Button1.text("关闭中");& \* E( D1 y3 x- U" @
  68.         BlinkerMIOT.powerState("off");' X! w& O. @" }2 f- y
  69.         BlinkerMIOT.print();
    ; R+ e& P5 T+ o$ \
  70.    }
    : ^- z& I1 Y( _" t
  71.          Y% Y' f5 w* j7 Z

  72. ' f# f, J, [7 D1 z
  73. }
    & e- A( u% h8 ^" d9 V. v1 L8 [
  74. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++5 I! E+ ]( i( H1 C3 U- r! u% V
  75. //*******如果天猫精灵有对设备进行操作就执行下面  J+ B! F' _6 J& M$ Q- d
  76. void aligeniePowerState(const String & state)8 l$ v1 U! y) _0 I4 ?. S  G
  77. {& G; }, J- g- g
  78.     BLINKER_LOG("need set power state: ", state);( W8 i; z5 D9 n" ~- O- Z3 N
  79.     if (state == BLINKER_CMD_ON)
    # O1 a% K) y( _9 [7 _
  80.     {
    ( J3 o1 v+ {' ~* J# j
  81.         " T1 d; m1 w* U
  82.         digitalWrite(kg, HIGH);
    2 H5 b2 o4 r8 z: J: l5 b4 ^1 a
  83.         digitalWrite(de, LOW);4 ]' u/ {3 \4 `  g; @! W
  84.         Button1.print("on");
    8 ^3 N! `% L$ @* L2 X1 l
  85.         Button1.color("#0000FF");              //设置app按键是浅蓝色
    5 \1 s% k7 T; ]2 z, K. J2 F
  86.         Button1.text("开启中");( _4 }/ X1 B2 N; ?
  87.         BlinkerAliGenie.powerState("on");( ~- P" |% U( p
  88.         BlinkerAliGenie.print();' f! W+ `: `6 G
  89.     }
    1 G4 ?9 {* I8 R: O0 L* |7 Z9 c$ @4 N
  90.     else if (state == BLINKER_CMD_OFF)1 k0 d9 r" w8 f7 X1 p# `- }5 `
  91.     {2 H  W* [% h" s/ K1 X* y: D8 M5 u
  92.         5 ~; `: ]1 W  K0 \& [
  93.         digitalWrite(kg, LOW);
    8 c# X- N8 ?' H7 ^$ u
  94.         digitalWrite(de, HIGH);
    # B- \2 q5 \0 E- Q
  95.         Button1.print("off");3 Y4 \4 C; I3 D. b/ Q7 Z8 u
  96.         Button1.color("#00FFFF");              //设置app按键是深蓝色2 F) o, A  c8 n# k. a$ b
  97.         Button1.text("关闭中");, y2 U8 `  R" ?- F  F+ _
  98.         BlinkerAliGenie.powerState("off");6 G. f6 T/ b" F0 W5 Z! J7 ^/ L# U
  99.         BlinkerAliGenie.print();; K2 G/ K) b1 P0 V6 a1 D
  100.     }
      I( |' N! ~+ e, H+ o
  101.         ( G' Q: c) t" u, T3 z: n5 h5 P
  102. ; O3 T  W; A5 S* W- P, k- I
  103. }3 B! n: p) r1 t8 d% p
  104.   //*******app定时向设备发送心跳包, 设备收到心跳包后会返回设备当前状态30s~60s一次% O! d; w" |  ^, Q  w
  105. void heartbeat()
    " [0 ^# i- p" U4 Q  v; q6 P
  106. {1 \! @* z0 g) a8 g5 ~/ M) a) M
  107.   BLINKER_LOG("状态同步!");
    " ], k& _7 H7 j' _0 j
  108.    if (digitalRead(kg)==HIGH)   G# U9 I; `$ T# K! ~  O" V" D
  109.     { - Q$ ^, N8 y2 u' N$ M; J' U
  110.       Button1.print("on");
    7 O5 \+ R4 I9 M$ w
  111.       Button1.color("#0000FF");              //设置app按键是浅蓝色
    8 q" E6 }  L+ [% \  r
  112.       Button1.text("开启中");
    ; }9 i/ r# L0 O* B, [+ E! v# ]
  113.     }! [2 f* A; Z) l& z3 _
  114.     else
    6 F) Q* e" G3 d) u% @
  115.     {
    % k. o! K* \* S: k8 ^
  116.       Button1.print("off");
    0 u2 `/ w/ u" r/ R0 ?* B( E
  117.       Button1.color("#00FFFF");              //设置app按键是深蓝色
    ; }5 ~4 W) y! ?' Q3 w1 v1 u" G3 U
  118.       Button1.text("关闭中");! V. E% D$ g; _' g
  119.    
    - \" |: R. r7 Z' o8 U
  120.     }
    : s% g& |) N* m8 }6 U7 N
  121. }
    ' l3 s) q/ `  q' p2 B
  122. //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    % \& S& U1 K7 P1 `/ }
  123. void setup()2 i2 P. ]) f/ Y% b$ l
  124. {
    7 F8 c% @8 L0 l" R3 o5 O3 ^
  125.   // 初始化串口
    1 Q, j: d/ k6 T; y# ~5 t& G
  126.   Serial.begin(115200);
    : S/ u; l9 `" ~2 |0 t' P  ?0 E
  127.   delay(10);
    ( R+ h( i: ^( R  T$ w" {: {8 e
  128.   BLINKER_DEBUG.stream(Serial);
    ; I$ s  l; M$ n6 r( x
  129.   // 初始化有LED的IO
    1 [# Z( s# E" u& u7 R  A" D
  130.   pinMode(kg, OUTPUT);                 
    & z/ y; m9 h. k7 C" |' |
  131.   digitalWrite(kg, LOW);//初始化继电器上电状态 ( r' i6 k, m7 R/ W6 q% e7 Y9 S
  132.   pinMode(de, OUTPUT);9 z2 t' T: f% i+ c: x! r# B& A
  133.   digitalWrite(de, HIGH);) A* a/ m" \* R% `; [) C& X
  134.   pinMode(key, INPUT);            
    # Q' y. v/ }# K
  135.   Serial.println();% h% W: @0 ]) U: g* e. u
  136.   Serial.print("Connecting to ");
      a! N( I: E3 r9 J9 A
  137.   Serial.println(ssid);
    9 `7 t/ k7 A2 R5 m! @- i' N( h( E
  138.   WiFi.begin(ssid, pswd);8 `: C- W" ]% \4 Y  C" ]
  139.   while (WiFi.status() != WL_CONNECTED) {; h5 Y8 B+ w  F# s: S1 v$ u) Q5 m8 O
  140.     delay(500);
    * A! g8 o! ^/ {2 A
  141.     Serial.print(".");6 }. b$ [& \+ S. e: t
  142.   }; h1 B% s$ |3 G4 [$ W4 b
  143.   Serial.println("");
    ' L0 k6 |6 X+ H! b0 U
  144.   Serial.println("WiFi connected");6 w' A) |; |# W! o& U) {$ A4 D% F( \
  145.   server.begin();
    ; x' |, f: q2 M  g$ L+ q  K
  146.   Serial.println("Server started @ ");9 q: z9 C8 B+ Y+ y; p
  147.   Serial.println(WiFi.localIP());+ D- r0 S0 C) M2 _- a
  148.   //打印出IP地址,后期可以制作显示器来外部硬件显示ip
    $ s: C- {' q2 l0 _+ A. p
  149.   Serial.println("To control GPIO, open your web browser.");
    : x4 O6 E  ]) u. M/ y7 X( Q$ K
  150.   Serial.println("To set GPIO 0 high, type:");
    & [( {6 K3 H$ T3 [+ s. G
  151.   Serial.print(WiFi.localIP());% |& F% }7 U  R9 h6 K2 e
  152.   Serial.println("/gpio/1");
    8 o0 A" }! o/ ?/ y
  153.   Serial.println("To set GPIO 0 low, type:");% x$ F3 |& ]* n+ y% J
  154.   Serial.print(WiFi.localIP());
    8 z2 H: X7 n, q# D
  155.   Serial.println("/gpio/0");
    $ g4 B9 j# i' y4 a
  156.   Serial.println("To toggle GPIO 0, type:");4 {7 Z& e5 v3 I$ ^/ s. O
  157.   Serial.print(WiFi.localIP());( d' e# l6 w8 |- u9 ]1 D" m  j
  158.   Serial.println("/gpio/4");
    6 r7 F- [" z8 o* x
  159. 5 e0 E+ |/ R7 w2 G" r5 ~* J
  160.   // 初始化blinker
    5 u9 Q1 P9 F0 _! i2 g
  161.   Blinker.begin(auth, ssid, pswd);
    ' y. |; d  s$ U4 ]8 R" [8 U: n# \
  162.   BlinkerMIOT.attachPowerState(miotPowerState);              //小爱语音操作注册函数
    1 N. A4 N, T4 d; v" J0 N
  163.   BlinkerAliGenie.attachPowerState(aligeniePowerState);      //天猫语音操作注册函数( b) X+ c# M4 n( n9 Y/ g+ @1 x6 L1 R
  164.   Blinker.attachHeartbeat(heartbeat);              //app定时向设备发送心跳包, 设备收到心跳包后会返回设备当前状态进行语音操作和app操作同步。
    8 y* h9 C$ c9 N/ K$ U% O% v& O& ~3 W
  165. . Q# D3 v8 J: i3 u5 ?  M
  166.   Button1.attach(button1_callback);             //app上操作必须的注册回调函数关联按键名“Button1”和判断程序“button1_callback
    $ O# _, S5 z& ]4 ^" F% X" C5 B
  167. }
    ' ~6 P" H4 p; p- y) Q* f9 E
  168. void dataRead(const String & data)+ H6 G6 U8 m, v! I+ z: i
  169. {
    + _# _$ Y/ v5 ^+ P9 s
  170.     BLINKER_LOG("Blinker readString: ", data);; n  D: C: ^- @: r" p6 d

  171. 6 G9 p/ r5 V* G
  172.     Blinker.vibrate();
    2 F/ Q6 n, ?; Y( f! D1 n3 k8 U2 I  u. ?- s
  173.     , t/ J9 g) |/ B  S
  174.     uint32_t BlinkerTime = millis();
    " Y  }. n8 F- P/ N" [& X9 n
  175.     9 f4 P. _* V" R" ^- d% u2 r4 I
  176.     Blinker.print("millis", BlinkerTime);# y( W. M! u+ C! r( P
  177. }
    , R4 |; ], r: j6 h; t
  178. void loop()
    % J4 C! J: r" F
  179. {
    % Q5 n7 D4 X/ R' J" _$ ~
  180.   Blinker.run();
    3 u5 |1 h! Z$ d; P: F: m9 {
  181.   if (digitalRead(key)==LOW)
    : [4 T; n) u! W# n6 o" ^
  182.   {
    1 H! t! ^, ^$ ~2 R* c: @
  183.     Blinker.delay(200);
    8 o+ x  R6 v  j! w( P) x7 C
  184.     if (digitalRead(key)==LOW)
    - ?7 q1 g- v" z- h, ]/ ?
  185.     {
    1 z- J  |( m  M
  186.           if (digitalRead(kg)==LOW)
    5 }& D8 {8 j5 i3 V% K2 n  Q
  187.        {
    6 f% @" C6 y4 N
  188.             " B) M" D# X  x0 Z/ e/ U, z2 x
  189.             digitalWrite(kg, HIGH);
    - g, N1 }5 r, W4 E: I
  190.             digitalWrite(de, LOW);
    ! Y" o4 f- \: D4 Q6 E6 Q
  191.             Button1.print("on");
    ( O- X! Y! w% b) ^- p
  192.             Button1.color("#0000FF");              //设置app按键是浅蓝色
    & A' C* b8 T% w) u' H% v' P
  193.             Button1.text("开启中");
    0 U5 M7 v# `7 O6 x
  194.        }7 R9 F( J  V" B! Q9 ^6 y
  195.        else if (digitalRead(kg)==HIGH)
    5 W4 i- q/ S, k  e- f: y
  196.        {
    " Q; c! @! S6 S* Z, q9 P8 U
  197.             digitalWrite(kg, LOW);
    $ Q. @+ y, C9 K# Y5 F1 d- E# l
  198.             digitalWrite(de, HIGH);0 a9 e' m. t5 X: Y2 I3 b1 W/ a9 |
  199.             Button1.print("off");
    0 u% n/ n0 t5 ]; w; x, T+ {# w
  200.             Button1.color("#00FFFF");              //设置app按键是深蓝色
    4 d. [  d1 W0 i  `) l
  201.             Button1.text("关闭中");
    & i- M! x$ {7 l3 j/ x$ E/ H
  202.        }
    + z" {5 P2 e0 ?" W3 U% E4 I. y
  203.       }$ e4 M; P( A' z% l9 z
  204.     }
    $ r$ f+ y* y3 R  r8 ~
  205. }
复制代码
! I! t& C# I' M* h) }( T

" [2 z' D9 D1 P4 q; A1 w+ \我没有用卖家给的码,我自己写了一个,参考我前面的文章最简单的8266天猫精灵控制开关,点灯、Mixly可视模块化编程 https://bbs.nasdiyer.com/thread-18755-1-1.html
- n' Q: t& A5 }& N+ q# s2 U4 @
. k0 w. o& a: L# n& t把上面的2改成5,把高低电平对调一下就可以使用天猫精灵来控制你的这个插座了。我是把我的第一个插座放在了我的落地电风扇中了,当我慵懒的在沙发上刷着手机时候感觉有一点点热,我只要呼唤“天猫精灵,打开风扇”,就可以了。- H) q: R( `2 G! E

/ P2 K0 A1 \7 I; c7 P' Y- Y' O* [2 [9 N) n

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$ z. T" k5 L  t2 L$ u: J
买了几个   做工挺扎实的,但是外壳怎么拆啊  拿斜口钳拨了一个,   四个圆角的卡口根本没法正常拆 ...

6 f& r/ ^# W3 T/ e! S$ F5 {% S大力出奇迹呀

1

主题

8

回帖

256

积分

中级渣柚V1

积分
256
发表于 2021-8-29 08:14:58 | 显示全部楼层
a467913252 发表于 2021-8-24 15:53  q, \5 H# A/ e" K$ ?" @
买了几个   做工挺扎实的,但是外壳怎么拆啊  拿斜口钳拨了一个,   四个圆角的卡口根本没法正常拆 ...

7 B& X$ v& Y5 k2 k昨晚拆了一个,废了老大劲,想和卖家说的无损拆下来,不拆个三五个积攒经验,基本不可能

2

主题

11

回帖

62

积分

初级渣柚V2

积分
62
QQ
发表于 2021-9-4 23:05:22 | 显示全部楼层
sevenup0719 发表于 2021-8-29 08:140 S2 t, J" V" a. e* X
昨晚拆了一个,废了老大劲,想和卖家说的无损拆下来,不拆个三五个积攒经验,基本不可能 ...

8 @, E8 P1 z; f, W1 v你的搞定没  为什么我的根本没法烧录   连接不上,,用esp01s还没问题的
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-11-23 23:35 , Processed in 0.089450 second(s), 5 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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