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

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

[复制链接]

11

主题

51

回帖

209

积分

中级渣柚V1

积分
209
QQ
 楼主| 发表于 2021-8-21 13:57:54 | 显示全部楼层 |阅读模式
本帖最后由 易记 于 2021-8-21 14:05 编辑   f* t$ G  S) Y- g, ?- f/ M8 B9 Q

& }" Q( O! w! o- X/ `最近玩ESP8266,想做个天猫控制开关。
4 k, ^+ X+ k1 l/ v. c4 L* \但是我很懒,一个个配元件嫌麻烦,于是想着能不能淘到便宜的带电源板的模块,多倒是蛮多,一般都要20多块钱。  |; r0 a6 v& X9 t
还是闲钱上逛一下看,找到一个联想的国外版8266智能插座,价格才8.5元一个。有一点不足,就是只有三孔,要是五孔的就好了。老板说五孔杂牌价格一样也有货,晚两天发布。
! W9 c) a' Z6 T+ @& w3 N5 @# _ QQ截图20210821125037.jpg
) |! N, b5 Q8 R' W9 g9 k- w' m1 @7 I( S2 n7 b' e- D
9 x# F& W  u" \7 p7 X
问了一下店主,买20个一盒才包邮,想着20个还是有点多,买了5个,连运费47.5元。
' K8 Q2 f( H" x" s  o* T, D" N, n( ~! }* ?7 w, ^, C( C8 C  j
QQ图片20210821124517.jpg
7 l2 W( K) J8 E5 m6 a1 k
2 m# U9 B$ B" D/ z$ }& m& ]
6 L8 P) b. _1 c4 o+ v. V7 ~

3 L8 {9 f- \9 `" `到手,当然是拆拆拆。9 h# n& \9 z( b% O4 ^) I
IMG_20210820_134104.jpg
" ?+ [6 P( I# }- s8 b
3 Y' ~+ I7 N5 o  n/ T

$ b' o% ~" F2 Y& ~5 p# @) ^联想的做工,还是感觉不错的,光这个继电器应该也要个7-8块钱。' H) C+ k+ I3 w# }4 `* d7 U& m, ^
IMG_20210820_160634.jpg
# G/ q$ W+ P, M1 l# G9 J/ z4 I9 p! h& Q/ f9 C+ j3 v' H

$ c6 n9 h3 ?% G: D( B9 U8 U继电器是两组常开,感觉要是接电灯双控开关是不是有点麻烦的,不过用于插座是很安全,要断二条线都断开。
9 |+ \: Q" v/ I1 \ QQ截图20210821133707.jpg
$ g9 z' h$ `# x

8 I. D" U* Q; n# |0 a: Y% D) J IMG_20210820_134114.jpg
4 e. b$ q2 w9 ?0 J% J+ M* @
, `  x) Y/ c5 o' l, r/ c
电源芯片
" }7 E) `0 ~( Y2 I# t( x$ X) ^- m+ I. I* w% W" P& F: Y

; k2 r  v" [1 ?( p$ u8 w3 F2 ~

  Y7 q/ a0 w) m0 Y2 h有一个按钮,按钮有二个蓝色LED灯
; ?  N- j; }$ s3 {0 \3 _ IMG_20210820_134157.jpg 1 X& G  H, B6 K; @* N) Q
+ x  w* C" V9 P/ a/ O$ j/ e- K. p
* n9 K: ?1 _: z9 S2 V# }& ]
8266
* g9 m9 {3 Y, @: g" m+ {& ~1 Y IMG_20210820_141913.jpg
+ U* @! |6 ~( @( B) m
  Y8 P/ Y7 ?: z6 k8 E

5 T  ]0 [3 }5 ]( `1 C1 Q) z+ M7 z7 ]" {6 l, M7 L

* a4 v: t; u0 N接下来就是刷机了,版子上面都预留测试点。
! W' Z6 t  B/ L" _7 m# I接线比较容易,上面都有标示,GND,3.3V,TXD-RX,RXD-TX,还有一个就是IO0接地后刷机。
! `! F: o( a6 C0 @0 H$ h0 ^# Q 未标题-1.jpg
- c8 G! Y4 w' f6 V9 p, k+ |1 H, t& O
注意RX这个点,就是3.3V边上的这个点,焊盘设计的就点问题,电烙铁热一点或是焊的刷机线过粗的话,容易掉焊盘。
+ p1 Q9 i/ L& f- {0 z要是掉了就只有一个过孔了,要是焊不上,只能再拆开接在另一面,所以为了避免不必要的麻烦,请注意一下。
/ ?9 {4 O$ U0 a- x! u5 t8 M
" d: R8 j9 k" z/ M  L3 D& z! r$ I
( l: p  e9 B. S2 s4 g/ f
/ K$ e* U( {# g- M: _. [5 z+ e; E$ r
7 \% C' B1 ?/ u: f7 ~# Q: @7 G

$ D4 P  p  P; {5 `  Z) P, _. M$ }3 Z    5号脚位是继电器输出& o# j- \& o5 G, A
    12号脚位是灯输出
7 s# r, g" t. r1 m    4号脚位是按键
! g& y1 B1 X# ~/ f# B
& F. e" ?# A  w  M+ ^
  \0 [$ o7 d. Y% W
- p' s+ R) r/ F7 G
# E- H! p# y. h& `
卖家有发一个源码,如下
  1. #define BLINKER_WIFI                    //官方wifi协议库
    5 k1 |/ V4 Y; U0 a' _* O
  2. #define BLINKER_MIOT_LIGHT              // 设置小爱灯类库
      V2 j5 c; j  v3 Q+ Y
  3. #define BLINKER_ALIGENIE_LIGHT          // 设置天猫灯类库+ W5 V+ `5 J3 Y& k
  4. #define BLINKER_PRINT Serial            //串口协议库
      r) f# H, }5 H# B- b' [
  5. #include <Blinker.h>                    //官方库
    ) ]( w( t# N" u. o
  6. #include <ESP8266WiFi.h>                //官方库2 R4 {3 J# k8 C  M3 Q5 Y6 V
  7. WiFiServer server(80);                  // 服务器端口号/ p% W5 v4 |+ L8 t# S, m+ T
  8. + C! x, u+ y' }1 X
  9. char auth[] = "c4942fb1d5e4";     //设备key
    , V- {3 I0 Z7 Q
  10. char ssid[] = "wanboshi";     //路由器wifi ssid' S7 ^8 F. [  `; T0 e( A& |
  11. char pswd[] = "1365662999813586348220";     //路由器wifi 密码
    8 E. l1 |. o& G  W4 n* A' ~) G
  12.   W7 @, |4 Q4 Z/ }! V
  13. bool oState = false;% D4 F- O- o5 _, v; d3 A. t) d
  14. 4 H+ \1 Z, g$ Y3 A" `( L/ r$ ~" }
  15. int kg=5;//继电器输出7 Z& \$ a  `5 ~$ y
  16. int de=12;//灯输出
    ( ~5 L8 U& ~- v+ {  v
  17. int key=4 ;//按键
    + L* H% N3 P8 ?/ b& N: q/ c
  18. //*******新建组件对象
    2 w+ ]% J; b( e8 {& c# \( Y
  19. ' e9 h( z5 i+ C) ^! ^5 d* x
  20. BlinkerButton Button1("btn-abc");              //设置app按键的键名9 M/ z0 V$ \) ~5 S
  21. //*******app上按下按键即会执行该函数app里按键: m  X* b# J3 I5 o% c
  22. void button1_callback(const String & state)' y$ B4 C, l: Y. Z( V: N! o! Z
  23. {
    + z3 N# K5 P8 o: {+ d3 L& c: O
  24.    if (digitalRead(kg)==LOW), t/ J: ~- U+ E5 Q" U) o
  25.    {) |$ Q) O1 H) M' @) L- M8 d# A9 q
  26.         BLINKER_LOG("get button state: ", state);
    - n1 C. Z- J+ a! @* R6 s. `
  27.         digitalWrite(kg, HIGH);
    ) {2 v! A! g! k' ?5 [3 I/ ]
  28.         digitalWrite(de, LOW);6 I8 A3 l- W! O5 Y; p
  29.         Button1.print("on");
    9 G$ P$ _0 q+ O  ]2 `4 G
  30.         Button1.color("#0000FF");              //设置app按键是浅蓝色3 ?' G3 m: ?7 p: s& x1 }
  31.         Button1.text("开启中");
    5 L4 j' U( J* T# S
  32.    }
    8 L3 l# K/ Q0 a6 `! S3 P- x7 U
  33.    else if (digitalRead(kg)==HIGH)
    6 T/ r. [. U, A. [# H6 e
  34.    {6 X2 _" s6 n) H: s/ X; o( h
  35.         BLINKER_LOG("get button state: ", state);
    6 ]: V2 U7 V, O
  36.         digitalWrite(kg, LOW);
    # u# h, a! y9 j1 d! `
  37.         digitalWrite(de, HIGH);
    2 U+ J' \# N  ^( B8 [
  38.         Button1.print("off");
    : U7 _) b; G+ g, J# w
  39.         Button1.color("#00FFFF");              //设置app按键是深蓝色6 l. S; T4 z" m( V) ^
  40.         Button1.text("关闭中");
    / v7 Y. Z# |% M. b2 J& C+ [8 Y
  41.    }
    ) t9 V# |( Y8 w( w* E
  42. }, }" X% J/ E1 P& w
  43. - }+ _) I' ]1 Y# t. G$ E4 w
  44. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++7 I' q( r% i2 t9 J
  45. $ H6 F2 n, p7 y- a: {7 v
  46. //*******如果小爱有对设备进行操作就执行下面7 K- V& z, j* t% d& Q
  47. void miotPowerState(const String & state)( M  o' L1 d" C) K, [
  48. {$ Q' C& k7 j+ l! c* a
  49.     BLINKER_LOG("小爱语音操作!");              //串口打印6 W! S- y6 i' T% H5 Z, M$ F) U! c
  50.     if (state == BLINKER_CMD_ON){
    ; C  |  f2 |8 S" P# O7 n9 w
  51.         
    " v7 E5 {9 U8 [
  52.         digitalWrite(kg, HIGH);' C0 B4 F" y  I# q; @: U; D# C
  53.         digitalWrite(de, LOW);
    % u0 d+ @( N. I  m- Y' p; D$ ^3 d' I" W
  54.         Button1.print("on");  L0 k5 U/ u+ K1 V* e
  55.         Button1.color("#0000FF");              //设置app按键是浅蓝色& c+ ~$ {+ b+ B" P! b0 o7 F
  56.         Button1.text("开启中");/ z1 |1 J) \0 B* F6 g/ U
  57.         BlinkerMIOT.powerState("on");
    , H; @4 c( T/ C$ M0 Y- K. o. w# B
  58.         BlinkerMIOT.print();. [" |  E5 K$ Q" y: P  s) t0 t
  59.    }
    8 X0 O9 y2 P  O  f% g; s) t
  60.    else if (state == BLINKER_CMD_OFF)% _3 ?# u4 Z: T0 ?, R# R" k
  61.    {
    8 e6 ^4 Y4 G" Z! x# S5 _. t: |
  62.         3 M/ C1 ]* h( ?0 f. N9 f
  63.         digitalWrite(kg, LOW);( S. ?: Q5 f" d7 I# v6 _
  64.         digitalWrite(de, HIGH);0 a& }  ?- h) `9 S: p
  65.         Button1.print("off");
    ; p' A  {9 ?  r1 \" |' c& i& @
  66.         Button1.color("#00FFFF");              //设置app按键是深蓝色
    : m- T) M! W6 t: ~; c/ X4 a
  67.         Button1.text("关闭中");
    3 a% _; Z9 V* b, Z$ n9 [: `" M
  68.         BlinkerMIOT.powerState("off");* I; y, @5 `  b2 |  {
  69.         BlinkerMIOT.print();$ Y2 R/ w/ O. ~: ~5 p
  70.    }% h( N  }( I7 v3 U: J' ^' x
  71.        . x: O- U: ~# K- U0 Q/ S
  72. 3 h8 ~) b( F+ m/ J+ t  b
  73. }. ]: i  ^3 B1 H, O7 Q
  74. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    , J# l2 D- L* a0 G
  75. //*******如果天猫精灵有对设备进行操作就执行下面& b, h( l# i# ]- F! K, G7 b; z
  76. void aligeniePowerState(const String & state)
    % w6 k% H9 y8 `7 t$ p0 d, N
  77. {
    ) R$ ?! Y' o4 D5 ]( z
  78.     BLINKER_LOG("need set power state: ", state);; ~3 c" P1 T4 R6 \% O
  79.     if (state == BLINKER_CMD_ON)" C) c! d. T, Z
  80.     {
    / D% k- Y1 u- ~2 G% E1 O& S4 b4 y
  81.         # a& a. `4 C/ M% z
  82.         digitalWrite(kg, HIGH);
    # a- r1 |0 k: c% o
  83.         digitalWrite(de, LOW);" W, z' Q8 a+ x- \
  84.         Button1.print("on");
    - L! C+ h- P% l1 y
  85.         Button1.color("#0000FF");              //设置app按键是浅蓝色
    / s0 O' S- {8 P; B( }
  86.         Button1.text("开启中");
    1 g. C" R! q) v0 @
  87.         BlinkerAliGenie.powerState("on");7 X, H; }; L3 w* C( {$ l% [, a
  88.         BlinkerAliGenie.print();
    ; h/ F, w, j: y# w& ~/ K
  89.     }
    & S# b! |) ~4 n# i
  90.     else if (state == BLINKER_CMD_OFF)
    3 T8 K$ H2 O& N& R: C: O
  91.     {! ~5 O- e& ]  Q; o* l1 M
  92.         
    : h2 U2 a* q2 B; d/ @  w0 G/ ~/ p
  93.         digitalWrite(kg, LOW);* C& I+ }2 b+ V% n) }
  94.         digitalWrite(de, HIGH);. C/ e6 [) R4 H: C; i
  95.         Button1.print("off");
    & i; k7 p8 W% k( q5 V8 }
  96.         Button1.color("#00FFFF");              //设置app按键是深蓝色+ p. [4 {$ |& y" C0 X
  97.         Button1.text("关闭中");
    3 \% d" ^. c* L
  98.         BlinkerAliGenie.powerState("off");: f1 l! n1 V6 G. U7 z
  99.         BlinkerAliGenie.print();* s* T. e" ?9 t/ ?
  100.     }. B! \' L, u2 {% F+ Y2 o
  101.         
    + r+ h0 ^9 }$ P- ?6 _
  102. 7 r4 w$ n6 e' o
  103. }
    ! {$ v" r% m# L
  104.   //*******app定时向设备发送心跳包, 设备收到心跳包后会返回设备当前状态30s~60s一次1 |( \  z1 S# Q0 K! G) M6 y( Q
  105. void heartbeat()* ~( s$ C) ^% A$ T& |% G* Q# h8 [
  106. {
    - ~1 u9 y3 ~+ }/ b( f
  107.   BLINKER_LOG("状态同步!"); ) o. `' H8 k: o" b8 l% f1 a
  108.    if (digitalRead(kg)==HIGH)
      ^* r! {4 j0 N# O. s  k5 G
  109.     {
    1 l5 _; |- `  H2 g3 v& ]
  110.       Button1.print("on");
    & u2 H$ |, }) Q$ {7 H
  111.       Button1.color("#0000FF");              //设置app按键是浅蓝色
    ( }1 o0 b8 j# y7 S
  112.       Button1.text("开启中");
    5 J/ @& n$ U2 _; d" L
  113.     }% i% K0 u. l  m8 r' Q, X
  114.     else
    ) {1 f$ v! p( f/ k) ]8 i
  115.     {( I) W# Q5 v4 m7 H1 g+ a* ~
  116.       Button1.print("off");+ V% S/ s/ ~! Y4 @; W, h
  117.       Button1.color("#00FFFF");              //设置app按键是深蓝色+ j& O7 n2 r9 t* X* n5 x+ ]
  118.       Button1.text("关闭中");
    4 x( j8 `$ g2 D% l+ }
  119.     7 G. Z7 _# I6 Y" @
  120.     }$ N! h9 z$ X8 a6 D* r0 O# ]0 \
  121. }
    7 X, b) \& V1 f1 ~. \
  122. //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++. [, F5 u. E, m8 v7 P
  123. void setup()# _: A% p0 |$ f! @; e% N6 e. p
  124. {+ @6 o5 D# ]; D+ y
  125.   // 初始化串口
    : N9 t  `9 J& i& s5 P
  126.   Serial.begin(115200);
    % T, m6 s9 u( h( _7 d1 B. l. Q1 {
  127.   delay(10);1 C* D+ ]  \. W- f! a
  128.   BLINKER_DEBUG.stream(Serial);0 ^, M- i6 c- i, }: h  q3 S- ~
  129.   // 初始化有LED的IO8 [" b: ]" j3 J. u4 Q
  130.   pinMode(kg, OUTPUT);                 
    3 ?' I' \6 v! s$ C
  131.   digitalWrite(kg, LOW);//初始化继电器上电状态 1 f5 R5 J) _! [% p
  132.   pinMode(de, OUTPUT);
    ' \) y1 V" M7 M' w: w
  133.   digitalWrite(de, HIGH);
    & _" g: i  B3 F! `. u
  134.   pinMode(key, INPUT);            - F; Z. a$ ?% D) a3 ?& B7 P1 d
  135.   Serial.println();& k' w, c( N* Z  M2 Y& ^% D
  136.   Serial.print("Connecting to ");$ h/ v/ P: M  H* }' R- c) U
  137.   Serial.println(ssid);. W' W, X' a' f. A
  138.   WiFi.begin(ssid, pswd);0 ?! f/ Z! Q5 w4 D' W
  139.   while (WiFi.status() != WL_CONNECTED) {4 ]. \3 C( a% i( f3 m0 o+ d' W6 l" ?
  140.     delay(500);
    1 ~7 _4 e0 W( M+ m: ]  Q! J
  141.     Serial.print(".");: Y9 j$ X8 j' ^& a4 s; a- {* m
  142.   }
    ! ]6 V8 w1 X  T, `3 p7 {
  143.   Serial.println("");8 O8 d- K  X. j5 m/ O6 q; Y
  144.   Serial.println("WiFi connected");
    # y' K; N1 R. B0 U+ d
  145.   server.begin();
    . o* Q5 V' ]" N8 a
  146.   Serial.println("Server started @ ");
    5 K& A" t7 w5 Q% ]& H' s6 m/ c2 I
  147.   Serial.println(WiFi.localIP());
    ) M' D7 j6 |# f  o: M! r; \/ g7 c1 A
  148.   //打印出IP地址,后期可以制作显示器来外部硬件显示ip
    ) s# C  Q! U# u# U7 w
  149.   Serial.println("To control GPIO, open your web browser.");& g( q3 O" E5 V! a8 T
  150.   Serial.println("To set GPIO 0 high, type:");
    ! L8 ]8 p9 Q0 r8 P( I  h$ r
  151.   Serial.print(WiFi.localIP());
    ) j, ]) m# t2 ~
  152.   Serial.println("/gpio/1");2 i, ?$ m- M* V4 ?3 V8 E
  153.   Serial.println("To set GPIO 0 low, type:");& ]) P& @9 }# K8 x7 [2 l% ~
  154.   Serial.print(WiFi.localIP());
    7 o. O, a, {* @1 p
  155.   Serial.println("/gpio/0");, d* H: R5 [# l. ~6 x* ]7 k( d  K
  156.   Serial.println("To toggle GPIO 0, type:");
    6 k# ]. f0 f1 S- A
  157.   Serial.print(WiFi.localIP());
    + r0 M1 u0 r0 A& b3 u
  158.   Serial.println("/gpio/4");/ Y; J& n+ c; T2 x! [, P4 Q

  159. 8 f- ]* ]4 J4 w, q6 P( Z( ?* w
  160.   // 初始化blinker
    1 _; o$ m/ C8 z
  161.   Blinker.begin(auth, ssid, pswd);
    0 l, ^$ S8 y( e# X
  162.   BlinkerMIOT.attachPowerState(miotPowerState);              //小爱语音操作注册函数; J) `/ `6 \* L# }
  163.   BlinkerAliGenie.attachPowerState(aligeniePowerState);      //天猫语音操作注册函数2 F' K, {3 m6 V* A3 {; \, Q( }$ E( z
  164.   Blinker.attachHeartbeat(heartbeat);              //app定时向设备发送心跳包, 设备收到心跳包后会返回设备当前状态进行语音操作和app操作同步。* q) ?; U! F2 H2 b- j6 f. q
  165. $ ~4 P' x+ `, w5 Z/ P: r6 @
  166.   Button1.attach(button1_callback);             //app上操作必须的注册回调函数关联按键名“Button1”和判断程序“button1_callback
    # _. N9 x4 U- `; L) \1 M) r
  167. }' }  a. c+ J3 {8 M
  168. void dataRead(const String & data)# t8 w6 ^+ Z, S0 `; J3 [: Z  O# k3 ?) I
  169. {
    , H( O' _5 I0 ]9 a5 P3 Y
  170.     BLINKER_LOG("Blinker readString: ", data);
    * ?' ^  }/ u6 I" @

  171. " l8 t8 G8 Y& Q
  172.     Blinker.vibrate();
    " I. R9 B' y" b1 P, Q+ H; b; e
  173.    
    3 {1 f! m6 S& k0 ~3 o3 W
  174.     uint32_t BlinkerTime = millis();. B: L/ X+ [& [0 k2 J
  175.    
    / F: H; X1 P( L
  176.     Blinker.print("millis", BlinkerTime);
    ( L4 h2 {7 w$ ~8 \0 X! Y
  177. }4 t  k- C: f( Y) H! ]' }, m
  178. void loop()
    ; j& m- m& J0 U% h4 M8 U+ e
  179. {4 O' O$ V- j# S7 Q) ~
  180.   Blinker.run();+ U, R  v/ J5 Z4 N; W7 I
  181.   if (digitalRead(key)==LOW)) T0 E2 l9 _' S+ }
  182.   {7 y, p# R8 `. y% X/ p+ E
  183.     Blinker.delay(200);( s9 f+ J" N2 o% {1 \3 l  i
  184.     if (digitalRead(key)==LOW)6 w* z- g2 E3 D3 L# }
  185.     {
    : V1 ^- n8 Q2 ^! d* V% R* b3 ^
  186.           if (digitalRead(kg)==LOW)
    ' i7 `4 z3 e# M! ^
  187.        {
    ' B' R0 I; r# C2 j* z" e2 C
  188.             
    7 }* ?% u. ]2 {! ^1 S: o2 q, W: C
  189.             digitalWrite(kg, HIGH);2 ^- ]3 `3 O% ?4 W: m/ u, y
  190.             digitalWrite(de, LOW);9 P' S: W, z: o( A
  191.             Button1.print("on");
    8 n6 t/ |$ m: }  o- d- m6 C* A
  192.             Button1.color("#0000FF");              //设置app按键是浅蓝色4 h  A7 z1 A& D1 v' [% m
  193.             Button1.text("开启中");
    / j6 v) p! f9 B- L6 Y' R
  194.        }/ `2 m5 e* U8 {: T. \4 n- T9 H( @! X! J5 M
  195.        else if (digitalRead(kg)==HIGH)2 {0 m6 ^* U9 k9 N  @' e. e  [
  196.        {
    9 E# t& X9 @6 M- }9 x2 n
  197.             digitalWrite(kg, LOW);$ d* E- D0 O# B9 H5 n' `9 }- M5 @
  198.             digitalWrite(de, HIGH);8 ~4 z3 A+ X# Y6 Y& c9 w7 c
  199.             Button1.print("off");. c* C; v6 Y% z
  200.             Button1.color("#00FFFF");              //设置app按键是深蓝色
    ) z$ p2 V* D" S7 i! |
  201.             Button1.text("关闭中");' Q" d* w) z' Y) p% X/ f
  202.        }1 \% H% l2 ]/ T$ I" J8 ^
  203.       }
    " s4 M: I- \3 _. R
  204.     }
    $ Y9 j0 M6 [" K- {! D7 y
  205. }
复制代码
6 _0 [% V/ |" P
7 }. Q# G+ Q: E3 |# t
我没有用卖家给的码,我自己写了一个,参考我前面的文章最简单的8266天猫精灵控制开关,点灯、Mixly可视模块化编程 https://bbs.nasdiyer.com/thread-18755-1-1.html
/ H  v# @! |  j5 A: Q/ ^" P' Q8 R$ n2 Z7 K% h1 {" J
把上面的2改成5,把高低电平对调一下就可以使用天猫精灵来控制你的这个插座了。我是把我的第一个插座放在了我的落地电风扇中了,当我慵懒的在沙发上刷着手机时候感觉有一点点热,我只要呼唤“天猫精灵,打开风扇”,就可以了。  _$ b5 _* G" h0 A: _5 Z6 N
. Q( f' C8 T0 y$ ~# n4 w

. p3 P) v$ R& A  ?( O& m2 q

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
; z; \0 F$ c2 }& S+ X; W+ W买了几个   做工挺扎实的,但是外壳怎么拆啊  拿斜口钳拨了一个,   四个圆角的卡口根本没法正常拆 ...

" {) A7 G7 V- A2 K( r2 m" ?# p大力出奇迹呀

1

主题

8

回帖

256

积分

中级渣柚V1

积分
256
发表于 2021-8-29 08:14:58 | 显示全部楼层
a467913252 发表于 2021-8-24 15:53
! m) y+ B! z) }: g买了几个   做工挺扎实的,但是外壳怎么拆啊  拿斜口钳拨了一个,   四个圆角的卡口根本没法正常拆 ...
7 n9 Q: M- R: i, W' ~$ ~8 g' N
昨晚拆了一个,废了老大劲,想和卖家说的无损拆下来,不拆个三五个积攒经验,基本不可能

2

主题

11

回帖

62

积分

初级渣柚V2

积分
62
QQ
发表于 2021-9-4 23:05:22 | 显示全部楼层
sevenup0719 发表于 2021-8-29 08:14
/ p, Y/ F6 n9 Q) G. b昨晚拆了一个,废了老大劲,想和卖家说的无损拆下来,不拆个三五个积攒经验,基本不可能 ...
# B8 y% W0 U% I& Y
你的搞定没  为什么我的根本没法烧录   连接不上,,用esp01s还没问题的
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-11-3 20:08 , Processed in 0.066204 second(s), 3 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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