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

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

[复制链接]

11

主题

51

回帖

209

积分

中级渣柚V1

积分
209
QQ
 楼主| 发表于 2021-8-21 13:57:54 | 显示全部楼层 |阅读模式
本帖最后由 易记 于 2021-8-21 14:05 编辑
% \! {0 q$ N2 d+ `' F
7 S$ \% S7 @$ A9 ^3 L- I最近玩ESP8266,想做个天猫控制开关。
1 S. ~& s, j3 ^3 Y9 A但是我很懒,一个个配元件嫌麻烦,于是想着能不能淘到便宜的带电源板的模块,多倒是蛮多,一般都要20多块钱。
# |0 ~& q+ X  t1 ~/ i9 U# u还是闲钱上逛一下看,找到一个联想的国外版8266智能插座,价格才8.5元一个。有一点不足,就是只有三孔,要是五孔的就好了。老板说五孔杂牌价格一样也有货,晚两天发布。
9 C' X. w3 N' q7 {8 i QQ截图20210821125037.jpg
2 u( c  t. D  d) j! N6 z7 P, p) q! G" ~( m; u. x

* r$ m1 T1 m% E9 d问了一下店主,买20个一盒才包邮,想着20个还是有点多,买了5个,连运费47.5元。
  {- o0 z6 ^, {0 Z4 E- q9 C- x
, S$ T5 O7 M2 \* f/ g0 T QQ图片20210821124517.jpg
) l6 b% }- R# v3 V( G
* U5 m9 V$ T9 m& ?  J# t- ~
2 x1 P1 G; w7 \+ m  p% L' n

9 t# \9 s; i  H% X2 U到手,当然是拆拆拆。
- @: b; @# f/ r/ ]3 Q  m; E, B( u IMG_20210820_134104.jpg
  o; a! H  _2 A7 z- t6 q2 e' j/ U2 m$ O
. C/ ~: U  B* a4 F
联想的做工,还是感觉不错的,光这个继电器应该也要个7-8块钱。2 t3 u' N( i4 ?0 G, N4 T
IMG_20210820_160634.jpg ; d$ D' @) M( n; \
; ^* E# Z9 M2 l8 z6 L. m

* f% Y0 f: `1 t; u继电器是两组常开,感觉要是接电灯双控开关是不是有点麻烦的,不过用于插座是很安全,要断二条线都断开。! I3 s1 m2 V8 r
QQ截图20210821133707.jpg ! Y  h1 Z. Y  N# H3 P7 U8 o
/ M% ~. k/ c& [& B0 q7 V
IMG_20210820_134114.jpg + V1 q+ t. _( q! u  b) X" [* s  K

- q) p; p7 R+ y# K  n3 A电源芯片
: O* `' c4 x4 B& Y( r
, }; b3 n# D; ~3 Z5 c% F0 i$ B: B4 x

3 @- H% {! ^" T- V有一个按钮,按钮有二个蓝色LED灯
* g8 J$ ?% P7 }5 l IMG_20210820_134157.jpg
  m* \/ H$ ]. X. t' I+ m- P  c/ w, p* V6 r' m. U

: i2 f8 i' D5 i0 H" }+ y  ?/ w& ~8266$ ]( F. p! i1 ]& z  \
IMG_20210820_141913.jpg
4 e0 s: l* Y# P/ V4 L! d" z6 p+ I2 p9 T$ j
! L# l7 l2 F9 P) e5 S

5 m" U! H3 j( D  F6 @

1 ?' K, }/ }7 A/ O接下来就是刷机了,版子上面都预留测试点。
# K$ \0 G7 v+ o9 g接线比较容易,上面都有标示,GND,3.3V,TXD-RX,RXD-TX,还有一个就是IO0接地后刷机。
4 F9 n* r5 J0 ~" S5 y 未标题-1.jpg 8 l7 _' @- P9 n& F) ]" s0 m2 O5 l
注意RX这个点,就是3.3V边上的这个点,焊盘设计的就点问题,电烙铁热一点或是焊的刷机线过粗的话,容易掉焊盘。, U8 m* ]! |6 K9 D# K
要是掉了就只有一个过孔了,要是焊不上,只能再拆开接在另一面,所以为了避免不必要的麻烦,请注意一下。
/ x0 M2 F: R. W' |1 V" ^
( b0 A, n6 \% k" F8 p  ?

% G% S. D; o! n5 s
8 U0 A# {7 W" B3 b% w
5 H5 r/ ^1 `! k5 }( L) ?
) i- t, y- t: R; r2 o
    5号脚位是继电器输出8 I" ?: `0 X) h! |* ]0 W
    12号脚位是灯输出* U! ~2 o/ J' c, z3 @) u" z5 ~& [
    4号脚位是按键

4 a. x( c* A# }2 x6 P+ ?8 V: z3 ~7 m  k
0 b0 t8 U5 U0 S  [1 |  P! E
4 X8 d. T; v& }; [: p8 ^) c

1 r& p4 C8 ]" Q% k! \" K卖家有发一个源码,如下
  1. #define BLINKER_WIFI                    //官方wifi协议库
    7 o/ b  Y2 L8 g/ q( S+ n# k  Y6 t  f
  2. #define BLINKER_MIOT_LIGHT              // 设置小爱灯类库2 T& B/ ?1 @1 Z
  3. #define BLINKER_ALIGENIE_LIGHT          // 设置天猫灯类库
    9 _& h. ~% z' W4 a. g
  4. #define BLINKER_PRINT Serial            //串口协议库
    1 L: Z& H& [+ b- m$ b' n0 O
  5. #include <Blinker.h>                    //官方库
    % G, E" L  U  t3 b. ?0 s/ l
  6. #include <ESP8266WiFi.h>                //官方库9 G+ ~5 k; {& k, W' i! z4 `
  7. WiFiServer server(80);                  // 服务器端口号
    . I' o3 f- t9 |6 c
  8. + i, s  G% c: W- ]/ y( u
  9. char auth[] = "c4942fb1d5e4";     //设备key
    , ~$ h6 h! |' V  n# {. A
  10. char ssid[] = "wanboshi";     //路由器wifi ssid8 r: s2 |, \7 R. b! Z/ U, i
  11. char pswd[] = "1365662999813586348220";     //路由器wifi 密码
    $ _" u  G. p  h5 X) W$ Z" p

  12. ( A& |, N  @' G# z
  13. bool oState = false;6 G2 `  o& [3 T8 H  ^9 f! ?& D
  14. % d1 B! A. G0 H: z' u
  15. int kg=5;//继电器输出
    $ D% _0 ]+ f6 m* P- p
  16. int de=12;//灯输出0 O$ h; l! _# V5 A$ G0 M
  17. int key=4 ;//按键1 Q! O; s; n- T3 `& f
  18. //*******新建组件对象
    2 j: C) z# E2 r( Q7 t
  19. / W4 u0 f7 c* t$ h# J) [1 _) J
  20. BlinkerButton Button1("btn-abc");              //设置app按键的键名
    5 _  ~3 T; L: g' n+ m
  21. //*******app上按下按键即会执行该函数app里按键
    6 a7 O. j3 m( d: y0 k& T) l
  22. void button1_callback(const String & state)
    ( c& D5 k) ], c& d
  23. {) V1 s& i% n+ Y  z" k
  24.    if (digitalRead(kg)==LOW)& D, h  e3 g3 B  N. s
  25.    {
    6 B) W* U4 {7 ~1 j
  26.         BLINKER_LOG("get button state: ", state);/ k) g8 h5 B5 q, ~( ?1 s9 `5 U
  27.         digitalWrite(kg, HIGH);
    ; l7 q. f: v& F" u! R7 R
  28.         digitalWrite(de, LOW);2 s/ ^5 o! l7 L
  29.         Button1.print("on");
    5 |! V8 V7 ~& p) v
  30.         Button1.color("#0000FF");              //设置app按键是浅蓝色( `- j/ O. p' {! h0 r/ B
  31.         Button1.text("开启中");8 U" z9 `) Y3 K# D
  32.    }
    / U& E2 D: D& i$ n" M. h; b
  33.    else if (digitalRead(kg)==HIGH)
    0 O7 n6 J/ s; `
  34.    {2 O" x( k7 G" c' A
  35.         BLINKER_LOG("get button state: ", state);# g& ~, m& ^! B# g2 e
  36.         digitalWrite(kg, LOW);
    & q9 X! F5 H* I0 _& A) J
  37.         digitalWrite(de, HIGH);
    ; q: P+ ?3 q: _4 C
  38.         Button1.print("off");
    3 ^* N2 F# u( v" Y; t; Y
  39.         Button1.color("#00FFFF");              //设置app按键是深蓝色
    ; x5 T9 H$ u( U9 u$ W0 K
  40.         Button1.text("关闭中");7 p3 G# ^2 I, I9 e: u0 O7 J
  41.    }8 t8 H! T; q$ O7 n9 _
  42. }
    $ C& t# k  U  I! `/ T# |

  43. 6 W2 Y9 s( I. z0 D
  44. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    1 m7 W+ w0 |4 A" l; g# H

  45. $ ^) X: L" p( k2 f: H  _
  46. //*******如果小爱有对设备进行操作就执行下面
    ; G$ Y; x6 z# ~) L  V6 }
  47. void miotPowerState(const String & state)
    9 L7 G, X& [8 A3 _( H2 @1 H7 ?
  48. {, @4 R' l, w1 i5 e0 i/ {+ @
  49.     BLINKER_LOG("小爱语音操作!");              //串口打印; |, [) P( C9 o+ i* f% |7 v% k3 Q
  50.     if (state == BLINKER_CMD_ON){6 m: \9 {- P% W: D
  51.         ; O7 [  \( O' {
  52.         digitalWrite(kg, HIGH);
    1 Q% }7 }. u) t0 x% d1 L
  53.         digitalWrite(de, LOW);
    * Q/ a, n' q+ A% j
  54.         Button1.print("on");
    1 \: b  P$ j8 J; w9 v
  55.         Button1.color("#0000FF");              //设置app按键是浅蓝色
    ( [  f# [' m) N& i6 V; W7 j
  56.         Button1.text("开启中");1 c0 T! g. n$ G) _5 y+ x
  57.         BlinkerMIOT.powerState("on");
    5 b/ J# B) ]" s* X
  58.         BlinkerMIOT.print();. ~- p, l: ]3 g; R4 |& d9 C
  59.    }
    % _  e9 ^7 O/ o7 Q  J- [! D) R, l
  60.    else if (state == BLINKER_CMD_OFF)% ]- \9 c* V5 m, N$ L7 X$ L
  61.    {% k  ?' w9 n, K. X* d
  62.         
    . c* w9 W* b( l  _2 B0 ~" m' o
  63.         digitalWrite(kg, LOW);
    $ _" s* P) N/ M9 @
  64.         digitalWrite(de, HIGH);5 A" E4 ~& n& K$ B' g+ O9 d
  65.         Button1.print("off");
      m+ d. o1 X9 W" ?7 R0 T
  66.         Button1.color("#00FFFF");              //设置app按键是深蓝色( ~+ v; E- N3 ?7 h* a" A; G# j
  67.         Button1.text("关闭中");
    - E: I! b9 C* p/ g
  68.         BlinkerMIOT.powerState("off");
    7 P+ }/ j# U+ N. A6 @- R
  69.         BlinkerMIOT.print();
    & O6 v1 Z& Y" Z7 U7 t
  70.    }
    2 L/ L( k- w3 }( Y$ z) j( o
  71.        ) G2 C/ Z& W2 x
  72. 0 `! n/ A9 i% Q, j# x
  73. }) s6 @1 Y) S5 r
  74. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    ! B) v8 ?/ l5 G+ D
  75. //*******如果天猫精灵有对设备进行操作就执行下面1 A4 w1 V; R8 O
  76. void aligeniePowerState(const String & state)1 `! j) q' v! z- G( q
  77. {
    6 y5 k1 G/ A  i& }
  78.     BLINKER_LOG("need set power state: ", state);
    / g. e/ G* u4 ?9 U% _, o# m% U, V
  79.     if (state == BLINKER_CMD_ON)
    % Z* a" Z7 c# ?
  80.     {
    % B4 R7 A  W1 g/ q, `+ k
  81.         " W4 W3 O* G: ?" Z5 G7 ^
  82.         digitalWrite(kg, HIGH);% U$ t" H0 A3 S' K$ i" a
  83.         digitalWrite(de, LOW);
    : u5 v* G  p' a: u2 T, q
  84.         Button1.print("on");
    + S2 p$ K% t0 d) `) r6 x( P5 ]
  85.         Button1.color("#0000FF");              //设置app按键是浅蓝色& Z& @. d8 N5 J5 Q
  86.         Button1.text("开启中");
    $ U" y0 h2 J2 `1 h6 p1 N" a
  87.         BlinkerAliGenie.powerState("on");
    / s9 N- ?( E5 {% e2 C( r
  88.         BlinkerAliGenie.print();! c3 f$ t9 p- ]! k/ s
  89.     }) s% P+ W+ {8 ~; x8 {6 S5 U
  90.     else if (state == BLINKER_CMD_OFF)- e! p* k$ \: K" v, g8 r
  91.     {  y, [6 f5 E9 a0 E8 b" D) R2 A
  92.         
    . v0 `+ L( J$ ?8 s1 s( B/ ^
  93.         digitalWrite(kg, LOW);
    + \# v% e% m2 |  [4 w" o+ Y4 C
  94.         digitalWrite(de, HIGH);
    ) X  {, k. u  ?( N
  95.         Button1.print("off");
    7 k9 X3 Y, `5 \- m
  96.         Button1.color("#00FFFF");              //设置app按键是深蓝色
    ! D7 G! Q* O  _9 Z% V
  97.         Button1.text("关闭中");) d3 T3 X  V6 l) A% m
  98.         BlinkerAliGenie.powerState("off");5 }* Q6 L( ]! E: [$ m! L2 H8 N
  99.         BlinkerAliGenie.print();5 `5 ?- v' f2 P4 ~
  100.     }. c0 w/ D8 s$ N& R( O
  101.         9 ~, ?2 C, K4 x! D8 \. N9 e
  102. 8 s) L1 ]$ C7 l. ]7 b
  103. }* H9 f7 ^2 j7 L1 i5 j: \. t/ L
  104.   //*******app定时向设备发送心跳包, 设备收到心跳包后会返回设备当前状态30s~60s一次
    8 u( p# c8 j  |7 t8 p* ?2 G4 c" ]
  105. void heartbeat()$ c$ q1 \. V4 x  A8 k# A
  106. {3 a5 z5 O) w6 w2 i
  107.   BLINKER_LOG("状态同步!");
    0 z' A& V- \5 E! e1 y  [. V1 T7 O
  108.    if (digitalRead(kg)==HIGH)
    , W- Y) S9 `8 o; Q6 J
  109.     { 1 |/ C! y$ K9 v2 V  e
  110.       Button1.print("on");) [; ]$ P7 S3 b- b+ c  ?9 d0 i
  111.       Button1.color("#0000FF");              //设置app按键是浅蓝色
    $ A. ?5 r- `! m! ]- l' Y* ]
  112.       Button1.text("开启中");1 E3 x8 [0 q. G
  113.     }
    " R1 T  a; X% Q4 f* i
  114.     else
    5 c6 v) n- K4 V% c2 _' p7 R$ n, t" a( T
  115.     {8 c+ I# t) F4 a% D
  116.       Button1.print("off");* I( ~5 ~7 x* H4 @, W
  117.       Button1.color("#00FFFF");              //设置app按键是深蓝色
    " Z: V* H3 l+ E  Q5 m  [
  118.       Button1.text("关闭中");6 x; C- q5 J! k% U* E, p4 z
  119.     / f6 `" S4 b4 F! ~9 W% ~! e7 i
  120.     }
    ) @# e+ ~1 V: p- l
  121. }
    & Y0 s( i4 U+ X9 |
  122. //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++! N% [: v) n* o, {7 r5 t0 L' |
  123. void setup()- _3 n9 }0 J+ _* v7 y1 c/ }
  124. {
    * e& l( a7 Z7 ^9 W' W- |
  125.   // 初始化串口/ c% A& r8 j# Z
  126.   Serial.begin(115200);& _7 X  ^( g7 a9 y5 Y
  127.   delay(10);
    ! s# n2 C* I1 t1 t; }
  128.   BLINKER_DEBUG.stream(Serial);' l3 o7 j  y1 o4 @3 r" X0 v
  129.   // 初始化有LED的IO
    4 v1 Z) ?( g% F! q( R
  130.   pinMode(kg, OUTPUT);                 ( q4 g" W) y; [  A
  131.   digitalWrite(kg, LOW);//初始化继电器上电状态 ( H6 S/ F) y; \0 ?( N2 a
  132.   pinMode(de, OUTPUT);
    0 Y/ H+ L3 w2 q
  133.   digitalWrite(de, HIGH);
    # d1 p! [1 l' R+ O( H
  134.   pinMode(key, INPUT);            4 P3 V: c% h  w3 `0 j5 T. x# D
  135.   Serial.println();
    4 d, l; V6 {' Z: @2 a
  136.   Serial.print("Connecting to ");1 Z$ S& x/ _  B3 q
  137.   Serial.println(ssid);: e3 {+ N8 R9 L* e
  138.   WiFi.begin(ssid, pswd);
    . V) j) f0 _: X2 p4 ?" n7 m
  139.   while (WiFi.status() != WL_CONNECTED) {$ q/ {3 R% N  U. y# q
  140.     delay(500);
    & [7 R; U, g0 {  A3 N
  141.     Serial.print(".");% i0 B0 ?5 U$ {/ g
  142.   }
    9 i- {/ G7 r# V7 [
  143.   Serial.println("");: x, ?0 g6 W  D
  144.   Serial.println("WiFi connected");; N3 I& B6 v! G, g: t
  145.   server.begin();: G" q0 d0 I( {  ^6 E
  146.   Serial.println("Server started @ ");! |8 o. A" k& D; l! k* Y/ X
  147.   Serial.println(WiFi.localIP());. T% E% ]+ v) z, b! n5 X
  148.   //打印出IP地址,后期可以制作显示器来外部硬件显示ip
    & L5 z% W" n( Z: b0 e7 [
  149.   Serial.println("To control GPIO, open your web browser.");
    # X! E7 K6 @6 H" x. C7 S5 L
  150.   Serial.println("To set GPIO 0 high, type:");
    2 B) ~+ L' k( q/ K. k
  151.   Serial.print(WiFi.localIP());2 Y/ }  V( Y# K" }; @* Q/ G8 U
  152.   Serial.println("/gpio/1");% I1 I7 N& l6 z* ]* Z0 }+ }6 E5 g. L; _
  153.   Serial.println("To set GPIO 0 low, type:");
    % `. _, q( S$ Y( b8 j; W: f+ n) U
  154.   Serial.print(WiFi.localIP());$ |) `* m, `9 b8 _4 p
  155.   Serial.println("/gpio/0");
    0 j" o- X4 C# N: W3 g7 [) m0 H
  156.   Serial.println("To toggle GPIO 0, type:");6 S7 q" G* x# T' ?" E+ g
  157.   Serial.print(WiFi.localIP());
    : m: a2 n# M& N4 z' F
  158.   Serial.println("/gpio/4");
    + T6 H2 g8 v6 a. ?/ R' V( I" \
  159. 9 L  f2 V' `% Y- s1 v
  160.   // 初始化blinker
    ( Y- W+ j  X3 V. E2 t5 t
  161.   Blinker.begin(auth, ssid, pswd);
    2 f" C0 m+ P% F1 G
  162.   BlinkerMIOT.attachPowerState(miotPowerState);              //小爱语音操作注册函数
    , `: c# E/ J' @8 R- m5 v$ p# k* u
  163.   BlinkerAliGenie.attachPowerState(aligeniePowerState);      //天猫语音操作注册函数- J6 V9 Q) O" H2 n
  164.   Blinker.attachHeartbeat(heartbeat);              //app定时向设备发送心跳包, 设备收到心跳包后会返回设备当前状态进行语音操作和app操作同步。' F, H# k" L& ~/ i8 M" a/ |: Q6 W% E

  165. ; C3 ~0 ~- a' K1 d2 x, t" ]
  166.   Button1.attach(button1_callback);             //app上操作必须的注册回调函数关联按键名“Button1”和判断程序“button1_callback2 q5 r- N: V! [: U: }
  167. }
    $ V8 |7 r# ?* h4 ^6 u  J! I8 l
  168. void dataRead(const String & data)
    9 }$ t4 @1 p1 @; ]
  169. {, }) O- P9 d' t
  170.     BLINKER_LOG("Blinker readString: ", data);
    - O5 \2 S9 h8 t" ?' z2 o
  171. # e, H- W% ^% i5 \
  172.     Blinker.vibrate();. g& p: c5 L5 v: ], n) k$ e: D3 k3 A
  173.     # N& d6 P( {$ @5 G
  174.     uint32_t BlinkerTime = millis();
    4 k1 s8 M. q- ^, i! e  y. t' n
  175.    
    # A/ E' I# l! ^& x) _
  176.     Blinker.print("millis", BlinkerTime);
    , @8 n7 N  h. ?4 }2 Y
  177. }- h# `" p! Q1 `3 X* ~7 F' C/ Q0 |
  178. void loop()
    - _7 {  Q6 Y. `) Q% G
  179. {
    0 }8 ]* H0 O9 r. q
  180.   Blinker.run();
    : M5 p0 H! ^# y! D. d; S+ Z
  181.   if (digitalRead(key)==LOW)9 v# Y* Q3 l! F& a) r# T
  182.   {0 w/ e4 y) g% ]! [8 w( j
  183.     Blinker.delay(200);- F5 R0 s- q# S8 t9 q
  184.     if (digitalRead(key)==LOW)
    $ N8 F! F2 y3 P0 w, [
  185.     {
    2 @% O& K5 i3 t" h' j4 E" H
  186.           if (digitalRead(kg)==LOW)
    ; Z1 {/ ]# _/ h9 D0 ]- s& q7 O( I' s
  187.        {/ P  D* ~% `7 {2 Q  E9 x9 e) o
  188.             
    : J: q* a7 K+ z, n" [
  189.             digitalWrite(kg, HIGH);
    8 ?: ^) h/ F; J) S0 M$ v0 o
  190.             digitalWrite(de, LOW);
    , g  Q- m( E2 W* ~; z
  191.             Button1.print("on");
    / D. f: |- ~: G+ S7 D8 S! c# Y
  192.             Button1.color("#0000FF");              //设置app按键是浅蓝色9 f8 A7 |  G! f" L
  193.             Button1.text("开启中");
    ! k4 g/ Q. ]% }! [# t4 V
  194.        }
    . }3 q6 X/ Z; D% X# u
  195.        else if (digitalRead(kg)==HIGH)( y/ {# V  l: e; C1 C
  196.        {
    - w( a) Z. Y# D. o6 d- U
  197.             digitalWrite(kg, LOW);& s( {$ i% S$ s. _+ x! b
  198.             digitalWrite(de, HIGH);
    - j# I- E" \9 O- R- h0 B6 a
  199.             Button1.print("off");) [; P' F) ]1 W7 W
  200.             Button1.color("#00FFFF");              //设置app按键是深蓝色
    / O4 s: `* q( x+ ^; ~! ?8 |
  201.             Button1.text("关闭中");& p  ^1 c: a! I) e4 ]
  202.        }
    ' ^! j  g) |  V& c; k" N# e
  203.       }
    * R3 e2 Y# k; }: x; f, ]  p1 p2 C* T
  204.     }
    9 W9 W7 f1 |1 r8 H  G; e1 n
  205. }
复制代码

3 A/ Y: Q  E1 j0 q* L% p) G# K6 l! ?  J/ E% F, k
我没有用卖家给的码,我自己写了一个,参考我前面的文章最简单的8266天猫精灵控制开关,点灯、Mixly可视模块化编程 https://bbs.nasdiyer.com/thread-18755-1-1.html5 _8 B" _7 F# b
) j4 r+ d) X' L% O1 Z& j5 J9 A
把上面的2改成5,把高低电平对调一下就可以使用天猫精灵来控制你的这个插座了。我是把我的第一个插座放在了我的落地电风扇中了,当我慵懒的在沙发上刷着手机时候感觉有一点点热,我只要呼唤“天猫精灵,打开风扇”,就可以了。0 }6 _% [/ s0 D4 m9 P! r  L

( N3 p0 [  C' k3 W( ]* E4 b$ P2 D- Z
9 T/ W: J/ E" E' N' V3 ^

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
0 F0 P6 k- T, b买了几个   做工挺扎实的,但是外壳怎么拆啊  拿斜口钳拨了一个,   四个圆角的卡口根本没法正常拆 ...
: s9 R% p7 X, i& R
大力出奇迹呀

1

主题

8

回帖

256

积分

中级渣柚V1

积分
256
发表于 2021-8-29 08:14:58 | 显示全部楼层
a467913252 发表于 2021-8-24 15:539 s9 M5 w) H" e/ m5 l4 X$ @
买了几个   做工挺扎实的,但是外壳怎么拆啊  拿斜口钳拨了一个,   四个圆角的卡口根本没法正常拆 ...
( d/ w; g! {3 F$ t, C" n. l
昨晚拆了一个,废了老大劲,想和卖家说的无损拆下来,不拆个三五个积攒经验,基本不可能

2

主题

11

回帖

62

积分

初级渣柚V2

积分
62
QQ
发表于 2021-9-4 23:05:22 | 显示全部楼层
sevenup0719 发表于 2021-8-29 08:14
( v5 N) u& f0 T+ S6 A" E# P- T* d昨晚拆了一个,废了老大劲,想和卖家说的无损拆下来,不拆个三五个积攒经验,基本不可能 ...

% x: |/ W3 ^+ s' v' ]你的搞定没  为什么我的根本没法烧录   连接不上,,用esp01s还没问题的
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-23 17:09 , Processed in 0.182193 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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