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

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

[复制链接]

11

主题

51

回帖

209

积分

中级渣柚V1

积分
209
QQ
 楼主| 易记 发表于 2021-8-21 13:57:54 | 显示全部楼层 |阅读模式 IP:–浙江–嘉兴 电信
本帖最后由 易记 于 2021-8-21 14:05 编辑 - ?% J2 V1 w8 q( ?  m1 g

6 `1 }. Y$ T. y- P最近玩ESP8266,想做个天猫控制开关。
' e+ {* g2 v8 U  n2 N; |但是我很懒,一个个配元件嫌麻烦,于是想着能不能淘到便宜的带电源板的模块,多倒是蛮多,一般都要20多块钱。6 o. m% c  ^) h3 e+ v% I
还是闲钱上逛一下看,找到一个联想的国外版8266智能插座,价格才8.5元一个。有一点不足,就是只有三孔,要是五孔的就好了。老板说五孔杂牌价格一样也有货,晚两天发布。2 V% V1 D) F* z- l, c
QQ截图20210821125037.jpg 3 }) x6 C/ {2 m( u( I

# J- l2 l2 H7 z) v1 [6 V) n6 e9 w- Z8 h

' }5 d, I# C5 t( q+ @问了一下店主,买20个一盒才包邮,想着20个还是有点多,买了5个,连运费47.5元。
: t, |1 \9 |9 w, x: \) p: E5 |7 h
) |  M. Y  X4 r" i5 U QQ图片20210821124517.jpg
% Y- t, J  c$ @2 u( \8 m% B1 e
1 E& C$ E; x4 c3 X" y; A- O

/ p# L$ A& B+ P. r6 N' Y0 G
5 A' I, L# g* Q: y; c+ Q; G* @4 d
到手,当然是拆拆拆。
2 e1 J/ ]. t1 ?/ y+ |2 V3 C IMG_20210820_134104.jpg 9 ?7 q3 I. w. J# ~

+ Z' e- {! c2 ~+ h
( j. @+ s0 r, K- _$ }
联想的做工,还是感觉不错的,光这个继电器应该也要个7-8块钱。6 e8 A; Z: |: e  \
IMG_20210820_160634.jpg
7 O& k# K$ ~& k  ^: K
5 W3 I7 z* I5 E  O/ l- J. D" B& |/ k% j
5 L3 m' d3 `  H5 ]
继电器是两组常开,感觉要是接电灯双控开关是不是有点麻烦的,不过用于插座是很安全,要断二条线都断开。
2 l2 F9 ]' i( L; X/ E QQ截图20210821133707.jpg , X' ^) @& t3 b, k6 M  _

9 H0 y+ ~" [, @. A IMG_20210820_134114.jpg
+ J, J( R& y% Q( \6 P
0 Z* O# o7 u7 S, N, p. `
电源芯片# f8 H+ J2 @$ w! v1 u) X: U" U- ^

6 |' j) H0 f7 |( a$ [& }) Q( b6 V5 v. P' H) {
- B( g/ Q' ^2 {$ U" `' O- K
有一个按钮,按钮有二个蓝色LED灯( w4 j3 ^# t! k& H' ?
IMG_20210820_134157.jpg
: `6 i2 i/ ~8 j  N/ b0 ^% R
2 ~: h) O7 `( y: ~
* i6 z7 [, G& z- r2 P
8266
( n: S" G/ J& n: |' I" k IMG_20210820_141913.jpg
7 T9 T3 A% n- k% @' u, D
& Q# V5 L" P$ s8 u/ H9 m# w
0 b  n; g0 E0 l6 [) f; ?
* C% R- i/ H8 b- i7 I
# w# u! l9 Q- |( P1 `7 e2 B, J$ [
接下来就是刷机了,版子上面都预留测试点。
2 e9 @8 ~- q5 b7 ?接线比较容易,上面都有标示,GND,3.3V,TXD-RX,RXD-TX,还有一个就是IO0接地后刷机。
; C$ a" `, ^8 }, k# D' a; N 未标题-1.jpg $ v) ^, w) L8 o; \
注意RX这个点,就是3.3V边上的这个点,焊盘设计的就点问题,电烙铁热一点或是焊的刷机线过粗的话,容易掉焊盘。* ~3 _: {2 ]7 c) D" B# N" [
要是掉了就只有一个过孔了,要是焊不上,只能再拆开接在另一面,所以为了避免不必要的麻烦,请注意一下。
! Z, d; O/ V, G
+ i4 X! @% J+ I
! i1 H7 B4 S8 J8 D

" }* _" ~# T. L
# L" @0 k1 c7 o* u) C6 v

0 e5 s) }4 G2 G    5号脚位是继电器输出
/ m5 S# ~1 X, e0 l0 D6 O, N0 o2 L3 s    12号脚位是灯输出% R, ]( s/ E9 o- U2 S  e
    4号脚位是按键

9 {2 @9 [  Y, _3 B  R
& I9 R% Y' y& [" P& I2 e( u

6 {7 ]& Y6 S; K3 N, l/ a5 \0 \# c- o0 g+ s7 a1 K

( Y  M; {' q! X4 M. C. H& R卖家有发一个源码,如下
  1. #define BLINKER_WIFI                    //官方wifi协议库# ?; a+ X! v) {( y/ t# u7 e/ u
  2. #define BLINKER_MIOT_LIGHT              // 设置小爱灯类库; ?6 }) T- F, I5 c. g3 ?( M
  3. #define BLINKER_ALIGENIE_LIGHT          // 设置天猫灯类库& W$ j/ X5 d; D+ t' x/ a
  4. #define BLINKER_PRINT Serial            //串口协议库
    6 G/ ^9 q# F2 z( _1 o- i
  5. #include <Blinker.h>                    //官方库
    8 ^  t/ i* s7 U' i( T. o8 ~4 T5 c
  6. #include <ESP8266WiFi.h>                //官方库; k5 ^" x  P: f/ O: Q' q
  7. WiFiServer server(80);                  // 服务器端口号
    ( ^, `" c3 H) t! o9 j5 S

  8. 3 \# b( u5 |( a9 \" D
  9. char auth[] = "c4942fb1d5e4";     //设备key
    7 H/ [7 K- e+ U$ A* L- a) ~% W- Z
  10. char ssid[] = "wanboshi";     //路由器wifi ssid" N  ?# W& S0 @7 a9 j6 P
  11. char pswd[] = "1365662999813586348220";     //路由器wifi 密码
    9 Q/ S, a9 P$ b( P2 b3 w( @

  12. ' I/ T' ^7 k) j3 N, x4 d+ y. i7 r
  13. bool oState = false;
    , @" I3 x' [! H, z; h9 \

  14. ' R7 A& p6 ^7 r- }
  15. int kg=5;//继电器输出
    " f; Z/ e" e5 l5 \$ o+ |' ^3 J  d
  16. int de=12;//灯输出1 w/ ]. b) ]4 h' X/ M& l; @
  17. int key=4 ;//按键
    / b8 h5 |* J% K9 l
  18. //*******新建组件对象; t2 P: I& A& `
  19. 6 _( i' _3 N, X8 V9 J
  20. BlinkerButton Button1("btn-abc");              //设置app按键的键名" Q! {& K+ Y0 T$ T
  21. //*******app上按下按键即会执行该函数app里按键
    $ X( W, \' h0 g" ?/ N/ l8 w
  22. void button1_callback(const String & state)
    1 i5 D& W' h8 o2 `
  23. {
    : g& S! [2 Z. |
  24.    if (digitalRead(kg)==LOW)
    $ @. w- |( J2 w. B4 t
  25.    {5 K, L4 g# U2 Z) [6 d7 C1 g
  26.         BLINKER_LOG("get button state: ", state);
    3 G5 m, D% X7 J7 v$ a
  27.         digitalWrite(kg, HIGH);! [6 G. r7 g- f
  28.         digitalWrite(de, LOW);
    ( U/ s* m% ^2 F+ B
  29.         Button1.print("on");  p5 N7 e; ?6 F6 U6 v
  30.         Button1.color("#0000FF");              //设置app按键是浅蓝色6 Z# f$ W/ a# d8 a7 M% V5 a- B
  31.         Button1.text("开启中");
    * `( ]* U2 u7 K% b8 }! o" g6 H
  32.    }
    % C" y$ a; Q3 R6 e1 R' q4 V9 J
  33.    else if (digitalRead(kg)==HIGH)* |# f6 p/ K) E9 G) N
  34.    {
    % p  }- F4 H' S! L, I
  35.         BLINKER_LOG("get button state: ", state);
    ( P& n. b7 i1 k: }
  36.         digitalWrite(kg, LOW);
    & ]" J3 v& B8 C" M1 u0 b
  37.         digitalWrite(de, HIGH);+ o* ?  `4 E; {: S! y% j& e; f
  38.         Button1.print("off");
    # C2 z6 e) O) o5 ~# n" s1 G3 Y4 v
  39.         Button1.color("#00FFFF");              //设置app按键是深蓝色% a4 {, c. T7 e5 D- |  n
  40.         Button1.text("关闭中");! Z( n  Z" q. x) C
  41.    }
    2 n" U7 `: v- @5 {' q
  42. }
    % @: c7 x. I7 U& c
  43. 2 y" s* V3 O& X$ c
  44. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    9 ^* M/ |( ]$ h0 E% Y# l/ K

  45. + A" F+ g  z1 @4 ~  x8 r6 Z
  46. //*******如果小爱有对设备进行操作就执行下面1 p. H6 F0 b( L% r( D
  47. void miotPowerState(const String & state)( v1 d2 j" P+ c" s- V
  48. {
    $ J6 q# Q: L, P; P9 f9 \
  49.     BLINKER_LOG("小爱语音操作!");              //串口打印
    ; j) O7 n* Y/ d* P( F
  50.     if (state == BLINKER_CMD_ON){2 Y: Q9 J( G4 x
  51.         7 e0 U% \4 X9 G; u  O
  52.         digitalWrite(kg, HIGH);0 k2 _- L% h3 j( V
  53.         digitalWrite(de, LOW);
      @; H/ W# L5 q
  54.         Button1.print("on");
    8 Q# ~6 q9 t9 M$ ?1 @4 }
  55.         Button1.color("#0000FF");              //设置app按键是浅蓝色
    , u, G5 L$ g% P' t+ g
  56.         Button1.text("开启中");7 y- N* G* V8 j3 i) D
  57.         BlinkerMIOT.powerState("on");
    3 ~6 I$ ?0 v- m6 L! ?
  58.         BlinkerMIOT.print();& N8 r! l& h$ {6 |: ]
  59.    }
    . Y  ^5 e3 I5 l) B0 `
  60.    else if (state == BLINKER_CMD_OFF). B; z5 `# K; B9 |) i
  61.    {& ~! `: s4 M# O* ^
  62.         / J; p' a# J  h% Y. d6 |# \
  63.         digitalWrite(kg, LOW);
    , v+ k" S6 b2 \+ e& H4 z" a1 L, y
  64.         digitalWrite(de, HIGH);6 `* [5 R* ^5 C9 ~0 J( ]1 n1 j" K
  65.         Button1.print("off");
    % }4 A/ |) }6 o( R* z+ m! S; h4 N* V
  66.         Button1.color("#00FFFF");              //设置app按键是深蓝色0 W% a- M* o- ^9 j3 V. c
  67.         Button1.text("关闭中");
    ( m) @  z4 o. A8 G% {% L
  68.         BlinkerMIOT.powerState("off");
    3 V9 L4 D; x+ o3 E8 G5 g
  69.         BlinkerMIOT.print();" Q3 }% ?! t! J5 o' i
  70.    }+ K. x" J, i- J( w: t$ G/ W6 ?5 R5 a
  71.       
    2 H' |5 L) }9 S
  72. 4 Y. f: `+ ^  s
  73. }
    " ^/ w. E9 l5 ^7 n. R; Y" K
  74. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    + |" E5 N( u) O. m/ g
  75. //*******如果天猫精灵有对设备进行操作就执行下面  L  [$ J3 t3 a- R, d0 ~# B
  76. void aligeniePowerState(const String & state). Z- a! u$ l) h! Y/ v9 a0 p9 w
  77. {
    ; ?0 |: o* m) y0 P( z9 R
  78.     BLINKER_LOG("need set power state: ", state);+ ?/ I9 V9 c' m& r( ?9 w! e
  79.     if (state == BLINKER_CMD_ON)
    % y) T4 e6 |" I' j+ ^
  80.     {
    1 _/ L3 N# \$ n4 X8 c1 f
  81.         
    " h4 c$ h+ H: i  C, K+ }( k* Q
  82.         digitalWrite(kg, HIGH);5 z1 M* u  @7 R: c2 X
  83.         digitalWrite(de, LOW);
    1 p  s8 w7 k. d5 M% B7 i; G
  84.         Button1.print("on");' F* R+ w3 D' v; P2 h% g- X
  85.         Button1.color("#0000FF");              //设置app按键是浅蓝色. I% y9 E0 L8 k6 b; {" `# Y
  86.         Button1.text("开启中");; F$ L+ K, V4 a3 R* P
  87.         BlinkerAliGenie.powerState("on");
    # [& B  f) A- H8 E' K# P
  88.         BlinkerAliGenie.print();- y$ e0 \# [; q/ R( q5 ]
  89.     }4 G8 {; r4 H% i  |; V2 ?# p9 C
  90.     else if (state == BLINKER_CMD_OFF)! n9 u6 }" O. v5 z$ f6 }
  91.     {. f/ t. z2 \& g! S! r- p- B3 |; _
  92.         ! [0 R& {- G0 s( L
  93.         digitalWrite(kg, LOW);) o; |3 O( @2 P8 f! g
  94.         digitalWrite(de, HIGH);
    9 g8 B7 Y+ k% ~  q2 i; `2 K
  95.         Button1.print("off");5 f2 A0 p8 A$ q2 Q" g: e2 F
  96.         Button1.color("#00FFFF");              //设置app按键是深蓝色
    & V" u8 Q: o2 Q- P
  97.         Button1.text("关闭中");9 d, B& e1 W9 U/ p7 ~- H/ i
  98.         BlinkerAliGenie.powerState("off");
      J6 \1 f, f4 v. J4 Z
  99.         BlinkerAliGenie.print();
    % g3 H' n5 w& L
  100.     }9 ?# w5 E0 b: P' M+ G
  101.         # t% g8 o9 o# I  q4 e
  102. 8 Q8 B* E. G" z$ [8 Q3 B* G
  103. }
    3 `) t' X6 Q6 @" ]* c( J$ p$ u6 l
  104.   //*******app定时向设备发送心跳包, 设备收到心跳包后会返回设备当前状态30s~60s一次/ N9 z, a' r: L( m: q
  105. void heartbeat()6 b* V$ C: e4 \/ ?$ s* I1 J7 C
  106. {$ F! l& L8 ~* L  b9 K) K- {
  107.   BLINKER_LOG("状态同步!"); ( C* s% H" E7 u5 H! M5 Z, b
  108.    if (digitalRead(kg)==HIGH)
    " t4 C5 g7 k/ ]1 \7 Z7 R! c. ]
  109.     {
    " i# {, I+ u+ {  q
  110.       Button1.print("on");
    $ ^" O1 I" d' p# l! H5 m4 |
  111.       Button1.color("#0000FF");              //设置app按键是浅蓝色4 [* y7 r$ \1 h0 h
  112.       Button1.text("开启中");. k( ?$ Q# X+ C/ j) Z
  113.     }# h) N2 F- t2 B3 t8 Q6 r& @
  114.     else " P! F4 X- s4 ^6 q3 g6 }) X
  115.     {) a0 v% Z+ f( ?# d# E8 h% ~% W
  116.       Button1.print("off");
    - S) s/ z& u3 j: x- [4 u' T
  117.       Button1.color("#00FFFF");              //设置app按键是深蓝色
    6 K0 ]) @3 {8 N
  118.       Button1.text("关闭中");; a9 ]5 r4 g! R% e, E
  119.    
    . y+ S) F& o# Y! _. w
  120.     }
    6 \; W7 h, c( x) t' k) z
  121. }
    8 _$ ]9 N$ V- K9 g2 Y' Z
  122. //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    ( e  k0 T+ U; r% \% h" r; N4 i
  123. void setup()% i( f  X0 l' D4 E& b, B
  124. {
    3 H! g% q1 y2 d
  125.   // 初始化串口/ P! ?$ }" s1 Y4 V, k5 ]
  126.   Serial.begin(115200);- S8 s# g( A* L8 ^: \" O) v4 m
  127.   delay(10);
    ( D0 Y, C' a2 L. b) v3 e. H
  128.   BLINKER_DEBUG.stream(Serial);
    6 s2 h; z' ?; y: |& g1 W/ S* `
  129.   // 初始化有LED的IO
    % Y- ]9 W8 q6 ]
  130.   pinMode(kg, OUTPUT);                 
      y3 y' P. W5 E
  131.   digitalWrite(kg, LOW);//初始化继电器上电状态 # v! i& @- n' J
  132.   pinMode(de, OUTPUT);
    . B5 G. e$ _( p0 a" X/ ^# k! E
  133.   digitalWrite(de, HIGH);) J/ Q4 \/ g" t0 |; _1 l
  134.   pinMode(key, INPUT);            
    / ~6 v, J. ]  p9 Z
  135.   Serial.println();6 n* O( e7 G! x0 M% T" l( d2 b+ _9 B) M
  136.   Serial.print("Connecting to ");
    & y; H+ P  X2 }" [0 T, e
  137.   Serial.println(ssid);
    8 [' ]: M" }' T5 N
  138.   WiFi.begin(ssid, pswd);
    : B8 _+ t2 o/ ?! }/ A' C. d9 P
  139.   while (WiFi.status() != WL_CONNECTED) {
    4 L+ N, Z5 u, f+ W4 O5 i
  140.     delay(500);
    ! E. n& s! C4 |2 c, O
  141.     Serial.print(".");9 |  ^* v( x! z/ I
  142.   }2 ^9 e7 ^0 f) D/ i+ g7 F
  143.   Serial.println("");9 C& D1 @) ^) R- d, o, ~# y+ |8 G
  144.   Serial.println("WiFi connected");. f5 P* B, Y+ S" C0 w( h
  145.   server.begin();
    & ]/ R( J* ?. h# Q; K7 x
  146.   Serial.println("Server started @ ");1 c1 Z' a2 }- d; c
  147.   Serial.println(WiFi.localIP());
    " \+ {' f' z" Y+ A- l: c
  148.   //打印出IP地址,后期可以制作显示器来外部硬件显示ip9 ]9 q- J5 B( A0 F
  149.   Serial.println("To control GPIO, open your web browser.");' k5 o6 E" L) b, B" g
  150.   Serial.println("To set GPIO 0 high, type:");5 i4 m+ `" z, D$ C
  151.   Serial.print(WiFi.localIP());/ |" X3 b4 ~  I$ j9 v" p) W
  152.   Serial.println("/gpio/1");) G# t3 d. \; C1 J' C
  153.   Serial.println("To set GPIO 0 low, type:");. _. _0 e3 r" ?9 L- e
  154.   Serial.print(WiFi.localIP());
    ' L0 Z7 W2 K# C9 g: o% ^6 C
  155.   Serial.println("/gpio/0");
      G- A4 U, E4 D* G* V
  156.   Serial.println("To toggle GPIO 0, type:");
    / F# P% R7 d$ I4 w/ K
  157.   Serial.print(WiFi.localIP());& _0 j. f, E1 ~; @2 q$ B8 Q2 p( u0 b
  158.   Serial.println("/gpio/4");
    - p# L' g% v1 D* `2 ^" I

  159. , ~; ^4 Q% x5 {4 w) }
  160.   // 初始化blinker
    0 L' b4 p2 l* g8 r& f2 U, n/ q
  161.   Blinker.begin(auth, ssid, pswd);% h8 L5 X% }! d+ x& m" k; T
  162.   BlinkerMIOT.attachPowerState(miotPowerState);              //小爱语音操作注册函数0 \" O2 B$ M0 D6 ^
  163.   BlinkerAliGenie.attachPowerState(aligeniePowerState);      //天猫语音操作注册函数4 T. Q! Q- D$ Q7 ]  p$ d) \
  164.   Blinker.attachHeartbeat(heartbeat);              //app定时向设备发送心跳包, 设备收到心跳包后会返回设备当前状态进行语音操作和app操作同步。
    : o7 S3 F/ O" s) n6 S+ P! V

  165. 5 ]. f4 y$ Z9 [
  166.   Button1.attach(button1_callback);             //app上操作必须的注册回调函数关联按键名“Button1”和判断程序“button1_callback+ c* a; K& j* I2 }& m4 p0 `! r
  167. }
    1 O. e  b" W( w" ~3 K" Q$ y, ^
  168. void dataRead(const String & data)$ z! ?9 V" [* x1 n" i6 J/ S$ z
  169. {
    0 K% u4 G! i) u% a+ A( W
  170.     BLINKER_LOG("Blinker readString: ", data);
    3 E! U( p, m0 j4 V

  171. & N& r1 W+ U. h0 s* L  j2 |6 {
  172.     Blinker.vibrate();: |2 ]' w! p" T5 _- R) d
  173.     ! v" R9 |0 I, Y5 d* W, o$ i
  174.     uint32_t BlinkerTime = millis();, V* }9 R9 A* [2 g$ g
  175.     ; C. i" X6 a0 Y  W# I
  176.     Blinker.print("millis", BlinkerTime);
    ! ]' S/ K+ W% d4 B+ ~
  177. }
    % r2 |3 b; j! |1 e: \; ]' w# H* }9 M
  178. void loop()
      @8 ?5 t1 ]' W- g1 k1 b
  179. {
    ' l" |; u$ l3 k1 s6 M4 f1 K9 e
  180.   Blinker.run();
    3 W; T' m/ {) Y3 z0 J9 ?
  181.   if (digitalRead(key)==LOW)
    $ ]4 X, }' Y! w2 N
  182.   {
    0 E6 }3 F- g1 Q  ?' k8 z" G5 i
  183.     Blinker.delay(200);/ X$ P$ V5 ~$ F9 ?$ Y
  184.     if (digitalRead(key)==LOW)
    + Z" @3 p8 x8 S7 h
  185.     {( ~, L. e% `8 K' L6 o
  186.           if (digitalRead(kg)==LOW)2 D3 l) n7 D- u- {. F/ `
  187.        {
    6 |( ~5 Q. p2 h# N5 O9 K
  188.             8 x* |$ u4 _6 ~8 I7 A1 k
  189.             digitalWrite(kg, HIGH);5 Q/ ^% {7 t' E5 q' p$ g. _; ^
  190.             digitalWrite(de, LOW);
    * s3 P+ @" c( R. i' B. B+ I0 B% d
  191.             Button1.print("on");
    % V+ O* T- q) L3 h
  192.             Button1.color("#0000FF");              //设置app按键是浅蓝色
    - N) z6 n6 S8 F: }& s
  193.             Button1.text("开启中");
    : ~2 }! _! b; k. s  \' c+ n- |
  194.        }, a; D4 ]' [* e% z& i# l4 M! W* T
  195.        else if (digitalRead(kg)==HIGH)
    $ h- \% j5 `% D
  196.        {
    % j+ v8 ?0 l- ]7 u/ O
  197.             digitalWrite(kg, LOW);
    - m* V% T4 n5 v: v4 @! S2 Z" k
  198.             digitalWrite(de, HIGH);  A9 a+ a9 ]9 J9 Y
  199.             Button1.print("off");9 W4 U# _7 b, u3 w/ R
  200.             Button1.color("#00FFFF");              //设置app按键是深蓝色
    : L6 C! [1 \9 s2 B( W
  201.             Button1.text("关闭中");
    . ~" v! {6 X9 `, v* R
  202.        }
    , w8 N5 ]1 |. k
  203.       }
    / e, w6 ?# g' A! @
  204.     }
    8 u( c, y, V+ u" G/ o  X
  205. }
复制代码
9 z# [, y  V$ n& p- m1 I
2 C# |! r' K. l( _4 k1 u
我没有用卖家给的码,我自己写了一个,参考我前面的文章 《最简单的8266天猫精灵控制开关,点灯、Mixly可视模块化编程 》https://bbs.nasdiyer.com/thread-18755-1-1.html9 K: e3 A# J; ^& t( i# [" D+ V
6 l  x0 X4 `  l7 t
把上面的2改成5,把高低电平对调一下就可以使用天猫精灵来控制你的这个插座了。我是把我的第一个插座放在了我的落地电风扇中了,当我慵懒的在沙发上刷着手机时候感觉有一点点热,我只要呼唤“天猫精灵,打开风扇”,就可以了。
  q# t4 {* X! A1 N. _; N3 j
* D5 R5 {. l6 e1 l. Z+ y& ~; d/ d# U4 E7 u# r+ a0 w

0

主题

18

回帖

85

积分

初级渣柚V2

积分
85
QQ
lucky999777 发表于 2021-8-23 13:06:07 | 显示全部楼层 IP:–浙江–台州 电信
高手,没玩过!达人

2

主题

11

回帖

63

积分

初级渣柚V2

积分
63
QQ
a467913252 发表于 2021-8-24 15:53:16 | 显示全部楼层 IP:–湖北–武汉–江夏区 电信
买了几个   做工挺扎实的,但是外壳怎么拆啊  拿斜口钳拨了一个,   四个圆角的卡口根本没法正常拆

11

主题

51

回帖

209

积分

中级渣柚V1

积分
209
QQ
 楼主| 易记 发表于 2021-8-24 17:20:24 | 显示全部楼层 IP:–浙江–嘉兴–桐乡市 电信
a467913252 发表于 2021-8-24 15:53: Y" ~: W( \0 r1 Q4 a5 |# M$ t
买了几个   做工挺扎实的,但是外壳怎么拆啊  拿斜口钳拨了一个,   四个圆角的卡口根本没法正常拆 ...

  [0 D4 S) E1 l, l- H- ], q6 I大力出奇迹呀

1

主题

8

回帖

257

积分

中级渣柚V1

积分
257
sevenup0719 发表于 2021-8-29 08:14:58 | 显示全部楼层 IP:–江苏–连云港 联通
a467913252 发表于 2021-8-24 15:53
  u; ]8 I9 {( h% s, Y# G买了几个   做工挺扎实的,但是外壳怎么拆啊  拿斜口钳拨了一个,   四个圆角的卡口根本没法正常拆 ...
* _4 p0 F% g7 W; o. {/ O+ d
昨晚拆了一个,废了老大劲,想和卖家说的无损拆下来,不拆个三五个积攒经验,基本不可能

2

主题

11

回帖

63

积分

初级渣柚V2

积分
63
QQ
a467913252 发表于 2021-9-4 23:05:22 | 显示全部楼层 IP:–湖北–武汉–江夏区 电信
sevenup0719 发表于 2021-8-29 08:14* v, P6 H2 J2 b6 ?) p5 u
昨晚拆了一个,废了老大劲,想和卖家说的无损拆下来,不拆个三五个积攒经验,基本不可能 ...

! Y" W. H" q; C2 r. h* j你的搞定没  为什么我的根本没法烧录   连接不上,,用esp01s还没问题的
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-11-8 07:41 , Processed in 0.055467 second(s), 22 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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