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

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

[复制链接]

11

主题

51

回帖

209

积分

中级渣柚V1

积分
209
QQ
 楼主| 发表于 2021-8-21 13:57:54 | 显示全部楼层 |阅读模式
本帖最后由 易记 于 2021-8-21 14:05 编辑 % y/ p5 h( b) p1 c0 N! o
9 @+ ^2 r- Y/ a2 p3 l1 S
最近玩ESP8266,想做个天猫控制开关。( h. o: [( k7 z9 h
但是我很懒,一个个配元件嫌麻烦,于是想着能不能淘到便宜的带电源板的模块,多倒是蛮多,一般都要20多块钱。
# a. j. {! r8 T5 y* t还是闲钱上逛一下看,找到一个联想的国外版8266智能插座,价格才8.5元一个。有一点不足,就是只有三孔,要是五孔的就好了。老板说五孔杂牌价格一样也有货,晚两天发布。
* c5 L) t! m  x QQ截图20210821125037.jpg " Y1 O+ B0 Z! S$ `. t# L9 n& P8 j) X
' T2 J' k. \* j* E  E

) F8 h- U0 [: X& O1 g+ G& {问了一下店主,买20个一盒才包邮,想着20个还是有点多,买了5个,连运费47.5元。
( G8 ~/ ]* _& t: v( \$ u& X  p, c/ z7 @! c) r
QQ图片20210821124517.jpg - e0 A* @5 p9 \6 c! T

: [$ m: \. p% k# |& N/ a
: k/ `/ r( q! J- y
* ]: j3 K' }* `4 f$ ?5 S9 i8 W% P
到手,当然是拆拆拆。
7 @2 |9 s! `. q, [% P3 T5 n IMG_20210820_134104.jpg : W: H! v- o) f: D5 E+ F) y
( p/ V* v, c1 S) K* c/ w! g) j

# V' \. ?7 s/ |1 k, L联想的做工,还是感觉不错的,光这个继电器应该也要个7-8块钱。
: r, R( _1 n) N6 l" A: U IMG_20210820_160634.jpg
2 z8 z( K) N) u( [  D) T6 ^; u* H# Z& c) e0 A# X! w6 j

  _6 H, e% w# _& {9 H, s继电器是两组常开,感觉要是接电灯双控开关是不是有点麻烦的,不过用于插座是很安全,要断二条线都断开。
5 ]$ ?: w% {2 |0 R- u& Y9 Y2 z QQ截图20210821133707.jpg
/ A# I. g! G- v& k( X

' I6 j7 t' \7 W6 B IMG_20210820_134114.jpg : ]  \- U/ V/ W. V

( T8 P* u/ ]) l7 X电源芯片* k% P1 S! P+ L2 }, r1 \  O+ h
; S! ]+ U$ p- {- u' B% z5 y" K# B) c

! w- }/ E5 m- c
0 {+ {0 E1 M( J8 f; s
有一个按钮,按钮有二个蓝色LED灯9 g  m7 _9 |% ~  ?& r
IMG_20210820_134157.jpg
7 v7 [/ p" a  T5 I+ Y
$ R, u0 X. [1 ?- ~! \9 \" V; N* ]

+ u9 q9 V2 }+ b- e7 Q# b8266! `8 ?; D+ y# q* t: A* i0 U
IMG_20210820_141913.jpg / \5 c" n. K9 d6 V" q& Z) C
3 M& a! A) M- j# }) i

1 l7 n" y# f4 ~" _: |7 Q/ Z' b6 g7 u3 m

0 b( r9 i8 Q# F8 o5 }接下来就是刷机了,版子上面都预留测试点。
# m: z& {# _8 M$ S+ D" @: ^接线比较容易,上面都有标示,GND,3.3V,TXD-RX,RXD-TX,还有一个就是IO0接地后刷机。
6 ^3 C! f( w" u 未标题-1.jpg
! y3 S6 T; C$ Z) m
注意RX这个点,就是3.3V边上的这个点,焊盘设计的就点问题,电烙铁热一点或是焊的刷机线过粗的话,容易掉焊盘。
5 t6 g2 M% ^9 z要是掉了就只有一个过孔了,要是焊不上,只能再拆开接在另一面,所以为了避免不必要的麻烦,请注意一下。
# r3 ?1 t+ H) `2 D5 }( Q

! f1 N' `3 W% v/ K% Z+ p+ S, q6 _( {% t. y9 I# ~3 |& V+ e% q

. f; \) i% W8 `- M! q' Q0 b
  `, v% [& L; ~2 T

1 p6 h2 f7 D% ^" ^. q0 q" M    5号脚位是继电器输出4 R4 G* ~, f2 C! m- E
    12号脚位是灯输出: v: R# U" C  `7 x7 B
    4号脚位是按键
/ Q$ r8 a+ O; V$ p8 V

2 X9 L, n# J# p* @0 Q  z2 u( k

) A% @3 f% @! l' V2 J
- b8 V  ]6 u- e0 o7 o6 Q
& D+ W5 @3 m2 Z% X/ L  r
卖家有发一个源码,如下
  1. #define BLINKER_WIFI                    //官方wifi协议库! o+ M% l8 F, v* y! ^
  2. #define BLINKER_MIOT_LIGHT              // 设置小爱灯类库$ |8 ?* `+ H. y+ U) T( [
  3. #define BLINKER_ALIGENIE_LIGHT          // 设置天猫灯类库/ I+ d0 t: L9 W) |& W- R2 _
  4. #define BLINKER_PRINT Serial            //串口协议库
    2 E, X8 ]) O0 R, W, O6 S
  5. #include <Blinker.h>                    //官方库6 {- Y- K1 N7 s: p
  6. #include <ESP8266WiFi.h>                //官方库
    - |: I0 M% n' O4 \* }& |5 Y
  7. WiFiServer server(80);                  // 服务器端口号- Z9 C+ M% D* o: H9 M, r

  8. ( v. U, a8 b1 ]1 E
  9. char auth[] = "c4942fb1d5e4";     //设备key5 _" z, d% t8 \& Q7 c  O9 _
  10. char ssid[] = "wanboshi";     //路由器wifi ssid" _5 j) Z% f% h% R4 E
  11. char pswd[] = "1365662999813586348220";     //路由器wifi 密码
    6 z( E  w( W& J/ D' y2 {

  12. & t4 k" Y! i  R/ v7 I5 A9 S. h$ \
  13. bool oState = false;$ o  Z# @+ |+ p

  14. * l9 d/ d$ t. E7 D- O
  15. int kg=5;//继电器输出$ }  D- P8 u( u' S/ |% u/ x+ i5 y. W
  16. int de=12;//灯输出8 j1 s# K" p9 L
  17. int key=4 ;//按键1 v3 i  k0 R+ e+ [$ q6 s; \
  18. //*******新建组件对象+ y; D) |2 K8 C+ E% r7 J  `
  19. 3 T) K3 J/ V0 k, |
  20. BlinkerButton Button1("btn-abc");              //设置app按键的键名
    1 K7 B, p( v7 s  n
  21. //*******app上按下按键即会执行该函数app里按键
    8 J1 F$ h  b# Y0 c# U
  22. void button1_callback(const String & state)
    % u* D# u% o; V: {" o
  23. {) M  a' Z; n/ V1 i4 h3 L* V* z
  24.    if (digitalRead(kg)==LOW)
    & f, K; K  s  `
  25.    {4 x7 T$ I) ^: g  s9 W
  26.         BLINKER_LOG("get button state: ", state);
    / d4 V# s1 O8 X- u# f
  27.         digitalWrite(kg, HIGH);
    5 k, ]" o# C2 R& C  A/ q
  28.         digitalWrite(de, LOW);
    + U4 G8 N: \  a
  29.         Button1.print("on");2 R9 V: B0 b/ q( B- G
  30.         Button1.color("#0000FF");              //设置app按键是浅蓝色
    0 P  e: U8 L9 i8 @0 z# S
  31.         Button1.text("开启中");
    : ^+ K, d% k; T, [3 G' V% p
  32.    }
    $ ~  K2 w7 J# K! D% m# o
  33.    else if (digitalRead(kg)==HIGH)4 ]8 W  {" ~$ m9 c) e, ]
  34.    {
    3 ]  f& Y2 k! N# v; C* Y3 B/ `
  35.         BLINKER_LOG("get button state: ", state);
    , t" o+ w8 U1 N$ {2 J( Z0 Z9 \+ A
  36.         digitalWrite(kg, LOW);
    0 ^7 k' }- X! ~
  37.         digitalWrite(de, HIGH);
    ; ^+ d) `4 a# c/ |( p; v
  38.         Button1.print("off");
    : o/ l" p) U8 {; Q% C% n# M. B
  39.         Button1.color("#00FFFF");              //设置app按键是深蓝色
    ( U2 c8 j. q$ k/ Y( U: F
  40.         Button1.text("关闭中");6 g# y3 H* I5 h' @; P8 U! T5 y
  41.    }
    8 J: u1 \) j; L6 u
  42. }
    6 @9 k1 L" X  e$ g# Q
  43. : W* u6 m6 k( Z- x
  44. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++( e- Q* B% x5 ^/ V+ _! ~2 [. k
  45. # ?. U. f3 `& J1 E6 S1 z8 C
  46. //*******如果小爱有对设备进行操作就执行下面9 B0 e, c5 G9 }" C$ u8 q. X
  47. void miotPowerState(const String & state)
    5 s' ]  ]! d. g7 `8 w3 f' I
  48. {0 p  z8 P8 N6 m; Q' i- k( d. d
  49.     BLINKER_LOG("小爱语音操作!");              //串口打印* A/ J3 i# G9 e/ _5 o
  50.     if (state == BLINKER_CMD_ON){
    : ~5 r4 k/ P) d' D$ I4 V6 b: ^
  51.         ; W* F2 u; D1 ], R" U; _4 W/ C
  52.         digitalWrite(kg, HIGH);$ C$ j3 [- I/ J* `* Q9 H) s8 c
  53.         digitalWrite(de, LOW);
    2 k  ^* N  }( @; R
  54.         Button1.print("on");" i2 m- U2 r. R' S
  55.         Button1.color("#0000FF");              //设置app按键是浅蓝色. \% Q& z( Y$ o( k; E3 \
  56.         Button1.text("开启中");
    , O% K/ M6 x. A7 w$ P9 c
  57.         BlinkerMIOT.powerState("on");
    + |3 Y  O& T% ^. k9 w+ Q. ]
  58.         BlinkerMIOT.print();5 t( V9 f0 u+ Y4 a8 }7 r
  59.    }
    % k- J1 F5 M% O* e2 T9 t
  60.    else if (state == BLINKER_CMD_OFF)
    9 T! D0 k2 P4 Z/ O* w
  61.    {- J0 W% K9 Q( `0 c$ ^* Q# I
  62.         * Y' q( y* Z: y* d# g
  63.         digitalWrite(kg, LOW);; s/ ?$ N- O- Q8 B
  64.         digitalWrite(de, HIGH);/ ^& P1 Y8 j9 p9 W& K  q7 c# |) m
  65.         Button1.print("off");
    # B3 O/ T; Q. B$ C' W% l" k" ?
  66.         Button1.color("#00FFFF");              //设置app按键是深蓝色* k& [3 }6 e' z9 V) K1 ?4 _
  67.         Button1.text("关闭中");8 `, i) Q; U' v; [( k- Y( }
  68.         BlinkerMIOT.powerState("off");
    ) D  ~! ]+ b# J/ j+ X5 J
  69.         BlinkerMIOT.print();
    5 f2 J; ^1 A, o0 S
  70.    }6 M. B% r  g. K& c) Y- l  L6 h
  71.        * y1 n, X  o4 x- \# {

  72. . a' m# i, x% a
  73. }
    1 j, C: [9 t$ l# k/ Z
  74. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++6 g2 V9 r  u, X% Q2 |/ j% @  q
  75. //*******如果天猫精灵有对设备进行操作就执行下面* T; o0 h1 w+ X4 c
  76. void aligeniePowerState(const String & state)
    * F6 n$ ^$ {: o& D" k
  77. {' i7 C1 k# i8 F. S3 }
  78.     BLINKER_LOG("need set power state: ", state);
    / m0 F1 ~) i6 ]9 g+ d3 f
  79.     if (state == BLINKER_CMD_ON)# I9 V: B) g" Z/ E  n
  80.     {: l) `  M; j3 }) \+ y
  81.         
    . N- y# W9 @( a) Q8 B
  82.         digitalWrite(kg, HIGH);
    " _1 M! o4 w: m$ s  \, l; U
  83.         digitalWrite(de, LOW);
    * i4 u: g6 l7 Q4 F( M
  84.         Button1.print("on");* N! y) y. [1 \6 V
  85.         Button1.color("#0000FF");              //设置app按键是浅蓝色; H4 i2 b) U0 P$ P; |$ F5 f: o3 J
  86.         Button1.text("开启中");9 D1 U$ r' y2 h# T
  87.         BlinkerAliGenie.powerState("on");
    ( q* q- E3 P+ S  `4 P* x! x
  88.         BlinkerAliGenie.print();: i( T% G/ G& m! t
  89.     }) c1 [1 e( S5 z) u' Q$ J
  90.     else if (state == BLINKER_CMD_OFF)6 n( g& J# E( T( @8 b  ^) ]* |
  91.     {$ L0 q/ T5 u4 r5 X7 B9 ~- ^
  92.         
    0 f  y  M: v' a) R' @: Q& k
  93.         digitalWrite(kg, LOW);6 ~1 n7 n3 Q  i
  94.         digitalWrite(de, HIGH);: R. b  @8 Y0 F8 H5 w1 Q4 U+ i( X. ~3 W
  95.         Button1.print("off");' o" k: Y; Z1 b- L: k2 B  z
  96.         Button1.color("#00FFFF");              //设置app按键是深蓝色, B: q. Y2 C: A' E: b
  97.         Button1.text("关闭中");
    ! X- M3 Z! _6 {5 C2 _0 k
  98.         BlinkerAliGenie.powerState("off");
    . J2 ^2 h4 ~6 y3 {
  99.         BlinkerAliGenie.print();
    $ a$ P  A* ?0 e6 |- q: z  l6 A
  100.     }1 e2 J9 e' z, }2 I. [4 q2 O/ m+ v
  101.         9 V' |5 ?$ n3 Q( H: N; @! C1 Z7 [

  102. 2 c5 d$ o0 [+ t
  103. }
    - y3 b2 L; p" G1 {, r
  104.   //*******app定时向设备发送心跳包, 设备收到心跳包后会返回设备当前状态30s~60s一次
    7 J6 p$ z. z: c2 U
  105. void heartbeat()
    6 N% O4 L  b# \  `# Y
  106. {
    / [; A2 G% D5 s5 L0 v- k5 Y/ {8 |
  107.   BLINKER_LOG("状态同步!");
    6 ?$ |3 t2 e' C/ @
  108.    if (digitalRead(kg)==HIGH)
    2 `/ b/ ~5 B" d$ j' g
  109.     { 3 B: ~# l/ Y) a$ h, a  {' o) z
  110.       Button1.print("on");+ H& P/ X' W8 [
  111.       Button1.color("#0000FF");              //设置app按键是浅蓝色
    5 g0 i4 i6 [+ E0 C" u( D+ m; p: S
  112.       Button1.text("开启中");( o/ }: x5 w/ j9 V) [: ?
  113.     }/ {) Z/ Y! t. B4 m/ A
  114.     else
    $ `+ O9 L4 g  ^
  115.     {2 S+ G; O( c3 }2 a0 k
  116.       Button1.print("off");
    3 [7 e6 |! ?  s6 l1 v# ~
  117.       Button1.color("#00FFFF");              //设置app按键是深蓝色
    + Q" U: ^% |0 x( K* \
  118.       Button1.text("关闭中");( w2 Z0 L5 W* ~. X
  119.    
    1 L+ ]. U4 e2 ^9 s+ F% k: a
  120.     }! F) j7 _( ^  Q* t' J1 s* H+ Y
  121. }/ f# o6 F+ C. V9 R( E' `+ r3 V
  122. //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++, y2 d! u) H7 X; k
  123. void setup()
    / s& w4 K9 k  F4 |  a; B  w6 Y7 W
  124. {
    ( ]0 O/ W5 z" n
  125.   // 初始化串口- z: u! Q$ \! x/ M  U( `
  126.   Serial.begin(115200);
    3 e' A" q, h5 m4 r7 g
  127.   delay(10);
    % u" y0 L% e- ?; v9 k" k1 \
  128.   BLINKER_DEBUG.stream(Serial);
    & U! V1 s9 K9 D* w% c( c4 g$ c& a
  129.   // 初始化有LED的IO
    # H; ]. e/ g# P: x  Y8 b
  130.   pinMode(kg, OUTPUT);                 ; R6 n9 o: E" y" D. O! D
  131.   digitalWrite(kg, LOW);//初始化继电器上电状态 " {" C* l( H. N  [( U
  132.   pinMode(de, OUTPUT);
    : `& G) N) }6 p. T' r5 S8 Q
  133.   digitalWrite(de, HIGH);& o+ {: |, W1 E: i5 g4 o: N
  134.   pinMode(key, INPUT);            5 n$ V1 O6 |1 s% j1 ~
  135.   Serial.println();/ x7 X, z. N5 z1 G- F
  136.   Serial.print("Connecting to ");. \/ S& r" Y" E- i8 Q- z& \
  137.   Serial.println(ssid);% I, U4 v9 o% P5 n
  138.   WiFi.begin(ssid, pswd);
    1 l5 H$ l7 p5 b6 H
  139.   while (WiFi.status() != WL_CONNECTED) {5 s6 g& T3 A6 D# ~
  140.     delay(500);
    5 L: h/ y7 q7 T2 u' F
  141.     Serial.print(".");, T% ~2 y! w! V, h( X+ \3 w
  142.   }& `1 a' B8 Y' D% R0 X% [) g3 ^
  143.   Serial.println("");
    % p) c) t2 j9 z. s+ B( v
  144.   Serial.println("WiFi connected");* w: ]* V$ l- l% f
  145.   server.begin();
    4 y: C& v8 \. V" u
  146.   Serial.println("Server started @ ");
    4 U9 w1 H6 s! X9 l* Z7 v
  147.   Serial.println(WiFi.localIP());; O* N9 H% ~- f$ u- z3 O
  148.   //打印出IP地址,后期可以制作显示器来外部硬件显示ip8 t  Q3 h; N! D. ^# n0 ^4 F2 e
  149.   Serial.println("To control GPIO, open your web browser.");: j# ?; H/ e9 [8 a' O& }& w
  150.   Serial.println("To set GPIO 0 high, type:");
    8 R( }- o: ]5 Y$ |/ X) ~+ e. e$ z
  151.   Serial.print(WiFi.localIP());
    5 v5 b4 O0 D; z5 S; z
  152.   Serial.println("/gpio/1");
    1 S, O! u2 b* f# n
  153.   Serial.println("To set GPIO 0 low, type:");) y! O* E! [% J' w1 t% `/ X) L
  154.   Serial.print(WiFi.localIP());' d5 t( U, Q( H1 C
  155.   Serial.println("/gpio/0");
    9 G/ p8 H7 B2 `3 d% x) T5 F
  156.   Serial.println("To toggle GPIO 0, type:");
    1 y# x! Z+ P4 h5 v6 h1 v! F
  157.   Serial.print(WiFi.localIP());- u* d. x4 W4 y- s
  158.   Serial.println("/gpio/4");5 i5 U# D* {" q8 w  Q
  159. $ T' p4 q7 M  z; @$ W
  160.   // 初始化blinker( I9 {+ e' a0 o' K* e7 H7 }
  161.   Blinker.begin(auth, ssid, pswd);# }2 m, a1 f9 b% j& q. w& ^: n6 G
  162.   BlinkerMIOT.attachPowerState(miotPowerState);              //小爱语音操作注册函数) F  p7 \( @/ y
  163.   BlinkerAliGenie.attachPowerState(aligeniePowerState);      //天猫语音操作注册函数9 k8 f& n& A8 L" z( ?7 E* J
  164.   Blinker.attachHeartbeat(heartbeat);              //app定时向设备发送心跳包, 设备收到心跳包后会返回设备当前状态进行语音操作和app操作同步。
    % v5 a! }9 K/ m: p! Z2 z

  165. ! T) {( |4 ~% C9 U% c2 L/ V
  166.   Button1.attach(button1_callback);             //app上操作必须的注册回调函数关联按键名“Button1”和判断程序“button1_callback) T4 ?' Q% E  u# {5 V; g
  167. }! C2 h# E: B1 ~1 w( d# _; w( u
  168. void dataRead(const String & data)
    6 S# Y) s3 e, R6 }9 K. r; h- N
  169. {# g) t6 P1 O$ O4 e9 Z
  170.     BLINKER_LOG("Blinker readString: ", data);
    9 n: ~% O7 A# u% N/ V. J  G" p& ~3 s
  171. ; D1 C9 `3 y( {
  172.     Blinker.vibrate();
    4 k# G8 d3 m( H8 ~' x
  173.    
      _5 r. L- d  g( U
  174.     uint32_t BlinkerTime = millis();0 A. x! C6 V2 @. k* M  R" J
  175.     " v$ r. F9 v* z: l
  176.     Blinker.print("millis", BlinkerTime);# C' W* }" S! P6 {
  177. }
    0 D# `. h% C- |) t
  178. void loop()$ G$ Y5 X+ g8 w* c
  179. {
    9 }. O- V8 V. j- p. A) v
  180.   Blinker.run();" D* a; G8 c9 u0 @
  181.   if (digitalRead(key)==LOW)2 t, \+ l  [  ?1 o* V% U) t1 `% @  P
  182.   {
    : m; S3 V% H* F2 I) r
  183.     Blinker.delay(200);. Y  b' t$ Y2 C5 F* M: b4 k( Z
  184.     if (digitalRead(key)==LOW)
    ) m- \4 i; e# t. r5 f) l
  185.     {& B/ O, l! [' `. u: I; G
  186.           if (digitalRead(kg)==LOW)% A8 U& {: f5 k9 I& U4 x  I
  187.        {# Y2 I& ~3 Z- Q" W( C: T
  188.             
    6 f$ X9 f3 C1 d; ]. h
  189.             digitalWrite(kg, HIGH);$ t/ w1 E$ m) e
  190.             digitalWrite(de, LOW);: j5 u" S# [" ]- u" F" U
  191.             Button1.print("on");/ u/ ~1 |- o: F  A( K
  192.             Button1.color("#0000FF");              //设置app按键是浅蓝色
    3 C' t3 R, C: e* V
  193.             Button1.text("开启中");0 E! G8 y  k6 X1 Q, x; S
  194.        }; q! }5 c( k5 I. u/ G
  195.        else if (digitalRead(kg)==HIGH)4 I# l( O6 l( S$ Q
  196.        {
    / o% C/ x# \7 m7 m
  197.             digitalWrite(kg, LOW);- \* F1 ~0 a5 l( E8 q, z9 e
  198.             digitalWrite(de, HIGH);
    # U9 u6 I2 l7 u9 y: K. E
  199.             Button1.print("off");1 r# Y+ L& W' R
  200.             Button1.color("#00FFFF");              //设置app按键是深蓝色5 _+ G- u& \0 V$ p* r$ b
  201.             Button1.text("关闭中");
    # o) C# A5 ^/ N( e
  202.        }2 o8 q3 i8 F( P+ q, s& G
  203.       }
    ' D% K3 }7 z6 _. o4 X5 l" W
  204.     }, ^% V, [* [2 r- J( O, S4 v1 n
  205. }
复制代码

' `/ j( ?$ l2 p$ k$ P+ P, s/ |! P) [, {
我没有用卖家给的码,我自己写了一个,参考我前面的文章最简单的8266天猫精灵控制开关,点灯、Mixly可视模块化编程 https://bbs.nasdiyer.com/thread-18755-1-1.html
+ q, z, P" |% Q& v7 d/ g& y3 ^% `6 _$ `" @# n. k4 U$ _5 X
把上面的2改成5,把高低电平对调一下就可以使用天猫精灵来控制你的这个插座了。我是把我的第一个插座放在了我的落地电风扇中了,当我慵懒的在沙发上刷着手机时候感觉有一点点热,我只要呼唤“天猫精灵,打开风扇”,就可以了。# H  Z3 M( m: r1 w

/ D( k4 q1 v; y7 S( d8 W( g  @& I. P# ^) O1 ~1 P

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
+ P0 G) V" w' J) O  ^买了几个   做工挺扎实的,但是外壳怎么拆啊  拿斜口钳拨了一个,   四个圆角的卡口根本没法正常拆 ...
2 @% B! P8 G& g' Z. y
大力出奇迹呀

1

主题

8

回帖

256

积分

中级渣柚V1

积分
256
发表于 2021-8-29 08:14:58 | 显示全部楼层
a467913252 发表于 2021-8-24 15:53
( m" M( U, d# u  z0 b  d买了几个   做工挺扎实的,但是外壳怎么拆啊  拿斜口钳拨了一个,   四个圆角的卡口根本没法正常拆 ...
$ x  Y9 J! V, `- C) v
昨晚拆了一个,废了老大劲,想和卖家说的无损拆下来,不拆个三五个积攒经验,基本不可能

2

主题

11

回帖

62

积分

初级渣柚V2

积分
62
QQ
发表于 2021-9-4 23:05:22 | 显示全部楼层
sevenup0719 发表于 2021-8-29 08:14
2 ~, i5 O; Y7 s- h7 L5 ]: A昨晚拆了一个,废了老大劲,想和卖家说的无损拆下来,不拆个三五个积攒经验,基本不可能 ...
% z3 e- _* ^# ^8 h2 R3 n4 A
你的搞定没  为什么我的根本没法烧录   连接不上,,用esp01s还没问题的
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-14 06:20 , Processed in 0.193117 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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