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

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

[复制链接]

11

主题

51

回帖

209

积分

中级渣柚V1

积分
209
QQ
 楼主| 易记 发表于 2021-8-21 13:57:54 | 显示全部楼层 |阅读模式 IP:–浙江–嘉兴 电信
本帖最后由 易记 于 2021-8-21 14:05 编辑
1 f: B$ l- B- X" w3 \* n( K0 r9 X2 U; {6 j/ q
最近玩ESP8266,想做个天猫控制开关。2 T2 {8 F: r/ Q8 F' H/ F
但是我很懒,一个个配元件嫌麻烦,于是想着能不能淘到便宜的带电源板的模块,多倒是蛮多,一般都要20多块钱。# J2 C- U4 B% R6 d4 o; @
还是闲钱上逛一下看,找到一个联想的国外版8266智能插座,价格才8.5元一个。有一点不足,就是只有三孔,要是五孔的就好了。老板说五孔杂牌价格一样也有货,晚两天发布。
- ]0 f. S7 h0 {) \8 b) c* S QQ截图20210821125037.jpg
5 {: H; [3 }3 s# g6 H0 @: o
4 Z' s" u2 A7 f: E7 N  Z9 v
% v* o$ v& {, _& U- r& \9 X6 h
问了一下店主,买20个一盒才包邮,想着20个还是有点多,买了5个,连运费47.5元。
. W, K3 f6 E1 E3 g9 X- V: e8 }0 b/ A; d) \2 S
QQ图片20210821124517.jpg - W3 p+ g$ L# L8 P
3 N0 M8 U& o: M6 F
, e. l8 ?6 n2 `
/ Z, v: M2 P% `; r+ }
到手,当然是拆拆拆。. `) L- h# T- O  k$ C$ @
IMG_20210820_134104.jpg
( v/ Y6 `% ^0 h+ A& M& M# i# V) X: S8 s/ F* M- @6 k

9 P/ V! p) N8 z5 j联想的做工,还是感觉不错的,光这个继电器应该也要个7-8块钱。
) I1 q/ _! ?: n1 ~; x7 ?1 w3 U IMG_20210820_160634.jpg ' P, X; B& m8 [3 r5 ^1 E7 P) W

& R) l: }. K8 V9 s9 `
. l6 W) G7 K, r$ n8 a6 z+ }
继电器是两组常开,感觉要是接电灯双控开关是不是有点麻烦的,不过用于插座是很安全,要断二条线都断开。6 K9 I) @6 L' U, k$ S! b4 _2 _2 o
QQ截图20210821133707.jpg % j/ ?" [9 l- F3 ]. T- Z$ W

7 Z8 m; N' B* P# q IMG_20210820_134114.jpg 1 r" M% _7 X; Y' P. m' ]' l  P

( G; s$ f1 [1 M/ P0 H电源芯片
# y8 Y# @' N/ I6 L- |" V$ {. o2 I- f  R

' g: q" V9 i2 B; Y

) \6 J5 E, v2 Y2 P: I% c9 M9 m' u  [有一个按钮,按钮有二个蓝色LED灯  Y+ M- p+ m$ q0 c
IMG_20210820_134157.jpg ' |! q9 I" P' S, l% [. G! C

* o/ @' d4 o6 N: u5 T7 H) s

& v$ R' }; E" H: K8266
9 p% g) c4 t2 ^1 w" x3 K+ [ IMG_20210820_141913.jpg
1 U% e. `+ m& v$ p: W. N3 j" ^: f5 h

6 _/ l6 Z* I+ {2 Q9 K  l, K& i0 ]7 T* o  V3 c6 S+ f4 @1 H

+ X$ d% C4 ?& `! U接下来就是刷机了,版子上面都预留测试点。9 D! r8 {' k+ f2 f) |: L
接线比较容易,上面都有标示,GND,3.3V,TXD-RX,RXD-TX,还有一个就是IO0接地后刷机。& _4 K: p' e& h
未标题-1.jpg
& G4 H: }" C$ z8 D! f* z
注意RX这个点,就是3.3V边上的这个点,焊盘设计的就点问题,电烙铁热一点或是焊的刷机线过粗的话,容易掉焊盘。
4 I+ D( b* t$ a要是掉了就只有一个过孔了,要是焊不上,只能再拆开接在另一面,所以为了避免不必要的麻烦,请注意一下。

% ?( d6 F  Z0 x4 E9 h3 x" h7 W) P* J- s: u  Y4 y: Z# ~
' |+ D. x7 l2 y4 u# v
7 k" D0 @* I+ @$ h6 f
3 D" Z, G$ Z! w  E# U+ {& A0 E
% ~- K; y- f/ r- D7 u7 X
    5号脚位是继电器输出
; j  c* p7 W9 y5 H+ S( Q    12号脚位是灯输出
' |3 ?& k7 d; r; D+ X% P2 q    4号脚位是按键

: L8 m, v0 w: |0 O3 G! p; i0 M# T5 I8 @' X

1 t; L+ B/ w7 e) r6 r4 D" `# F
5 c( C+ ~9 s' G% M
卖家有发一个源码,如下
  1. #define BLINKER_WIFI                    //官方wifi协议库- X4 D% h1 }" I& Z9 M8 r
  2. #define BLINKER_MIOT_LIGHT              // 设置小爱灯类库
    + n* Z# _6 w2 D- P. j1 E
  3. #define BLINKER_ALIGENIE_LIGHT          // 设置天猫灯类库6 \  ?; S8 L4 C# e  h; E
  4. #define BLINKER_PRINT Serial            //串口协议库
    1 z$ h, r2 `" D2 N/ Y4 _  ~: F
  5. #include <Blinker.h>                    //官方库. @3 Y$ |7 `1 O5 M
  6. #include <ESP8266WiFi.h>                //官方库
    . P. Z" d" H. k. q; |
  7. WiFiServer server(80);                  // 服务器端口号
    4 ?2 M+ P9 w3 [8 b0 F& ]- A, y0 t

  8. % {/ Z0 y/ b8 K; t& L2 e( j! k. y; S
  9. char auth[] = "c4942fb1d5e4";     //设备key4 P1 \' d0 n  [3 |
  10. char ssid[] = "wanboshi";     //路由器wifi ssid5 X. |3 o- J. r: B4 F* f0 o+ O
  11. char pswd[] = "1365662999813586348220";     //路由器wifi 密码
    ! F6 R  h, V" L% h

  12. ) u& r- f* r* Q! k* L
  13. bool oState = false;  O! G6 k- r2 ]6 _/ c1 l* D, a
  14. # d4 x! T& }! ~
  15. int kg=5;//继电器输出
    ; l! M/ ?# B7 R" q: u5 C
  16. int de=12;//灯输出
    # m! `8 D9 h8 C3 u# V. h7 F- |: J
  17. int key=4 ;//按键
    ; X( U; P' H/ U9 W' B6 A4 ?
  18. //*******新建组件对象$ }, ]* \$ j7 H$ R/ t+ _
  19. : |) s! N! S9 a$ j3 a; M
  20. BlinkerButton Button1("btn-abc");              //设置app按键的键名
    / u1 N0 Q' c0 |& D1 V+ s/ B& s5 ^
  21. //*******app上按下按键即会执行该函数app里按键8 a% q# y# V* F% Q
  22. void button1_callback(const String & state)( `/ b$ x6 U7 Q4 _+ k
  23. {4 O" t. x" p; r) k% x1 o' r5 K
  24.    if (digitalRead(kg)==LOW)
    2 E6 r7 |0 u! M/ t
  25.    {
    4 C: M9 G) K8 H7 ~5 }
  26.         BLINKER_LOG("get button state: ", state);7 N0 F5 E/ p2 ]8 |$ s0 v  C
  27.         digitalWrite(kg, HIGH);
    5 v# k& a* B# B  P, Z( N
  28.         digitalWrite(de, LOW);6 l1 A  K" R4 c; g; F4 _' l0 k
  29.         Button1.print("on");7 o% z. ~$ t. k8 k) Y
  30.         Button1.color("#0000FF");              //设置app按键是浅蓝色
    ! C0 u/ g: o: m& F0 ?- M
  31.         Button1.text("开启中");3 ~$ W6 ^1 |* Y+ ^- c
  32.    }5 r! C3 V3 _* ]3 ?& u
  33.    else if (digitalRead(kg)==HIGH)
    ) I0 n8 u% b4 Q4 a: t0 T
  34.    {# g. l% A' l( X- R: M- X* k9 N
  35.         BLINKER_LOG("get button state: ", state);" \1 ^$ f  O: M3 ~
  36.         digitalWrite(kg, LOW);) [3 O3 `+ C; K: u0 _0 B
  37.         digitalWrite(de, HIGH);) A0 J, q4 X; @2 T7 V7 v5 _8 B% P
  38.         Button1.print("off");
    ; C- |# Q: s8 ]& q4 H
  39.         Button1.color("#00FFFF");              //设置app按键是深蓝色; L2 c# l% Y  m$ P
  40.         Button1.text("关闭中");* B! O5 y6 K, i4 H6 ]; U
  41.    }
    5 y% F- K# s1 O( m3 |
  42. }
    4 E2 q* \) ^/ _- K8 k- U( V

  43. # R0 R, @! R) g; y  O: s) {
  44. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
      }8 ^5 K6 {$ s+ m2 q7 P

  45. & }1 g6 \5 c, b0 t5 p6 [, Z
  46. //*******如果小爱有对设备进行操作就执行下面8 d/ V, l/ s+ }( ~; m5 h$ B
  47. void miotPowerState(const String & state). A: \: G9 |2 l: T& d' F/ @
  48. {
    3 d& j/ }  z# y' |& Q/ ^
  49.     BLINKER_LOG("小爱语音操作!");              //串口打印/ j+ m4 D6 w; t. \: l0 ]3 i
  50.     if (state == BLINKER_CMD_ON){
    8 U. m" E$ b# m3 U. Q7 T
  51.         
    , b2 \, |) E$ U) g7 K
  52.         digitalWrite(kg, HIGH);& M: E- b/ C* Y
  53.         digitalWrite(de, LOW);3 T2 B! q! c- Y  M2 N7 d
  54.         Button1.print("on");5 x+ a% ?- f( r' @" d" X  K
  55.         Button1.color("#0000FF");              //设置app按键是浅蓝色
    ' O( |9 m% z% @9 c
  56.         Button1.text("开启中");
    ) l! C8 Y! ~/ w$ `. p: |# g
  57.         BlinkerMIOT.powerState("on");
    " W$ r( W4 S% `# F
  58.         BlinkerMIOT.print();
    0 ]2 p2 r0 I% `9 ]& L' i' ]
  59.    }& k2 f( @: p& a& H$ x2 c% E
  60.    else if (state == BLINKER_CMD_OFF)+ g- D  Q: H- B' S- U
  61.    {0 h* q! l1 B# G0 [* z3 L
  62.         2 M+ h' o. B6 B: l7 |
  63.         digitalWrite(kg, LOW);$ V# @- C- p! B# G) X% ~
  64.         digitalWrite(de, HIGH);5 U9 N. m, x/ K* P0 l/ ~! U4 i
  65.         Button1.print("off");
    - D! K* p8 |3 R8 X
  66.         Button1.color("#00FFFF");              //设置app按键是深蓝色
    1 F# b& b4 y: B+ D2 u
  67.         Button1.text("关闭中");5 S3 m- ]1 V/ [
  68.         BlinkerMIOT.powerState("off");
    " G" B1 k1 T/ i; y( R( @( _
  69.         BlinkerMIOT.print();
    8 U/ t4 v2 B- h0 u$ \) z5 m
  70.    }/ a& T! F* t! d( S5 G) F& o
  71.        & Y8 b% s$ r% j8 K9 [
  72. 9 w, j. }( E0 a' ~. p7 b
  73. }
    5 p! w$ f0 d/ B( q( \% ?
  74. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    0 m; C4 t$ P% d$ o
  75. //*******如果天猫精灵有对设备进行操作就执行下面
    % H  o% R/ q: g; O
  76. void aligeniePowerState(const String & state)9 [' A( e/ U( A8 y' J7 ?+ x8 v
  77. {
    , K& E8 p' |* y& w  A, x* r3 b
  78.     BLINKER_LOG("need set power state: ", state);
    2 E/ p3 Y. l, ?7 _0 ]2 o. W
  79.     if (state == BLINKER_CMD_ON)
    ; e; S6 [- u) _" p4 c4 b" a
  80.     {9 M8 |8 y6 j5 ?, `
  81.         & f$ {) B1 `2 ~& G
  82.         digitalWrite(kg, HIGH);
    9 C4 t3 y( Q! \+ x" l$ w' u8 d
  83.         digitalWrite(de, LOW);8 _7 s: Q" t1 R4 E
  84.         Button1.print("on");% Y& v/ Z# ?! {& I" x" x- V% A5 N
  85.         Button1.color("#0000FF");              //设置app按键是浅蓝色
    6 o& C& o% Y# Q) ]  A9 C3 `
  86.         Button1.text("开启中");! m0 i5 S2 i! Q8 J: H
  87.         BlinkerAliGenie.powerState("on");
      |" }5 i& |: Z+ t' U
  88.         BlinkerAliGenie.print();
    : v$ u$ p( w/ Z9 g
  89.     }0 h8 r* Y, m% o3 G0 C+ A
  90.     else if (state == BLINKER_CMD_OFF)
    * E3 D" d3 j$ Z8 A
  91.     {1 u5 {2 {7 l  `! c+ ], r
  92.         , ^+ a* }. b: }
  93.         digitalWrite(kg, LOW);! Y  d1 ]/ [; W+ v
  94.         digitalWrite(de, HIGH);+ H( ]3 m3 W1 w3 h% s; V$ p
  95.         Button1.print("off");# _$ S% O1 l) N9 K( h8 g% R
  96.         Button1.color("#00FFFF");              //设置app按键是深蓝色$ C3 l# P' e) @$ q& o
  97.         Button1.text("关闭中");
    8 _( X8 R* Z! b) |9 L: v' o
  98.         BlinkerAliGenie.powerState("off");
    ) J0 f$ F9 R+ z/ b
  99.         BlinkerAliGenie.print();; r* E$ I$ M: c9 g/ L- c+ [0 |- v% k
  100.     }
    1 y. r5 f) Z) b4 X: H3 q
  101.         4 @7 x6 y  r0 }$ Z

  102. $ Z! ?3 H- X3 _' L
  103. }
    ; d$ O# M: y$ Y! ]2 K5 K1 R( M: i0 q
  104.   //*******app定时向设备发送心跳包, 设备收到心跳包后会返回设备当前状态30s~60s一次
    0 j- n$ Q- H( n  z, K& {
  105. void heartbeat()0 c& b( b( }1 @0 e6 h: ~
  106. {: n! l$ `% A7 _2 F5 t4 U) Z( t6 A
  107.   BLINKER_LOG("状态同步!");
    9 C9 r! Z' b9 f3 ~
  108.    if (digitalRead(kg)==HIGH) ; O; R: U% w" w
  109.     {
    $ Q0 Y9 p7 b* v6 p9 N" N. N+ I
  110.       Button1.print("on");
    ; c  w# v- c& i7 q7 f; z: E
  111.       Button1.color("#0000FF");              //设置app按键是浅蓝色0 S: d+ x* U, o3 h5 x! X% R  u/ n
  112.       Button1.text("开启中");! I" ^. a( z8 {
  113.     }- S! k9 v+ n0 g6 _
  114.     else
    ( n4 S0 R7 G6 p7 k3 ?
  115.     {
    + \# s9 w) y- E, R# @/ Z% h
  116.       Button1.print("off");& \' T" k/ U0 v# G
  117.       Button1.color("#00FFFF");              //设置app按键是深蓝色
    1 E' y2 ]( S/ T8 c+ o
  118.       Button1.text("关闭中");1 x* m5 r9 J0 x* ?, l8 J" W
  119.     % ?; @; }. F- D. `6 N, Q) L: F* Y
  120.     }7 n; X5 d8 E5 `) }4 }
  121. }
    0 \- q: V/ b2 y! R; A
  122. //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++6 q: L  y) ]3 ?3 f
  123. void setup()# m$ I( c, F+ ^* Z9 Q- e, u
  124. {+ |0 F6 N; J" T  r1 t8 J
  125.   // 初始化串口
    1 h, T+ ^/ o, v/ l" C- ^
  126.   Serial.begin(115200);3 w" N" m7 c) z/ G& R+ y* k6 n
  127.   delay(10);
    ; b, I* |6 P9 [) u& T
  128.   BLINKER_DEBUG.stream(Serial);
    4 g* O: {; F4 s" b# e# _7 {
  129.   // 初始化有LED的IO& [  P% u0 ^% \" X
  130.   pinMode(kg, OUTPUT);                 $ j* f7 z$ y5 E+ B1 |. a
  131.   digitalWrite(kg, LOW);//初始化继电器上电状态
    1 H" d! Z! W3 I5 w
  132.   pinMode(de, OUTPUT);
    : X/ a; }5 a5 p4 w! g: T
  133.   digitalWrite(de, HIGH);  [& @9 e# ]" K6 U+ c" _; x
  134.   pinMode(key, INPUT);            , r  y( U: f6 y
  135.   Serial.println();
    ' k# E0 }4 c. @- P% ?$ M, ?' D
  136.   Serial.print("Connecting to ");
      c. H! W  _9 m4 N+ _& k6 s
  137.   Serial.println(ssid);" {/ Z- ?1 ]/ J' d
  138.   WiFi.begin(ssid, pswd);
    2 k: B: ~9 j0 w9 V7 d' X
  139.   while (WiFi.status() != WL_CONNECTED) {
    + h4 Y6 K3 @. B* K# j- X# U7 x6 h
  140.     delay(500);
    9 i! }  r) ?1 B/ X$ b$ _  q, W& w" r
  141.     Serial.print(".");9 z( k4 C- A( l2 E/ U$ q6 e
  142.   }
    * Y1 M! n" }- Q* H" b
  143.   Serial.println("");) L% ?4 Z  ]( [% i4 U6 `
  144.   Serial.println("WiFi connected");
    4 g4 j7 }1 i% Z; r) ]3 Z5 k9 D
  145.   server.begin();7 y1 l! q( Y1 e% l; C9 b1 j
  146.   Serial.println("Server started @ ");
    4 c$ L- h2 a0 L( v
  147.   Serial.println(WiFi.localIP());
    ! @+ Y) T, V5 {3 F
  148.   //打印出IP地址,后期可以制作显示器来外部硬件显示ip
    - N1 T0 M! ?4 a# f: P! u( Z
  149.   Serial.println("To control GPIO, open your web browser.");
    " o1 d+ z* n6 f. T: J$ z; r' p
  150.   Serial.println("To set GPIO 0 high, type:");2 p/ t0 v) ^6 ~, }% Q# U# y) D
  151.   Serial.print(WiFi.localIP());
    4 P' ~; v# E' l" R* R
  152.   Serial.println("/gpio/1");
    2 a5 ^/ s' L, o" s4 w+ j
  153.   Serial.println("To set GPIO 0 low, type:");
    ) e: v/ g! l$ t$ q
  154.   Serial.print(WiFi.localIP());5 T4 Z8 V: I, K/ w" H3 q
  155.   Serial.println("/gpio/0");8 Q) Q8 Z7 x; j
  156.   Serial.println("To toggle GPIO 0, type:");, k2 v, i, g4 A) z2 w
  157.   Serial.print(WiFi.localIP());- }. y* U% Y9 k% D2 U
  158.   Serial.println("/gpio/4");: [% c% [- ^, ~& O# h' p3 u

  159. ' S2 a; H9 D) F6 m2 O+ {! ^
  160.   // 初始化blinker
    * _( l8 T9 ?- C8 N
  161.   Blinker.begin(auth, ssid, pswd);
    4 e/ G% s$ q6 N3 y
  162.   BlinkerMIOT.attachPowerState(miotPowerState);              //小爱语音操作注册函数) n- o. T: A8 F6 ]1 z" Q3 f  Z
  163.   BlinkerAliGenie.attachPowerState(aligeniePowerState);      //天猫语音操作注册函数, a5 y* G8 ?# S) f6 J4 [+ v* V7 Q
  164.   Blinker.attachHeartbeat(heartbeat);              //app定时向设备发送心跳包, 设备收到心跳包后会返回设备当前状态进行语音操作和app操作同步。3 B0 p& }1 t) _

  165. 0 P8 l. J5 o3 c+ W! o% v1 C
  166.   Button1.attach(button1_callback);             //app上操作必须的注册回调函数关联按键名“Button1”和判断程序“button1_callback: H, w$ J7 t( |5 l! w: L! U' A
  167. }6 v. I) O& @* N6 B# c
  168. void dataRead(const String & data)+ _( U- ~9 e$ Y# Y! ]# s
  169. {
    - Y- q+ L7 y* t6 c5 Y
  170.     BLINKER_LOG("Blinker readString: ", data);0 V2 b! U2 a5 I5 o" e2 i$ A" D! N

  171. 4 W5 P$ E0 C5 S
  172.     Blinker.vibrate();+ _, T: q% w3 p& S
  173.     6 g+ r3 H2 u; Y! l8 R0 Z
  174.     uint32_t BlinkerTime = millis();
    " R- I: j* T; h0 q; `- H+ R
  175.     % H6 d, _7 j' P9 l
  176.     Blinker.print("millis", BlinkerTime);
    ! J# J# B9 P6 Q! Y) ^
  177. }8 c2 L; h# k% e% `9 x8 M
  178. void loop()
    , b* k; E. r1 O+ y" N2 V
  179. {# S! U, ^: c; p; F& a
  180.   Blinker.run();2 g9 H' l+ G% u7 V# k) u" k8 t; I: Y
  181.   if (digitalRead(key)==LOW)3 x' A! ^, T1 h) D- E! Y
  182.   {
    7 L% ]" \/ g% n
  183.     Blinker.delay(200);) {  f  T) l6 o: C& d8 R' a( T, I' e
  184.     if (digitalRead(key)==LOW)
    1 M# O8 `3 G; @& g1 j5 K  y. z, q
  185.     {$ Z) D0 i, ?. w8 b/ j) A) w$ ?
  186.           if (digitalRead(kg)==LOW)
    5 X  w( b$ g0 f. W
  187.        {
    / Z/ H7 N* A4 O! X
  188.             0 u. r& P: e) ]. @- b
  189.             digitalWrite(kg, HIGH);" A; a. C7 N+ K
  190.             digitalWrite(de, LOW);
    $ ~7 D1 P7 I6 i( k$ y  ~
  191.             Button1.print("on");) `+ @, w- z/ N: l" f7 b
  192.             Button1.color("#0000FF");              //设置app按键是浅蓝色, L0 g* x( F" H: [$ r
  193.             Button1.text("开启中");
    % i$ {5 [* X0 a$ X
  194.        }) t% u- e7 }- e; F  Q# N. ?0 b
  195.        else if (digitalRead(kg)==HIGH)0 a7 C( j% K2 j8 n5 a! g, [3 h
  196.        {5 J2 \: ^# N% u# T2 ^! Z
  197.             digitalWrite(kg, LOW);
    & Z  l5 s3 X2 G3 Z! V0 p) `. ~$ t
  198.             digitalWrite(de, HIGH);
    - O+ h* R6 L  c. X' m* r
  199.             Button1.print("off");
    : X/ r# n0 ^% x2 n+ f
  200.             Button1.color("#00FFFF");              //设置app按键是深蓝色" g/ ?' x, o. ~% o9 i2 U/ Z. R6 j/ k/ |
  201.             Button1.text("关闭中");
    + Q; ]* U) l7 Z8 r1 u
  202.        }
    1 ?3 J( ~5 ], }/ ^
  203.       }
    . a1 S' H) x8 D! O* O1 C
  204.     }8 i; w- c  U4 y7 v& R
  205. }
复制代码
9 d& m! y1 _1 A+ m+ P+ e
- a. x& J4 J. L, h% p+ @  }
我没有用卖家给的码,我自己写了一个,参考我前面的文章最简单的8266天猫精灵控制开关,点灯、Mixly可视模块化编程 https://bbs.nasdiyer.com/thread-18755-1-1.html& V9 ~% l' w& _, O1 A+ E
3 R/ k. C) m9 Z( J; J7 G7 _- T; [
把上面的2改成5,把高低电平对调一下就可以使用天猫精灵来控制你的这个插座了。我是把我的第一个插座放在了我的落地电风扇中了,当我慵懒的在沙发上刷着手机时候感觉有一点点热,我只要呼唤“天猫精灵,打开风扇”,就可以了。
. x; [2 r( C6 S4 f7 X: L! C
/ N( C8 z' c, ?$ Q3 F
! {3 @$ v- g' g& b6 ^6 [, L

0

主题

18

回帖

85

积分

初级渣柚V2

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

2

主题

11

回帖

62

积分

初级渣柚V2

积分
62
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+ M0 Q. v2 {, k2 F5 h
买了几个   做工挺扎实的,但是外壳怎么拆啊  拿斜口钳拨了一个,   四个圆角的卡口根本没法正常拆 ...
9 P2 i; h( |* k/ S: g9 W4 K
大力出奇迹呀

1

主题

8

回帖

257

积分

中级渣柚V1

积分
257
sevenup0719 发表于 2021-8-29 08:14:58 | 显示全部楼层 IP:–江苏–连云港 联通
a467913252 发表于 2021-8-24 15:53. k5 e( Z7 E1 s4 q- Z
买了几个   做工挺扎实的,但是外壳怎么拆啊  拿斜口钳拨了一个,   四个圆角的卡口根本没法正常拆 ...
5 r0 \9 ]: Y* a5 Z1 w
昨晚拆了一个,废了老大劲,想和卖家说的无损拆下来,不拆个三五个积攒经验,基本不可能

2

主题

11

回帖

62

积分

初级渣柚V2

积分
62
QQ
a467913252 发表于 2021-9-4 23:05:22 | 显示全部楼层 IP:–湖北–武汉–江夏区 电信
sevenup0719 发表于 2021-8-29 08:14
# c+ q1 k& b! c1 ^/ j昨晚拆了一个,废了老大劲,想和卖家说的无损拆下来,不拆个三五个积攒经验,基本不可能 ...

1 N5 H  r% n1 R! ]; z. ]你的搞定没  为什么我的根本没法烧录   连接不上,,用esp01s还没问题的
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-8-19 07:56 , Processed in 0.106514 second(s), 23 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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