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

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

[复制链接]

11

主题

51

回帖

209

积分

中级渣柚V1

积分
209
QQ
 楼主| 发表于 2021-8-21 13:57:54 | 显示全部楼层 |阅读模式
本帖最后由 易记 于 2021-8-21 14:05 编辑 * p: I) Z+ E3 \; u- j
% G* O; k( D" p  A: B
最近玩ESP8266,想做个天猫控制开关。7 t/ R' J8 a3 Z3 j. K; }
但是我很懒,一个个配元件嫌麻烦,于是想着能不能淘到便宜的带电源板的模块,多倒是蛮多,一般都要20多块钱。2 i6 W- I" t3 f- {
还是闲钱上逛一下看,找到一个联想的国外版8266智能插座,价格才8.5元一个。有一点不足,就是只有三孔,要是五孔的就好了。老板说五孔杂牌价格一样也有货,晚两天发布。
0 K+ j& M" r- @. ^ QQ截图20210821125037.jpg
! l1 s9 T4 K$ C+ p4 X; I$ X, z5 o8 d3 ^9 g$ J

) @  E, i- B" g" L- P+ i6 B" d4 L问了一下店主,买20个一盒才包邮,想着20个还是有点多,买了5个,连运费47.5元。
7 t1 e( U% G( G6 b8 B9 M# l7 R& W) U& P. P
QQ图片20210821124517.jpg
* y6 M  O7 V9 y! w# T
9 ^1 X7 w# W% }% O% R7 Y* M" V

7 b3 {+ k+ k5 v* `. }# `
9 J* v( |" T' y) L
到手,当然是拆拆拆。
( T: R$ U: ]' w9 O0 i IMG_20210820_134104.jpg 8 O  r! f! d! D  q+ y$ A8 q
+ y1 [7 v' b- S, t8 X
8 m$ u" y- q7 \) |, Q9 f" @
联想的做工,还是感觉不错的,光这个继电器应该也要个7-8块钱。; p% Y) P8 ]0 Z/ I  e7 k
IMG_20210820_160634.jpg 7 @- H. H* q% L7 s8 d

- U) o2 @% T( A. s% k) r
+ M, N/ @* S  @' R: f
继电器是两组常开,感觉要是接电灯双控开关是不是有点麻烦的,不过用于插座是很安全,要断二条线都断开。2 C( ?" W$ q" O$ w( S/ o! j0 H
QQ截图20210821133707.jpg
( v  g/ h  w$ s: ]
! {" o9 L- U- ~! v1 r
IMG_20210820_134114.jpg
7 X% c: b% c3 w7 Z- D

) H1 j1 Z- A. u4 K, F: B电源芯片
9 R' W+ p9 s8 C6 c! u1 d. B$ y  w; G* k

0 b* c- h# h# ?8 L$ s8 M
# ^- C/ c6 n& }7 b- q0 e9 I
有一个按钮,按钮有二个蓝色LED灯
. F4 V  `/ }& J7 S% Z) \- g IMG_20210820_134157.jpg
" M$ c! i% @! [& [7 p( u0 X  z7 W8 o, S  e5 S/ r
, A" u" ?7 L8 J  m
8266
5 U, L# `& h$ ?9 P/ b IMG_20210820_141913.jpg
; Y$ j, M/ p: a/ W0 o* W( h
, I4 r% P! L* c0 _& I; g
9 w2 p. q" `3 e

* B! O# y4 s+ d

! c+ t; r. E! I4 g: N& T接下来就是刷机了,版子上面都预留测试点。5 X) H% A/ u! Z! j
接线比较容易,上面都有标示,GND,3.3V,TXD-RX,RXD-TX,还有一个就是IO0接地后刷机。  u. y5 v; v* e' A6 G5 D
未标题-1.jpg
, a' k, m$ @. C' t# i3 Q
注意RX这个点,就是3.3V边上的这个点,焊盘设计的就点问题,电烙铁热一点或是焊的刷机线过粗的话,容易掉焊盘。
3 `* G$ m: R3 A' O! p! E要是掉了就只有一个过孔了,要是焊不上,只能再拆开接在另一面,所以为了避免不必要的麻烦,请注意一下。

1 V& K- _, Z2 l9 o% U" V) P2 B7 e% z4 s

5 F/ B& S( K: \
; e( ^3 O7 T1 p/ g! |, G. O$ Y
7 X+ u- ]7 E, m5 W( N
& N1 \, {+ U1 }2 V& H. R
    5号脚位是继电器输出( v- |' H/ U& B4 D
    12号脚位是灯输出
) d. r1 A8 v0 m0 `' T: h) T4 ]    4号脚位是按键
: q0 R+ \: x; r3 j
4 `1 o5 C: j: ?4 T
7 T8 V% [1 n4 W, B5 [* P
4 p. _! _  U) e; J! P! R
& e. n1 a; d% u4 N) W
卖家有发一个源码,如下
  1. #define BLINKER_WIFI                    //官方wifi协议库
    0 B/ }7 o' a1 i  q! I3 y
  2. #define BLINKER_MIOT_LIGHT              // 设置小爱灯类库
    - ]: `2 B1 x5 f$ c5 n. P  ^
  3. #define BLINKER_ALIGENIE_LIGHT          // 设置天猫灯类库7 i  w  Q& Q) D, M9 l* i
  4. #define BLINKER_PRINT Serial            //串口协议库. Q1 J0 I0 V6 V5 [3 u, V- N
  5. #include <Blinker.h>                    //官方库* h/ e8 v, c1 M) N7 M2 A
  6. #include <ESP8266WiFi.h>                //官方库+ G. O5 e1 ~7 i1 e4 `' Q- |
  7. WiFiServer server(80);                  // 服务器端口号
    / ?  Z) Z0 T& |* i0 D  l

  8. - M; `) v9 t1 I, \
  9. char auth[] = "c4942fb1d5e4";     //设备key2 R8 K8 f- m  s& k9 ^/ T& y
  10. char ssid[] = "wanboshi";     //路由器wifi ssid
    ' q2 b* m- J- C6 |8 F9 K
  11. char pswd[] = "1365662999813586348220";     //路由器wifi 密码
    & H& t1 O9 Z" O; t

  12. ' X6 _. k2 I$ ?# p- G7 G9 y2 M6 V
  13. bool oState = false;
    7 y$ k" I/ O# }3 Q# c
  14. 7 C) G! D7 N4 r. {2 R- Y( }: R
  15. int kg=5;//继电器输出
      J* @1 g. O2 b% G# G3 y
  16. int de=12;//灯输出
    5 ^) y% F' g0 @/ t
  17. int key=4 ;//按键
    ) K" l' J8 L2 U4 R
  18. //*******新建组件对象: H# Z7 P' z" X7 o5 J5 X1 M) \1 o' }

  19. ( s" q( o9 e- R( h1 ^! w
  20. BlinkerButton Button1("btn-abc");              //设置app按键的键名
    $ E; ~4 K% `0 L* J; H/ l  U
  21. //*******app上按下按键即会执行该函数app里按键
    6 i, L2 I# ?) l) y: i& Y
  22. void button1_callback(const String & state)- T/ _* U" j. @* {( k
  23. {6 [. l% s9 j& I' k' v
  24.    if (digitalRead(kg)==LOW)
    2 ^' G3 f4 v# U" |" ]
  25.    {$ C- b$ g% t1 ]9 ^- O& k/ _
  26.         BLINKER_LOG("get button state: ", state);$ a- G5 p: b! \; b5 }: P% f
  27.         digitalWrite(kg, HIGH);
    3 n; [; ~' S0 J
  28.         digitalWrite(de, LOW);$ ^% _0 E5 E7 g/ m1 R$ i. \
  29.         Button1.print("on");
    : v' J" a+ D3 B8 F
  30.         Button1.color("#0000FF");              //设置app按键是浅蓝色
    ) i" u. i; P# p! V4 z; I
  31.         Button1.text("开启中");$ O( o" M* C+ D+ X5 ^8 P
  32.    }
    % q9 e0 {7 O7 [0 i, _
  33.    else if (digitalRead(kg)==HIGH)( B( l1 D6 l! Z# \  w" s
  34.    {
    ( I, |4 {) z% x6 O1 K  o
  35.         BLINKER_LOG("get button state: ", state);; x" E: A( H. G
  36.         digitalWrite(kg, LOW);7 P( Z" q% Z9 m( W8 D# E- v
  37.         digitalWrite(de, HIGH);
    8 l0 E! i6 e* z6 B! u# r
  38.         Button1.print("off");
      q+ s9 f9 q8 E! z/ ~
  39.         Button1.color("#00FFFF");              //设置app按键是深蓝色
    5 E0 e: m3 p: K: D
  40.         Button1.text("关闭中");
    " q! B- o! {1 c$ a- _5 d6 F
  41.    }
    ' c6 X- F7 m: ~; I
  42. }  ]( H8 c3 m/ ^) H$ i% `  V
  43. 0 l) |- e$ g0 ]6 M' y; V( B7 t
  44. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++2 C1 u7 T1 V# S" c3 w! X
  45. $ {+ D0 O; U8 [
  46. //*******如果小爱有对设备进行操作就执行下面' x" ]( M" E- a; n
  47. void miotPowerState(const String & state)
    0 q9 ~( n/ k5 y. S: M
  48. {
    9 D4 ~# `; Z$ B. u+ {
  49.     BLINKER_LOG("小爱语音操作!");              //串口打印1 K. S/ |( [( N! U& M
  50.     if (state == BLINKER_CMD_ON){
    1 ]) ~% Y) Z  o
  51.         2 ?! J6 g- c4 z8 `8 y! y; f! J
  52.         digitalWrite(kg, HIGH);
    / z/ u7 S5 R( G
  53.         digitalWrite(de, LOW);
    4 ?. ^; L; W, X8 c4 X, K% I
  54.         Button1.print("on");
    * J  u) c/ G" Z8 Z& y% l) r
  55.         Button1.color("#0000FF");              //设置app按键是浅蓝色
    & H" ~' H' a; Z6 {7 e2 S3 ]. s
  56.         Button1.text("开启中");
    + x, N7 }5 k. R% [  u2 m2 j( f
  57.         BlinkerMIOT.powerState("on");2 `5 C6 Q$ `! _6 E+ y( n, f
  58.         BlinkerMIOT.print();
    / `0 t  z4 L7 F. Y: E, Q. D: ]
  59.    }% H) ~9 e! d+ j% v' R2 N! }5 A3 h9 v# ^
  60.    else if (state == BLINKER_CMD_OFF)
    & S- z' R2 P* F2 V9 x' _
  61.    {7 g6 s) L" ?! ]8 d
  62.         * p3 K( y: m/ k! h) ^3 X
  63.         digitalWrite(kg, LOW);* m2 u* F. t7 Z' d0 r
  64.         digitalWrite(de, HIGH);7 Z- F- o* N$ r3 @
  65.         Button1.print("off");
    5 S0 ]! W! }$ m+ l
  66.         Button1.color("#00FFFF");              //设置app按键是深蓝色/ P6 K! u: \6 ^8 @; @; ]
  67.         Button1.text("关闭中");
    , f" I+ p$ ]/ g
  68.         BlinkerMIOT.powerState("off");
    : ~4 b+ t. v- k; U9 h5 d) m2 b
  69.         BlinkerMIOT.print();4 D6 ~6 Z: G& I% A/ B
  70.    }
    0 b8 f  T' S% G$ ?. E0 F
  71.        * V% v2 |3 }0 D$ N2 `. G% c0 I' a
  72. 6 z! h3 ]: Q' k
  73. }0 [. X0 y# ~/ E, i( g1 |: l6 z; j
  74. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    % C  U  D. t$ X! T, x6 z8 a
  75. //*******如果天猫精灵有对设备进行操作就执行下面: D# I7 m. q. C! D* B
  76. void aligeniePowerState(const String & state)
    0 G4 b% ^% X4 e6 a9 L1 c  m
  77. {" i) B, y9 o' Z
  78.     BLINKER_LOG("need set power state: ", state);& w3 d4 u+ a3 j4 h
  79.     if (state == BLINKER_CMD_ON), Z& G3 u. u2 U8 q4 L+ F3 J
  80.     {) y2 ?+ E; j& R7 j" d- ^# \
  81.         ' V7 o& b* Q8 W, v$ M6 L6 o6 N; _
  82.         digitalWrite(kg, HIGH);: t7 J! f5 J" N+ @3 ]' Q
  83.         digitalWrite(de, LOW);* P# f+ U- u6 z& t* r- N, s
  84.         Button1.print("on");
    6 h+ x$ g' n" D  u1 u% O
  85.         Button1.color("#0000FF");              //设置app按键是浅蓝色
    ! f5 p! B3 I( i; T" p6 u
  86.         Button1.text("开启中");
    : Z) C# o: R- x7 A' ~/ K
  87.         BlinkerAliGenie.powerState("on");
    6 d2 Y0 h# Y, T; C( E: ?6 {8 q' N
  88.         BlinkerAliGenie.print();, c# Y- T6 ~' L: ]  S5 p4 n" h
  89.     }5 P0 V7 i: v! }7 k; O1 s
  90.     else if (state == BLINKER_CMD_OFF)
    " k. [6 Q: \4 R' D2 x; \* e, C$ Q
  91.     {
    + X: |; m. f0 A7 D7 [1 M" g
  92.         
    8 ?* }, z% Y1 h& ?% V
  93.         digitalWrite(kg, LOW);7 j4 {" ]+ r$ h3 ]' w( k, r
  94.         digitalWrite(de, HIGH);" _4 R2 Q. Z% U) C7 e9 x* ]
  95.         Button1.print("off");
    ; z+ S! S4 u8 ]' V0 P( g
  96.         Button1.color("#00FFFF");              //设置app按键是深蓝色6 T6 w' d+ i0 C
  97.         Button1.text("关闭中");: y! G- a$ @( t, L9 [
  98.         BlinkerAliGenie.powerState("off");
    ( s: z7 V& B: n: N. j- E
  99.         BlinkerAliGenie.print();# l* T% D3 W6 G/ [4 B3 d$ C
  100.     }
    / b) B. z0 \- D# h5 g
  101.         9 x' ?6 p. I% g, ]7 k# N

  102. + @) w% J5 y" {  |. q2 p
  103. }
    - c* l6 n" O3 q$ J) G  u
  104.   //*******app定时向设备发送心跳包, 设备收到心跳包后会返回设备当前状态30s~60s一次' V7 A7 m1 s; W/ U: K& s
  105. void heartbeat()' Y# o7 f8 k, i2 F! \
  106. {
    3 i- e8 {% v# p
  107.   BLINKER_LOG("状态同步!");
    $ b9 D5 s' I) }' c
  108.    if (digitalRead(kg)==HIGH) : c" H" c" y9 w( X9 d1 B
  109.     {   M( w" c) O0 Z0 r
  110.       Button1.print("on");
    5 r1 H/ R7 Z# r. _1 N# X! K
  111.       Button1.color("#0000FF");              //设置app按键是浅蓝色
    . o4 X* Z( f' d
  112.       Button1.text("开启中");! `) _: W. W6 d; G2 |( ^0 I
  113.     }) j* ?* B" N8 J1 C
  114.     else
    8 Z1 b+ a  {+ r9 f0 G
  115.     {
    ! t. @8 M) Z3 D( x+ D0 t
  116.       Button1.print("off");. z5 h. W. w+ z2 Z* a- o' {
  117.       Button1.color("#00FFFF");              //设置app按键是深蓝色
    / ~7 B0 g# K4 E+ `% d
  118.       Button1.text("关闭中");
      \6 X7 O/ P) i% |8 L1 V6 ?9 w2 ?
  119.    
    # q- O; M& ?  U% g1 U1 g4 y
  120.     }9 N) r/ i3 i: w, j) i
  121. }) c- q5 A. g# d4 z! O! L
  122. //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    0 |- M. o# z, |7 D! w! W
  123. void setup()" ~  G1 {: B/ j- d9 ?- r' i
  124. {. @) |, _, S" S: ]. K0 x
  125.   // 初始化串口* ]8 @( ?0 B% \
  126.   Serial.begin(115200);
    # R. S8 r  i( C& e3 d: J
  127.   delay(10);  D4 \! x( ^+ v% {, S
  128.   BLINKER_DEBUG.stream(Serial);
    + \$ e  K$ n) _: I
  129.   // 初始化有LED的IO8 d" Q& k" r1 V. L  `
  130.   pinMode(kg, OUTPUT);                 
    " m3 q- ?/ b7 n0 r( I
  131.   digitalWrite(kg, LOW);//初始化继电器上电状态 / ~: M. [4 S8 ~
  132.   pinMode(de, OUTPUT);: p- E3 Q4 v( k- A: n4 o
  133.   digitalWrite(de, HIGH);
    6 Z: N# h) _% e) o8 `1 E8 I
  134.   pinMode(key, INPUT);            2 F+ L/ A0 d( c! a2 N
  135.   Serial.println();
    3 L0 d$ P- v0 W% a9 \0 W! S5 {
  136.   Serial.print("Connecting to ");" _0 M! C' i* n* A; ~0 q6 P) M) u
  137.   Serial.println(ssid);; z: E/ z: O' j( ?
  138.   WiFi.begin(ssid, pswd);
    + m0 n$ y3 `# D& Z! g3 w
  139.   while (WiFi.status() != WL_CONNECTED) {/ N% [5 q- u. t! k0 f1 i
  140.     delay(500);
    - ?# ?! w' g. g' h4 w
  141.     Serial.print(".");7 k1 T6 j4 h$ }
  142.   }
    . j7 C. n) d0 ?/ o' F
  143.   Serial.println("");1 X: N" L8 p0 e# {
  144.   Serial.println("WiFi connected");
    1 t% K4 g# W" Q, }/ K( M
  145.   server.begin();$ Y' j$ L& e1 p& q* Z) O+ N
  146.   Serial.println("Server started @ ");& C( k0 Q) m* g  o
  147.   Serial.println(WiFi.localIP());# ~7 T# [) e" H, j9 E  N- A
  148.   //打印出IP地址,后期可以制作显示器来外部硬件显示ip
    - O! e+ G3 q8 l' m8 r0 m5 ~& S
  149.   Serial.println("To control GPIO, open your web browser.");
    6 w4 w3 e3 d% g7 F" c0 Z. A
  150.   Serial.println("To set GPIO 0 high, type:");
    7 m9 t* Y9 D7 h1 c. P# {; [8 |) A$ W: q/ n! B
  151.   Serial.print(WiFi.localIP());9 I/ a" E$ l7 ^5 e! G
  152.   Serial.println("/gpio/1");0 o1 Y1 Y$ g0 M2 u4 j
  153.   Serial.println("To set GPIO 0 low, type:");
    2 O! T- {/ k* `$ Y# h" g' ~( ^
  154.   Serial.print(WiFi.localIP());
    , o4 ?0 v/ L# ^' x! ^
  155.   Serial.println("/gpio/0");- N/ O; M4 A" }0 U3 w
  156.   Serial.println("To toggle GPIO 0, type:");& S* m- R; T; v* O
  157.   Serial.print(WiFi.localIP());2 S. W8 ]1 D" B
  158.   Serial.println("/gpio/4");* \0 S. i, I/ K8 A. g4 T# B
  159. . }7 x/ ?$ g( B6 m
  160.   // 初始化blinker
    ( j2 w7 W& V8 w6 H. l
  161.   Blinker.begin(auth, ssid, pswd);6 K2 f- E7 }- u! N" V
  162.   BlinkerMIOT.attachPowerState(miotPowerState);              //小爱语音操作注册函数
    + @9 O9 n0 X( H+ s  i4 U! F
  163.   BlinkerAliGenie.attachPowerState(aligeniePowerState);      //天猫语音操作注册函数
    1 C+ e2 f: R) p1 \$ w8 o' r, i
  164.   Blinker.attachHeartbeat(heartbeat);              //app定时向设备发送心跳包, 设备收到心跳包后会返回设备当前状态进行语音操作和app操作同步。; K8 P( ?3 M% c) M4 I/ Z; B
  165. , x5 b8 x6 B( z+ I% x. x/ _
  166.   Button1.attach(button1_callback);             //app上操作必须的注册回调函数关联按键名“Button1”和判断程序“button1_callback3 f. m6 g, G  M
  167. }2 G* j% Z! V. Z4 L5 M
  168. void dataRead(const String & data)8 i+ \- ], d" p8 T
  169. {
    + o3 I6 E! G* x2 F" w
  170.     BLINKER_LOG("Blinker readString: ", data);. z3 d$ w: W. R+ b

  171. / V% F* J5 J% s% d9 v7 C0 X% S
  172.     Blinker.vibrate();
    ' k4 o; k; o7 {' a* Q
  173.    
    & ^' I# W. Q- C
  174.     uint32_t BlinkerTime = millis();
      e/ m$ [+ W) E
  175.    
    - M5 b, l; a9 u/ o9 W
  176.     Blinker.print("millis", BlinkerTime);+ P& ]/ `/ X6 k' ~0 E7 h
  177. }1 U7 b; M, R/ p& u$ d( O
  178. void loop()
    / i  x+ z  m7 o& Q! m! t0 d
  179. {0 T4 ^9 s4 f( i" o& q" B, K* n
  180.   Blinker.run();
    $ ~, W4 ?. ]  N8 D6 u1 E" G
  181.   if (digitalRead(key)==LOW)$ Y+ h5 A2 f) [7 o6 G/ q
  182.   {" I# t* O/ @# F% Q  N
  183.     Blinker.delay(200);
    8 X9 U) Z. j+ j! r
  184.     if (digitalRead(key)==LOW)* C, ?- l6 V, b/ p
  185.     {
      `5 ]1 D. a1 R
  186.           if (digitalRead(kg)==LOW)6 e# g  Z9 z- T0 e* t* {, [
  187.        {
    # P. s* G0 |, Z- C  l: V+ @+ V
  188.             ) R3 X7 K3 d+ T5 U( W
  189.             digitalWrite(kg, HIGH);. L# d6 l$ K0 p& ]
  190.             digitalWrite(de, LOW);& `, }$ d% q$ k3 V, B  D! w; _2 Q
  191.             Button1.print("on");
    4 l! L, I, X9 s; M
  192.             Button1.color("#0000FF");              //设置app按键是浅蓝色
    , H- s8 j, O8 [+ Q4 h
  193.             Button1.text("开启中");
    ) |" x+ b& c0 Z) m4 y) k. a& C0 ?, ]
  194.        }1 W! x* i' u: k
  195.        else if (digitalRead(kg)==HIGH)
    1 {1 l4 Q. c* [* D4 Q2 b
  196.        {
    ; x6 i- v9 h1 H1 R' i' h
  197.             digitalWrite(kg, LOW);' {' _* b; ~0 B, B) v
  198.             digitalWrite(de, HIGH);
    + H, i1 U$ `; D8 U
  199.             Button1.print("off");, v! i, |5 ^& T2 @$ [! z7 `; ~( D
  200.             Button1.color("#00FFFF");              //设置app按键是深蓝色8 l$ m3 n; n7 i
  201.             Button1.text("关闭中");! I$ e/ o) r# i$ @) w- b
  202.        }7 e  f- \+ l9 q$ t, X1 v0 O9 g/ e
  203.       }) n6 Q. a2 X) }1 s
  204.     }) L& z2 T! j4 ?& u
  205. }
复制代码

$ |) Y+ t& k4 x) t& D5 i% L
. v% A8 `$ T. k4 g我没有用卖家给的码,我自己写了一个,参考我前面的文章最简单的8266天猫精灵控制开关,点灯、Mixly可视模块化编程 https://bbs.nasdiyer.com/thread-18755-1-1.html2 H  t% w) W2 H1 V' y! |, ]
4 ~: n8 [- o* w! a
把上面的2改成5,把高低电平对调一下就可以使用天猫精灵来控制你的这个插座了。我是把我的第一个插座放在了我的落地电风扇中了,当我慵懒的在沙发上刷着手机时候感觉有一点点热,我只要呼唤“天猫精灵,打开风扇”,就可以了。' I& {3 e7 L- U' M  v) {; k

. e6 r; x- u' e' a8 e2 z
# {& S- J" s4 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
9 }2 B0 S) E# {' Y3 Z买了几个   做工挺扎实的,但是外壳怎么拆啊  拿斜口钳拨了一个,   四个圆角的卡口根本没法正常拆 ...
# [/ d8 ~" E2 X/ @3 b
大力出奇迹呀

1

主题

8

回帖

256

积分

中级渣柚V1

积分
256
发表于 2021-8-29 08:14:58 | 显示全部楼层
a467913252 发表于 2021-8-24 15:53* F% L6 j6 e# m
买了几个   做工挺扎实的,但是外壳怎么拆啊  拿斜口钳拨了一个,   四个圆角的卡口根本没法正常拆 ...

# z  L" A- h4 O: J- W2 G昨晚拆了一个,废了老大劲,想和卖家说的无损拆下来,不拆个三五个积攒经验,基本不可能

2

主题

11

回帖

62

积分

初级渣柚V2

积分
62
QQ
发表于 2021-9-4 23:05:22 | 显示全部楼层
sevenup0719 发表于 2021-8-29 08:14
1 b6 l- J& m3 g+ U8 ~昨晚拆了一个,废了老大劲,想和卖家说的无损拆下来,不拆个三五个积攒经验,基本不可能 ...
6 P. P* d+ g& I5 M- e: x9 q
你的搞定没  为什么我的根本没法烧录   连接不上,,用esp01s还没问题的
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-2-3 17:59 , Processed in 0.361224 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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