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

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

[复制链接]

11

主题

51

回帖

209

积分

中级渣柚V1

积分
209
QQ
 楼主| 发表于 2021-8-21 13:57:54 | 显示全部楼层 |阅读模式
本帖最后由 易记 于 2021-8-21 14:05 编辑 , ?& l; @2 [7 F! i$ f
4 A! h5 i( d2 S7 A& B# X
最近玩ESP8266,想做个天猫控制开关。
( K0 {; V$ ~% y. b3 t& [但是我很懒,一个个配元件嫌麻烦,于是想着能不能淘到便宜的带电源板的模块,多倒是蛮多,一般都要20多块钱。2 o# l& i' Q# E$ i. p# X  N
还是闲钱上逛一下看,找到一个联想的国外版8266智能插座,价格才8.5元一个。有一点不足,就是只有三孔,要是五孔的就好了。老板说五孔杂牌价格一样也有货,晚两天发布。
2 J* r9 q4 X& s QQ截图20210821125037.jpg
+ G  k+ U+ [; y, l! l/ O8 }( e! F) f, Q* p$ Q+ Q, M+ y- F$ L
0 h5 K* D, ]. m% g1 m
问了一下店主,买20个一盒才包邮,想着20个还是有点多,买了5个,连运费47.5元。
1 ^9 e1 C/ j  U3 f* }* K; l# v  l& b5 F7 y7 `2 z+ G
QQ图片20210821124517.jpg 5 j# w, C) \: G

: W5 M7 l' c5 v6 I: D; k7 f7 a
# r: s# N8 p, _3 G& [$ q' G
( E/ `9 M1 Y( u, R5 Q' g0 V
到手,当然是拆拆拆。  ~5 ]* V! ^4 D
IMG_20210820_134104.jpg
# a% d6 q# _" I1 X" K- c$ ?, B% A1 m' y

0 X7 C: X5 M4 F0 q; r. g, k( `联想的做工,还是感觉不错的,光这个继电器应该也要个7-8块钱。4 Z* w' {! s, a/ k0 H
IMG_20210820_160634.jpg
8 q  m0 {9 T" l5 W* A+ z/ B) F3 ?! }7 I/ g; ]0 ]

6 {& k* K' k! [* m继电器是两组常开,感觉要是接电灯双控开关是不是有点麻烦的,不过用于插座是很安全,要断二条线都断开。2 k0 y# t0 K( o1 l  m! Y
QQ截图20210821133707.jpg
6 Y3 L1 E8 F+ u3 b$ c" v) |* b

/ ?+ h( e! |  R7 d IMG_20210820_134114.jpg
$ {7 ^6 u/ @1 U3 z/ n" y$ n' F# d
' M0 y4 v- \' k
电源芯片
) y5 e  y( i9 G$ W* A- a7 o0 b# |' l! D& j) m

" [7 d4 _1 R0 a/ L6 X
6 Q+ Q7 r( m1 A1 A! I8 @: \
有一个按钮,按钮有二个蓝色LED灯
# C3 r& x& m; T' Y4 U/ b IMG_20210820_134157.jpg ) [( K& V  E+ r1 }/ X& j! ^
* }, B; ^/ ^" |4 J: P- N2 W) X

" z. U4 d" \! c* w+ q; E8266
1 [( T2 D9 A  u* ]1 b+ W* I IMG_20210820_141913.jpg
1 h" j$ ?4 b8 k# U" n; l5 m3 s* c' a7 {3 w/ m  ]8 @* v
" h+ i/ K0 g! ]# y' F' f6 o6 O

+ [- Y% ^) @0 ~% _; p
( t+ E  m& V4 h4 [1 [& L3 r
接下来就是刷机了,版子上面都预留测试点。
8 A& z( i* \$ d( u, I8 Y$ i7 C5 W接线比较容易,上面都有标示,GND,3.3V,TXD-RX,RXD-TX,还有一个就是IO0接地后刷机。0 P7 N6 b* `5 [" v! e. s; h2 `
未标题-1.jpg , z+ B2 x7 Y9 B! u" j4 i. l
注意RX这个点,就是3.3V边上的这个点,焊盘设计的就点问题,电烙铁热一点或是焊的刷机线过粗的话,容易掉焊盘。
) X1 i3 ^( }" k8 E' |要是掉了就只有一个过孔了,要是焊不上,只能再拆开接在另一面,所以为了避免不必要的麻烦,请注意一下。

6 J/ y5 t0 r( X$ ]
% M8 W* ?7 Z1 C" y# Y3 R# n
( C, T, R1 p& }: _: T* w! ]

7 E; {8 @0 Q# f4 l$ Z+ N2 i6 t8 C% T) R/ R0 X* b; O
7 Q% U  R" l) |& r/ T: Q
    5号脚位是继电器输出& M# v& r2 ]' x% J+ F$ x
    12号脚位是灯输出# y9 T: B1 U' W# L* R# ^0 c
    4号脚位是按键

$ V/ N2 p9 E& f" u4 Y0 v- L3 d. a  H

, l9 s3 H( l$ S0 u1 i/ z6 s. e0 W8 f: [1 f: E" C( E  p9 c

8 c5 c  s8 D$ q6 K1 C* [4 e卖家有发一个源码,如下
  1. #define BLINKER_WIFI                    //官方wifi协议库
    5 J* X8 G7 S! A6 B' z/ b* f
  2. #define BLINKER_MIOT_LIGHT              // 设置小爱灯类库0 w) L# e) l$ q' _
  3. #define BLINKER_ALIGENIE_LIGHT          // 设置天猫灯类库9 _. F; N& p4 R) l. b2 y- j
  4. #define BLINKER_PRINT Serial            //串口协议库- D; x4 W: K2 I: `7 S+ B
  5. #include <Blinker.h>                    //官方库
    . K2 z! e: |8 X2 o5 |3 i/ h
  6. #include <ESP8266WiFi.h>                //官方库
    * w: n" C* L: y) L1 w1 D! h- t
  7. WiFiServer server(80);                  // 服务器端口号0 J; R5 B' M! j* ~' D& I$ L2 h
  8. : ]: k2 u3 F  U. u& X
  9. char auth[] = "c4942fb1d5e4";     //设备key
    : P6 O# Q9 A' X6 B
  10. char ssid[] = "wanboshi";     //路由器wifi ssid
    5 {8 H( e" [& [  s
  11. char pswd[] = "1365662999813586348220";     //路由器wifi 密码
    , S5 W" `& N7 J9 h

  12. / Y9 _$ C; u. T; p& l$ V1 @
  13. bool oState = false;
    $ ~* [* k* w- R  ?, h6 J

  14. 7 ?+ T/ X' \. ?. o; U* Q9 [, y
  15. int kg=5;//继电器输出# [6 U  X( I  h
  16. int de=12;//灯输出
    ' J6 v5 O( I( d
  17. int key=4 ;//按键
    4 u7 E8 T! e7 K+ h; A
  18. //*******新建组件对象; h: z4 V0 `$ o9 y/ X

  19. % O1 h3 S- W( I0 R
  20. BlinkerButton Button1("btn-abc");              //设置app按键的键名
    ! l6 G; p! w  |
  21. //*******app上按下按键即会执行该函数app里按键
    2 o$ F% `* \% {# \  s- q2 \
  22. void button1_callback(const String & state)
    ( C* k& G6 X8 R" v4 p- D( s
  23. {: A' {: {' L, {. d
  24.    if (digitalRead(kg)==LOW)4 j" B0 a# a9 i, Y* A7 t/ \
  25.    {
    % k% [6 X; x1 b) Z  V& M7 }
  26.         BLINKER_LOG("get button state: ", state);
    ! @2 o. H8 \" y# W8 `2 ]
  27.         digitalWrite(kg, HIGH);2 F: w  ?" v# d" v5 |
  28.         digitalWrite(de, LOW);/ P, W( k, r  J  ^' z: b+ a1 J
  29.         Button1.print("on");. H) M2 R: x& a, N7 ^
  30.         Button1.color("#0000FF");              //设置app按键是浅蓝色. ~2 E* a$ I" E) Y6 t4 l9 X
  31.         Button1.text("开启中");* E# h% H5 x- T2 U1 D- m5 t( [
  32.    }
    5 |) S, l5 I& F4 O
  33.    else if (digitalRead(kg)==HIGH)
    3 N2 x/ m* H$ b0 P6 B
  34.    {- S9 r0 i, [  \1 t1 ]6 _
  35.         BLINKER_LOG("get button state: ", state);
    9 y$ v/ {; r' _
  36.         digitalWrite(kg, LOW);7 N# b" t, Z6 t* ^
  37.         digitalWrite(de, HIGH);1 C3 M+ `- w# l( m* [
  38.         Button1.print("off");
    6 e" t  O- q3 ~: ]" A9 n
  39.         Button1.color("#00FFFF");              //设置app按键是深蓝色
    8 X! D& p5 w9 ?" q7 d. A/ k
  40.         Button1.text("关闭中");
    4 i- G9 v) x. V
  41.    }
    8 U- ]3 h9 i7 y  d7 k9 m
  42. }7 ]( {& L  G7 s2 f5 V# A+ u
  43. 2 T& ?  n/ A  C1 h2 T$ q- ]
  44. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
      a2 e% T* v4 `
  45. * d% r8 {5 U; c% g1 ~5 q
  46. //*******如果小爱有对设备进行操作就执行下面: y" ^9 h8 l0 C, f( M
  47. void miotPowerState(const String & state)- `4 B/ X+ f' i" M7 `
  48. {
    & Z& L1 v. U6 u9 _3 a9 D
  49.     BLINKER_LOG("小爱语音操作!");              //串口打印
    % d" R" X- G5 t" t: h1 G% e
  50.     if (state == BLINKER_CMD_ON){
    : z$ z5 X3 f8 L' w4 o5 A/ N
  51.         
    8 N. c) G6 c& K7 m
  52.         digitalWrite(kg, HIGH);: q/ f+ A6 R2 T0 x  s$ [0 k* j
  53.         digitalWrite(de, LOW);
    3 a, x1 F3 B" E0 y3 V) @! a
  54.         Button1.print("on");; Z* q: `6 g( i
  55.         Button1.color("#0000FF");              //设置app按键是浅蓝色
      X' d$ W% a6 w! I: Z# _
  56.         Button1.text("开启中");9 @% `  T& e( @( s3 r
  57.         BlinkerMIOT.powerState("on");" }, r- u2 m* r/ l/ S
  58.         BlinkerMIOT.print();
    ) H% x9 C+ f8 a: U7 [7 H. @) }
  59.    }
    ) x: P( w4 h8 K' R. I) @# Y0 V
  60.    else if (state == BLINKER_CMD_OFF)
    ! t1 m( R) O( q
  61.    {
    0 l7 G/ j! c5 K( U6 `" C1 F: O$ m7 C! X
  62.         
    6 B# q1 W) _% ?7 `0 V2 l* u
  63.         digitalWrite(kg, LOW);# ?7 B' J7 Q1 t
  64.         digitalWrite(de, HIGH);
    4 w& b$ C2 Z% [* J+ x( N- x
  65.         Button1.print("off");% u+ [' w: j8 M, d9 R8 ?
  66.         Button1.color("#00FFFF");              //设置app按键是深蓝色1 Q  o/ d0 p) B1 A; e
  67.         Button1.text("关闭中");
      s- t- D, a! ^' y' `, T
  68.         BlinkerMIOT.powerState("off");* \4 W/ n' c5 }! ^. F+ V
  69.         BlinkerMIOT.print();1 I3 l) v* ^. t5 T$ y$ m: F
  70.    }
    7 C/ B- B+ M* f+ c, B& k
  71.        7 Y4 T" C( S. Y: k) d' K# Y1 c9 S

  72. . t7 }/ W# P: O0 \) Z, V
  73. }
    8 P- E& a  S* Q! ^! u/ v/ ?
  74. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++" e$ {( x4 s. P
  75. //*******如果天猫精灵有对设备进行操作就执行下面
      ]! Z+ M" a9 c; r7 X2 k
  76. void aligeniePowerState(const String & state)2 h5 J7 ?! N; [- ?8 Q
  77. {
    + e* p2 G1 e' Y5 S# s
  78.     BLINKER_LOG("need set power state: ", state);
    . X, R8 `, J% H8 Q+ J
  79.     if (state == BLINKER_CMD_ON)
    : M* m9 m' u) F- l8 \% ]
  80.     {
    2 B$ F5 M& z+ b9 ^7 N7 h4 n0 U' ~3 }
  81.         
    2 G( g& A, V0 t& P; S
  82.         digitalWrite(kg, HIGH);$ q, r7 `- r& I: ]0 _: q6 ^8 T+ `+ ^' p
  83.         digitalWrite(de, LOW);7 [- ]8 @6 e* w" y) n
  84.         Button1.print("on");7 \) `7 I# Y% J0 J4 A5 \
  85.         Button1.color("#0000FF");              //设置app按键是浅蓝色9 _8 n( T- z& J9 a: M
  86.         Button1.text("开启中");
    3 ~" v' `/ f: _/ O, e
  87.         BlinkerAliGenie.powerState("on");
    % }( @1 B! h, j  b4 a
  88.         BlinkerAliGenie.print();8 D+ t8 g2 n% T% ]9 O  w
  89.     }2 c1 T6 k0 o; u% ^+ @  o! s
  90.     else if (state == BLINKER_CMD_OFF)
    1 [5 z/ y* B4 d  g9 Z; H
  91.     {6 v3 a  f$ V/ J3 b7 l% R% T
  92.           g; k5 @- I$ @* D% E
  93.         digitalWrite(kg, LOW);
    5 b- g# L! ^; g
  94.         digitalWrite(de, HIGH);
    ! ]4 N& O/ x) ~8 R& D; U# v9 [
  95.         Button1.print("off");3 g7 y- t- \& `; r! v0 f* v  _: P
  96.         Button1.color("#00FFFF");              //设置app按键是深蓝色
    : u4 V% u) P8 u! p9 U/ K9 A" Q
  97.         Button1.text("关闭中");1 X& |! _- o. A) V6 L1 j: W; n
  98.         BlinkerAliGenie.powerState("off");
    2 s, {/ ~. h) |3 {0 I( B& S# E3 S
  99.         BlinkerAliGenie.print();
    7 T6 s) b$ o2 v5 m- O
  100.     }* ^2 L: C  K7 I
  101.         
    ( x  a$ k! {4 n' j

  102. * n9 Y# ]4 X5 m% ]. |& c  L. b
  103. }
    . W4 g/ }: a0 P+ y
  104.   //*******app定时向设备发送心跳包, 设备收到心跳包后会返回设备当前状态30s~60s一次
      @  c0 }) ?  y3 x; L
  105. void heartbeat(), w# b# q' ~- }4 c8 f) _( ^1 B* e
  106. {
    / f+ J* Z% B3 s* E$ H$ ^) R
  107.   BLINKER_LOG("状态同步!"); 7 U! B5 H  r0 c1 E1 d* f3 ?8 Q
  108.    if (digitalRead(kg)==HIGH)
    5 n" D, Y; b" X
  109.     {
    % M5 o6 }7 v4 U! S  H
  110.       Button1.print("on");
    * K) V  Y7 ?! M
  111.       Button1.color("#0000FF");              //设置app按键是浅蓝色, t  }/ L4 O- U$ F
  112.       Button1.text("开启中");
    & l( h& U+ J3 W, b
  113.     }# r) \) ^" d1 G; {9 z) K
  114.     else 4 |- F6 [  A- i
  115.     {/ V- J6 o7 o* W" H0 A
  116.       Button1.print("off");4 Q8 ?5 |( e' q: j3 R' {
  117.       Button1.color("#00FFFF");              //设置app按键是深蓝色6 r. N# q, S% K  O; K. r; B8 z
  118.       Button1.text("关闭中");, C( t, q3 I# O+ O: q4 h3 |
  119.     & \2 G* M6 C4 \2 f' B) P
  120.     }
    / T) a4 V$ ]1 i' Y2 l1 W
  121. }8 \+ r' A8 x, U( p7 F, e2 W
  122. //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    4 P" E! H# |* F, t5 s: C/ E+ z7 ?
  123. void setup()
      Z  c4 W9 g( f: C- U4 i+ N7 r
  124. {
    ; z' J" S! _9 I2 U- W+ ~
  125.   // 初始化串口
    " [" C; G$ b1 d6 U% `+ @/ s$ Q
  126.   Serial.begin(115200);/ O- t$ i. `5 ^$ I! ^" R' g% ^
  127.   delay(10);
    ) h% W6 p# M0 Y5 [" x, ~# t
  128.   BLINKER_DEBUG.stream(Serial);8 u( s! l8 U/ Y' H, B. g( ~
  129.   // 初始化有LED的IO
    $ D  Q0 F  g4 e2 y7 }& f8 F" f5 f
  130.   pinMode(kg, OUTPUT);                 
    7 q! ]; b" f5 \
  131.   digitalWrite(kg, LOW);//初始化继电器上电状态 " N1 i3 O8 K" S) z7 d" y) N
  132.   pinMode(de, OUTPUT);/ |, d7 B4 E' O- j, l
  133.   digitalWrite(de, HIGH);
    ( f5 {' y, ~8 Z5 ~. M; _  N* x5 v
  134.   pinMode(key, INPUT);            
    # H$ y: r+ U5 m9 G9 m8 A
  135.   Serial.println();
    3 d9 O/ I) O) T1 U/ V
  136.   Serial.print("Connecting to ");% z3 J5 e' f/ T0 [% b  L9 \
  137.   Serial.println(ssid);
    7 M  T/ r( a4 c) F1 R, l* A
  138.   WiFi.begin(ssid, pswd);
      E  n8 m. f1 G) H& y
  139.   while (WiFi.status() != WL_CONNECTED) {2 w" D7 _6 E: q* o$ q# p
  140.     delay(500);2 Q* Z! y$ v  `( b
  141.     Serial.print(".");1 v8 ]7 D2 e. ]
  142.   }
    % z) m$ g9 }1 @  ~+ W- x& s8 |9 D
  143.   Serial.println("");
    + l8 `9 C! |0 a
  144.   Serial.println("WiFi connected");
    5 b; R) j8 n# r% w, m: D1 e
  145.   server.begin();
    ( x4 K+ ~8 u5 [
  146.   Serial.println("Server started @ ");, \! B: Y8 }3 Q9 F" U6 a. a9 U( j
  147.   Serial.println(WiFi.localIP());( o9 X* R( `$ O( w
  148.   //打印出IP地址,后期可以制作显示器来外部硬件显示ip
    * o3 @4 M: l3 p' v" b
  149.   Serial.println("To control GPIO, open your web browser.");
    8 i7 t' H4 Y" S$ ~$ L4 K
  150.   Serial.println("To set GPIO 0 high, type:");
    ; v( H7 `: x  _6 S3 T; i# k4 ?
  151.   Serial.print(WiFi.localIP());
    6 ?7 t- `5 y" z& v" G
  152.   Serial.println("/gpio/1");
    0 l5 {' _4 d" }2 d
  153.   Serial.println("To set GPIO 0 low, type:");: E7 U  Z$ `0 g# ^9 z. o! k
  154.   Serial.print(WiFi.localIP());: T- Y8 Q3 b1 D$ E  O
  155.   Serial.println("/gpio/0");
    1 S  ~' j. {7 Z, i! L9 w' d# ?, j
  156.   Serial.println("To toggle GPIO 0, type:");) Y( n* |0 Y. i  @4 v. T, M
  157.   Serial.print(WiFi.localIP());
    : m* X# o# Y4 I+ G& ^% q5 c1 r$ y& L
  158.   Serial.println("/gpio/4");
    ) d& n! F9 H0 o# l) D9 c# K. ]

  159. & U6 r. E; G* ]
  160.   // 初始化blinker
    6 M1 u& `0 x9 x, K: E; I6 B
  161.   Blinker.begin(auth, ssid, pswd);& r2 [1 x5 e% Y3 E# v
  162.   BlinkerMIOT.attachPowerState(miotPowerState);              //小爱语音操作注册函数
    : A4 Y7 }! _3 S- E6 L6 Q
  163.   BlinkerAliGenie.attachPowerState(aligeniePowerState);      //天猫语音操作注册函数
    * d+ V4 X% l' w4 F( Z! t1 J
  164.   Blinker.attachHeartbeat(heartbeat);              //app定时向设备发送心跳包, 设备收到心跳包后会返回设备当前状态进行语音操作和app操作同步。" h8 W% s5 c4 T1 o) x3 z

  165. . K5 _$ s% r$ a% k' K2 G% w$ A' l/ v
  166.   Button1.attach(button1_callback);             //app上操作必须的注册回调函数关联按键名“Button1”和判断程序“button1_callback
    + O9 _: E* }# y* Y5 N. x8 f
  167. }% j4 {$ Z4 ?9 I; K
  168. void dataRead(const String & data)7 i$ ?9 j) O8 b: b0 {) o
  169. {
      ?/ c, k' Z: D# E4 k
  170.     BLINKER_LOG("Blinker readString: ", data);8 O, e) Y% n2 R& w# {- s8 z
  171. 1 F9 J8 a6 a8 S$ g# ]$ ~1 _0 A, o
  172.     Blinker.vibrate();
    ; ^. o1 _4 ?; s  r
  173.     3 k6 M; W* _$ E$ e2 E# b
  174.     uint32_t BlinkerTime = millis();) t+ ]/ D7 U# D  h5 ]7 K
  175.    
    . U+ ]. v4 t3 m. L+ ?
  176.     Blinker.print("millis", BlinkerTime);
    , i0 V3 Y2 @2 t) Y( S0 @1 j, m5 l3 j0 m
  177. }" H3 I5 p5 r* J' y. L2 p: Y
  178. void loop()
    . C9 b/ Z  x1 L+ e6 l+ b
  179. {9 N7 l) E" o5 x6 E: x
  180.   Blinker.run();6 @. C4 m' s3 {' m: T( L
  181.   if (digitalRead(key)==LOW)1 ^1 J# L' \- r9 d7 m7 N
  182.   {& Z/ ^, ~0 ~1 o
  183.     Blinker.delay(200);
      }( w4 K2 s4 a6 F0 O& L% ~+ ]
  184.     if (digitalRead(key)==LOW)) l% V& B& v. }+ I0 R. S
  185.     {
    * ~- ^- H4 B% u( A
  186.           if (digitalRead(kg)==LOW)5 ], x& w' G" C' r# V; y* ^
  187.        {
      ~4 d; o0 b; p- \9 o% z
  188.             4 m2 n& a1 T6 z7 i, J
  189.             digitalWrite(kg, HIGH);8 ?& @' K$ {; E  P
  190.             digitalWrite(de, LOW);& j4 ^2 a0 r& \
  191.             Button1.print("on");
    * Y4 w+ j+ b  t% K- l
  192.             Button1.color("#0000FF");              //设置app按键是浅蓝色
    / S  j; w, ?  b' [. l
  193.             Button1.text("开启中");
    ' T% y# C) u  Z$ B' u8 q6 x5 d
  194.        }8 B, m5 v( C2 {5 d. ]" N
  195.        else if (digitalRead(kg)==HIGH)
    ( i3 O+ h4 p% {' Q9 X- N
  196.        {7 ~+ b7 X: x$ l+ M1 Y- b- p  D
  197.             digitalWrite(kg, LOW);
    ' Q3 I3 |% i# }1 ^0 K8 v
  198.             digitalWrite(de, HIGH);+ g9 V! ~+ V- Q7 m' U# n
  199.             Button1.print("off");8 ]! F3 c' G! p+ f9 Q
  200.             Button1.color("#00FFFF");              //设置app按键是深蓝色
    8 @1 Y  j$ Q: a5 o4 Z" `# ]8 u* M
  201.             Button1.text("关闭中");, ^! r% v1 }9 g. ?3 j$ k  S, B
  202.        }) X- K6 S* S+ l% A" m8 W# T% |" ^7 r
  203.       }! w' E8 Z# ]5 W* v9 K) a% E
  204.     }
    & b# w9 w7 ^9 f& f0 k; r
  205. }
复制代码

! R. E( o4 u; s9 w& o& v8 I$ Z) G0 `) E+ }$ M* F
我没有用卖家给的码,我自己写了一个,参考我前面的文章最简单的8266天猫精灵控制开关,点灯、Mixly可视模块化编程 https://bbs.nasdiyer.com/thread-18755-1-1.html: ~2 I: e) ?) i+ r6 V9 S* {% E

# c0 U) U6 h, n4 n- J9 Q. F把上面的2改成5,把高低电平对调一下就可以使用天猫精灵来控制你的这个插座了。我是把我的第一个插座放在了我的落地电风扇中了,当我慵懒的在沙发上刷着手机时候感觉有一点点热,我只要呼唤“天猫精灵,打开风扇”,就可以了。, l9 V2 A- X6 \- J% m0 u3 H$ l" ]! U

: _. y) p( G- A/ n, x9 S$ g: o. f% M/ W9 R' B" F8 b  D

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 q1 n- D% W2 T" l买了几个   做工挺扎实的,但是外壳怎么拆啊  拿斜口钳拨了一个,   四个圆角的卡口根本没法正常拆 ...

! T* \( {- d( b大力出奇迹呀

1

主题

8

回帖

256

积分

中级渣柚V1

积分
256
发表于 2021-8-29 08:14:58 | 显示全部楼层
a467913252 发表于 2021-8-24 15:538 U# g2 M. Q- r9 A: ~7 ^
买了几个   做工挺扎实的,但是外壳怎么拆啊  拿斜口钳拨了一个,   四个圆角的卡口根本没法正常拆 ...
3 {; p4 h( K; I& y4 [
昨晚拆了一个,废了老大劲,想和卖家说的无损拆下来,不拆个三五个积攒经验,基本不可能

2

主题

11

回帖

62

积分

初级渣柚V2

积分
62
QQ
发表于 2021-9-4 23:05:22 | 显示全部楼层
sevenup0719 发表于 2021-8-29 08:14* j# f, F6 c' j, S
昨晚拆了一个,废了老大劲,想和卖家说的无损拆下来,不拆个三五个积攒经验,基本不可能 ...
  S+ Z4 W' R+ Y
你的搞定没  为什么我的根本没法烧录   连接不上,,用esp01s还没问题的
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-10-13 13:16 , Processed in 0.074075 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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