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

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

[复制链接]

11

主题

51

回帖

209

积分

中级渣柚V1

积分
209
QQ
 楼主| 发表于 2021-8-21 13:57:54 | 显示全部楼层 |阅读模式
本帖最后由 易记 于 2021-8-21 14:05 编辑 , Y1 W. M( h) |. B( o# P0 u
* `1 b0 X# H, G
最近玩ESP8266,想做个天猫控制开关。
, e9 q0 z9 a% h- W2 K但是我很懒,一个个配元件嫌麻烦,于是想着能不能淘到便宜的带电源板的模块,多倒是蛮多,一般都要20多块钱。
- Y3 a' V5 o) y- g7 X( X0 S4 p还是闲钱上逛一下看,找到一个联想的国外版8266智能插座,价格才8.5元一个。有一点不足,就是只有三孔,要是五孔的就好了。老板说五孔杂牌价格一样也有货,晚两天发布。
9 Q, O- h+ x- K8 {$ S QQ截图20210821125037.jpg ' B& c7 j. K8 P! k% z
# h" Q4 O6 V; H1 ^: D& s4 l

- Y3 D) v) a2 l* n, o( ?问了一下店主,买20个一盒才包邮,想着20个还是有点多,买了5个,连运费47.5元。) {4 a: h# V( `! Q! R3 |- r1 }
* ?% ?$ c$ v/ |: D. `1 B: a
QQ图片20210821124517.jpg
1 y6 X! N& J! y2 p+ x4 {
. N' m( n" N$ `* \

, x- Y* l8 n* q* n$ X0 |! m! G
4 p4 N4 c3 T6 f5 N
到手,当然是拆拆拆。
: N1 K; N( l- S. G2 q# Z8 @ IMG_20210820_134104.jpg
2 D9 U- d' f# p/ t6 }: x8 [1 Z& ]& c: K, E4 [0 S
. m3 j+ X( ^0 r& W) D
联想的做工,还是感觉不错的,光这个继电器应该也要个7-8块钱。" n4 F* A/ ^( u, K$ \- p* A+ \
IMG_20210820_160634.jpg
% D6 K( g, r9 p5 @& g) ^! G7 @" @# d9 T! w) g
$ ?4 y9 C' m6 ]3 ^  Y/ |; ]2 c
继电器是两组常开,感觉要是接电灯双控开关是不是有点麻烦的,不过用于插座是很安全,要断二条线都断开。) C% t2 m* {# A" ?6 `5 g
QQ截图20210821133707.jpg % W9 ~& |+ z) o" U9 t

1 x" @- `6 z  c: B IMG_20210820_134114.jpg 1 u& k$ a4 e+ L' Y* F4 o
0 {' B6 K8 i  X6 ^/ h4 |
电源芯片
+ S8 _4 h6 H) k: O5 d$ z
) ?; ^2 \. N3 A' h/ c& a0 u: J! j$ `, N7 X! Q; @+ y, d2 ?
( O( y. V8 ?, S9 p# P
有一个按钮,按钮有二个蓝色LED灯
7 t, ~& u! @3 a& v* D6 \ IMG_20210820_134157.jpg
$ Z0 w2 J& L# s# x) \
4 G7 R) @8 g; H

% N8 r$ A0 T) g6 a) K, i/ k8266
+ m) C# t) A( s; N1 u. v* o( } IMG_20210820_141913.jpg - E0 J- k. X8 G% J- g7 \" O% w

, m& z5 ?1 y2 i! j

, w# t* W9 S: C! Q
4 ]4 R& ?0 ^. {' z7 ?  g/ U
. Q* F& j1 R9 N" g
接下来就是刷机了,版子上面都预留测试点。
) s. a3 L6 r- O接线比较容易,上面都有标示,GND,3.3V,TXD-RX,RXD-TX,还有一个就是IO0接地后刷机。: S" `/ k2 ~% h4 T. S
未标题-1.jpg : H2 Y# M- [) J/ z9 X, l: H, N$ N+ a3 r
注意RX这个点,就是3.3V边上的这个点,焊盘设计的就点问题,电烙铁热一点或是焊的刷机线过粗的话,容易掉焊盘。
7 F/ z) _2 v& ]8 n$ ~7 a. C要是掉了就只有一个过孔了,要是焊不上,只能再拆开接在另一面,所以为了避免不必要的麻烦,请注意一下。

6 ?4 D* F- R3 N+ R- R" }- {
) w. R1 r# U4 Z& x' [4 A" m( M3 N: \# R! z$ I

+ G! C3 C" a! v& C6 c2 f
: g( e* B# s% w2 @  U- B

% u2 r2 Z- c5 A  d3 I    5号脚位是继电器输出: {6 A8 q/ ^% u# F. I9 ]
    12号脚位是灯输出, b7 I1 a1 @- |/ q2 D' S
    4号脚位是按键
) `: W6 \1 A- J3 p8 \
* n& N5 g4 ?, a* X( ~8 q! n, `8 ], L
4 p( C8 N! ?' j3 g
, c, o0 R. v! y! S/ K! w: M  [
% b: G  z" ?! L* m+ ~2 X
卖家有发一个源码,如下
  1. #define BLINKER_WIFI                    //官方wifi协议库# t3 S1 ]' g1 m/ R0 }/ |5 |: |7 g
  2. #define BLINKER_MIOT_LIGHT              // 设置小爱灯类库" X+ @1 L1 t& V( C
  3. #define BLINKER_ALIGENIE_LIGHT          // 设置天猫灯类库
    ) M3 Z; y9 H% {1 g, r
  4. #define BLINKER_PRINT Serial            //串口协议库) g) x" C6 U' Q1 f8 T- c6 N
  5. #include <Blinker.h>                    //官方库
    $ C+ `9 K4 k. C
  6. #include <ESP8266WiFi.h>                //官方库' i# Z. |5 z0 F, P2 l
  7. WiFiServer server(80);                  // 服务器端口号
    , k. H& H: j8 W

  8. ( D; I' e# U. {* o4 Y% \
  9. char auth[] = "c4942fb1d5e4";     //设备key
    ) b: L- i  n2 c
  10. char ssid[] = "wanboshi";     //路由器wifi ssid
    $ A; i6 ^1 V- I) G& y) _
  11. char pswd[] = "1365662999813586348220";     //路由器wifi 密码
    . z: B' }% V' p

  12. ' ]: ~, P5 o: K2 [4 M; V- V
  13. bool oState = false;& c/ U/ Z) _" P" |4 a
  14. 6 V) g. ]" h0 q4 K+ U" J
  15. int kg=5;//继电器输出& P/ y3 T; D  {. U1 H
  16. int de=12;//灯输出
    9 W/ H2 t$ ^0 }% _
  17. int key=4 ;//按键; K; q* }" R) E. h) w
  18. //*******新建组件对象
    2 a% Z# V; f6 R" }9 C; V
  19. $ X8 j1 @1 I/ P% O
  20. BlinkerButton Button1("btn-abc");              //设置app按键的键名
    7 J; |' ]; c. P4 I3 s( ~
  21. //*******app上按下按键即会执行该函数app里按键
    - F1 f) ^/ X' F1 R* _7 B* I& Y
  22. void button1_callback(const String & state)
    , ^9 s& k. B2 I1 Z1 R; X8 t- q3 @
  23. {
    : \% c% ?+ P$ N5 ^5 s' y6 Z; s
  24.    if (digitalRead(kg)==LOW)
    9 w; z* F: D, i4 D  {' C
  25.    {1 Z6 K8 P. _9 O! M
  26.         BLINKER_LOG("get button state: ", state);
    + B( Z% U1 c; `, U
  27.         digitalWrite(kg, HIGH);& K* d- \+ ]3 L* O
  28.         digitalWrite(de, LOW);& [- H# R( r7 e. I. m# ^
  29.         Button1.print("on");
    0 `5 U, w8 k+ S. o+ ^- `& H9 w' h
  30.         Button1.color("#0000FF");              //设置app按键是浅蓝色
    / @. [3 w9 X& [; p' c
  31.         Button1.text("开启中");
    8 [2 ?" E" Q5 [% Q0 \
  32.    }
      D$ [2 p- b  F/ [, k& m0 h
  33.    else if (digitalRead(kg)==HIGH)2 z9 v8 e! X% v" X$ I- a9 \
  34.    {) O( Z. i# u- a  ^
  35.         BLINKER_LOG("get button state: ", state);/ _: o$ g# O& H. j: m7 v( b) _4 m( e
  36.         digitalWrite(kg, LOW);
    6 ?" a' [( A1 ?( B
  37.         digitalWrite(de, HIGH);
    2 B3 t+ Q+ Q7 k6 [
  38.         Button1.print("off");3 z. B0 D5 v! d. t6 }
  39.         Button1.color("#00FFFF");              //设置app按键是深蓝色
    # ^9 C, C( e' v4 ]- v% X1 W
  40.         Button1.text("关闭中");
    & K5 M( }, |: {- k0 M
  41.    }; Z0 v) b+ O# q
  42. }0 P4 ]8 Z  Q  ]( ]+ \, v

  43. / j- _, i/ w- S# h5 Z9 z, Q- e
  44. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    3 j) v0 q* L2 A/ ?# b5 Y% {
  45. % k# u0 _- C, g/ S( q9 D: G; r+ [
  46. //*******如果小爱有对设备进行操作就执行下面4 T6 n9 V6 [$ [, g9 G
  47. void miotPowerState(const String & state)
    2 o  F2 Y: |2 O! K, e
  48. {
    : `0 f# G3 v9 O' b7 _5 _$ J
  49.     BLINKER_LOG("小爱语音操作!");              //串口打印
    0 Y" m% }" z: j& H8 u
  50.     if (state == BLINKER_CMD_ON){4 L# k0 v/ |& D% w# T
  51.         5 u2 d- M, s: o$ l- M, {* _
  52.         digitalWrite(kg, HIGH);
    7 V) Z7 H( \3 e& n
  53.         digitalWrite(de, LOW);
    2 Q$ O$ ^( Y9 T2 D0 u: ~; R
  54.         Button1.print("on");/ a0 M3 _8 u$ ?3 \8 g
  55.         Button1.color("#0000FF");              //设置app按键是浅蓝色8 O7 F& K; K/ M3 k
  56.         Button1.text("开启中");" G. E; \- s+ [- W6 I* R4 V
  57.         BlinkerMIOT.powerState("on");3 y  |- v2 p; X! z+ C' {* q
  58.         BlinkerMIOT.print();+ K; W9 Z& E' ]' Y0 V
  59.    }8 f9 `4 u( z  I* e6 Z
  60.    else if (state == BLINKER_CMD_OFF)
    9 y* [! \9 l0 e' J; Q9 |
  61.    {, ^% k& w$ d7 I" E
  62.         ( x! F: Y3 O0 r' r
  63.         digitalWrite(kg, LOW);
    3 S5 H/ ?; M1 y2 P  `/ s) F) W
  64.         digitalWrite(de, HIGH);5 Y8 x# U) {5 ^" F
  65.         Button1.print("off");8 I" n" }: Z8 y
  66.         Button1.color("#00FFFF");              //设置app按键是深蓝色$ _3 U$ l. I  Y( ]) l/ `
  67.         Button1.text("关闭中");& b) P: L; H2 L" }8 G1 L6 d
  68.         BlinkerMIOT.powerState("off");
    7 d. e) h$ N" o3 p5 ]: |
  69.         BlinkerMIOT.print();* n; @" w6 w- a. b4 O( m
  70.    }( D' ~3 a% l3 j  \' f1 k/ i  t( R
  71.       
    7 u$ P/ h1 c' M. G2 e: g
  72. 9 f/ K/ f' o  a
  73. }" B: h# W! ]* l. U
  74. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++" u. \0 T6 A6 U" R! p
  75. //*******如果天猫精灵有对设备进行操作就执行下面
    ; D+ ^/ P  U/ a# ]) d8 t
  76. void aligeniePowerState(const String & state)
    $ E% f/ u" c8 K4 [& H% C' Y
  77. {0 I8 w( C) ?$ F/ N& D3 v4 c  f( {
  78.     BLINKER_LOG("need set power state: ", state);/ N' N2 E; k2 C" [) K' E
  79.     if (state == BLINKER_CMD_ON)! o3 U8 z& O0 G7 q  n' g
  80.     {  N& A- D- }% Z6 W1 ]! H# J) d! O* A' C
  81.         
    ! g0 o) c& i$ m5 B7 }$ D( Z( g
  82.         digitalWrite(kg, HIGH);
    2 F7 q% ?# ?; t, x
  83.         digitalWrite(de, LOW);; g( m6 T0 E8 U& K* M% o% F
  84.         Button1.print("on");
      h6 z6 i* L5 V  p0 s
  85.         Button1.color("#0000FF");              //设置app按键是浅蓝色
    . B, K# ]/ t9 }# Z
  86.         Button1.text("开启中");+ m2 n) Y; t& L4 g
  87.         BlinkerAliGenie.powerState("on");
      ]0 x, s1 j, d  m+ y. n0 o
  88.         BlinkerAliGenie.print();
    + l0 J! R6 o: a8 k5 ]2 u
  89.     }5 T7 l7 e! d5 W: V9 A
  90.     else if (state == BLINKER_CMD_OFF)8 f' U+ A1 R" ^9 O/ F
  91.     {+ N" w9 `4 Q  |% l* e/ K' G  B9 \
  92.         
    : T( u  Y, ?0 l4 B
  93.         digitalWrite(kg, LOW);8 ^% M( q: f/ `1 A
  94.         digitalWrite(de, HIGH);
    , ?% @7 N; I# n  {6 {" f! _
  95.         Button1.print("off");. s' H% I  h! S, u( s
  96.         Button1.color("#00FFFF");              //设置app按键是深蓝色1 K- ]0 |; J/ }: `" l+ I( w  V, ^' X* V
  97.         Button1.text("关闭中");- ^! U1 ?1 ?! x% l0 [/ W
  98.         BlinkerAliGenie.powerState("off");8 I* t* f& U: ?4 w
  99.         BlinkerAliGenie.print();* e/ |. X0 f' X/ t6 Z9 J
  100.     }  y+ |$ D2 Y. Q# c
  101.         
    & |) j: D2 M6 U0 D! z1 C) t
  102. & P. S; E" g0 Y4 Q% K% W
  103. }
    ) i3 P. E$ w- _8 |
  104.   //*******app定时向设备发送心跳包, 设备收到心跳包后会返回设备当前状态30s~60s一次
      _% z' M+ q% M! x9 B; e4 t
  105. void heartbeat()
    ' l" f: i. [+ X1 e# S& \6 Y
  106. {
    6 a( ]# _( w+ m& o' K4 K; t
  107.   BLINKER_LOG("状态同步!"); 2 S3 Q0 U2 s( Y" E( j- k4 N" {
  108.    if (digitalRead(kg)==HIGH)
    $ b: H6 u$ B0 h1 a# _
  109.     {
    ! O% {0 {" v  J/ }& p6 E+ `5 x8 p; l
  110.       Button1.print("on");' P  M* x: y* {( r  G: y9 I
  111.       Button1.color("#0000FF");              //设置app按键是浅蓝色, m- t: p( \1 F9 `" ?
  112.       Button1.text("开启中");( x$ |$ w: \6 J/ M
  113.     }
    8 W9 `+ Y# [1 z3 Q+ z
  114.     else
    8 ?/ q" o" _* K1 n/ I' e
  115.     {& w( {/ c! V% j1 K; N
  116.       Button1.print("off");
    : k, G" w$ @( u/ J, L1 W, E
  117.       Button1.color("#00FFFF");              //设置app按键是深蓝色* r- O- Q7 |$ @7 R0 U$ n
  118.       Button1.text("关闭中");
    ! w: k5 ^) W" i% Y4 q* I; g
  119.    
      l8 i4 [9 {1 N' @' F3 D& F% E
  120.     }
    ; [7 j" M" W# U! B) n
  121. }
    % u/ t7 {& u# f$ O5 w; n5 S
  122. //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++8 _3 b2 a9 }4 D# t) @8 m' p
  123. void setup()
    8 t4 I- C' s0 B5 G1 i5 y
  124. {% V) y+ A( N) v
  125.   // 初始化串口
    / j* r: U! }: t, B" }  f9 }' d
  126.   Serial.begin(115200);( P; |" Q) @) u$ Z9 P
  127.   delay(10);
    . T' c' r( b, ~2 m. w+ A
  128.   BLINKER_DEBUG.stream(Serial);
    & P( a4 {1 L3 u' G, h" {( d# _2 A
  129.   // 初始化有LED的IO) t# F: g$ p3 f' n1 o8 x2 c
  130.   pinMode(kg, OUTPUT);                 6 F: w/ a1 S" B& E( k" M, o, Z
  131.   digitalWrite(kg, LOW);//初始化继电器上电状态
    # E  {+ B, {- e! E" C6 u" ~8 ^
  132.   pinMode(de, OUTPUT);# E0 j" t  Y- Y+ y% n" L* @  j1 |1 `3 u
  133.   digitalWrite(de, HIGH);( A, C9 N' i* d2 Q1 t- i
  134.   pinMode(key, INPUT);            + F2 v4 W# b: Z/ Z
  135.   Serial.println();& z& F/ M6 I: F9 U
  136.   Serial.print("Connecting to ");  j& F+ W. n. W% f. y6 \2 U& Z
  137.   Serial.println(ssid);
    & X9 z6 u; p' R6 n4 |; E9 c, |
  138.   WiFi.begin(ssid, pswd);
    % p7 |+ o9 x9 g5 N7 F2 T3 h
  139.   while (WiFi.status() != WL_CONNECTED) {
    8 J4 L/ C6 W7 ~
  140.     delay(500);' U: X/ |, j- Q) X- K% R
  141.     Serial.print(".");1 X  \8 `. \1 m6 E9 _9 K4 M
  142.   }2 {6 d1 `4 V8 F" z$ b# L
  143.   Serial.println("");
    , }4 M: A+ }( l$ z/ r
  144.   Serial.println("WiFi connected");$ F9 a5 |: z, T8 O# ]7 o8 q
  145.   server.begin();! }1 X( w+ _1 |6 N5 a$ r  D' S* G& N
  146.   Serial.println("Server started @ ");
    ! k$ c' G; ~) x: L& @- x5 `
  147.   Serial.println(WiFi.localIP());
    & {' F  e) x" F  k; r! H2 o2 u
  148.   //打印出IP地址,后期可以制作显示器来外部硬件显示ip
    + j& x' W3 ]6 n% z; T6 x
  149.   Serial.println("To control GPIO, open your web browser.");) S6 n* Z$ P- q0 q
  150.   Serial.println("To set GPIO 0 high, type:");2 O' v% i' Z8 C) t' N
  151.   Serial.print(WiFi.localIP());+ [  f7 b3 C) j8 ?' V# N! N
  152.   Serial.println("/gpio/1");  s) m$ P) y5 w: `- H" C" y$ q
  153.   Serial.println("To set GPIO 0 low, type:");* `& \$ g& ^0 F- N
  154.   Serial.print(WiFi.localIP());6 j# j* d  V" z* O
  155.   Serial.println("/gpio/0");
    6 r" K5 m  H) ]) G, U. t
  156.   Serial.println("To toggle GPIO 0, type:");
    0 m& {# T1 \  F0 n, j' G2 j
  157.   Serial.print(WiFi.localIP());
    . ?( f8 {( Z5 c7 O8 k; W2 z
  158.   Serial.println("/gpio/4");
    + Y$ ]6 |1 ]( @( |7 a4 N

  159.   P5 Z( E2 `1 _  }* l
  160.   // 初始化blinker
    * s4 I, N3 y+ t& M
  161.   Blinker.begin(auth, ssid, pswd);9 ~" W" z2 C! }5 k& [: e4 \' a
  162.   BlinkerMIOT.attachPowerState(miotPowerState);              //小爱语音操作注册函数
    # W5 B. D; b9 ?  }
  163.   BlinkerAliGenie.attachPowerState(aligeniePowerState);      //天猫语音操作注册函数" i6 V8 L$ Q  [/ l+ c! c6 ]
  164.   Blinker.attachHeartbeat(heartbeat);              //app定时向设备发送心跳包, 设备收到心跳包后会返回设备当前状态进行语音操作和app操作同步。5 Y% \0 F1 L9 d, n( g3 u. c
  165. " Q: P' E4 O2 _
  166.   Button1.attach(button1_callback);             //app上操作必须的注册回调函数关联按键名“Button1”和判断程序“button1_callback) h  S% C5 k) [9 @1 H
  167. }
    8 |: I& [$ d* q$ f- o* v
  168. void dataRead(const String & data)4 X! D( B4 c( b+ O+ P
  169. {2 M+ E& F( ]8 G6 s! @, O: C
  170.     BLINKER_LOG("Blinker readString: ", data);) f* }' A& C* E0 |. Q

  171. $ ]. k2 Q7 B  u7 B8 ]
  172.     Blinker.vibrate();. b; b1 u) o1 C% J9 s; [" p
  173.    
    : e& c  H. z, @4 Y
  174.     uint32_t BlinkerTime = millis();) v- p& s& G! I8 i# g
  175.     8 N) N& ?4 m/ ]' a. [* {! ^/ L
  176.     Blinker.print("millis", BlinkerTime);
    2 ?5 |) k  _8 W
  177. }; ^% m" ~9 i* N: {
  178. void loop()
    5 Q7 [& A9 |  E, f5 \' W& ]
  179. {
    & @5 D2 e- f4 A8 Q9 w
  180.   Blinker.run();5 N; n; O3 K! X1 B' I: X$ N3 d
  181.   if (digitalRead(key)==LOW). t+ C0 Y$ Q  W  W
  182.   {' g$ q7 o8 M; [5 T. D. T1 c3 j
  183.     Blinker.delay(200);
    . ~( W: {& a) w' D; @
  184.     if (digitalRead(key)==LOW)4 s9 b# _9 P% g
  185.     {- ]4 L4 P9 |3 }
  186.           if (digitalRead(kg)==LOW)4 h% D( c; L: _: m. t1 s
  187.        {/ h1 J5 r$ w& I8 _8 J
  188.             
    9 n( i% b7 ?7 o, q" \$ U+ o* m
  189.             digitalWrite(kg, HIGH);3 W% S  R7 J+ g
  190.             digitalWrite(de, LOW);: v0 R# B" @# T6 [8 ~4 C
  191.             Button1.print("on");
    $ T, x' {( ]7 N: x. N6 N
  192.             Button1.color("#0000FF");              //设置app按键是浅蓝色
    + u: _5 n) b9 Q$ Q
  193.             Button1.text("开启中");
    # }1 p# X: T; c) H3 r' w
  194.        }# `! j6 e- [& x$ P+ p/ l
  195.        else if (digitalRead(kg)==HIGH)/ W) c/ Z$ E: c) u
  196.        {
    * ^4 I; u4 f% O) ]7 v- t# |9 I+ R. v
  197.             digitalWrite(kg, LOW);1 `# _! {% o+ ?; }3 X" z1 c
  198.             digitalWrite(de, HIGH);. N" {5 Y$ t+ T
  199.             Button1.print("off");
    3 u* z# h7 ^* v5 d. K) {( P+ l0 c
  200.             Button1.color("#00FFFF");              //设置app按键是深蓝色
    5 w% w9 ?; L0 q6 `3 I: H
  201.             Button1.text("关闭中");
    + W1 q* C( O% u* P0 a. {
  202.        }
    + x" k1 W5 I8 N& z
  203.       }. M7 D0 l" v( t; X
  204.     }5 V- Y" i! a- q5 z1 V/ u
  205. }
复制代码
8 N  r% l2 c$ c+ i1 e$ O- d& p
/ u$ {2 b# Z- |+ g  V( f  V$ ]
我没有用卖家给的码,我自己写了一个,参考我前面的文章最简单的8266天猫精灵控制开关,点灯、Mixly可视模块化编程 https://bbs.nasdiyer.com/thread-18755-1-1.html/ K7 R4 h9 `6 R, p6 T+ O# n

( ~9 G- O' g4 U: }  r把上面的2改成5,把高低电平对调一下就可以使用天猫精灵来控制你的这个插座了。我是把我的第一个插座放在了我的落地电风扇中了,当我慵懒的在沙发上刷着手机时候感觉有一点点热,我只要呼唤“天猫精灵,打开风扇”,就可以了。
; f% m( A: N/ j9 {( `& V* U$ y! s5 V2 j
' t& g5 K" c3 R6 j

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:539 z5 b' n0 x) ]9 y1 ]; V+ ^8 m
买了几个   做工挺扎实的,但是外壳怎么拆啊  拿斜口钳拨了一个,   四个圆角的卡口根本没法正常拆 ...

- x/ t/ i- ~- Q$ B6 E大力出奇迹呀

1

主题

8

回帖

256

积分

中级渣柚V1

积分
256
发表于 2021-8-29 08:14:58 | 显示全部楼层
a467913252 发表于 2021-8-24 15:53) P  x9 K9 K  _5 E+ r
买了几个   做工挺扎实的,但是外壳怎么拆啊  拿斜口钳拨了一个,   四个圆角的卡口根本没法正常拆 ...

& \3 A) `: a  [  R4 G昨晚拆了一个,废了老大劲,想和卖家说的无损拆下来,不拆个三五个积攒经验,基本不可能

2

主题

11

回帖

56

积分

初级渣柚V2

积分
56
QQ
发表于 2021-9-4 23:05:22 | 显示全部楼层
sevenup0719 发表于 2021-8-29 08:14
# A  s1 H" e0 w7 W' l9 c. H8 p昨晚拆了一个,废了老大劲,想和卖家说的无损拆下来,不拆个三五个积攒经验,基本不可能 ...
5 k/ f) S8 Y% i2 y+ ]  Q
你的搞定没  为什么我的根本没法烧录   连接不上,,用esp01s还没问题的
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-5-2 18:31 , Processed in 0.052938 second(s), 5 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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