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

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

[复制链接]

11

主题

51

回帖

209

积分

中级渣柚V1

积分
209
QQ
 楼主| 发表于 2021-8-21 13:57:54 | 显示全部楼层 |阅读模式
本帖最后由 易记 于 2021-8-21 14:05 编辑 $ U% z3 i! f/ _

5 }9 t* q7 k) s1 U, q& Z+ p8 U2 j/ s最近玩ESP8266,想做个天猫控制开关。! |- u8 {4 S) n" {2 d' l/ q
但是我很懒,一个个配元件嫌麻烦,于是想着能不能淘到便宜的带电源板的模块,多倒是蛮多,一般都要20多块钱。; C; b0 `9 b. S5 A
还是闲钱上逛一下看,找到一个联想的国外版8266智能插座,价格才8.5元一个。有一点不足,就是只有三孔,要是五孔的就好了。老板说五孔杂牌价格一样也有货,晚两天发布。
2 B# `5 S8 }: k2 x QQ截图20210821125037.jpg 1 Z' u! @. C. w6 s) X3 j

& L( a2 Z9 Q% @6 ]' g4 @

/ p" J" Z0 J$ O+ N# e问了一下店主,买20个一盒才包邮,想着20个还是有点多,买了5个,连运费47.5元。- e/ w/ z  d4 O* R
4 k. {, b4 e1 A$ |! H
QQ图片20210821124517.jpg   ^; @+ l8 e% y4 V  F/ K3 Y/ I, U
8 Y2 O' R5 X4 G9 J2 g

6 L! K3 d! d4 }, S  O; v" ^% B

( ]. {5 b) U7 p3 {6 ^# R到手,当然是拆拆拆。! F' y7 T" S" U' E9 r  V
IMG_20210820_134104.jpg / e: s& E# o- W
, y+ j9 |3 X0 n* [$ h
" ^: R7 D5 O3 U) U3 W
联想的做工,还是感觉不错的,光这个继电器应该也要个7-8块钱。8 n; ?( B1 i0 \
IMG_20210820_160634.jpg ; L% V1 _+ S2 w- Q& x  B  X
' }/ P7 z) g+ r0 ~- r* n$ q* L* V
" C0 N8 _" R7 d! g  Z0 ?9 U
继电器是两组常开,感觉要是接电灯双控开关是不是有点麻烦的,不过用于插座是很安全,要断二条线都断开。& _+ {3 e" t& X+ e- u" G  a2 W
QQ截图20210821133707.jpg ) y* N: Q/ i3 x! ?8 A5 ?

. o% J$ t7 F8 ?# s/ v- }8 r IMG_20210820_134114.jpg
9 }- m( V% @" z6 Z
' t/ `' Q" s. W
电源芯片
1 \9 e" J  p7 `& g1 t) B9 I
% n3 ~9 q$ A1 e( C% W+ |
; @1 W+ ^. r1 _* I6 A/ i

. a; H: c! o& r6 J0 T8 }# a有一个按钮,按钮有二个蓝色LED灯6 d/ M$ Q; N1 z, t% G. k
IMG_20210820_134157.jpg 6 G+ i8 j6 h4 }) t+ `! g  J
' Q7 p/ x. [' Z  e, ?

# V0 E% @, |. o- D& N  R8266
3 `7 w( s5 `; N( s' b2 r/ J IMG_20210820_141913.jpg % _0 i+ D3 H, P8 {
$ |, k' M+ k% U

" P3 j) A% J5 z: V
; H: [! }+ |8 d8 M; H$ l
$ Z! n1 p- W1 ^- d' s
接下来就是刷机了,版子上面都预留测试点。
3 U6 h5 ~' T8 x3 ?6 H# v1 a0 k接线比较容易,上面都有标示,GND,3.3V,TXD-RX,RXD-TX,还有一个就是IO0接地后刷机。
. V* J, X  |2 V# {5 l 未标题-1.jpg 4 o5 l. v. f" U* W3 k
注意RX这个点,就是3.3V边上的这个点,焊盘设计的就点问题,电烙铁热一点或是焊的刷机线过粗的话,容易掉焊盘。0 f. ^4 f, c: y" u7 j
要是掉了就只有一个过孔了,要是焊不上,只能再拆开接在另一面,所以为了避免不必要的麻烦,请注意一下。

5 ~  X8 Z2 _3 n# g' L
$ N4 d/ {, p. b: c& ^- B, t1 i0 N. E! |! P( L7 M3 a
1 i" g) r6 j. t' I- M

( d) [7 F7 s3 ~# L
+ P8 j9 h7 ~7 q4 s8 O$ x
    5号脚位是继电器输出
$ n  g5 D8 U8 b& K! H7 u; T2 [4 k3 D    12号脚位是灯输出
' [+ _, m2 `" v: b# V    4号脚位是按键
- x) S7 [2 }) O1 M. m

3 }/ A. O& i( q2 c! \4 y' c" V$ j

- S: T9 a1 Y# J) o/ h, N4 @, y0 O/ y* \+ \
, L# S$ {6 E4 |1 W' b
卖家有发一个源码,如下
  1. #define BLINKER_WIFI                    //官方wifi协议库0 w- |7 M# }, B0 j4 M
  2. #define BLINKER_MIOT_LIGHT              // 设置小爱灯类库
    6 x1 o' L9 ^' ]4 `- ^* y
  3. #define BLINKER_ALIGENIE_LIGHT          // 设置天猫灯类库
    2 s. E$ d! _+ ?
  4. #define BLINKER_PRINT Serial            //串口协议库
    , ]( m5 m: o9 P3 t
  5. #include <Blinker.h>                    //官方库
    $ h" k6 d. Q/ h' L: f; ?# V. Z
  6. #include <ESP8266WiFi.h>                //官方库
    : K( {, x8 w1 Q9 d  Q4 }# j5 X# k
  7. WiFiServer server(80);                  // 服务器端口号+ Y! D6 v4 _7 g* ]

  8. 1 V  q- x; I. e" C* `: q, z/ b
  9. char auth[] = "c4942fb1d5e4";     //设备key. R' S) W. K  k$ d$ r0 K
  10. char ssid[] = "wanboshi";     //路由器wifi ssid
    8 p( G' F" x$ e3 {4 k! @. Z/ g
  11. char pswd[] = "1365662999813586348220";     //路由器wifi 密码% L) h. A' d( [2 ~9 w, i, n
  12. , j. y; m( [7 F$ i8 t; g& G( N$ Q2 O
  13. bool oState = false;! F+ J+ D& m' J5 e9 T

  14. * [* A: ^  M6 L0 M8 W0 w+ g; }
  15. int kg=5;//继电器输出
    4 L; R4 @2 Q" k" x: p/ Y
  16. int de=12;//灯输出
    3 b" X6 D8 o8 z
  17. int key=4 ;//按键! R2 t; ?0 s( q" o; f) v4 v& q
  18. //*******新建组件对象
    + N6 D3 B: T, [' x& [4 X

  19. 8 d% P/ q2 e( ]! g4 v6 T
  20. BlinkerButton Button1("btn-abc");              //设置app按键的键名; {( B* }8 R. I0 L' ]
  21. //*******app上按下按键即会执行该函数app里按键
    0 B/ D3 v8 L% ]& y
  22. void button1_callback(const String & state)
    ) E& X6 {8 O, g. P% B
  23. {
    8 c7 Y/ T: L; F
  24.    if (digitalRead(kg)==LOW)
    + U* b0 D4 _! P3 s  D# G$ A. C
  25.    {
    # z4 G' N. k: M8 B9 O
  26.         BLINKER_LOG("get button state: ", state);3 p% ?- L  Q  l9 p, ~/ L
  27.         digitalWrite(kg, HIGH);; S9 e' M, C5 o2 t) N
  28.         digitalWrite(de, LOW);
    % T( z- a. H" {$ q
  29.         Button1.print("on");
    ' `+ R" z0 g- p; h4 L3 Y% E
  30.         Button1.color("#0000FF");              //设置app按键是浅蓝色
    9 {* V8 q, r& K4 S2 [2 U! A
  31.         Button1.text("开启中");
    ) ~6 y0 s( I; C* W) T/ I6 u  ^
  32.    }7 |" }1 F7 J5 b
  33.    else if (digitalRead(kg)==HIGH)0 r0 T* G1 q6 C$ e8 G* k2 Z
  34.    {
    ! w$ r  f* B5 C. S: g0 V
  35.         BLINKER_LOG("get button state: ", state);
    4 c% b/ g1 b- f7 r. D9 k
  36.         digitalWrite(kg, LOW);
    ! v& w: ~- n( R; X4 F
  37.         digitalWrite(de, HIGH);$ N* O' m0 ^/ k$ y+ |8 O$ S& h1 H
  38.         Button1.print("off");
    5 G# ]& x! _$ w5 M; H3 H+ [  V
  39.         Button1.color("#00FFFF");              //设置app按键是深蓝色
    2 Y5 k" B- A8 r! _
  40.         Button1.text("关闭中");" u! |# c) t7 Z! a
  41.    }1 f2 I. x& r: H# b: a8 A6 l8 M& n
  42. }
    ( X& ?4 |( o5 Z' S3 k: L
  43. 8 r& b: N4 u& ^9 D" p6 b4 T
  44. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    - o3 t* [& S( M8 t
  45. . m9 d! }$ i* C
  46. //*******如果小爱有对设备进行操作就执行下面
    * j7 B- c/ J  L7 w% h) H/ {
  47. void miotPowerState(const String & state)  t2 L9 F. \% S4 {9 d* K
  48. {
    ' G. ~5 U0 c- i# p: u* A4 i
  49.     BLINKER_LOG("小爱语音操作!");              //串口打印
    & U# t8 u: O9 R7 C0 b( G
  50.     if (state == BLINKER_CMD_ON){; v3 K- y( `" ~$ l
  51.         2 P! @! S) ~$ }2 n# Z
  52.         digitalWrite(kg, HIGH);
    8 [! w0 @3 z% G( y* y, a
  53.         digitalWrite(de, LOW);
    + K# B: I% v) G, w* B  a3 q
  54.         Button1.print("on");
    & ]8 {1 a* e( \4 e
  55.         Button1.color("#0000FF");              //设置app按键是浅蓝色
    - `- G2 _; P& @- x
  56.         Button1.text("开启中");* |8 W8 a/ v$ f+ I3 L, L' l
  57.         BlinkerMIOT.powerState("on");; Z5 p5 g& E' {* d9 U) q! }4 Q1 w
  58.         BlinkerMIOT.print();  ?( t9 ?! R/ a/ q) ~% }
  59.    }
    " E) P0 H! G; U2 {" ~, o8 d) s
  60.    else if (state == BLINKER_CMD_OFF)
    ( d% U' J0 b8 j$ q
  61.    {
    - L( X6 B2 c7 T
  62.         3 [9 b3 S+ n; F+ y  r* ~
  63.         digitalWrite(kg, LOW);
    9 o' B& e) Y, }+ I3 S9 \0 t; z7 p
  64.         digitalWrite(de, HIGH);7 F' h5 |# ~4 i( v3 u1 M
  65.         Button1.print("off");
    3 G4 ]1 N" k4 C
  66.         Button1.color("#00FFFF");              //设置app按键是深蓝色1 t$ Z7 K' I7 S4 E, s" s
  67.         Button1.text("关闭中");* ?# t1 Z. s. }8 a
  68.         BlinkerMIOT.powerState("off");
    3 _* g+ K# l" Y8 J
  69.         BlinkerMIOT.print();
    & r  n, [' O% S/ I  |
  70.    }
    : L0 ?4 [, m! A
  71.        7 V. s# q( K* C, y5 z, \( @2 A
  72.   T/ Y9 I, Z- y, {2 G8 k# {
  73. }) B. W6 Z1 T* ?7 N% X: i6 e1 C! o2 I
  74. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    8 ?3 \; Y( ~/ |4 ~
  75. //*******如果天猫精灵有对设备进行操作就执行下面
    / w" H% W- S  `2 r5 {& G
  76. void aligeniePowerState(const String & state)
    ! c8 W7 D6 e5 \, X
  77. {" J/ w% M* ?% {# W0 [( g
  78.     BLINKER_LOG("need set power state: ", state);% F) m$ p* D$ c
  79.     if (state == BLINKER_CMD_ON)
    5 M$ K' D8 }9 u
  80.     {
    ) n0 u5 Y  X& J: Y$ Q8 I( w
  81.         
    6 o& i: E0 r8 V/ ]9 P( R
  82.         digitalWrite(kg, HIGH);* ~* S6 a2 u: E! T  I  }5 J3 A3 c- ?
  83.         digitalWrite(de, LOW);
    3 m) w3 \% b% t$ T( N0 g
  84.         Button1.print("on");# M3 L( E4 T# T5 n4 x4 M
  85.         Button1.color("#0000FF");              //设置app按键是浅蓝色4 Z( m  C( y% H* `  F
  86.         Button1.text("开启中");
    ' y, b- x. ]+ t' B% `
  87.         BlinkerAliGenie.powerState("on");1 \; ^/ ]) @* f0 R' O5 P8 f
  88.         BlinkerAliGenie.print();
    $ `$ `1 J# l0 L0 @3 }9 R
  89.     }4 L6 Y' s9 L; R
  90.     else if (state == BLINKER_CMD_OFF)
    3 y/ s: X5 e% F% z: O
  91.     {
    1 D7 L! `% e7 v- N* D
  92.         
    9 P" }+ [7 g- M. d# G7 @+ R; Q/ J$ Z
  93.         digitalWrite(kg, LOW);. M4 n2 V: r$ {0 B
  94.         digitalWrite(de, HIGH);
    ' J' Z6 G% F$ V7 |2 [% @
  95.         Button1.print("off");  m- J* z/ o! w7 Y
  96.         Button1.color("#00FFFF");              //设置app按键是深蓝色
    7 f" N8 c3 g( R/ b
  97.         Button1.text("关闭中");
    # N5 Z* B- k0 m1 B6 h+ {; R
  98.         BlinkerAliGenie.powerState("off");8 s; E& ?8 M8 b4 ]1 X( B
  99.         BlinkerAliGenie.print();1 x' a+ m8 b0 ?- L% [, ?3 \- R, v
  100.     }
      u, D: X: v$ T( Z. Y8 n
  101.         ' {& v- f7 Q$ u$ e, T( ~
  102. 4 a* `, c( C% U
  103. }' @6 `9 N. o! v7 E4 U4 v+ O6 N  S
  104.   //*******app定时向设备发送心跳包, 设备收到心跳包后会返回设备当前状态30s~60s一次$ p& p( p5 {/ ~
  105. void heartbeat()" C' Y/ x' @# X+ J' B
  106. {
    ) z  R  f8 g5 p
  107.   BLINKER_LOG("状态同步!");
    ! O/ a$ }6 j- `9 e
  108.    if (digitalRead(kg)==HIGH)
    . k" u. T  X, e4 L9 q" M5 j& e
  109.     {
    2 I2 T$ x1 r# F( e; t4 j
  110.       Button1.print("on");
    / h0 ~$ j# z" p) a  e
  111.       Button1.color("#0000FF");              //设置app按键是浅蓝色$ m4 m3 z2 h( ]" o" a
  112.       Button1.text("开启中");
    4 a0 z$ a! ^; G2 a
  113.     }5 a; o5 O& m3 @9 f; p' m3 o: x
  114.     else * X) \' a; E& j2 R
  115.     {
    . l6 w" \% [( U( [/ ~7 Q. P9 ^
  116.       Button1.print("off");/ n9 J/ v5 g' L  y4 z% d
  117.       Button1.color("#00FFFF");              //设置app按键是深蓝色2 ?( r9 j) B( O0 K" v
  118.       Button1.text("关闭中");! W$ {# P: e7 r8 N8 ]# ], T& d
  119.    
    6 w/ j. B0 }, a
  120.     }# [+ D+ j& G: ]; ^9 x* }, `
  121. }
    . z) l, U- c$ D) d  {, D- n
  122. //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    4 F- q/ ^/ D& ]0 z; y# Q2 B
  123. void setup()
    8 r- J8 a2 W6 F
  124. {. [" V& c2 x& C( g; e
  125.   // 初始化串口$ l  O: V: }/ q- \+ b- V6 j( r* K
  126.   Serial.begin(115200);5 A# J0 s' g: j( X, E& f/ U
  127.   delay(10);  a4 C$ `) k( s- C. D! ?# a- p9 G( }4 ~
  128.   BLINKER_DEBUG.stream(Serial);
    0 d4 J; ~6 E$ V% C
  129.   // 初始化有LED的IO2 m+ _; h6 r3 V! y4 |* v7 Y
  130.   pinMode(kg, OUTPUT);                 ! ]! p9 w/ m6 A9 C1 H
  131.   digitalWrite(kg, LOW);//初始化继电器上电状态 7 c1 T9 W& S0 m1 C* o, O
  132.   pinMode(de, OUTPUT);
    5 g, U( p! O. `  L
  133.   digitalWrite(de, HIGH);
    % d3 x8 k+ m* c  a& w2 o* L
  134.   pinMode(key, INPUT);            9 F# f2 I! {9 Z2 p$ @$ R3 o9 _
  135.   Serial.println();! O0 C8 M3 s% H+ {; T( T8 w& ~& D
  136.   Serial.print("Connecting to ");
    - L4 g! g7 X3 C* S) m" s
  137.   Serial.println(ssid);. A. W  R" \9 d( V% \
  138.   WiFi.begin(ssid, pswd);
    $ o; Y- N9 {: X5 Y3 ?: G
  139.   while (WiFi.status() != WL_CONNECTED) {& q0 n' V! z5 \9 w4 l6 T
  140.     delay(500);5 D) h$ E. H, D1 j2 _
  141.     Serial.print(".");
    ! E( v5 Y' h# _' `
  142.   }
    9 u" E; T0 U$ A$ v4 H
  143.   Serial.println("");' O# K& q; _. n  z' y
  144.   Serial.println("WiFi connected");
    4 m. P, Y/ @1 z$ P7 o! ]9 R
  145.   server.begin();
    # t3 v: D+ u9 m5 p
  146.   Serial.println("Server started @ ");5 B2 m0 w) D  P  K) d/ ~
  147.   Serial.println(WiFi.localIP());
    % K+ u3 M6 r3 ]; r- J: o0 t! h
  148.   //打印出IP地址,后期可以制作显示器来外部硬件显示ip# O. C- q+ A6 {. N- l# |
  149.   Serial.println("To control GPIO, open your web browser.");8 S% t0 o) X1 D+ U2 g
  150.   Serial.println("To set GPIO 0 high, type:");* X1 r* z2 A* p
  151.   Serial.print(WiFi.localIP());) J/ |# m1 b3 @1 D/ o" o
  152.   Serial.println("/gpio/1");
    2 L' k9 H/ c/ k! ^
  153.   Serial.println("To set GPIO 0 low, type:");1 Y0 E) m) W& x! [! J) \4 N
  154.   Serial.print(WiFi.localIP());
    1 s$ D9 P; M! V# q3 U. o; X: j
  155.   Serial.println("/gpio/0");: x4 Y8 U7 t( b& ?4 b  j1 C
  156.   Serial.println("To toggle GPIO 0, type:");& t6 G! O& D6 J$ {; I' }
  157.   Serial.print(WiFi.localIP());/ \, A' \( ?" \  V3 {2 a; z
  158.   Serial.println("/gpio/4");( @) e5 v' A- R8 d( u* u" ]
  159. 6 s# E+ c' ~; j. o$ Q
  160.   // 初始化blinker
    - r2 M" ?  J: V8 p
  161.   Blinker.begin(auth, ssid, pswd);
    : y9 [% j6 N4 h# P' f7 C( R
  162.   BlinkerMIOT.attachPowerState(miotPowerState);              //小爱语音操作注册函数
    + [5 Z. Y( `4 g3 h9 j
  163.   BlinkerAliGenie.attachPowerState(aligeniePowerState);      //天猫语音操作注册函数! D2 {3 D. w' m5 A  A* a7 g. l0 d
  164.   Blinker.attachHeartbeat(heartbeat);              //app定时向设备发送心跳包, 设备收到心跳包后会返回设备当前状态进行语音操作和app操作同步。
    + v# r! S  M0 x! T
  165. : y: |; B; d. r3 E9 a/ H
  166.   Button1.attach(button1_callback);             //app上操作必须的注册回调函数关联按键名“Button1”和判断程序“button1_callback1 t3 }, U0 r  ]3 s" a7 `
  167. }
    5 t5 z* ]7 b$ E3 L4 O$ g- Y
  168. void dataRead(const String & data)
    6 W' t2 }  `) p4 l+ R0 R& s
  169. {
    0 H, p- T! W( A& D/ i
  170.     BLINKER_LOG("Blinker readString: ", data);. [3 ]' a9 o: r$ l8 @) R
  171. ) }; E  n' Q1 F! |
  172.     Blinker.vibrate();8 |; l2 z. e, v/ a6 A! H  ~8 ]$ Z
  173.     5 L3 I1 Q* e- ^* e5 N' H# r
  174.     uint32_t BlinkerTime = millis();1 w" e! N; h3 [% \1 L
  175.    
    4 s% S1 O* U" ^( \
  176.     Blinker.print("millis", BlinkerTime);/ `% D8 t7 _0 I, X, r7 i) y
  177. }
    1 {( V  S- J: X
  178. void loop()
      z* R7 H' w& I  P: B1 c- j9 R6 h. G
  179. {* r. _. k; g3 a7 e) y) y( X
  180.   Blinker.run();4 X5 Z' p6 s* j# c. t0 p& Q$ r
  181.   if (digitalRead(key)==LOW)
    6 M6 o/ C, H( C* k9 P
  182.   {: R; J+ [$ z7 x$ t" A. O
  183.     Blinker.delay(200);  s& R- E  S( k* e: i; b! h
  184.     if (digitalRead(key)==LOW)/ k4 I3 ]+ E8 f1 Q, _, v
  185.     {
    * o9 M* P2 {0 ]9 F- D
  186.           if (digitalRead(kg)==LOW): s, R- @$ V) b* E: Y  N
  187.        {
    : y  C8 A3 i$ R) U+ a" V
  188.             
    , |0 q, H( d# `1 d
  189.             digitalWrite(kg, HIGH);4 I; E1 p0 l. E$ D- E3 {+ n6 y* m
  190.             digitalWrite(de, LOW);8 R- O$ N/ `% P# d3 G8 l
  191.             Button1.print("on");
    & r! `" ]) Q( i% ^" \: P0 q+ a' e
  192.             Button1.color("#0000FF");              //设置app按键是浅蓝色
    2 ?6 u9 s9 ~+ E
  193.             Button1.text("开启中");
    5 A8 ~2 R5 Y/ N: a0 s# j" d* I
  194.        }3 e: V( c- _/ r8 v* l3 E
  195.        else if (digitalRead(kg)==HIGH)
    % }7 E5 ^( W# u* n" ~
  196.        {1 J( g' e8 W% y. i- R" Y
  197.             digitalWrite(kg, LOW);
    ' ?# y- Y  v% X. Z
  198.             digitalWrite(de, HIGH);6 K2 y0 A( K/ V0 {
  199.             Button1.print("off");
    3 _3 t/ y" K( _0 W! d0 R# |
  200.             Button1.color("#00FFFF");              //设置app按键是深蓝色& x1 E# f4 J+ Q
  201.             Button1.text("关闭中");* U- G9 z- {0 I
  202.        }* I7 H" L- ?# T
  203.       }
    / H+ Y9 _; i# ~
  204.     }* E5 r3 x$ }; @5 m0 M; g( k
  205. }
复制代码

3 [; g9 v6 k# @  l3 B8 _
" u! K* o" M2 m" i. k我没有用卖家给的码,我自己写了一个,参考我前面的文章最简单的8266天猫精灵控制开关,点灯、Mixly可视模块化编程 https://bbs.nasdiyer.com/thread-18755-1-1.html
0 H! x8 Q* `5 B- S) R' \% I* Q" D
: ]/ ]  j2 F' U" @8 W1 g, m6 m  H' O( [把上面的2改成5,把高低电平对调一下就可以使用天猫精灵来控制你的这个插座了。我是把我的第一个插座放在了我的落地电风扇中了,当我慵懒的在沙发上刷着手机时候感觉有一点点热,我只要呼唤“天猫精灵,打开风扇”,就可以了。
/ {) o9 o' h3 y8 a8 W
1 O" I  c: W; d8 t
$ J' E8 h- m  Y) T# I' @

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
5 L$ T- {/ r0 e: G6 T. _& p买了几个   做工挺扎实的,但是外壳怎么拆啊  拿斜口钳拨了一个,   四个圆角的卡口根本没法正常拆 ...

& I9 n& P8 k4 K, Y大力出奇迹呀

1

主题

8

回帖

256

积分

中级渣柚V1

积分
256
发表于 2021-8-29 08:14:58 | 显示全部楼层
a467913252 发表于 2021-8-24 15:53& E9 P) a$ n. W. z3 l/ ^- X; i; q! _) c
买了几个   做工挺扎实的,但是外壳怎么拆啊  拿斜口钳拨了一个,   四个圆角的卡口根本没法正常拆 ...
; S" T  I  w) v- P: J5 d" w# ~
昨晚拆了一个,废了老大劲,想和卖家说的无损拆下来,不拆个三五个积攒经验,基本不可能

2

主题

11

回帖

62

积分

初级渣柚V2

积分
62
QQ
发表于 2021-9-4 23:05:22 | 显示全部楼层
sevenup0719 发表于 2021-8-29 08:14
3 D2 ^3 o1 r2 Y* z6 m* C/ F" j昨晚拆了一个,废了老大劲,想和卖家说的无损拆下来,不拆个三五个积攒经验,基本不可能 ...

3 P3 A- O+ w5 h+ g3 y你的搞定没  为什么我的根本没法烧录   连接不上,,用esp01s还没问题的
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-11-11 18:57 , Processed in 0.092790 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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