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

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

[复制链接]

11

主题

51

回帖

209

积分

中级渣柚V1

积分
209
QQ
 楼主| 发表于 2021-8-21 13:57:54 | 显示全部楼层 |阅读模式
本帖最后由 易记 于 2021-8-21 14:05 编辑
$ e8 `! y! Q( Z* v' h) {( i0 x  M. U7 p. x; \
最近玩ESP8266,想做个天猫控制开关。, G% u* ]0 p8 ?7 b) o: Y
但是我很懒,一个个配元件嫌麻烦,于是想着能不能淘到便宜的带电源板的模块,多倒是蛮多,一般都要20多块钱。2 q7 h7 J- o  V' J8 m. ?/ Q
还是闲钱上逛一下看,找到一个联想的国外版8266智能插座,价格才8.5元一个。有一点不足,就是只有三孔,要是五孔的就好了。老板说五孔杂牌价格一样也有货,晚两天发布。
& A; V% u8 B4 A3 f3 P6 p  [ QQ截图20210821125037.jpg 2 _# B. {7 ]( f

$ ]7 O) ^; \+ x; r! e+ Y

* S; {$ |: D# ]" D; d. \问了一下店主,买20个一盒才包邮,想着20个还是有点多,买了5个,连运费47.5元。
; I+ f0 d# B+ d# ?( n% `
; l# V2 o" ~0 v  }2 N5 q QQ图片20210821124517.jpg
8 I9 m1 q- I& h8 Q# N6 U* s( F! {

# r' ^: |+ ?8 c
" M; v! D# ?( M, p! `; s& ?
: v; Q7 |# h( |
到手,当然是拆拆拆。
1 y1 G3 `/ J& L* _+ X IMG_20210820_134104.jpg 1 h: M. L/ D, h7 |
. M) s# E2 ?+ \+ y( U

$ `8 ]. ]: E1 ^; I6 R) h, u* }8 ?7 }联想的做工,还是感觉不错的,光这个继电器应该也要个7-8块钱。
4 @5 y' K5 o6 G IMG_20210820_160634.jpg
2 A: I" d% y( z! j$ C! Z1 l
9 A, _; q) n5 O( Y, }$ j; A7 q  p) }
. _, e& C. \- i& S% f
继电器是两组常开,感觉要是接电灯双控开关是不是有点麻烦的,不过用于插座是很安全,要断二条线都断开。
7 `* t% y1 I+ {: r# j QQ截图20210821133707.jpg 5 @0 g' v# |2 f4 b

! ]9 Q4 D+ `1 |6 L* l9 s- ~* a( { IMG_20210820_134114.jpg
: b4 u' [$ U, q  F) _

6 h% Q- s+ q1 R电源芯片
8 g( y9 W0 B  x" e! k" V$ v  ?& ?; |$ h7 t9 v
& p" w- C& k. {

( |8 A9 i/ ^- M8 H! @有一个按钮,按钮有二个蓝色LED灯7 o% \5 d9 K# r; b7 N
IMG_20210820_134157.jpg ' x! p7 K  e- v

5 z' \! n1 u" t4 Q
! E$ ~- y& `3 |. K. |. v* a% O! N& M) K
82663 v) J9 X$ t$ N6 _8 c' i
IMG_20210820_141913.jpg
: q' Z' M) o" w  M6 {0 m$ ~' j: b( }% e
9 m+ c( I0 i, A7 Y
) f  ]' k) C$ {! b% j
. H) J2 r& K" L3 l% a9 P. w+ c
接下来就是刷机了,版子上面都预留测试点。: V* X4 _6 x$ C( }  m" c
接线比较容易,上面都有标示,GND,3.3V,TXD-RX,RXD-TX,还有一个就是IO0接地后刷机。
- H! c$ l- u( {' I- a! y 未标题-1.jpg
1 _6 D! h- i# D* T
注意RX这个点,就是3.3V边上的这个点,焊盘设计的就点问题,电烙铁热一点或是焊的刷机线过粗的话,容易掉焊盘。; B5 J! [' Z! n0 B0 T
要是掉了就只有一个过孔了,要是焊不上,只能再拆开接在另一面,所以为了避免不必要的麻烦,请注意一下。
& r' i) A, H, V- V5 I# ^1 a
5 k$ S0 A# g7 s- u' x# a8 s
4 z7 d; m+ V4 v

1 Y1 X. V( f3 C# c- H
4 b) J5 U) h0 W8 K
- n6 g7 |+ D4 V+ d+ i. {) B6 p
    5号脚位是继电器输出5 R! {; H  m( |6 b: ?) O
    12号脚位是灯输出' F3 M7 \* E, G1 K0 z
    4号脚位是按键
% ~( Z+ j$ R* a

0 K: `8 I0 h0 u7 Y! m" H% U

! z$ Z' Z( b: X4 w1 ~: t  {4 n
1 _/ n7 E) {7 q+ Q9 ?; c1 R( [& @  L
8 E* M# M) D& {% i
卖家有发一个源码,如下
  1. #define BLINKER_WIFI                    //官方wifi协议库# e* I( {- F. s/ Q# w
  2. #define BLINKER_MIOT_LIGHT              // 设置小爱灯类库, z/ x9 t! V- c( [
  3. #define BLINKER_ALIGENIE_LIGHT          // 设置天猫灯类库2 `1 w) Z8 ^, c+ I+ z9 I. T+ ]. D
  4. #define BLINKER_PRINT Serial            //串口协议库; Q) Y6 ?0 \% F6 t
  5. #include <Blinker.h>                    //官方库+ W$ n, C4 j. g8 D
  6. #include <ESP8266WiFi.h>                //官方库1 Y7 M5 a* |- P8 {) O. O
  7. WiFiServer server(80);                  // 服务器端口号
    - R+ \" k) ^2 h

  8. / u: ^. A; j  Z' o
  9. char auth[] = "c4942fb1d5e4";     //设备key
    + [  ~/ A/ p) A7 W
  10. char ssid[] = "wanboshi";     //路由器wifi ssid
    2 d9 ^8 G9 ]& w$ x$ K# k; b! A9 B# c
  11. char pswd[] = "1365662999813586348220";     //路由器wifi 密码
    - x( V1 x1 X. y3 i8 R

  12. 0 \: l3 H7 I9 |
  13. bool oState = false;( a& `8 I! L" m$ j) s. D
  14. 3 a. M2 j( j( M+ t7 {) M- P  A/ r' G
  15. int kg=5;//继电器输出
    + u& G' {* G( O8 X& a
  16. int de=12;//灯输出- N* o& t- x. N* v+ T' z
  17. int key=4 ;//按键
    3 u5 J( n# N" [9 v! N: T: v0 L
  18. //*******新建组件对象2 |! M9 E. h% G: m, z; \% y1 Y

  19. 8 T% Q7 d; W, d0 a1 r
  20. BlinkerButton Button1("btn-abc");              //设置app按键的键名; M/ Y* v, c! S: \
  21. //*******app上按下按键即会执行该函数app里按键( L) {; D; G& a! }1 h  n1 o3 F
  22. void button1_callback(const String & state)
    5 n2 O: c* p8 L: n& f7 |/ s' [
  23. {& ]" ]/ d& K9 y3 s9 [/ ]4 g  l8 R
  24.    if (digitalRead(kg)==LOW)
    ' M2 {3 {+ \/ i
  25.    {3 Q' |& Y4 d  `
  26.         BLINKER_LOG("get button state: ", state);
    * E+ d! h7 X$ y& k# {% S3 ?* r
  27.         digitalWrite(kg, HIGH);
    $ O! C$ I6 X9 k% e" c) ]/ ?
  28.         digitalWrite(de, LOW);
    9 q$ C: `- q# X+ D+ E$ w4 ?/ d& U" i# R
  29.         Button1.print("on");
    % i; }" j% Y& A: L( A
  30.         Button1.color("#0000FF");              //设置app按键是浅蓝色% a6 c7 p1 t2 L
  31.         Button1.text("开启中");
    7 o; ^/ R0 ^0 ?. I: U
  32.    }& W* s0 W" m$ q9 S
  33.    else if (digitalRead(kg)==HIGH)- z6 u+ P8 |4 b# h8 G& u  U
  34.    {
    ; p8 [9 y0 @0 i- o. @9 ?
  35.         BLINKER_LOG("get button state: ", state);
    1 f( j% K* {! q# k3 O: p
  36.         digitalWrite(kg, LOW);
    # l% ?4 b& G5 U: X( h
  37.         digitalWrite(de, HIGH);- y) p* L: [7 D  I
  38.         Button1.print("off");& D4 U, O5 i8 X# ?7 `
  39.         Button1.color("#00FFFF");              //设置app按键是深蓝色
    ' X2 Y; t# a: d2 L
  40.         Button1.text("关闭中");
    6 T' n, T. b( C0 i; a- g
  41.    }
    $ u! T6 v5 n" g" s' ]8 j* l  f  [+ e
  42. }/ v2 B, e. G' Q! k. }: u

  43. 4 e; P( b5 }+ u  W$ P
  44. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++6 B& ~+ B5 z6 K

  45. - v7 U5 H7 x$ z4 K/ u! \. i
  46. //*******如果小爱有对设备进行操作就执行下面. X$ [: v# S4 S. _  {% t$ c
  47. void miotPowerState(const String & state)
    : ^/ q  h1 D0 `) L
  48. {
    / I* N: f' \- X4 x5 x- d% x7 v5 [8 E
  49.     BLINKER_LOG("小爱语音操作!");              //串口打印
    7 G1 J& M. ]+ _" o6 i
  50.     if (state == BLINKER_CMD_ON){
    7 H) ~) Q6 @7 H# C, \
  51.         1 ~/ E3 O$ D2 W# i" t" I, f
  52.         digitalWrite(kg, HIGH);
    , ]$ f7 \0 Z  F3 N6 D- t1 i
  53.         digitalWrite(de, LOW);' O, g! \" m" T8 U
  54.         Button1.print("on");
    + C6 \. T+ }# E* T) z0 [
  55.         Button1.color("#0000FF");              //设置app按键是浅蓝色
    " M! w4 r0 E; q& [: A4 A/ V# G
  56.         Button1.text("开启中");
    . S% Y6 C% Q- p' G# ~$ |
  57.         BlinkerMIOT.powerState("on");
    ' X8 z# i" {$ M4 ^8 E( ^
  58.         BlinkerMIOT.print();
    ) y# J  v1 n1 W3 ]! k0 ?- i
  59.    }! R% q, l6 F2 J- t6 `$ x' D
  60.    else if (state == BLINKER_CMD_OFF)
    ( P4 i+ \( E5 @9 I
  61.    {. ?: Z0 w3 q- E6 M4 @* C
  62.         
    0 m7 s$ G& D  J2 q
  63.         digitalWrite(kg, LOW);
    0 T8 L; T3 j% q6 y
  64.         digitalWrite(de, HIGH);5 I, M( X5 j, n) l: g
  65.         Button1.print("off");; Q8 L/ d% Q4 j$ T+ c, h6 `8 k
  66.         Button1.color("#00FFFF");              //设置app按键是深蓝色
    ) H, @1 g+ u: Y
  67.         Button1.text("关闭中");5 ~9 T* [! Q* J
  68.         BlinkerMIOT.powerState("off");& x2 x! e! q; J2 x* k
  69.         BlinkerMIOT.print();
    7 F* {& i* C4 V, n1 D  l8 W
  70.    }
    " ~1 |$ T7 o" V# G
  71.        ! l: H% Y1 o5 v1 m
  72. 7 d! `, b7 s/ W, j; B. m
  73. }) d: f* O. s  T5 d2 l7 ?7 q
  74. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++$ C5 r* B9 J" r" h: I0 {, _
  75. //*******如果天猫精灵有对设备进行操作就执行下面
    5 K& Q/ U+ [" l/ Y. e
  76. void aligeniePowerState(const String & state)2 s) {* P3 y5 v' N# G
  77. {. d4 \" s$ ^! K  t; b) T4 F8 ]# v
  78.     BLINKER_LOG("need set power state: ", state);
    . U7 t, ]8 r/ _5 b7 l- D9 M4 i
  79.     if (state == BLINKER_CMD_ON)
    6 J" f1 ]* M( a' U) r5 a3 d
  80.     {+ q, [' g$ }. z1 X7 O( @# z
  81.         " ~# d( z1 [( H+ J, p1 z
  82.         digitalWrite(kg, HIGH);2 D/ F5 Y3 u4 T) H4 l5 H
  83.         digitalWrite(de, LOW);
    ( q9 b4 I1 P; o" p( n, {8 K
  84.         Button1.print("on");, g( y5 n9 f( Z& C& O# z
  85.         Button1.color("#0000FF");              //设置app按键是浅蓝色5 l' S9 V( f- _- H8 m# ~6 p
  86.         Button1.text("开启中");
    & H  z1 T" A8 h, W% a# ?
  87.         BlinkerAliGenie.powerState("on");
    5 x* ]" a2 ?5 G  q. S
  88.         BlinkerAliGenie.print();/ c" ^- b$ u# |/ A" ~! o3 t3 _3 `
  89.     }3 Y9 r8 f; }4 V
  90.     else if (state == BLINKER_CMD_OFF). d" Q3 |( J( f8 ?
  91.     {9 j; S% x) n7 \& U2 l( F
  92.         
      a9 Z5 G6 U% ]2 t7 Z& K
  93.         digitalWrite(kg, LOW);$ R0 U% r1 F9 c% E* O
  94.         digitalWrite(de, HIGH);
    & J/ k1 S+ u! {8 t' y, k
  95.         Button1.print("off");; x0 s! D/ P2 b4 [) D
  96.         Button1.color("#00FFFF");              //设置app按键是深蓝色
    8 Z5 F- [" W/ q( Q
  97.         Button1.text("关闭中");
    ! S# G+ \/ O9 d1 y6 ?
  98.         BlinkerAliGenie.powerState("off");, I0 @1 \! J2 c3 b
  99.         BlinkerAliGenie.print();
      R" i6 x9 W5 d0 K/ \# J
  100.     }
    : ~, `7 p' ~; ?- i. s& a% G
  101.         " ?, M  ^4 Q% }! I% J9 e1 y
  102. ( }- W* P) o  H# o" E# [
  103. }
    1 u( Y* u. o! ^8 d
  104.   //*******app定时向设备发送心跳包, 设备收到心跳包后会返回设备当前状态30s~60s一次
    ' k+ x/ b& @- B: e* Z" N+ }( k6 y
  105. void heartbeat(), n8 A: l) t- N8 W5 ]5 J8 G" Z
  106. {
    % e& l& K0 `: S# }
  107.   BLINKER_LOG("状态同步!"); + ]; R: n& \4 @5 D  h9 A8 ~0 j
  108.    if (digitalRead(kg)==HIGH)
    0 r% W' @/ s/ w2 L1 D- Z5 J
  109.     { 9 \& L7 O8 O2 e3 b" x/ t+ Y
  110.       Button1.print("on");& c: v9 J" B. K( h& \6 k" Y1 D
  111.       Button1.color("#0000FF");              //设置app按键是浅蓝色, g* D) y- \4 {4 z6 H
  112.       Button1.text("开启中");
    7 w+ [/ H/ h& ], k" U
  113.     }6 b6 x( P3 D1 `' J* [; |* j; t
  114.     else
    ! E" B; G1 u5 s( d. F
  115.     {
    - j$ q: {% G2 y8 D
  116.       Button1.print("off");! h+ I6 u" n% H! D
  117.       Button1.color("#00FFFF");              //设置app按键是深蓝色
    6 [: J7 `/ S( L7 {+ _+ {
  118.       Button1.text("关闭中");
    / [- c1 x; q5 f9 B0 L  B6 F
  119.     * P3 h" _0 H' d% W
  120.     }
    & ?# y, O$ a/ C; p; |
  121. }
    - K- W5 b. F3 {) b
  122. //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    2 u+ j, J; S. T3 y
  123. void setup()
    " J, Y: c5 x# b! R4 m0 k+ z3 t7 n) O
  124. {
    0 n& C/ {3 m: R' B: m5 \) q
  125.   // 初始化串口# x- d, P3 s4 @; v+ G  z% U
  126.   Serial.begin(115200);. M9 Y: `3 I& x6 f4 S
  127.   delay(10);, j, [5 G! B+ h  |7 h. c& x5 l; s
  128.   BLINKER_DEBUG.stream(Serial);1 W0 _: u1 _; d2 a0 m5 L
  129.   // 初始化有LED的IO
    $ B$ Z8 @# ^( x" i* S2 D& a
  130.   pinMode(kg, OUTPUT);                 8 k0 P: }! `5 N! l
  131.   digitalWrite(kg, LOW);//初始化继电器上电状态
    $ z! ]* U* t+ D9 G% d% j
  132.   pinMode(de, OUTPUT);7 O) G5 n3 z* E) r, v
  133.   digitalWrite(de, HIGH);
    + u0 |/ P' n. X' T7 ?
  134.   pinMode(key, INPUT);            
    ; G& ?6 L- u' R3 E
  135.   Serial.println();- N, L; N2 i! ]# w9 j  `8 c9 c' n
  136.   Serial.print("Connecting to ");! w$ R0 I+ L& f
  137.   Serial.println(ssid);" v- w$ i( n/ d# P) l1 p
  138.   WiFi.begin(ssid, pswd);: @5 }$ B# J: t! M
  139.   while (WiFi.status() != WL_CONNECTED) {
    ! e0 \- y9 {; }( W3 N
  140.     delay(500);
      {) d/ i  e6 M) b1 Q! ]
  141.     Serial.print(".");
    4 J8 m  z! k$ g$ S! t5 f0 L8 q
  142.   }) y0 z% l7 K! G7 Q' v! Y( t" i
  143.   Serial.println("");; I& O# O8 O6 s8 O
  144.   Serial.println("WiFi connected");. k& E. ~' l% F1 G8 ~" B
  145.   server.begin();* n* Y$ z5 Y( V$ Z. L( p  R
  146.   Serial.println("Server started @ ");3 z/ ?6 r* s% K( U: [" S
  147.   Serial.println(WiFi.localIP());7 e) `8 E% o( T+ ]
  148.   //打印出IP地址,后期可以制作显示器来外部硬件显示ip2 D! \, i+ v" c/ C
  149.   Serial.println("To control GPIO, open your web browser.");, }/ |# a5 g! S3 g, S
  150.   Serial.println("To set GPIO 0 high, type:");
    5 P& d; b  L, d  T: B
  151.   Serial.print(WiFi.localIP());
    % ~) g/ R' ?% H5 L: V) E
  152.   Serial.println("/gpio/1");9 V% D2 c) g$ A! V  K. I
  153.   Serial.println("To set GPIO 0 low, type:");( b. O* q2 E/ x7 ]4 M, G
  154.   Serial.print(WiFi.localIP());
    ) T/ \5 A1 M9 U0 `( o$ S4 T  E9 F
  155.   Serial.println("/gpio/0");  m* t7 q3 h( L1 R$ E: I
  156.   Serial.println("To toggle GPIO 0, type:");
    4 v/ ~- e* B5 s6 k5 ?# V# T0 B
  157.   Serial.print(WiFi.localIP());# y1 M% A8 C4 d3 X5 N8 |* {2 {( l
  158.   Serial.println("/gpio/4");
    0 Q; D4 \* V# X- _- ?) D

  159. . z8 r9 c  Q( m) n5 g9 ?
  160.   // 初始化blinker
    ; L+ a. M2 p6 B& D0 @  D
  161.   Blinker.begin(auth, ssid, pswd);! O) b+ T  n* @+ h; L. p4 v- e
  162.   BlinkerMIOT.attachPowerState(miotPowerState);              //小爱语音操作注册函数1 F6 K- c; N" A" D& x
  163.   BlinkerAliGenie.attachPowerState(aligeniePowerState);      //天猫语音操作注册函数$ i8 G3 _0 s7 F9 F& e
  164.   Blinker.attachHeartbeat(heartbeat);              //app定时向设备发送心跳包, 设备收到心跳包后会返回设备当前状态进行语音操作和app操作同步。
    & d! \/ V2 V' Y/ x2 i' d/ R
  165. - q$ @1 ?. \. v' x, ~" u
  166.   Button1.attach(button1_callback);             //app上操作必须的注册回调函数关联按键名“Button1”和判断程序“button1_callback
    2 a; @/ E: {7 {. l8 _; J' d
  167. }. g& i1 x. @- I9 h! F
  168. void dataRead(const String & data)* y% P7 t. |6 P0 K
  169. {$ w# g' s) h# f* ?* D, s9 a+ o4 _
  170.     BLINKER_LOG("Blinker readString: ", data);
    & T7 C/ f2 r! ~$ F6 @& ]1 L
  171. + B0 p2 f# r" n: c3 l6 Y
  172.     Blinker.vibrate();
    / T( m1 L& n/ [! w1 {
  173.     , @, U0 ~( b! G; D& p
  174.     uint32_t BlinkerTime = millis();
    * J+ X5 u$ u, F* J0 E! d& D
  175.    
    % \$ ]9 U# }  k/ P6 s' v9 n
  176.     Blinker.print("millis", BlinkerTime);- Z9 ^! B$ |# q& m
  177. }, c# S/ t; m1 w' \# ]
  178. void loop()
    ) K  i  |) v+ f. p2 A: O
  179. {4 X' O9 u5 D  ?& W1 u' F" A
  180.   Blinker.run();3 ^% O& y8 N- W& t) V5 C
  181.   if (digitalRead(key)==LOW)
    9 ?) [4 q- Y) G. u) s& |
  182.   {- l$ b! h+ D# W
  183.     Blinker.delay(200);1 w0 a- ]* v# f9 s, z
  184.     if (digitalRead(key)==LOW)
    # ]* ^- }" L! ]" g* `% U+ t' d
  185.     {
    9 ~' B3 U% u& F
  186.           if (digitalRead(kg)==LOW)4 y. V, o$ I! e2 a* s! B: M; B
  187.        {
    9 ]+ H: J3 V3 y
  188.             ) f( m/ B0 M( `$ ]3 a5 [) X
  189.             digitalWrite(kg, HIGH);$ x) J0 j# ?  R' r
  190.             digitalWrite(de, LOW);
    ; P7 c7 w$ @) b; `0 d
  191.             Button1.print("on");
    4 H6 _- S, Z2 V5 P. p/ Y9 H
  192.             Button1.color("#0000FF");              //设置app按键是浅蓝色
      A7 c. |# W' t7 Y4 J  I- k
  193.             Button1.text("开启中");) _! i% f1 y: F' U
  194.        }
    , m. S" t' W7 `3 A
  195.        else if (digitalRead(kg)==HIGH): h3 w0 g0 ^$ _& A' x2 m# I
  196.        {: O7 j1 o) u2 R
  197.             digitalWrite(kg, LOW);4 V0 p* _2 R) x8 g) x8 Q) J, l
  198.             digitalWrite(de, HIGH);& J- j, G0 }, ?( r' e
  199.             Button1.print("off");
    & v' }# m4 l; M1 I1 R
  200.             Button1.color("#00FFFF");              //设置app按键是深蓝色% S6 d6 c; _6 {8 |+ H6 x1 Y' a
  201.             Button1.text("关闭中");
    / F# S; f, q- ?1 L/ ~- {2 t- e) }
  202.        }& _/ ^2 y2 Q2 N& K
  203.       }! z* m/ _- {9 C& }" g  {
  204.     }
    / }! {( P4 w; r6 T' G6 X  g; w
  205. }
复制代码
1 k" m% E7 I  o1 t4 s
/ x1 h8 d2 v9 x( b: n: m! M& ?
我没有用卖家给的码,我自己写了一个,参考我前面的文章最简单的8266天猫精灵控制开关,点灯、Mixly可视模块化编程 https://bbs.nasdiyer.com/thread-18755-1-1.html+ E( H( Y) ?3 Z, N5 ~# v
2 F9 S! b3 n0 s5 X. ~# {  Q
把上面的2改成5,把高低电平对调一下就可以使用天猫精灵来控制你的这个插座了。我是把我的第一个插座放在了我的落地电风扇中了,当我慵懒的在沙发上刷着手机时候感觉有一点点热,我只要呼唤“天猫精灵,打开风扇”,就可以了。
' Q7 z) Z6 F3 ~0 l' U3 f  F6 H; \; O( v6 _$ x6 C' ~& V. K
3 ^9 P# u7 d7 B: c

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:536 t0 N- {" D$ V
买了几个   做工挺扎实的,但是外壳怎么拆啊  拿斜口钳拨了一个,   四个圆角的卡口根本没法正常拆 ...
) P& u9 Y  N( O+ q! U9 o
大力出奇迹呀

1

主题

8

回帖

256

积分

中级渣柚V1

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

+ W$ O$ H- @# E4 j- o昨晚拆了一个,废了老大劲,想和卖家说的无损拆下来,不拆个三五个积攒经验,基本不可能

2

主题

11

回帖

62

积分

初级渣柚V2

积分
62
QQ
发表于 2021-9-4 23:05:22 | 显示全部楼层
sevenup0719 发表于 2021-8-29 08:145 N3 s0 {* c. D; u- L
昨晚拆了一个,废了老大劲,想和卖家说的无损拆下来,不拆个三五个积攒经验,基本不可能 ...

. G; g( l  j! W' l8 p7 j你的搞定没  为什么我的根本没法烧录   连接不上,,用esp01s还没问题的
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-9-8 14:13 , Processed in 0.122242 second(s), 3 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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