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

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

[复制链接]

11

主题

51

回帖

209

积分

中级渣柚V1

积分
209
QQ
 楼主| 发表于 2021-8-21 13:57:54 | 显示全部楼层 |阅读模式
本帖最后由 易记 于 2021-8-21 14:05 编辑
9 N, p0 e4 j7 ^- M- x! Y, @- Z$ j8 b& s: B* M3 X
最近玩ESP8266,想做个天猫控制开关。$ e6 C; G8 L% C# t/ m
但是我很懒,一个个配元件嫌麻烦,于是想着能不能淘到便宜的带电源板的模块,多倒是蛮多,一般都要20多块钱。
( l  r2 a$ ~* B0 [0 p& d5 K5 E$ F还是闲钱上逛一下看,找到一个联想的国外版8266智能插座,价格才8.5元一个。有一点不足,就是只有三孔,要是五孔的就好了。老板说五孔杂牌价格一样也有货,晚两天发布。
$ ]( Z) I% s( a' V, ` QQ截图20210821125037.jpg
: h( c& y* Y8 l4 y9 t' ]
$ g5 J: t; l3 L4 V

# p3 i9 ]3 x/ n  ^问了一下店主,买20个一盒才包邮,想着20个还是有点多,买了5个,连运费47.5元。) {8 e/ `. ~2 H' g) f

$ Z: g+ m+ R0 J$ K; k) z QQ图片20210821124517.jpg $ `( N) Y5 I8 z
1 E& a2 C. q2 ~, k& g
' ~. {; P3 p, l* G% }
% C% h2 L- w! }3 c# d( A/ d/ _! t
到手,当然是拆拆拆。* D0 L1 R% q5 i1 m
IMG_20210820_134104.jpg   G5 ~: T, G) \, ~# A
7 }% f3 }8 E6 Y7 m) S
6 C# \* V3 ?, X/ P$ J8 A
联想的做工,还是感觉不错的,光这个继电器应该也要个7-8块钱。
6 Y5 B& n3 W8 O5 ~. \7 q7 n IMG_20210820_160634.jpg % g; R5 Z$ G' |; v
% @; y! j' _( h1 X
7 d6 s" k, v5 Q+ w
继电器是两组常开,感觉要是接电灯双控开关是不是有点麻烦的,不过用于插座是很安全,要断二条线都断开。, u, w: ?* g$ u# ^1 e
QQ截图20210821133707.jpg 3 Y+ p3 s7 c. {

0 o. z% \7 O8 |$ \9 B- d IMG_20210820_134114.jpg   I" a4 r6 Q5 |9 F

0 p" M$ Q& p/ V电源芯片
1 w5 [& N) p: y+ D$ ^6 C* i) H! U
8 p4 d" ^9 {9 @  I# U" R8 z5 m* W
% a: W# K  n/ p0 ^7 P

$ }$ Y; k/ L) L有一个按钮,按钮有二个蓝色LED灯6 O* D9 M5 x  v( k
IMG_20210820_134157.jpg 9 [5 M0 _# Z. I9 e) K
" m, c' J$ r1 G# V2 l! o

  I# S+ \. o; N! _8266
+ t* M- }" D3 ^7 J% n IMG_20210820_141913.jpg
9 o. |+ Z* O$ x$ ~
, k( u" _" o  W1 j4 B
9 b1 Y6 X8 u2 q2 v# c6 F

& J2 `5 g7 K, q2 H2 }# s4 R5 W
8 Z# C$ `$ ~$ L; Q1 r" f
接下来就是刷机了,版子上面都预留测试点。
  {+ @0 R& _0 m% s接线比较容易,上面都有标示,GND,3.3V,TXD-RX,RXD-TX,还有一个就是IO0接地后刷机。
! Z8 d/ U  s& r- D$ \8 Z 未标题-1.jpg / c! R3 z4 M$ X7 T  I
注意RX这个点,就是3.3V边上的这个点,焊盘设计的就点问题,电烙铁热一点或是焊的刷机线过粗的话,容易掉焊盘。/ Z- N" [7 J* O  n! Q9 \0 V
要是掉了就只有一个过孔了,要是焊不上,只能再拆开接在另一面,所以为了避免不必要的麻烦,请注意一下。
6 _6 x6 j# s  G

. r9 V6 Z2 G  I) }, I% U/ `2 }# t8 [& K

, K4 T/ q4 l3 U4 `9 ~/ V, o: Q9 P! [( u' s. f6 A5 U- ]
& s) L* Y- k" `# Z7 a3 |: E
    5号脚位是继电器输出2 k2 L9 v, s/ H
    12号脚位是灯输出6 o" p1 E: {+ @. u( \
    4号脚位是按键
& K$ E% Y& v2 {. T- u0 S5 [& |% B
; o% ^" C3 L8 I6 s% L0 E

0 b. Y0 t( v  ]3 z4 R+ L% ?
. U, [2 e; ?5 q; @
7 r3 H6 l' k. a2 p6 a$ P
卖家有发一个源码,如下
  1. #define BLINKER_WIFI                    //官方wifi协议库
    # f+ r4 F) E+ \0 @
  2. #define BLINKER_MIOT_LIGHT              // 设置小爱灯类库# s) B1 s2 R; \; D
  3. #define BLINKER_ALIGENIE_LIGHT          // 设置天猫灯类库
    " }+ ^+ i6 r; Y  S
  4. #define BLINKER_PRINT Serial            //串口协议库
    / C  s# U& ^# h4 G! e
  5. #include <Blinker.h>                    //官方库
    ( G7 O% ]* L+ o4 h6 |
  6. #include <ESP8266WiFi.h>                //官方库4 @* P0 @. u1 y. _8 e
  7. WiFiServer server(80);                  // 服务器端口号8 \! c$ |& Q6 L) U# S( E8 E
  8. ) y& m1 s. s* o" C7 m+ H/ W6 d$ \
  9. char auth[] = "c4942fb1d5e4";     //设备key, A9 ~2 J# j( w, H, x$ }" X
  10. char ssid[] = "wanboshi";     //路由器wifi ssid
    $ ^: o: R. z; t
  11. char pswd[] = "1365662999813586348220";     //路由器wifi 密码
    : j* K3 e, N$ h0 B% ^
  12. 8 p8 v6 V( J+ d9 E/ L/ C
  13. bool oState = false;
    # q0 a" Y( P% F
  14. ! ~! N3 h( L+ m* `
  15. int kg=5;//继电器输出
    ) P" _: s3 C/ m7 f" F
  16. int de=12;//灯输出
    $ w* ^& S- j2 A* R2 c! k
  17. int key=4 ;//按键
    % c& D+ ~; S  s$ K9 n
  18. //*******新建组件对象; o( O; G2 D5 \0 x& T: [+ J# ]

  19. $ c# r+ m- }) s2 U* s% W
  20. BlinkerButton Button1("btn-abc");              //设置app按键的键名- c/ k# w6 h- {1 ?! d, W
  21. //*******app上按下按键即会执行该函数app里按键
    - g( g* U/ F7 f& C% V: T
  22. void button1_callback(const String & state)
    / d- f, N* C+ [; h" ]0 t- H. n
  23. {: ^' R1 _; a5 {) }+ d; a
  24.    if (digitalRead(kg)==LOW)
    6 F& p, H! E0 @  k5 m, R6 }) [
  25.    {
    2 I+ p& B; s: m
  26.         BLINKER_LOG("get button state: ", state);- }( I; p# V+ {' F3 M
  27.         digitalWrite(kg, HIGH);
    1 a& C( G& e$ o
  28.         digitalWrite(de, LOW);% Q2 a+ c# t& ]& _" X# E* F: }  o( g4 f# z
  29.         Button1.print("on");
    ) O% ?: F* u% d
  30.         Button1.color("#0000FF");              //设置app按键是浅蓝色
    ; A) K3 [" P# n3 C0 B; e. \9 |6 A
  31.         Button1.text("开启中");# Q9 E6 P* d! v' {* d" P  Y
  32.    }
    0 E2 e$ k* u9 I( m  a2 \
  33.    else if (digitalRead(kg)==HIGH), l1 f/ M. d" H1 \- B/ U
  34.    {
    ' c8 O6 `1 ~) J/ k
  35.         BLINKER_LOG("get button state: ", state);, K3 a/ ~( M9 j' N
  36.         digitalWrite(kg, LOW);
    8 f4 d8 [/ D+ Z: K9 M7 Z) ]! l
  37.         digitalWrite(de, HIGH);/ ?  K: b/ V; d) b* D
  38.         Button1.print("off");. a6 Z  M/ ^4 \
  39.         Button1.color("#00FFFF");              //设置app按键是深蓝色
    : l3 _& @8 v+ b2 ?* o* \; H
  40.         Button1.text("关闭中");
    9 A) j* @$ B1 C* B1 c4 T# p4 u
  41.    }% y$ c, @+ U6 h- n
  42. }
    $ M$ z, F8 y9 o) H% W
  43. . O8 ~/ i* ~  u) E! T
  44. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    0 I+ d+ S( {% T# l/ Z
  45. / C0 o% X+ S% s  [: z
  46. //*******如果小爱有对设备进行操作就执行下面- }% c' i; I; x. X# P) B, k3 S
  47. void miotPowerState(const String & state)) L- j0 C7 n+ H; L
  48. {; _6 Z- Q) U# e4 K' @! I
  49.     BLINKER_LOG("小爱语音操作!");              //串口打印
    3 j- u* |' d" `6 F+ B1 u
  50.     if (state == BLINKER_CMD_ON){
    " F( W4 m( s3 b; E
  51.         
    0 N, A' s% W4 X9 l+ U( Z4 `
  52.         digitalWrite(kg, HIGH);
    6 j7 m- w4 N1 ^7 a% N+ }
  53.         digitalWrite(de, LOW);
      K( K' G0 X9 ~3 R$ }) v
  54.         Button1.print("on");
    1 N/ A6 `$ i. y
  55.         Button1.color("#0000FF");              //设置app按键是浅蓝色7 G$ L& f3 l. t: R. W! N/ r  O
  56.         Button1.text("开启中");' W) D% @; t" ^& S. o
  57.         BlinkerMIOT.powerState("on");
    & f, S. E* b* n7 V# s! _5 ?; R
  58.         BlinkerMIOT.print();* Y! x: {5 Y4 @1 T, ^7 C
  59.    }, \& Y5 S; r' |  s! x/ I
  60.    else if (state == BLINKER_CMD_OFF)9 J# Z+ k5 N7 H+ C  Q" `+ M9 i
  61.    {8 b! j5 O/ p  ]& J" L3 U0 ~
  62.         
    ; s9 K8 h% s2 Z9 g. l* x$ J
  63.         digitalWrite(kg, LOW);
    , O! |! V- ~0 _2 _
  64.         digitalWrite(de, HIGH);
    0 D. `  x5 M- ^9 G$ l8 p4 s) U
  65.         Button1.print("off");- ^9 ?% u! [3 y5 L: k4 W8 @
  66.         Button1.color("#00FFFF");              //设置app按键是深蓝色% n3 O& @- c" B3 a
  67.         Button1.text("关闭中");3 `' [  O$ R5 A1 n
  68.         BlinkerMIOT.powerState("off");
    * B, o8 B- V; i, ?6 }
  69.         BlinkerMIOT.print();/ L! Q$ P& a2 j0 P
  70.    }$ |7 ?! j! i4 R! A  T& |: }
  71.       
    7 }  c4 D! W: j0 G% p4 I

  72. 1 m( X/ W9 s  C* L  v" }
  73. }8 U2 x: u+ J9 t" ?
  74. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    # ^% M- ]" d# d9 e1 F/ S9 X  |+ Z3 W
  75. //*******如果天猫精灵有对设备进行操作就执行下面
    ; I  ^1 w: ]# ], H; T& w9 }
  76. void aligeniePowerState(const String & state)& a7 a' n& k3 r4 F
  77. {8 R) ^* f: U! J7 d7 r& g3 \* c( ~) o. p
  78.     BLINKER_LOG("need set power state: ", state);
    / l. _* `( M: u1 Z) N
  79.     if (state == BLINKER_CMD_ON)
    : K0 j' u; k+ x
  80.     {8 Q7 c5 s/ \0 {: {0 D" u: x$ ~
  81.         2 t2 [9 D4 Z- D
  82.         digitalWrite(kg, HIGH);
    . }0 C. J6 ?) |9 Y# {; q
  83.         digitalWrite(de, LOW);6 A, v$ \7 H  v- Q0 \, L$ N. f
  84.         Button1.print("on");
    . g4 L4 t  _& {# q1 t
  85.         Button1.color("#0000FF");              //设置app按键是浅蓝色
      o! \1 k/ M' [$ H
  86.         Button1.text("开启中");
    $ N* B: P6 k& Z7 w, X% X2 P
  87.         BlinkerAliGenie.powerState("on");
    - m& E; j! P& i3 Q4 E: W, `
  88.         BlinkerAliGenie.print();
    ! ?  P( O, T2 k( T
  89.     }3 C  r1 u/ f: E
  90.     else if (state == BLINKER_CMD_OFF). j: o& C, ^; z5 h3 z- Z
  91.     {8 V- T" O! U. F/ \" @& o
  92.         
    ) b! Y% p8 h; n% m! M# o
  93.         digitalWrite(kg, LOW);
    9 R6 @7 N) n- I5 B9 T
  94.         digitalWrite(de, HIGH);" H, `  x; y; u4 f; C5 L
  95.         Button1.print("off");) f" F, V& r0 L7 |
  96.         Button1.color("#00FFFF");              //设置app按键是深蓝色
    - l- x! O, D3 k, c
  97.         Button1.text("关闭中");0 `! Q7 y6 z# C; E% c9 Z( T  C2 N
  98.         BlinkerAliGenie.powerState("off");' r6 X7 D7 E: a
  99.         BlinkerAliGenie.print();
    " u+ P( C5 S( a) X1 Q
  100.     }
    8 u0 p7 X+ x7 |" T7 T' b
  101.         
    7 V2 U: ?- O8 H% t5 }! C4 R

  102. , ~6 U! V# {4 a: \, D3 B* h
  103. }6 f# r2 V5 a, r
  104.   //*******app定时向设备发送心跳包, 设备收到心跳包后会返回设备当前状态30s~60s一次6 B+ v' W% w. Y* m( A/ {. m
  105. void heartbeat()
    * S/ V: Z% Y1 z2 U( X4 f
  106. {% H& H. m6 h) g; [
  107.   BLINKER_LOG("状态同步!");
    4 K6 C+ {  H+ u' H$ h6 u( Q
  108.    if (digitalRead(kg)==HIGH) / l7 k2 i; V8 F* w& l
  109.     {
    5 i$ Q0 k/ e  E; ~! C5 _
  110.       Button1.print("on");# Z* k4 V7 x, y/ g! a# m
  111.       Button1.color("#0000FF");              //设置app按键是浅蓝色
    ) Z7 }5 c4 i& a% z
  112.       Button1.text("开启中");
    1 x3 k4 }% }' ]9 h0 n
  113.     }
      V( u! g/ _+ X3 ~" M, ^8 k
  114.     else
    5 [$ ?- O8 T3 S6 u2 t
  115.     {
    ) z& Y& L: S3 ?" ?6 }5 `4 i. o4 a1 v
  116.       Button1.print("off");' |& s3 N8 q8 Z) P% J% ^
  117.       Button1.color("#00FFFF");              //设置app按键是深蓝色
    3 E% O+ I( V/ D7 u1 Z
  118.       Button1.text("关闭中");
      {7 x. }" l- ^; m0 }
  119.    
    0 @8 _+ x/ u2 ~: {3 p0 E
  120.     }, S2 w( X, X; y6 I
  121. }* n6 `0 L; L4 r& r+ a4 B% A7 E
  122. //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++* a* Q3 x  g1 j
  123. void setup(); K2 Z- H) `3 ?. |3 ]# f3 {, U
  124. {
    : o: ]5 o: P& I1 P" {' _
  125.   // 初始化串口2 g  c0 J! C! s( q- Q0 O8 L
  126.   Serial.begin(115200);2 P/ R3 m" w4 ?
  127.   delay(10);* O" n6 X/ K( m; X  U
  128.   BLINKER_DEBUG.stream(Serial);- z$ L/ |- h& R: ?0 w: j
  129.   // 初始化有LED的IO
    * p% a3 i+ b. [
  130.   pinMode(kg, OUTPUT);                 
    " k7 q( q( v- s1 f
  131.   digitalWrite(kg, LOW);//初始化继电器上电状态 7 ~  R; d% r/ u7 m
  132.   pinMode(de, OUTPUT);; y0 p5 C8 `3 O. P5 Q% m
  133.   digitalWrite(de, HIGH);
    # v" q3 ?& O8 ?
  134.   pinMode(key, INPUT);            
    6 G  R; R' [# ?, ^% f5 Y+ q
  135.   Serial.println();
    7 F0 F/ {, Y4 B6 k2 X4 I2 O" j
  136.   Serial.print("Connecting to ");
    / y9 s* L) r) \3 C$ l
  137.   Serial.println(ssid);+ a0 k, r% Q( ?4 E6 s; }! u
  138.   WiFi.begin(ssid, pswd);
    2 U+ }% o1 ^7 ?# I
  139.   while (WiFi.status() != WL_CONNECTED) {
    * J% e6 d) Y1 Z+ K. l1 ?
  140.     delay(500);
    4 b/ n% G' `: C; ^+ S& M7 e
  141.     Serial.print(".");
    , Y4 J7 c/ a' Y4 x5 W5 @
  142.   }
    & d) h( Q& g6 x1 f& D1 m# b
  143.   Serial.println("");7 h+ \6 |" Z1 `
  144.   Serial.println("WiFi connected");
    : d9 f5 g4 T9 K) p! ?# u
  145.   server.begin();: T, B& t0 ]9 I0 f- j
  146.   Serial.println("Server started @ ");# E/ [, G; S* g8 A% R; \
  147.   Serial.println(WiFi.localIP());
    2 n1 J9 w/ g! x) M7 k2 T, L
  148.   //打印出IP地址,后期可以制作显示器来外部硬件显示ip
    ( {' ?. p2 d. o7 l" e. ~# I0 p
  149.   Serial.println("To control GPIO, open your web browser.");8 v4 D0 E. i/ M4 p
  150.   Serial.println("To set GPIO 0 high, type:");* m" X1 X) B3 x) f( i( W
  151.   Serial.print(WiFi.localIP());9 q* ?* ~/ k9 p6 F# D( G
  152.   Serial.println("/gpio/1");
    / n  W* X: E, V
  153.   Serial.println("To set GPIO 0 low, type:");7 H) ]- ?* h( V; |+ W6 c6 I- u
  154.   Serial.print(WiFi.localIP());
    3 J* j! n0 y2 ~+ F/ S
  155.   Serial.println("/gpio/0");
      C& o8 d; c2 B. w
  156.   Serial.println("To toggle GPIO 0, type:");
    7 R+ i' w1 H! V# J) |
  157.   Serial.print(WiFi.localIP());' Z1 A2 V* [3 k* g' U, n/ i
  158.   Serial.println("/gpio/4");- I' N+ T9 z9 C8 R9 p- h
  159.   D& Y3 Z# B$ l
  160.   // 初始化blinker5 M8 J* o7 `8 d3 x3 \  S
  161.   Blinker.begin(auth, ssid, pswd);
    ; p1 J+ v! X! F2 A" ~  Q0 ^
  162.   BlinkerMIOT.attachPowerState(miotPowerState);              //小爱语音操作注册函数8 E3 j# l% L+ _. F
  163.   BlinkerAliGenie.attachPowerState(aligeniePowerState);      //天猫语音操作注册函数0 I! a+ B- [5 E& z5 B$ C
  164.   Blinker.attachHeartbeat(heartbeat);              //app定时向设备发送心跳包, 设备收到心跳包后会返回设备当前状态进行语音操作和app操作同步。7 H1 n& s( z1 J+ Y" c' [
  165. ; L8 w* Z6 b$ S7 I
  166.   Button1.attach(button1_callback);             //app上操作必须的注册回调函数关联按键名“Button1”和判断程序“button1_callback
    9 p" }+ O+ @% m0 F! J) K/ M1 t
  167. }( H6 j5 \4 V) S" e8 c: k" \5 T% e% _
  168. void dataRead(const String & data)
    / M" W; V7 A. k, ?! }( ~& J7 M6 ^
  169. {5 R) c# m1 w: ~
  170.     BLINKER_LOG("Blinker readString: ", data);
    : d& E, p( O5 t
  171. 6 I' p% w! H: ~4 @! z" z; v
  172.     Blinker.vibrate();
    , W; a  w  b: y# k5 i' J" X; j
  173.    
    0 z7 K! v* M+ y( l5 h
  174.     uint32_t BlinkerTime = millis();4 s: y& x: L5 H' `- W
  175.    
      S2 `. k" V. ]$ Y
  176.     Blinker.print("millis", BlinkerTime);" U) ^7 g0 \0 x* A
  177. }( K4 a1 \7 ]8 z) a* u3 d" ~
  178. void loop()3 k, w& E( i  g% X2 [
  179. {
    + k. M3 J: }# V( {. |
  180.   Blinker.run();
    # ]! k8 R& Y- X; q3 M( N0 \9 D
  181.   if (digitalRead(key)==LOW)* Q% d* g' @& l0 ]
  182.   {/ G. t8 ^0 L3 K4 L$ H0 j! K( t$ n
  183.     Blinker.delay(200);
    : [; n8 d/ ?, b( X1 Q
  184.     if (digitalRead(key)==LOW)
    # M/ m6 g' Q4 O+ p" k( R# s/ M
  185.     {6 _" x4 v7 S; ^# E+ d
  186.           if (digitalRead(kg)==LOW)9 W+ x$ v0 q9 c/ C( ?9 a/ @6 q
  187.        {( F# p2 P* \$ [4 B
  188.             
    6 K" N  L5 v1 T5 Z9 g4 q
  189.             digitalWrite(kg, HIGH);
    3 \5 v% \/ j4 |# M# |5 p/ e
  190.             digitalWrite(de, LOW);
    - |0 C2 D7 n9 u* _4 B
  191.             Button1.print("on");) V& i9 n% y4 A" w3 @1 U4 l
  192.             Button1.color("#0000FF");              //设置app按键是浅蓝色5 l! |# V6 n7 ~8 Z
  193.             Button1.text("开启中");  [: F$ D2 X6 G
  194.        }
    . X/ G$ d. V" J* P+ _' d* N2 _( J
  195.        else if (digitalRead(kg)==HIGH)
    . P  S4 ^# h9 o0 c3 V  U
  196.        {
    1 J# W  {. X4 ^5 q0 U
  197.             digitalWrite(kg, LOW);6 w; S# w6 p1 r- U
  198.             digitalWrite(de, HIGH);* W' v% n; V: j( ?, ?, n
  199.             Button1.print("off");5 ?: _1 ]1 B7 U8 z, M' j
  200.             Button1.color("#00FFFF");              //设置app按键是深蓝色0 x% o8 J9 l% k  h" k
  201.             Button1.text("关闭中");5 Q2 d* h# W) V( n# a7 q- ?
  202.        }
    7 q% W: \# m" N1 i' k5 Z
  203.       }/ X( K& Q" X* l* C* K* ~
  204.     }
    1 W6 Q# f  a! q' G  Z
  205. }
复制代码

! g2 u5 H, V5 |& Y
7 P% V5 q4 x7 k( {我没有用卖家给的码,我自己写了一个,参考我前面的文章最简单的8266天猫精灵控制开关,点灯、Mixly可视模块化编程 https://bbs.nasdiyer.com/thread-18755-1-1.html
* e2 m0 O+ |5 M2 o) g+ G& t+ g, q9 n: F# [
把上面的2改成5,把高低电平对调一下就可以使用天猫精灵来控制你的这个插座了。我是把我的第一个插座放在了我的落地电风扇中了,当我慵懒的在沙发上刷着手机时候感觉有一点点热,我只要呼唤“天猫精灵,打开风扇”,就可以了。  b5 S) \8 J3 H! ~5 w
; F4 Q7 i2 X: t& I3 F! z9 ?8 C
) ^7 i4 r  F% f/ y6 v3 L5 a4 d0 |

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:535 c, U  N8 `/ w2 ^+ q: x7 _) H
买了几个   做工挺扎实的,但是外壳怎么拆啊  拿斜口钳拨了一个,   四个圆角的卡口根本没法正常拆 ...

6 c1 J3 W$ `: O6 T, A2 ~. }大力出奇迹呀

1

主题

8

回帖

256

积分

中级渣柚V1

积分
256
发表于 2021-8-29 08:14:58 | 显示全部楼层
a467913252 发表于 2021-8-24 15:53) @6 {: T( ~5 H. s; D- w
买了几个   做工挺扎实的,但是外壳怎么拆啊  拿斜口钳拨了一个,   四个圆角的卡口根本没法正常拆 ...
- |6 S( l3 h4 J
昨晚拆了一个,废了老大劲,想和卖家说的无损拆下来,不拆个三五个积攒经验,基本不可能

2

主题

11

回帖

56

积分

初级渣柚V2

积分
56
QQ
发表于 2021-9-4 23:05:22 | 显示全部楼层
sevenup0719 发表于 2021-8-29 08:14
7 d; [" Y; l/ ~& p8 ?; w1 d昨晚拆了一个,废了老大劲,想和卖家说的无损拆下来,不拆个三五个积攒经验,基本不可能 ...

( Z  a7 h( A& X+ D7 A& S你的搞定没  为什么我的根本没法烧录   连接不上,,用esp01s还没问题的
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-5-20 05:38 , Processed in 0.048147 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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