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

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

[复制链接]

11

主题

51

回帖

209

积分

中级渣柚V1

积分
209
QQ
 楼主| 发表于 2021-8-21 13:57:54 | 显示全部楼层 |阅读模式
本帖最后由 易记 于 2021-8-21 14:05 编辑 $ b# r/ r. W) \# A, U+ r
+ ]0 H2 a& y# n1 m' S4 N
最近玩ESP8266,想做个天猫控制开关。2 c, M# I8 i" m' ]) `
但是我很懒,一个个配元件嫌麻烦,于是想着能不能淘到便宜的带电源板的模块,多倒是蛮多,一般都要20多块钱。* |# F0 Q1 [* M* m  ?( U+ Y
还是闲钱上逛一下看,找到一个联想的国外版8266智能插座,价格才8.5元一个。有一点不足,就是只有三孔,要是五孔的就好了。老板说五孔杂牌价格一样也有货,晚两天发布。
( k: |. u  k5 v" X) w% R QQ截图20210821125037.jpg - o( S: \7 a. u5 u, \# \9 ~

2 d; `% L; g( k* W2 l" @0 r* p- X

  p/ t0 [! {5 O8 q. Z+ f, s问了一下店主,买20个一盒才包邮,想着20个还是有点多,买了5个,连运费47.5元。
6 Z. t, b. G( d' K+ Q. M- s! D& U, E, G# L* _
QQ图片20210821124517.jpg * e4 J! k! A$ f1 G- ^, _: Y3 k1 A! P
' P" y7 Y& H2 Q

8 T/ j. M( ~% [9 E9 \
# z8 A1 i$ ]7 b
到手,当然是拆拆拆。4 p1 Q8 c+ E% Z7 b1 G* f
IMG_20210820_134104.jpg
) j3 @$ D+ J7 F5 \$ e) \- _- l) ]8 \
) o8 [& p5 o5 Y  ]2 |
联想的做工,还是感觉不错的,光这个继电器应该也要个7-8块钱。
+ c7 z; y2 x* {8 q# `" v$ e IMG_20210820_160634.jpg 7 y, {8 P+ V0 P+ ^. |8 P3 q- ?7 U
+ ~; r8 @" a# U( K0 V# g
9 t; g/ ^- a. R- ]
继电器是两组常开,感觉要是接电灯双控开关是不是有点麻烦的,不过用于插座是很安全,要断二条线都断开。# R2 F9 N( _0 ^4 A
QQ截图20210821133707.jpg
2 H& r; J1 `: L, y0 m1 k
" p8 X1 w3 ?8 e6 [; ^
IMG_20210820_134114.jpg % C3 J- f/ P' d4 L' z
7 }" l6 V8 V1 u& Z' J$ g# r
电源芯片
! U8 G8 b2 r' j2 o( [1 j& z# o( U2 T* W/ S6 R  ?
8 O+ n, B: }3 [) b3 V# P

+ w* o& U: j( b: v有一个按钮,按钮有二个蓝色LED灯& A! ~  T) V+ I; w3 _
IMG_20210820_134157.jpg
6 {6 J  L" X. t! h+ U, J4 _1 _- N; T0 B+ j/ j7 _9 E7 v2 k
+ \" I, u0 l$ Y9 r9 v: _
8266+ Z8 S" V) Q6 |) c( a: i* _; ^
IMG_20210820_141913.jpg 7 l6 Y2 ], S" Y) x. ]

, Z! W* d! ]% s4 L
! N, |( P! i  Q4 j% v8 Z

3 Q3 T% R4 R( w8 c
: a: }( V6 g" F9 g
接下来就是刷机了,版子上面都预留测试点。, b9 o( d  [8 _. G
接线比较容易,上面都有标示,GND,3.3V,TXD-RX,RXD-TX,还有一个就是IO0接地后刷机。% e, B5 `: H$ `
未标题-1.jpg
' E% a) F9 l5 J* O0 k$ y
注意RX这个点,就是3.3V边上的这个点,焊盘设计的就点问题,电烙铁热一点或是焊的刷机线过粗的话,容易掉焊盘。( m6 @! u+ G* M- b
要是掉了就只有一个过孔了,要是焊不上,只能再拆开接在另一面,所以为了避免不必要的麻烦,请注意一下。
) g+ N0 @0 X7 }: A% |0 Z0 K

# B# }! w: M- G$ {4 p2 A; P3 W% a. E, W. {* t; |3 E

. H8 ?! K  m" g  a1 t( f2 f9 A( ^: A2 k' T* G- P+ ?+ n

) m; o; t# ~" B# S* T. T    5号脚位是继电器输出
: @. X% S3 q9 j0 _    12号脚位是灯输出
' h* y1 k  S3 p  y6 M7 E: o8 [    4号脚位是按键
# ]" p2 ~# H" \5 D3 z: V
9 {5 ~; \$ F$ [3 k  y0 [. ]
0 ^& G0 b2 X% m" e  g

) f- n+ c# Q0 L( ^
; d/ e# l# Z0 _; E7 w
卖家有发一个源码,如下
  1. #define BLINKER_WIFI                    //官方wifi协议库
    " `/ i5 K- J8 @% l. l! t+ ?
  2. #define BLINKER_MIOT_LIGHT              // 设置小爱灯类库
    4 s# t' ?5 W! u7 T! R) J3 y8 v
  3. #define BLINKER_ALIGENIE_LIGHT          // 设置天猫灯类库
    ! }- {4 u; Z3 p& K
  4. #define BLINKER_PRINT Serial            //串口协议库3 s4 |, i( Y, G6 b0 F: Y& J2 w: K
  5. #include <Blinker.h>                    //官方库
    , i% W0 k& Q6 B2 G& a* H
  6. #include <ESP8266WiFi.h>                //官方库
    5 N: C% d, K$ \
  7. WiFiServer server(80);                  // 服务器端口号8 c0 N  }, l  Y% J

  8. 2 I5 R2 i6 Q2 [* q6 a3 Z' Y6 [/ p) y( t
  9. char auth[] = "c4942fb1d5e4";     //设备key
    2 U% G; V. N5 J; a+ {1 Q
  10. char ssid[] = "wanboshi";     //路由器wifi ssid# A+ L6 S* ?) ]( ~6 o' P
  11. char pswd[] = "1365662999813586348220";     //路由器wifi 密码
    + _. e6 M8 ]/ _8 W3 Q/ C

  12.   p+ H+ E# F5 B; g
  13. bool oState = false;
    , k# l) X! o  G. J8 |5 X

  14. 4 w8 C  A' ?+ @
  15. int kg=5;//继电器输出
    2 N( F# X" F) U. w
  16. int de=12;//灯输出
    & d. X3 C8 Y# ]/ E
  17. int key=4 ;//按键1 P, u& U6 D) b1 B  z
  18. //*******新建组件对象
      k, H0 I1 X* r4 r8 O# m
  19. ! F, O9 {& B4 S
  20. BlinkerButton Button1("btn-abc");              //设置app按键的键名6 W& R5 W3 Y. q5 P. Z
  21. //*******app上按下按键即会执行该函数app里按键
    5 ~" z7 n% f7 K" @9 V
  22. void button1_callback(const String & state)
    + \- N& f8 ~) D5 w, B1 a, r
  23. {
    ! V+ `+ F6 X2 p6 N: s% _1 ?
  24.    if (digitalRead(kg)==LOW)! v+ j# w7 K) Y7 n; H2 f
  25.    {, p& W4 ?* ^2 a  p  Q
  26.         BLINKER_LOG("get button state: ", state);& B3 |6 [  c6 _- j
  27.         digitalWrite(kg, HIGH);! ^4 h0 d+ p7 a: i
  28.         digitalWrite(de, LOW);3 `& _6 Z+ c1 i
  29.         Button1.print("on");. g& G1 m9 W  h
  30.         Button1.color("#0000FF");              //设置app按键是浅蓝色- C0 j  T! k9 i9 N
  31.         Button1.text("开启中");, A4 m; p4 C/ {% A% t7 @* K8 J
  32.    }$ n1 `& p" Q7 i5 q$ R7 h7 h7 Y' Z
  33.    else if (digitalRead(kg)==HIGH)& s, _# Y# X0 y6 |/ H- K
  34.    {1 j7 q) r3 B/ w
  35.         BLINKER_LOG("get button state: ", state);4 \  ?$ ?, g4 i
  36.         digitalWrite(kg, LOW);
    ; w: b. W* X1 _4 ^
  37.         digitalWrite(de, HIGH);$ i& X8 [$ B7 j+ N2 v1 }
  38.         Button1.print("off");
    9 d% E8 X6 H- X6 q
  39.         Button1.color("#00FFFF");              //设置app按键是深蓝色! J5 `8 K. a4 A0 J  Z9 p% c4 v
  40.         Button1.text("关闭中");
      O3 I1 G7 F) I' [
  41.    }0 u1 W4 y; V1 F; G+ S$ J
  42. }
    % i, j. {$ G3 n- W6 i$ f0 ^
  43. " \( ^& Y* Y9 c3 Y( H% N0 @
  44. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++, _! p2 S7 @2 I2 i3 z  W

  45. ' `- p  d# ~$ o5 p( ?* p# }
  46. //*******如果小爱有对设备进行操作就执行下面
    0 I( [+ f8 ]$ L8 s8 M/ z
  47. void miotPowerState(const String & state)/ V7 ^% `- j" c$ f' A/ x
  48. {$ @2 O+ B! z& o8 Y- [1 _1 Q
  49.     BLINKER_LOG("小爱语音操作!");              //串口打印
    - r5 F5 r) T1 ^& c. r
  50.     if (state == BLINKER_CMD_ON){
    ! `& |$ }; k$ c$ y2 t' w
  51.         
    / x( ^2 a' t; q) `
  52.         digitalWrite(kg, HIGH);
      k8 X8 ]" e& ^) w7 s2 v1 k
  53.         digitalWrite(de, LOW);" v! ]! t3 v+ x' g, u; @4 q
  54.         Button1.print("on");
    7 {2 K4 S2 q# S7 u( @
  55.         Button1.color("#0000FF");              //设置app按键是浅蓝色
    . E( O/ o5 B( d& z' D- f5 M
  56.         Button1.text("开启中");
    6 H! I: G. n! p2 ^- j4 A
  57.         BlinkerMIOT.powerState("on");
    2 d2 Q- n1 ]2 B" x5 @
  58.         BlinkerMIOT.print();
    " y2 v/ o1 B  n# b. [& B
  59.    }5 p7 ?8 ?3 i% v" l2 o
  60.    else if (state == BLINKER_CMD_OFF)+ ~: t8 X8 f1 s$ ?5 d1 j$ F$ W
  61.    {
    $ Z9 @1 x! q; ~$ W& \5 [
  62.         ! L7 F- t; l2 U' @0 \4 d- i9 S
  63.         digitalWrite(kg, LOW);% w4 C: ?; i- t2 M5 [! m) r7 g
  64.         digitalWrite(de, HIGH);! A; V7 d/ `; f& f# C  F$ H
  65.         Button1.print("off");
    6 G& E- H; W& b! g
  66.         Button1.color("#00FFFF");              //设置app按键是深蓝色
    : Y# L  h! N/ E; ~0 M+ P
  67.         Button1.text("关闭中");( I8 W- y+ K! v' P% v( o# s$ k3 H
  68.         BlinkerMIOT.powerState("off");5 o1 J+ ]5 s$ r0 ?1 k: w0 P/ K, l/ `: H
  69.         BlinkerMIOT.print();
      q6 p% }! o- |7 C+ @) I5 w0 A
  70.    }
    4 V8 P6 @. \! ~0 Y! X0 A, B! P9 u
  71.       
    4 o, v( U2 w! m2 S" p

  72. % K. M4 e" O9 u3 b( r
  73. }: `- E/ Z1 Y3 V9 F
  74. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    $ f, r: C9 E+ [5 U' W
  75. //*******如果天猫精灵有对设备进行操作就执行下面4 M: w$ d+ }9 S) Y- S+ u& b& r- `
  76. void aligeniePowerState(const String & state)
    / I8 t+ ]; B1 x( B* v
  77. {
    : y& e0 {3 l0 i  b  i4 |; D
  78.     BLINKER_LOG("need set power state: ", state);; {  y0 U& f' S! g! A! L
  79.     if (state == BLINKER_CMD_ON)
    * K8 |5 y' e2 Z& Y9 P( r2 r
  80.     {/ k: c1 D6 `9 o/ R4 Q: @, Z. l  }
  81.         : l0 ]! C4 K! M7 }. u6 e; }
  82.         digitalWrite(kg, HIGH);
    : c8 s* N! ^; C7 b' E- ]3 _; \
  83.         digitalWrite(de, LOW);
    9 W/ m& _; g9 v9 e. }
  84.         Button1.print("on");
    % Y# a3 v4 j# }4 X: M9 c8 U0 V
  85.         Button1.color("#0000FF");              //设置app按键是浅蓝色  Z: C7 v/ u! O1 R4 ]3 u
  86.         Button1.text("开启中");' y" \5 {, F8 ^3 n( r" H: q- F
  87.         BlinkerAliGenie.powerState("on");; c" E. m: O9 ^7 G
  88.         BlinkerAliGenie.print();
    ' x$ L2 o, y( S2 u2 {
  89.     }
    ) H+ l  W& }) k' \% l: q
  90.     else if (state == BLINKER_CMD_OFF)
    ' J% o* V6 c, }  x
  91.     {
    - `# S  b0 m  p- e
  92.         
    % o# t" @" L1 k7 s# b5 l+ _
  93.         digitalWrite(kg, LOW);. ?  y3 p9 r) h' k) v2 h
  94.         digitalWrite(de, HIGH);6 o. Y3 e8 d1 s
  95.         Button1.print("off");& y% z1 J1 h4 S
  96.         Button1.color("#00FFFF");              //设置app按键是深蓝色
    % i9 w6 {! l+ [6 b! A# h1 t
  97.         Button1.text("关闭中");7 B- b2 K* E  X
  98.         BlinkerAliGenie.powerState("off");
    1 L+ |0 S6 H! k" s" P2 h: b
  99.         BlinkerAliGenie.print();
    , B/ O. J- W% z/ J' p% o
  100.     }" S, H* s/ \9 V1 s* u
  101.         8 ]0 O/ A  t% i, m* L; K
  102.   m7 U+ P4 j  W9 h# M" p
  103. }& f% _; \: y" \2 f/ e
  104.   //*******app定时向设备发送心跳包, 设备收到心跳包后会返回设备当前状态30s~60s一次
    % a! M3 A- A! h# O
  105. void heartbeat()
    . }  ~8 D( r) u, A: E( h& \
  106. {. m% X2 u0 Q- j! a' b6 E
  107.   BLINKER_LOG("状态同步!");
    ! k3 r, Z1 ~1 j
  108.    if (digitalRead(kg)==HIGH)
    , x. V% k$ t( j/ f
  109.     {
    : s7 k) u; B/ @4 s( F9 e
  110.       Button1.print("on");6 T$ j# c9 u. ]) [( x, X1 c
  111.       Button1.color("#0000FF");              //设置app按键是浅蓝色
    # M* Z  M& J, i. T" D( @; {
  112.       Button1.text("开启中");; k+ e- K  a3 A- a
  113.     }
    5 e2 F' {" b* O3 ^6 i% K$ k5 F$ {
  114.     else ( b: \7 ]7 j" x. f
  115.     {$ T; T1 T5 S# f: f
  116.       Button1.print("off");
    9 K1 H4 E9 s. e
  117.       Button1.color("#00FFFF");              //设置app按键是深蓝色
    & K2 ^0 n3 k9 |' G! K$ O
  118.       Button1.text("关闭中");5 E+ |: j9 Y4 P# K  b3 z9 R# I
  119.    
    ; a3 H* m  N! [3 M7 N' f: [
  120.     }- w; e% w; V7 c
  121. }+ a# _& ?2 J8 ~) y  N7 P' y0 ?
  122. //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    ( K1 ~6 M- k4 l0 u2 G& _2 ~
  123. void setup()" [* b* L8 _$ Y6 a( M
  124. {% H, r& x# ?# e
  125.   // 初始化串口
    / d* u0 Q2 N) g7 b% e' V3 e
  126.   Serial.begin(115200);
    + Z/ U9 w& t0 k
  127.   delay(10);
    ; R  T4 e. D1 U' N: V/ E
  128.   BLINKER_DEBUG.stream(Serial);
    " z% I9 K3 _: W% T# d' I
  129.   // 初始化有LED的IO. z4 k( R9 s7 H: l0 ~' c1 |: |4 w/ k
  130.   pinMode(kg, OUTPUT);                 ) {/ e+ l- w# L$ g5 m" c( J5 a: B- L
  131.   digitalWrite(kg, LOW);//初始化继电器上电状态
    3 T8 c. J- e' {* z) l
  132.   pinMode(de, OUTPUT);
    1 ?" m+ c2 g* k2 F! W: A
  133.   digitalWrite(de, HIGH);
    - V3 D2 [8 y& a
  134.   pinMode(key, INPUT);            
    + F* h4 {+ s- y' `$ l8 {
  135.   Serial.println();- y. y  F3 ?+ O3 Z$ X
  136.   Serial.print("Connecting to ");
    ' B& ^# H5 r! X$ z5 j/ w! u
  137.   Serial.println(ssid);
    : V5 R* F( H* W8 ~6 F( A$ O
  138.   WiFi.begin(ssid, pswd);4 Z( K; r7 m$ N4 C6 C
  139.   while (WiFi.status() != WL_CONNECTED) {
    7 w! N' a$ u9 ^8 Y. ~1 f% R& K5 h
  140.     delay(500);9 M3 r% N% y, c+ ~. e( ~* {+ {. p4 e% a
  141.     Serial.print(".");0 `! f, Q& |* u, }& H6 V
  142.   }
    7 m" `/ G4 S1 l0 I( S
  143.   Serial.println("");7 |0 ^+ z4 c2 T) W! l% L7 y' @$ K
  144.   Serial.println("WiFi connected");
      j$ Z1 v, w6 o+ |
  145.   server.begin();+ S; S4 B  ]) j* l
  146.   Serial.println("Server started @ ");
    4 ~7 ^: r6 E  y
  147.   Serial.println(WiFi.localIP());
    $ K4 f5 f/ F7 H; S" l* _- p
  148.   //打印出IP地址,后期可以制作显示器来外部硬件显示ip
    0 `* p0 |! d5 @4 z# X' p* u2 ~
  149.   Serial.println("To control GPIO, open your web browser.");
    ; c* A9 `0 e& c
  150.   Serial.println("To set GPIO 0 high, type:");6 `( m) O4 Y& T# n$ [! T
  151.   Serial.print(WiFi.localIP());; A; A1 F. R# R- A
  152.   Serial.println("/gpio/1");
    & f/ e! r3 V: G( ?
  153.   Serial.println("To set GPIO 0 low, type:");
    : d5 Y" y- a# X
  154.   Serial.print(WiFi.localIP());
    : s9 K% ?$ R4 N8 P3 b4 I7 I
  155.   Serial.println("/gpio/0");3 \7 k6 o4 W( A1 ]! ?
  156.   Serial.println("To toggle GPIO 0, type:");' v: j. l& K3 s
  157.   Serial.print(WiFi.localIP());* Q% h! Y& ~7 I; ^5 W& T4 D
  158.   Serial.println("/gpio/4");
    1 w! u7 c/ p+ i7 M0 S

  159. % J* B) R/ }# D7 j6 r- _
  160.   // 初始化blinker
    7 D/ ]' |% r* d
  161.   Blinker.begin(auth, ssid, pswd);. o' X( N  r0 t) @0 [  o
  162.   BlinkerMIOT.attachPowerState(miotPowerState);              //小爱语音操作注册函数
    ! B) ?3 I% a' g1 y2 H
  163.   BlinkerAliGenie.attachPowerState(aligeniePowerState);      //天猫语音操作注册函数
    % q1 X8 l$ R3 O
  164.   Blinker.attachHeartbeat(heartbeat);              //app定时向设备发送心跳包, 设备收到心跳包后会返回设备当前状态进行语音操作和app操作同步。6 |9 `/ O5 p6 P4 J& ]4 I

  165. - ?$ t4 A& D! E6 U/ ?4 @
  166.   Button1.attach(button1_callback);             //app上操作必须的注册回调函数关联按键名“Button1”和判断程序“button1_callback
    8 k2 ?; \1 w5 d( Y% D2 [$ o
  167. }
    ; B- q6 |0 b" @0 Z! H4 g* n$ u7 L
  168. void dataRead(const String & data)1 |$ \. l1 t$ Z; g- K+ B
  169. {
    + N  G* r& h3 X5 h% H
  170.     BLINKER_LOG("Blinker readString: ", data);
    ' M" g6 s, U$ {2 F/ ?

  171. 9 U; ?% e9 E  S( K% Y, r! N
  172.     Blinker.vibrate();2 P. g% A) @6 [" F
  173.     1 ~$ }$ w+ |' {1 L0 [' G% B
  174.     uint32_t BlinkerTime = millis();. F2 Q3 q: J3 h- H& a
  175.     ; U+ M; [9 |) q, }6 [
  176.     Blinker.print("millis", BlinkerTime);( l; b3 \% [! N; O1 [7 N$ v
  177. }
    . M9 Q# L* Y: e
  178. void loop()/ i* x9 p/ E3 l( |; b  x! s
  179. {
    3 a* |. [; j) p; j/ |$ G3 G
  180.   Blinker.run();5 Z/ Z: A/ O; t* `6 m
  181.   if (digitalRead(key)==LOW)- D# K" C" r0 `. Y
  182.   {% m0 O6 V% S6 a: D$ p! ?/ Z
  183.     Blinker.delay(200);6 m8 |. @5 R2 P. Z& Z. J3 t) i
  184.     if (digitalRead(key)==LOW)& M3 D" M/ j/ C+ ^8 J, Y
  185.     {
    % W' z) n3 l  l" z
  186.           if (digitalRead(kg)==LOW)
    : B2 ]7 F; E# S( @" A
  187.        {; j0 \$ j6 X$ m2 o! O
  188.             
    2 O# D+ Q7 E* S- r5 _* R( J
  189.             digitalWrite(kg, HIGH);6 W- K  w4 J) H8 |. F
  190.             digitalWrite(de, LOW);
    . o# Q3 G8 |9 e9 d1 ~2 {
  191.             Button1.print("on");
      I( G6 t5 Y* d, k' _% T
  192.             Button1.color("#0000FF");              //设置app按键是浅蓝色
    0 t, ^! e* m# w
  193.             Button1.text("开启中");8 x5 D- V" @9 k$ l  r& ?$ p. M* j% m
  194.        }/ R+ t7 \5 s1 d1 B, P
  195.        else if (digitalRead(kg)==HIGH)
    ' c8 N9 ?2 |+ o# k- ^: Y
  196.        {
    " v. I  d* x; E& l% F% A
  197.             digitalWrite(kg, LOW);& Q( S6 {! B6 _" H( O) j6 H
  198.             digitalWrite(de, HIGH);  e7 R5 ^% g) f9 v8 f
  199.             Button1.print("off");
    - r5 ^3 x: G8 I
  200.             Button1.color("#00FFFF");              //设置app按键是深蓝色! F8 N& o+ G) N* F- w0 \, H
  201.             Button1.text("关闭中");4 N& a0 |3 _; x9 |4 o: C6 h& K
  202.        }
    6 E, @2 r" H& z+ x) R
  203.       }( X1 Y, H* M3 S1 Q
  204.     }
    0 R4 O! s/ Z1 ~0 F3 N, j
  205. }
复制代码
2 @2 Q' B+ `" P+ }( ~: h. B
" |3 u% V2 k+ Q- R
我没有用卖家给的码,我自己写了一个,参考我前面的文章最简单的8266天猫精灵控制开关,点灯、Mixly可视模块化编程 https://bbs.nasdiyer.com/thread-18755-1-1.html& N% M. q* c+ D; ^$ ]
1 J; e( p% v" o& p2 ~
把上面的2改成5,把高低电平对调一下就可以使用天猫精灵来控制你的这个插座了。我是把我的第一个插座放在了我的落地电风扇中了,当我慵懒的在沙发上刷着手机时候感觉有一点点热,我只要呼唤“天猫精灵,打开风扇”,就可以了。
0 K& Q, k8 V0 j$ Q& x+ A& N, O  c
7 H, b  N' q% w3 J, i$ d7 h
/ d9 @* d& g3 H& j

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' D/ E% Z8 v& X8 n: v) M
买了几个   做工挺扎实的,但是外壳怎么拆啊  拿斜口钳拨了一个,   四个圆角的卡口根本没法正常拆 ...

$ w' K: z: }/ c% Q/ t' ]  s& r( o大力出奇迹呀

1

主题

8

回帖

256

积分

中级渣柚V1

积分
256
发表于 2021-8-29 08:14:58 | 显示全部楼层
a467913252 发表于 2021-8-24 15:53
0 d2 ^3 E+ l5 \3 W7 h% |# K; i3 d买了几个   做工挺扎实的,但是外壳怎么拆啊  拿斜口钳拨了一个,   四个圆角的卡口根本没法正常拆 ...
- _  x5 ~6 }# ]! l% x% z
昨晚拆了一个,废了老大劲,想和卖家说的无损拆下来,不拆个三五个积攒经验,基本不可能

2

主题

11

回帖

62

积分

初级渣柚V2

积分
62
QQ
发表于 2021-9-4 23:05:22 | 显示全部楼层
sevenup0719 发表于 2021-8-29 08:14
  p- L) o1 S/ ?# E) b昨晚拆了一个,废了老大劲,想和卖家说的无损拆下来,不拆个三五个积攒经验,基本不可能 ...
. d! G4 G+ o! V0 @1 H3 c% B. [
你的搞定没  为什么我的根本没法烧录   连接不上,,用esp01s还没问题的
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-3-9 21:24 , Processed in 0.067825 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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