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

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

[复制链接]

11

主题

51

回帖

209

积分

中级渣柚V1

积分
209
QQ
 楼主| 发表于 2021-8-21 13:57:54 | 显示全部楼层 |阅读模式
本帖最后由 易记 于 2021-8-21 14:05 编辑 # q; \0 ]) p# B% t

5 i3 C; G/ A( s9 u最近玩ESP8266,想做个天猫控制开关。
! r( k- o5 w! h' r8 j( d* S5 H但是我很懒,一个个配元件嫌麻烦,于是想着能不能淘到便宜的带电源板的模块,多倒是蛮多,一般都要20多块钱。
3 ?3 f6 w! v" ~0 P+ M  j5 L4 o2 Z还是闲钱上逛一下看,找到一个联想的国外版8266智能插座,价格才8.5元一个。有一点不足,就是只有三孔,要是五孔的就好了。老板说五孔杂牌价格一样也有货,晚两天发布。7 l+ u) _+ ?( e; c3 l: H, @! V2 B
QQ截图20210821125037.jpg 7 @, N- t) m9 }/ w8 F6 E+ d

5 c! B" H. E' g, _+ o, A

' h4 `6 w9 c& m$ p2 _问了一下店主,买20个一盒才包邮,想着20个还是有点多,买了5个,连运费47.5元。
8 P2 g3 c, R# b0 c. Q0 [- `! k' L# t/ ~: O, _$ l9 O3 N
QQ图片20210821124517.jpg
& y) L2 C0 h+ e9 E# x9 W6 e  F) K
/ I2 D( i( A" a- [" c8 t  g
: |1 \' l) g7 r. a; H5 j
4 k: L  T* V' ~& ?8 K& _$ D
到手,当然是拆拆拆。
: J3 ?' _/ _* n IMG_20210820_134104.jpg 1 b+ q$ N5 b1 {& r  L! w+ A
; [+ ?% `: S1 ?5 A9 t
9 x# Q! k, C. U
联想的做工,还是感觉不错的,光这个继电器应该也要个7-8块钱。
- p1 N) `9 |, S IMG_20210820_160634.jpg
- W" R) D  y6 X" ~$ v( |" s/ u% K
* C2 w7 d% M  W0 O# C$ r5 k9 S

  {4 A4 c4 L6 m3 G继电器是两组常开,感觉要是接电灯双控开关是不是有点麻烦的,不过用于插座是很安全,要断二条线都断开。- G1 l: x& [# k& @) N8 F/ N
QQ截图20210821133707.jpg
$ I' H$ M* `. d3 |* J
( x4 b* ~# s; Q6 t
IMG_20210820_134114.jpg
7 `/ F" o7 m1 r7 ~

7 T- \1 f$ P8 D电源芯片
/ r' P% x8 `8 ^/ |+ |) ?( H7 B/ C+ {" Z
% H4 L( r7 t7 e: w: C" A

* `8 O; B& h, j' K6 S, `5 ^有一个按钮,按钮有二个蓝色LED灯
3 X0 b0 T4 o% e; W IMG_20210820_134157.jpg
0 N  y' g7 C" i7 \) F* {: M5 m8 r, e2 q- F9 u" X

! Y6 L7 c- e3 \$ u8266
# p  Q9 d; n; f& U0 a IMG_20210820_141913.jpg
+ k* I) c" [. D( t$ C+ L# _6 x. l: z, \9 ^. d7 O! a9 O6 L

1 _! I% d6 F6 y1 `5 u
1 V$ U* i! n- _" Z7 l4 Y3 h

1 C7 f% J) |+ B  E; n接下来就是刷机了,版子上面都预留测试点。
' |, \- |% o% q' b# ~+ W6 {5 M接线比较容易,上面都有标示,GND,3.3V,TXD-RX,RXD-TX,还有一个就是IO0接地后刷机。1 l' R$ a4 z! x5 Y$ k$ Y
未标题-1.jpg
0 w3 C- ~' Z6 v) g
注意RX这个点,就是3.3V边上的这个点,焊盘设计的就点问题,电烙铁热一点或是焊的刷机线过粗的话,容易掉焊盘。- X: t+ ]& c( _5 n  L
要是掉了就只有一个过孔了,要是焊不上,只能再拆开接在另一面,所以为了避免不必要的麻烦,请注意一下。

: h( d* `+ @, I: e
" y6 r1 }& P, G$ z( F& G" i
+ P- t$ f% |* O* f0 g1 s) B

. z( U0 k: V# W8 r: d1 F- ^7 e3 _' t. [% w

5 J: G* T. S# Y9 A2 z/ O    5号脚位是继电器输出& b+ B3 r8 F/ j7 ~
    12号脚位是灯输出4 M; k8 m+ u7 \$ ?* q  ?
    4号脚位是按键
5 T5 |0 G8 T( P

: e3 ^. S7 z! k5 m2 j: ?

# M% W4 {0 T+ Z* g9 n0 j) c
/ _- `! O$ {& i/ ?& w3 w3 _: `
( p: ]7 W4 C" L* S3 J
卖家有发一个源码,如下
  1. #define BLINKER_WIFI                    //官方wifi协议库
    4 R6 e4 d3 F, Z+ w
  2. #define BLINKER_MIOT_LIGHT              // 设置小爱灯类库
    7 b% s  Q$ ~/ M( V: q) B
  3. #define BLINKER_ALIGENIE_LIGHT          // 设置天猫灯类库" c( E* Y6 B) `2 [6 d6 W
  4. #define BLINKER_PRINT Serial            //串口协议库3 J& F  r; o4 E7 H
  5. #include <Blinker.h>                    //官方库
    9 N; U  W! K; D5 m
  6. #include <ESP8266WiFi.h>                //官方库
    ' f- x, h+ L/ X, O
  7. WiFiServer server(80);                  // 服务器端口号5 J" ~6 h: ~* z" h
  8. ' w. b) e% r" q) R* v# `
  9. char auth[] = "c4942fb1d5e4";     //设备key
      T/ Z+ g' {( U* m. s
  10. char ssid[] = "wanboshi";     //路由器wifi ssid
    * D4 y: V8 w" V& r+ k2 t
  11. char pswd[] = "1365662999813586348220";     //路由器wifi 密码' _$ @$ ?$ O: Z4 P5 D4 n

  12. ( L6 h, s( T- T- K0 _
  13. bool oState = false;. o$ U$ O; b6 x# T3 n. e8 b1 \

  14. & }) Q4 O# P* l$ m
  15. int kg=5;//继电器输出
    . |4 T! `  e; ]- k" s
  16. int de=12;//灯输出* C4 M: D* r' Q: x6 I& m
  17. int key=4 ;//按键
    * i. D7 R& r0 e. D
  18. //*******新建组件对象
    " ?- R) X( w  c* w" b* ?; Y

  19.   c1 d5 l" ]* ~. e
  20. BlinkerButton Button1("btn-abc");              //设置app按键的键名
    + |% v4 ^9 e* u6 q" s8 V: V! R) A
  21. //*******app上按下按键即会执行该函数app里按键
    / ^/ \3 O: {0 O/ p& Q! z+ K
  22. void button1_callback(const String & state)
      _# }9 t& G& U1 d8 A: Y3 [
  23. {  D+ S3 h% f& M/ O
  24.    if (digitalRead(kg)==LOW)1 N$ F! X. l8 t) N3 g4 i+ x
  25.    {! `0 c' P" d2 Y! ?) K* w) f1 X
  26.         BLINKER_LOG("get button state: ", state);
    $ c$ X% y" W& v0 i
  27.         digitalWrite(kg, HIGH);
    # M) l: a4 r  x- ^2 |
  28.         digitalWrite(de, LOW);
    ( c) \4 s9 L6 Q2 |4 C. p
  29.         Button1.print("on");
    $ V4 H, O1 g8 y, X8 M9 }
  30.         Button1.color("#0000FF");              //设置app按键是浅蓝色
    2 A# D, x6 N; _: \: A
  31.         Button1.text("开启中");% |, Q3 f( A6 ?& z8 k% b
  32.    }
    % M' ^$ N% U3 H' [# t
  33.    else if (digitalRead(kg)==HIGH)
    4 T, A- K% W, o* G6 E- R
  34.    {- l3 y: N1 K& w4 v# a+ K& Z. c
  35.         BLINKER_LOG("get button state: ", state);. q  p; v& P6 g! Z* ?4 {
  36.         digitalWrite(kg, LOW);
    % O3 \9 |) y5 J, G
  37.         digitalWrite(de, HIGH);
    0 J$ t) ]6 R. k! L1 P* `0 ~
  38.         Button1.print("off");
    + C0 m1 V: w7 c* x, W
  39.         Button1.color("#00FFFF");              //设置app按键是深蓝色) A* J+ S* Y, H2 `8 I* J
  40.         Button1.text("关闭中");9 q" ]0 C& X. h! e) U1 G
  41.    }& F6 ~3 h, S6 q, |
  42. }
    + D; _5 @/ F6 ]8 u" a4 V' _
  43. ( z+ k& v2 y7 G9 K
  44. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
      z2 Y4 K' z# `# s% h9 Z6 E

  45. , k# S0 a& d! c' c
  46. //*******如果小爱有对设备进行操作就执行下面& ]) F( v" W3 r/ Z8 A. _) s- J* M
  47. void miotPowerState(const String & state)8 K' X8 y2 Q/ p5 y; G: w- m+ D6 d
  48. {, e' a# I) @% O+ v, }8 h4 _
  49.     BLINKER_LOG("小爱语音操作!");              //串口打印
    ( g0 n$ Q. ]6 n+ `
  50.     if (state == BLINKER_CMD_ON){' R( \' O! J) f% L' b6 ^' c# K& q
  51.         1 f* \- e, j: Q6 U; p
  52.         digitalWrite(kg, HIGH);
    + t( q: h0 x8 R. Q' p
  53.         digitalWrite(de, LOW);
    7 q6 i8 W7 L1 T" L, Z( I  S9 @$ ]
  54.         Button1.print("on");
    $ X3 H+ B5 m- i: `
  55.         Button1.color("#0000FF");              //设置app按键是浅蓝色* c3 c, a- S9 _" F0 w9 I1 w
  56.         Button1.text("开启中");
    ! u' f4 O' W. R2 m) z8 L
  57.         BlinkerMIOT.powerState("on");
    6 `8 S# m; T/ R9 U7 g
  58.         BlinkerMIOT.print();+ x% Y) _0 N: k) P( `5 O: P6 o: k
  59.    }( Y3 O* J9 q8 u/ w
  60.    else if (state == BLINKER_CMD_OFF)2 H2 d9 [, v1 a9 W# U8 u4 g
  61.    {
      N# M( F( }. x: e" `. A' H
  62.         + @& k% w2 h1 _& G2 Q1 S6 d/ K8 ]0 h9 Y, K
  63.         digitalWrite(kg, LOW);* z: ]; Y& ]; F2 [- K& I8 C/ {
  64.         digitalWrite(de, HIGH);
    1 C9 [" d2 F! S
  65.         Button1.print("off");2 H2 d/ B5 R4 `
  66.         Button1.color("#00FFFF");              //设置app按键是深蓝色
    " T# N6 m5 L4 i8 N' P5 @3 ~
  67.         Button1.text("关闭中");
    + u9 F% g" _" Y) o
  68.         BlinkerMIOT.powerState("off");
    ' B7 L+ [9 A. K9 y9 g: N5 I! g
  69.         BlinkerMIOT.print();( s1 [( \8 y2 L0 }. o
  70.    }! d+ d8 U7 n/ _/ J
  71.        ' h; W: r7 z0 D" f" |

  72. 3 h. K1 O2 b8 l2 |$ i
  73. }
    9 d% D6 b6 @5 n0 @! [& Q" ?
  74. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++$ z9 _( \- I" e% Z
  75. //*******如果天猫精灵有对设备进行操作就执行下面: A  D3 E' U- X, i$ m0 D' k+ u0 \  j
  76. void aligeniePowerState(const String & state)' X# J1 m+ s2 C1 A: c6 i9 {4 J( v
  77. {
    9 e( C& v) a0 V: S* t
  78.     BLINKER_LOG("need set power state: ", state);0 V6 d( ]. U8 D2 |! V
  79.     if (state == BLINKER_CMD_ON)3 `  j. I; N! o5 e- h, v7 R6 H8 `3 ~
  80.     {
    / P1 [+ @4 M& g  y6 T% g
  81.         # {3 H/ M5 r! D& ]( P4 v
  82.         digitalWrite(kg, HIGH);1 J& z6 ?% Q) t4 O8 R- D4 K
  83.         digitalWrite(de, LOW);  c" G" s) S" s( Y( |2 t; n
  84.         Button1.print("on");1 F) O/ @: u6 F8 w$ x
  85.         Button1.color("#0000FF");              //设置app按键是浅蓝色
    7 J. ^# w$ l, L1 K  Q" w5 ]
  86.         Button1.text("开启中");
    5 e4 _+ s9 A7 k* f" o1 i
  87.         BlinkerAliGenie.powerState("on");: [! g; W# G  q: y  _7 r2 J
  88.         BlinkerAliGenie.print();
    . q% v5 R& G" m6 ]& t, @9 B
  89.     }$ y5 p" Z/ Q' W1 y
  90.     else if (state == BLINKER_CMD_OFF)
    ; O- }, e7 E) H3 p; L
  91.     {
    ( W" W2 W$ e; m6 Q
  92.         . v9 ^+ n+ e# l/ |' ?; h7 C! {
  93.         digitalWrite(kg, LOW);
      N( H- w, j4 r6 ^( w4 k7 F! _
  94.         digitalWrite(de, HIGH);$ [# M7 J4 c7 j% J" g4 g
  95.         Button1.print("off");
    1 S! N+ Q# g! X" ^% a2 V8 \5 ?
  96.         Button1.color("#00FFFF");              //设置app按键是深蓝色3 C! Q8 E7 l) p# J9 J, \6 @
  97.         Button1.text("关闭中");* f! F' [+ m! C- d  g7 F
  98.         BlinkerAliGenie.powerState("off");
    . X  o% f4 @- {" X1 ^. V/ _6 j) \
  99.         BlinkerAliGenie.print();8 K1 F) Y) w) W% S0 A3 M! Z
  100.     }! B5 u7 h6 C4 B7 i
  101.         
    1 j# D6 L9 M6 a7 M  Q

  102. ; y8 Q' Y9 \  H* d$ U/ b
  103. }
    * V( X7 @  y' W
  104.   //*******app定时向设备发送心跳包, 设备收到心跳包后会返回设备当前状态30s~60s一次5 M. {9 `( K% I/ r( g( v
  105. void heartbeat(): b2 |- m  z" t/ R4 E
  106. {
    # q% {9 s4 b: r. \9 A
  107.   BLINKER_LOG("状态同步!");
    2 X2 N' w7 A7 O; d5 i
  108.    if (digitalRead(kg)==HIGH) % c3 {4 O0 R- f' y
  109.     {
    & T# L3 m$ f$ H1 J% W
  110.       Button1.print("on");* |! `% F! k( X
  111.       Button1.color("#0000FF");              //设置app按键是浅蓝色
    : N& T4 [/ b' n/ ]
  112.       Button1.text("开启中");
    + P2 h, ~; Y  g4 E7 w  X
  113.     }
      [1 `$ M3 ~& r8 W# u9 o3 K" ]7 k
  114.     else
    9 U) d2 T; C" h7 W
  115.     {
    8 a2 I* U1 A4 j
  116.       Button1.print("off");( J" M& e. T* C3 \) ^/ J
  117.       Button1.color("#00FFFF");              //设置app按键是深蓝色' ?* U! a3 M$ @& d" l
  118.       Button1.text("关闭中");: N& a: L* n3 r$ f4 _
  119.    
    ! \: p# N9 \1 r: [
  120.     }
    , B% l- N8 v( \& }8 P# C
  121. }
    6 @9 R2 _) m( J% H; x6 J+ N
  122. //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++3 [9 l4 Q1 P1 a% i( d
  123. void setup()
    * j2 a. d! |# m0 b
  124. {" _9 U5 z; ?0 o, S! u
  125.   // 初始化串口2 L$ Y2 l3 K+ ~( _2 E/ B7 [
  126.   Serial.begin(115200);
    * W6 K" S, Y! }' v9 L! _( I
  127.   delay(10);
    ) O$ E3 G4 p& T6 l/ S4 x3 b, A% @
  128.   BLINKER_DEBUG.stream(Serial);
    8 ^" c, W% Z; Z# T, r
  129.   // 初始化有LED的IO; G. X, l9 M8 Y* Z1 T$ Q* X" m
  130.   pinMode(kg, OUTPUT);                 7 D  [- G8 h3 p: `
  131.   digitalWrite(kg, LOW);//初始化继电器上电状态 * @" a- x& W/ d2 r
  132.   pinMode(de, OUTPUT);- U5 Z! o  u7 Z, ~: l- q
  133.   digitalWrite(de, HIGH);- O  J4 d- z% ]: s4 P" u6 X, ~
  134.   pinMode(key, INPUT);            % l+ M  N- n. i. `
  135.   Serial.println();
    - g9 Q& i. X7 Q& a0 Y( b3 B
  136.   Serial.print("Connecting to ");: N9 z8 z1 ]3 u' o. d, _
  137.   Serial.println(ssid);& \6 l6 ^, s/ ]5 F
  138.   WiFi.begin(ssid, pswd);( a" w" W8 _: ?- W  L7 b
  139.   while (WiFi.status() != WL_CONNECTED) {
    " {2 D6 z6 b! d) g' L6 d
  140.     delay(500);
    ) T. v. ?5 w5 D1 ?/ Q9 H% M  P
  141.     Serial.print(".");  h$ Y" ~. Z; y2 G
  142.   }' Z9 `8 R8 K' C) P' d6 b
  143.   Serial.println("");
    4 i2 `- N3 Z" f/ ~9 `3 q
  144.   Serial.println("WiFi connected");
    % |- u) O  R) V' J4 `3 {
  145.   server.begin();5 X' o5 \1 M  R
  146.   Serial.println("Server started @ ");
    8 o  {4 _( k  j( m6 _* j
  147.   Serial.println(WiFi.localIP());
    ' ]" A* f7 F- ?: `' m; y; j  k
  148.   //打印出IP地址,后期可以制作显示器来外部硬件显示ip
    * ^: C6 D  M& d4 C" u; G1 z
  149.   Serial.println("To control GPIO, open your web browser.");
    * @; [0 @! g- g
  150.   Serial.println("To set GPIO 0 high, type:");3 q* I$ l! y6 F. B) ?/ t5 Q8 ^
  151.   Serial.print(WiFi.localIP());
    - h3 E9 `4 }* a3 b
  152.   Serial.println("/gpio/1");# f1 {9 c4 B5 g, X- W4 I
  153.   Serial.println("To set GPIO 0 low, type:");* Y6 f: g0 R' i( ~- {/ u0 i
  154.   Serial.print(WiFi.localIP());
    6 w, Y- z; O% W! c' K4 J3 H9 m
  155.   Serial.println("/gpio/0");
    4 V: T+ e" |6 a
  156.   Serial.println("To toggle GPIO 0, type:");
    9 ?% v7 {( S3 B+ ]: Z9 x5 `
  157.   Serial.print(WiFi.localIP());
    3 T. r/ A; J, X# i0 E# r
  158.   Serial.println("/gpio/4");" i9 ?0 P; o, ^
  159. $ P7 H3 |' c  k; o; a! q4 N! k9 n  B
  160.   // 初始化blinker
    8 u/ _% F0 p/ {1 s" u
  161.   Blinker.begin(auth, ssid, pswd);
    ! v. n' l7 r& n+ b, i% l9 M
  162.   BlinkerMIOT.attachPowerState(miotPowerState);              //小爱语音操作注册函数
    ' }' k0 M. p8 f* m
  163.   BlinkerAliGenie.attachPowerState(aligeniePowerState);      //天猫语音操作注册函数$ U% j3 }7 }4 ]
  164.   Blinker.attachHeartbeat(heartbeat);              //app定时向设备发送心跳包, 设备收到心跳包后会返回设备当前状态进行语音操作和app操作同步。
    ! f5 t' W& ~) p' v6 [4 t

  165. & z9 _5 G3 L- C) N" e4 W( S4 [
  166.   Button1.attach(button1_callback);             //app上操作必须的注册回调函数关联按键名“Button1”和判断程序“button1_callback. I  c) A  x% H3 e5 ^; A
  167. }% j( o# e2 J- }% [) a
  168. void dataRead(const String & data)
    $ b% e( f% T( [6 S
  169. {
    , `( D9 S. o! Z5 B
  170.     BLINKER_LOG("Blinker readString: ", data);
      k% m6 F% l2 J( Y
  171. ' G& x4 U8 d6 O( ]3 z; e& P, q
  172.     Blinker.vibrate();
    / d, k. o7 n  l/ a* t
  173.     7 C" ?, Y% l( i
  174.     uint32_t BlinkerTime = millis();
    ( r: _9 }. d& y0 J( g. V/ m
  175.    
    + R1 g: \( c6 q* `# t
  176.     Blinker.print("millis", BlinkerTime);: g+ }+ Y. H; X
  177. }1 @* i: K; J; K" A6 d+ a  E- T  }9 J
  178. void loop()
    5 G7 F- b- H& B! O  k
  179. {' u* K( q/ K2 q. Z) j8 X; Z
  180.   Blinker.run();2 [, F) ^" u: G3 B' F; B
  181.   if (digitalRead(key)==LOW)
    ! F+ l3 x1 [" W6 _- q9 F/ C
  182.   {
    & O% F1 d% ^3 S; i5 {
  183.     Blinker.delay(200);
    3 H. n! r& m( A* s3 S" K
  184.     if (digitalRead(key)==LOW)
    5 G; X1 ?) }3 B+ j8 r  U
  185.     {
    0 V1 ^/ h7 N# A! w4 |1 e
  186.           if (digitalRead(kg)==LOW)& ?3 v+ Z% n  I! ]
  187.        {: d. ^8 p$ h& h
  188.             0 O* k9 D5 \6 C$ }% X6 w1 G
  189.             digitalWrite(kg, HIGH);' }0 U4 d' g/ O" f
  190.             digitalWrite(de, LOW);* B# c, C0 o: B
  191.             Button1.print("on");: D( M2 ~- s" x7 n4 ?+ B1 G- t
  192.             Button1.color("#0000FF");              //设置app按键是浅蓝色
    * I- M4 F$ G5 i2 b( d/ ]9 Q
  193.             Button1.text("开启中");
    8 [( K  j' W7 F2 a0 [0 @
  194.        }1 x5 G7 K0 l: _, A
  195.        else if (digitalRead(kg)==HIGH)
    , F9 e% g- `* E  u
  196.        {% ]1 m* K4 c9 A: v
  197.             digitalWrite(kg, LOW);$ d% ~; x. h6 B& t2 O9 h( G
  198.             digitalWrite(de, HIGH);
    : Z' {8 q+ }+ f, d+ N4 V% X1 T
  199.             Button1.print("off");
    - f8 k6 S- A' c6 b0 X; j3 x( R
  200.             Button1.color("#00FFFF");              //设置app按键是深蓝色
    : g& ~+ n- w0 k2 r* |
  201.             Button1.text("关闭中");
    & n+ I+ ^( X" ^( s
  202.        }
    ' v( S/ N+ y4 N9 P# h! e$ U
  203.       }" E" g6 k, D  ^& @( _
  204.     }
    $ o; Y& T0 ?! y% M! b' d3 _
  205. }
复制代码
7 E1 N6 n% _: Y* b/ X# K
; q. ]; g( Y6 \, q
我没有用卖家给的码,我自己写了一个,参考我前面的文章最简单的8266天猫精灵控制开关,点灯、Mixly可视模块化编程 https://bbs.nasdiyer.com/thread-18755-1-1.html
+ O, g+ I" U% ~6 D# v( ~9 E3 n9 O) m$ J4 ~" z2 ^  [3 q; A
把上面的2改成5,把高低电平对调一下就可以使用天猫精灵来控制你的这个插座了。我是把我的第一个插座放在了我的落地电风扇中了,当我慵懒的在沙发上刷着手机时候感觉有一点点热,我只要呼唤“天猫精灵,打开风扇”,就可以了。
% T9 V% K* K: Q- }
3 L2 N% f: N, d. w
8 f4 ]+ p* Z* R

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
. t3 p0 G. S' U) N2 G5 P5 @买了几个   做工挺扎实的,但是外壳怎么拆啊  拿斜口钳拨了一个,   四个圆角的卡口根本没法正常拆 ...
& b5 F. Z% T+ b. e
大力出奇迹呀

1

主题

8

回帖

256

积分

中级渣柚V1

积分
256
发表于 2021-8-29 08:14:58 | 显示全部楼层
a467913252 发表于 2021-8-24 15:53
" e- a3 G5 G( Y, r4 a  N- Q+ X2 f买了几个   做工挺扎实的,但是外壳怎么拆啊  拿斜口钳拨了一个,   四个圆角的卡口根本没法正常拆 ...
6 @) u. @7 k4 m1 V; E
昨晚拆了一个,废了老大劲,想和卖家说的无损拆下来,不拆个三五个积攒经验,基本不可能

2

主题

11

回帖

62

积分

初级渣柚V2

积分
62
QQ
发表于 2021-9-4 23:05:22 | 显示全部楼层
sevenup0719 发表于 2021-8-29 08:145 }- ]% [/ J8 r1 a9 C2 a1 Q* e& b+ f& a
昨晚拆了一个,废了老大劲,想和卖家说的无损拆下来,不拆个三五个积攒经验,基本不可能 ...

' i2 V0 G9 P( `3 b1 M9 f你的搞定没  为什么我的根本没法烧录   连接不上,,用esp01s还没问题的
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-21 18:20 , Processed in 0.051552 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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