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

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

[复制链接]

11

主题

51

回帖

209

积分

中级渣柚V1

积分
209
QQ
 楼主| 发表于 2021-8-21 13:57:54 | 显示全部楼层 |阅读模式
本帖最后由 易记 于 2021-8-21 14:05 编辑 . l2 ?3 i+ f6 e( k, [

, Z' z6 u& _; l+ X5 C最近玩ESP8266,想做个天猫控制开关。4 v) v% E" y- F5 N0 _6 g
但是我很懒,一个个配元件嫌麻烦,于是想着能不能淘到便宜的带电源板的模块,多倒是蛮多,一般都要20多块钱。9 m7 B; R8 K, u8 q8 U
还是闲钱上逛一下看,找到一个联想的国外版8266智能插座,价格才8.5元一个。有一点不足,就是只有三孔,要是五孔的就好了。老板说五孔杂牌价格一样也有货,晚两天发布。
; b' N/ t9 t/ C QQ截图20210821125037.jpg 8 Y1 l- b% X4 |5 t1 {. X! M$ w( R

2 U) L/ ^( h. e7 x
$ u% f' ]: _/ X  k
问了一下店主,买20个一盒才包邮,想着20个还是有点多,买了5个,连运费47.5元。" Q6 k. r5 J6 ~% ^# q

. R, ^; B0 k; Y$ @5 @ QQ图片20210821124517.jpg
0 c& ~: o2 t- h
! o7 i  ^* o* [3 G+ d2 b& Q9 ^% ?0 J1 s

% n. Z- h1 {5 R$ `- U2 w

+ T0 F3 Z8 R  U  w到手,当然是拆拆拆。
5 P7 R0 j: {( I; M3 y2 J IMG_20210820_134104.jpg
* K" k" @. {7 z4 K& }  s# D& U: C+ k- z$ [* V: @/ c
' b  r5 L4 g! g8 u5 s9 X( _4 b+ T
联想的做工,还是感觉不错的,光这个继电器应该也要个7-8块钱。4 ~# k6 Q/ R4 D  W0 @) Q
IMG_20210820_160634.jpg : }: V/ \8 E5 x7 E+ ]; s' ?

; r# E4 e/ Z; y0 c
. U" n2 m, s5 X# L4 ]
继电器是两组常开,感觉要是接电灯双控开关是不是有点麻烦的,不过用于插座是很安全,要断二条线都断开。
0 |* h/ O* Q% e/ |6 `" l' H QQ截图20210821133707.jpg ( }$ W2 h9 x7 W& ~" ~" {

9 Z. B2 V. ]+ M- j IMG_20210820_134114.jpg
# u/ B. `% F6 B; d! [3 _
" y3 j+ Y+ A0 o
电源芯片3 r& `7 [6 q2 `% T7 P& c
/ P0 h$ X2 T, ]7 z& W1 V

  f8 h' m9 \6 E9 k5 }
4 p$ Z' e9 T/ _( T: _) r( u
有一个按钮,按钮有二个蓝色LED灯6 n! U! z% C7 |7 T; S7 ]  s
IMG_20210820_134157.jpg # V/ K$ ]4 Q4 ^% }/ ?$ N9 [  L
0 ?1 ]- \! J" D7 t8 N3 ~
% E" k" k- C" @. G6 ~/ }
8266' t# K* [% z! |! H* m) |8 J
IMG_20210820_141913.jpg
! f/ o+ ]- K3 \! j; _0 A' x! `/ z. h; @

, i' a, @) M  ~, L1 a/ [6 r& i$ V& w0 v6 @( k) }% a. ~  W, v9 l
( I) ~/ y' {- R6 U2 d# p9 t$ P$ r
接下来就是刷机了,版子上面都预留测试点。
& L3 n, W/ ?: P7 C' d; y接线比较容易,上面都有标示,GND,3.3V,TXD-RX,RXD-TX,还有一个就是IO0接地后刷机。
: r; u7 _7 H& k4 n: x/ P 未标题-1.jpg ( R7 k5 H' f0 f$ s" e  T7 `
注意RX这个点,就是3.3V边上的这个点,焊盘设计的就点问题,电烙铁热一点或是焊的刷机线过粗的话,容易掉焊盘。$ `' `, A  I7 E0 [
要是掉了就只有一个过孔了,要是焊不上,只能再拆开接在另一面,所以为了避免不必要的麻烦,请注意一下。
, q* ~2 d  X- w; Y( q
+ H, l, w& t* N! m' f8 A3 e  [8 f/ p
0 U3 T1 ?/ U: j% Z
+ u! w  q0 w) G+ `
0 A: @5 a) P; a

' W* ^- `5 [4 G7 e6 @7 Y/ i8 \- V    5号脚位是继电器输出
+ e- V/ W2 B, |* r, b3 S    12号脚位是灯输出" B, e! ^5 \* t$ q! z& k3 c
    4号脚位是按键
' P: b8 E1 W. \  t3 [4 t: Y

3 D- S5 y5 J7 ?  l

$ w! R9 p( X: b# F2 E& M2 n9 _7 Z& y( x2 V1 \9 S8 c

) n6 ~2 j: M; {, u3 n" I5 s0 }卖家有发一个源码,如下
  1. #define BLINKER_WIFI                    //官方wifi协议库  a' b8 \9 f  ]% b" P7 Y/ o
  2. #define BLINKER_MIOT_LIGHT              // 设置小爱灯类库+ V% h2 |( K$ G! d
  3. #define BLINKER_ALIGENIE_LIGHT          // 设置天猫灯类库
    ' v1 @' u1 x" f6 V  Q( E4 z# ]
  4. #define BLINKER_PRINT Serial            //串口协议库( q' }1 W4 {1 |% _6 [( j
  5. #include <Blinker.h>                    //官方库1 o, o- k; K2 @" C6 S. }% b7 e
  6. #include <ESP8266WiFi.h>                //官方库
      i, O0 B+ b' d7 ~8 q( [
  7. WiFiServer server(80);                  // 服务器端口号
    " R- ?: j8 _( P; u7 n

  8. 0 ]8 {5 S7 L/ p
  9. char auth[] = "c4942fb1d5e4";     //设备key
    6 h/ @2 d1 M' k- E/ T8 Y) `; w
  10. char ssid[] = "wanboshi";     //路由器wifi ssid
    2 z) H6 D5 `) p; K+ j
  11. char pswd[] = "1365662999813586348220";     //路由器wifi 密码5 ?0 l) X5 `& d: B. y

  12. % ?3 m  A8 H; O" S( t4 u
  13. bool oState = false;
    ' S4 P/ ~+ ?' i, ^6 I* ~

  14. % _7 @) [9 {# F& r7 ^
  15. int kg=5;//继电器输出  ?7 O' T; q- r7 n6 O/ d3 g
  16. int de=12;//灯输出
    3 Q9 i# o" T! [5 _4 E
  17. int key=4 ;//按键6 b# G1 @' X3 [7 x9 ?2 w  I- k! J5 w. S
  18. //*******新建组件对象
    0 p6 m' S8 `. K' c* Z0 x& ]7 s6 _
  19. / z% L5 v+ r/ J7 e, W4 D! B
  20. BlinkerButton Button1("btn-abc");              //设置app按键的键名
    2 G) e! V+ Z- T9 h) n1 r1 n# L% m
  21. //*******app上按下按键即会执行该函数app里按键( U4 X$ S1 l. \
  22. void button1_callback(const String & state)- t1 C3 b' T+ r5 U, g" b" C
  23. {1 H5 c8 u  n5 d2 W9 ^
  24.    if (digitalRead(kg)==LOW)
    0 z5 T" w. D8 D, K: U
  25.    {# q9 N: \; T5 s1 h( ^$ `
  26.         BLINKER_LOG("get button state: ", state);8 V+ A  k" o- d' l+ C1 v8 w
  27.         digitalWrite(kg, HIGH);% q2 U# J" }7 O  u9 |/ V- [
  28.         digitalWrite(de, LOW);
    1 V% b5 x* W; P9 P
  29.         Button1.print("on");$ y+ t! X6 m; Z; C0 o
  30.         Button1.color("#0000FF");              //设置app按键是浅蓝色
    $ |/ I  q: f4 o* p4 `9 S; X! k7 ~
  31.         Button1.text("开启中");9 s+ u. H- s" A: a! x' ^
  32.    }
    ( D$ D$ B3 w+ [. U
  33.    else if (digitalRead(kg)==HIGH)
    0 s4 E6 x0 U9 i# i7 S& m
  34.    {
    ' h, ]) ]9 C1 }1 G% M
  35.         BLINKER_LOG("get button state: ", state);8 r1 L# K$ i: J
  36.         digitalWrite(kg, LOW);
    + v5 F4 t1 {( W( d* g/ H3 t# C
  37.         digitalWrite(de, HIGH);8 @9 h; X# l- ]/ t3 ~# I
  38.         Button1.print("off");: P3 g& c) T) m6 |% X
  39.         Button1.color("#00FFFF");              //设置app按键是深蓝色" D9 h! T: |& `; b) U
  40.         Button1.text("关闭中");. a$ D& i) x5 Q0 l) H( u+ g3 l
  41.    }/ O5 n! g  H, y6 E/ m
  42. }
    & w) X$ W5 m" d* \' o
  43. $ B! l. l* f: j/ r) J* c1 s
  44. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++2 |. Z/ y0 }6 z4 p8 L3 P: F; |

  45. : S/ i% r) ]* j7 d, r9 ]' ?% U$ j# C
  46. //*******如果小爱有对设备进行操作就执行下面
    + v" ]/ K  d1 o5 g8 l2 l
  47. void miotPowerState(const String & state)
    ! N  {1 x) Q# s, y7 I0 v
  48. {
    - M  h! H) _" h% B0 C' b+ U
  49.     BLINKER_LOG("小爱语音操作!");              //串口打印3 n1 Q8 ?  D' L
  50.     if (state == BLINKER_CMD_ON){
    / o& ~2 ~8 u0 _; t' [2 y) e
  51.         
    # [( Q8 k( P; {
  52.         digitalWrite(kg, HIGH);* r# g9 p4 V% I/ g7 X- s4 Q
  53.         digitalWrite(de, LOW);
    , G: S: i$ V8 K" _# f+ {
  54.         Button1.print("on");0 a! s/ k: t3 m' R5 C
  55.         Button1.color("#0000FF");              //设置app按键是浅蓝色
    % y0 e* Q4 k9 N- H/ M
  56.         Button1.text("开启中");
    ; s1 Q' U4 Q4 i+ C' P
  57.         BlinkerMIOT.powerState("on");
    7 G& T  Z1 e4 S# V8 y  D) X0 l% G
  58.         BlinkerMIOT.print();; w+ ], [- r+ \5 i" `3 Q
  59.    }/ d% b2 z' ~5 n1 k/ y% S
  60.    else if (state == BLINKER_CMD_OFF)
    ; u3 q- A6 `% z& l( X9 W
  61.    {4 d7 b7 f; b: Y
  62.         , `# l& g& ^2 {9 |
  63.         digitalWrite(kg, LOW);3 d1 X5 J" {/ V' }% J* ~+ |# Q6 C. S
  64.         digitalWrite(de, HIGH);# m, ^% c% Q0 i- v) P
  65.         Button1.print("off");
    ( W- H: ~3 ^+ ?
  66.         Button1.color("#00FFFF");              //设置app按键是深蓝色" |0 D* L8 l3 S6 |! J
  67.         Button1.text("关闭中");
    3 Q8 z8 y# A& J% B( [* j- G4 R
  68.         BlinkerMIOT.powerState("off");
    7 f8 I: a8 }* V' n2 Y' t  D* `9 O
  69.         BlinkerMIOT.print();
    5 [  k8 |5 Y# F" ?8 z
  70.    }. Y$ U2 y2 J; c( v0 i6 p
  71.       
    1 \" F4 v+ [- a
  72. ' l/ n4 S% z* N) W. W2 `, V" P8 W
  73. }
    : n! ]6 N+ E( V* b
  74. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- j, l: O2 B. w* J1 o9 C
  75. //*******如果天猫精灵有对设备进行操作就执行下面
    9 J9 C" k3 y, s
  76. void aligeniePowerState(const String & state)6 L+ Y+ {  Y. c* ?% I
  77. {; {5 r+ ^7 J' C/ h% K
  78.     BLINKER_LOG("need set power state: ", state);
    # b. D( t4 Q" S8 A+ u
  79.     if (state == BLINKER_CMD_ON)- s# n& A" r; L1 Y0 Q( f9 ?3 w  Y
  80.     {
    6 L  R/ k2 D5 h
  81.         
      G1 u9 \) \/ L
  82.         digitalWrite(kg, HIGH);
    $ Z1 X- Y3 ^# H' i8 P# x: [1 f* {, H
  83.         digitalWrite(de, LOW);: [8 m5 |' X* U% G3 L
  84.         Button1.print("on");
    $ u0 }! f; |, e
  85.         Button1.color("#0000FF");              //设置app按键是浅蓝色
    ( H# C, Z$ t) Y+ U
  86.         Button1.text("开启中");% f. o- g+ d, U/ Y( t+ c5 i
  87.         BlinkerAliGenie.powerState("on");
      B" Q* x/ |' h3 R# Q, g
  88.         BlinkerAliGenie.print();7 a  h6 p  h/ a
  89.     }  n+ y; Z' i' Z; E3 L2 ^
  90.     else if (state == BLINKER_CMD_OFF)
    ' \4 Q3 _* \$ ^9 ^
  91.     {
    3 }/ i5 ~/ U2 h5 D: |
  92.         " z5 i: C) W2 @7 g; s6 {& t9 V0 N
  93.         digitalWrite(kg, LOW);
    6 P% Y" \  r$ O1 U# Y
  94.         digitalWrite(de, HIGH);
    , R! {, _# }6 j3 q2 G7 u% [/ F
  95.         Button1.print("off");- D, B  P7 H6 y. [8 |$ m1 N
  96.         Button1.color("#00FFFF");              //设置app按键是深蓝色
    - k- W5 |# ^- t0 ?
  97.         Button1.text("关闭中");* o# o+ E% W  m/ n
  98.         BlinkerAliGenie.powerState("off");
    ! f+ X  v$ A9 L0 T; y6 G
  99.         BlinkerAliGenie.print();% ^' K4 A& \5 l+ U  J
  100.     }% ]; R4 `% v  P4 ~8 Q: Q
  101.           r( L7 w) s# [6 i; _  c

  102. + P1 J2 A( o- k+ J8 _/ A8 g
  103. }
    ! f% U/ r% _$ z
  104.   //*******app定时向设备发送心跳包, 设备收到心跳包后会返回设备当前状态30s~60s一次: t1 e7 q; p% j6 _* o3 I0 L
  105. void heartbeat()
    8 s2 X( ?+ w( {+ y% T
  106. {
    & q4 `' r6 b) J! `
  107.   BLINKER_LOG("状态同步!"); 5 {/ j. s( u4 b; f9 ]: A8 h9 c
  108.    if (digitalRead(kg)==HIGH)
      K" q5 v' ~; P( _- f
  109.     { % p6 S" v, |8 T1 H3 o* w3 V
  110.       Button1.print("on");. E1 ~2 L! X* L# J
  111.       Button1.color("#0000FF");              //设置app按键是浅蓝色6 s7 @9 X; S% s" d
  112.       Button1.text("开启中");
    ' O7 R! A, x+ R) f; @* Y
  113.     }! U# A" J/ w5 ]3 y" x/ R6 ~, z
  114.     else - q: [# X  o! F! t( x
  115.     {
    5 p/ G# G  ]+ d! {! a
  116.       Button1.print("off");' `- C) e) B- j8 B% G
  117.       Button1.color("#00FFFF");              //设置app按键是深蓝色' j6 g6 x) a7 `8 X6 A" Y
  118.       Button1.text("关闭中");
    " D5 j% w' I+ Y  B4 d) d) L
  119.    
      o, T8 K! b; D# {# b
  120.     }
    3 m$ L# A) e1 x8 `- K
  121. }
    3 Y$ ^$ W# u, I) K% B- V% w1 O
  122. //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    " S' N/ |* |! C* {0 W7 I
  123. void setup()
    * S$ H7 g% I* U  I2 v
  124. {
    2 q% S, Y3 U3 p9 x2 U( R9 G, I% u
  125.   // 初始化串口: B# G. K' c. V: P5 \- j  f3 w
  126.   Serial.begin(115200);9 V* l2 _2 }$ Y& z5 @
  127.   delay(10);
    . A1 e9 G' |2 \& o
  128.   BLINKER_DEBUG.stream(Serial);8 w  G4 x' `* j0 V5 \
  129.   // 初始化有LED的IO
    ) Z4 C& t4 w5 Z0 x5 L
  130.   pinMode(kg, OUTPUT);                 ! ^, `. p3 b: G
  131.   digitalWrite(kg, LOW);//初始化继电器上电状态 ) [/ l, ~6 H, P* b
  132.   pinMode(de, OUTPUT);
    4 a! }+ _3 A" Z$ o: i
  133.   digitalWrite(de, HIGH);
    / t7 F0 x5 I" i/ q/ v5 p6 ?
  134.   pinMode(key, INPUT);            
    - z4 B, @8 U: G$ e
  135.   Serial.println();
    - T  q% C- e7 G: K$ L
  136.   Serial.print("Connecting to ");
    $ m2 @  d% Y* M: d# r; i1 A- }7 Y
  137.   Serial.println(ssid);
    / M( U5 R9 x' |+ e4 Y
  138.   WiFi.begin(ssid, pswd);
      R; ~$ l( K; r' @4 z5 a3 P
  139.   while (WiFi.status() != WL_CONNECTED) {
    % V, q: U+ J# b  U1 V0 [& ]% L  ~
  140.     delay(500);/ N; b" O- N: n$ u: n5 c
  141.     Serial.print(".");6 m* W0 r/ V' }7 Z1 r! D! N4 E5 N; y' Y
  142.   }
    % Y, j- V* [4 \, u2 ]& K
  143.   Serial.println("");; i; E, C' |( |$ D4 c
  144.   Serial.println("WiFi connected");$ l. V+ R1 D8 @( v2 E% ?  L7 L
  145.   server.begin();
    ) ^6 g4 j) H1 Q- I
  146.   Serial.println("Server started @ ");
    / Q8 |* A* @6 O1 D" \  m
  147.   Serial.println(WiFi.localIP());6 M4 X4 ]6 N7 z% Q$ Q! y- o) P4 p
  148.   //打印出IP地址,后期可以制作显示器来外部硬件显示ip0 m/ ?/ C( w7 g5 M. H# [) A: Z
  149.   Serial.println("To control GPIO, open your web browser.");% z0 m. z' V7 I2 Z1 n- R
  150.   Serial.println("To set GPIO 0 high, type:");
    0 G1 }8 V% ]: u( m; M
  151.   Serial.print(WiFi.localIP());
    + |6 ~/ f+ V0 C- X. S7 a  }
  152.   Serial.println("/gpio/1");
    $ K- P5 ~% D! l. E3 m! ^
  153.   Serial.println("To set GPIO 0 low, type:");
    ; a9 N$ b3 O' P5 Z
  154.   Serial.print(WiFi.localIP());
    $ i0 x# A0 a! _8 e1 N8 Z
  155.   Serial.println("/gpio/0");
    . V$ X$ h6 j; H* y2 R* E
  156.   Serial.println("To toggle GPIO 0, type:");
    1 m# t5 n* ^: \( L
  157.   Serial.print(WiFi.localIP());4 u0 O6 f' I- W8 J! G) r2 {8 r  d
  158.   Serial.println("/gpio/4");
    0 f* X) w% i8 }* }" {1 g

  159. ! a- N" @9 _+ d7 j4 Z& ?. S
  160.   // 初始化blinker! Y% U) U( e& q! ^* ?0 ]: ^% n
  161.   Blinker.begin(auth, ssid, pswd);% f' v8 e3 h5 `7 A3 ?
  162.   BlinkerMIOT.attachPowerState(miotPowerState);              //小爱语音操作注册函数& x$ u% S! k- x5 j
  163.   BlinkerAliGenie.attachPowerState(aligeniePowerState);      //天猫语音操作注册函数8 r+ C; Q4 v9 F# u' i0 `
  164.   Blinker.attachHeartbeat(heartbeat);              //app定时向设备发送心跳包, 设备收到心跳包后会返回设备当前状态进行语音操作和app操作同步。
    4 p9 h4 ?# D. s0 V9 c
  165. . y* x: L* _% [6 p$ F
  166.   Button1.attach(button1_callback);             //app上操作必须的注册回调函数关联按键名“Button1”和判断程序“button1_callback  a% X# B8 A. z9 l! ?# l# o
  167. }! r0 ?: B! _; v* z! n0 T
  168. void dataRead(const String & data)
    ! `4 T! u1 C% ~* E
  169. {
      G& K2 w9 h( _
  170.     BLINKER_LOG("Blinker readString: ", data);
    ( j) `6 }; x/ M9 \* X
  171. : Z6 u0 F  a1 z2 b
  172.     Blinker.vibrate();
    - W9 y% q+ y% |9 d0 a' o9 y. U+ R
  173.    
    + J4 G, Q( S, j1 l& p1 h
  174.     uint32_t BlinkerTime = millis();
    ) _7 K' ?7 s  [. K6 \7 H" {% a3 B
  175.    
    6 u4 f* h6 w# p8 H5 O/ y
  176.     Blinker.print("millis", BlinkerTime);
    ' s6 s+ \" S4 p4 \$ u
  177. }
    : G- w) T& `+ r- k& R' u
  178. void loop()
    0 [0 Z* [5 a6 E! h/ s/ s
  179. {9 f( c/ o" }7 t$ d! J8 I
  180.   Blinker.run();
    3 l4 e& H, }1 s3 X
  181.   if (digitalRead(key)==LOW)+ e1 r0 `/ n! p! \8 }/ A0 i5 ^
  182.   {# g" Y: H* f5 W) R$ x" E$ J- V! T
  183.     Blinker.delay(200);
    * t+ ^. E  U0 o5 K" y
  184.     if (digitalRead(key)==LOW)/ G7 U! C) ?& V
  185.     {
      X7 T* t% N# r2 l. a8 H6 K
  186.           if (digitalRead(kg)==LOW)
    6 y8 L8 f! t- m$ i5 Z
  187.        {
    ! C7 B( k, S# K9 d7 L2 ]. e
  188.             
    3 s8 n0 D! v( n
  189.             digitalWrite(kg, HIGH);
    : N' w/ \1 S% I0 X/ S0 T8 I" d
  190.             digitalWrite(de, LOW);3 K' m- y. I6 g; t
  191.             Button1.print("on");. Z$ W6 @+ W% A+ t8 X9 g5 @7 |
  192.             Button1.color("#0000FF");              //设置app按键是浅蓝色/ n; L4 F; ~) d
  193.             Button1.text("开启中");) ^: W# }! F2 I; g
  194.        }
    # X  g+ ]- q+ O! C* i2 J. G
  195.        else if (digitalRead(kg)==HIGH)
      P" Q9 }$ l7 y7 v4 x3 \( m
  196.        {3 k% |+ @; f! E
  197.             digitalWrite(kg, LOW);
    0 h% l9 D3 R* o; q
  198.             digitalWrite(de, HIGH);
    7 ?# x6 t/ S; {/ q- _
  199.             Button1.print("off");5 y. H/ D! ?- y2 a
  200.             Button1.color("#00FFFF");              //设置app按键是深蓝色
    : n7 U$ I4 A, Q$ s3 Q
  201.             Button1.text("关闭中");+ h5 \0 i3 T# t: a. g2 Z+ v0 m
  202.        }: F) v) q4 [  U5 L' E) ~: ^6 Y
  203.       }1 [* S$ J9 a6 E9 @4 x0 k
  204.     }
    / f8 A% T/ H! e
  205. }
复制代码
" i) G1 ]1 W, v$ r
2 S. _2 f! u! K) u6 K5 C
我没有用卖家给的码,我自己写了一个,参考我前面的文章最简单的8266天猫精灵控制开关,点灯、Mixly可视模块化编程 https://bbs.nasdiyer.com/thread-18755-1-1.html/ B- e' h; t5 n/ t
# p5 z. S: m. {1 E8 ]6 g( g  N
把上面的2改成5,把高低电平对调一下就可以使用天猫精灵来控制你的这个插座了。我是把我的第一个插座放在了我的落地电风扇中了,当我慵懒的在沙发上刷着手机时候感觉有一点点热,我只要呼唤“天猫精灵,打开风扇”,就可以了。
( d. C# h7 b& a" ?: W3 a' u: P- b7 T1 S+ O+ q, v! F4 S- k5 p* m; u; r

6 v5 `, O3 T. a# c5 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$ F4 p7 h+ g5 M# }% I
买了几个   做工挺扎实的,但是外壳怎么拆啊  拿斜口钳拨了一个,   四个圆角的卡口根本没法正常拆 ...
( T  Z( b1 I7 p0 M$ _. t
大力出奇迹呀

1

主题

8

回帖

256

积分

中级渣柚V1

积分
256
发表于 2021-8-29 08:14:58 | 显示全部楼层
a467913252 发表于 2021-8-24 15:53
) i# q7 m: d4 g% G买了几个   做工挺扎实的,但是外壳怎么拆啊  拿斜口钳拨了一个,   四个圆角的卡口根本没法正常拆 ...
) a; h! c: G* {& m7 x# O
昨晚拆了一个,废了老大劲,想和卖家说的无损拆下来,不拆个三五个积攒经验,基本不可能

2

主题

11

回帖

62

积分

初级渣柚V2

积分
62
QQ
发表于 2021-9-4 23:05:22 | 显示全部楼层
sevenup0719 发表于 2021-8-29 08:14
: Q2 M2 e4 J$ @昨晚拆了一个,废了老大劲,想和卖家说的无损拆下来,不拆个三五个积攒经验,基本不可能 ...
7 J8 }, t  z( F% p  D. T
你的搞定没  为什么我的根本没法烧录   连接不上,,用esp01s还没问题的
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-3-16 10:25 , Processed in 0.123916 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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