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

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

[复制链接]

11

主题

51

回帖

209

积分

中级渣柚V1

积分
209
QQ
 楼主| 易记 发表于 2021-8-21 13:57:54 | 显示全部楼层 |阅读模式 IP:–浙江–嘉兴 电信
本帖最后由 易记 于 2021-8-21 14:05 编辑 ' S/ M6 ?5 G6 N. Z" F

+ Y" m" H7 z6 D$ N  Z, ^! ?, A: A( P最近玩ESP8266,想做个天猫控制开关。
% I- ?' h7 }: M, m7 I- [但是我很懒,一个个配元件嫌麻烦,于是想着能不能淘到便宜的带电源板的模块,多倒是蛮多,一般都要20多块钱。0 I2 V# o! _4 i9 `6 ^, _
还是闲钱上逛一下看,找到一个联想的国外版8266智能插座,价格才8.5元一个。有一点不足,就是只有三孔,要是五孔的就好了。老板说五孔杂牌价格一样也有货,晚两天发布。
! f) ]7 w7 @+ ^8 N QQ截图20210821125037.jpg
6 S! P& _' W$ R' f  R9 A( S7 N- W3 u/ T: z
: _+ M- C  P( c% b# f. Z+ W
问了一下店主,买20个一盒才包邮,想着20个还是有点多,买了5个,连运费47.5元。" K& o* u- ~( C' c5 R2 ]

: d. ~. v4 p, ~1 X QQ图片20210821124517.jpg 3 J4 y  L: z) X* P' z: p

9 c8 p3 k$ P4 l4 S7 c/ O. r, g/ {8 R* l
6 C4 N" A, ^. V) I4 a
到手,当然是拆拆拆。
/ I- V. @  t) _% n4 h IMG_20210820_134104.jpg
7 H3 H. S; }# s/ e7 @% R
% V# E  r: G2 f% a$ J" L9 |4 N

! y2 [; c, u6 S9 F; c8 x& g+ v联想的做工,还是感觉不错的,光这个继电器应该也要个7-8块钱。- c5 P; X  H3 i3 o& I9 J2 p. u  Z2 j+ w/ o
IMG_20210820_160634.jpg   V2 _/ Y1 A3 ?5 k  Q9 N' [

! _9 q) `6 W/ r, l

# W! N0 W) U6 x5 e: z& v继电器是两组常开,感觉要是接电灯双控开关是不是有点麻烦的,不过用于插座是很安全,要断二条线都断开。; x& e3 X# G# t, u  D( n) O
QQ截图20210821133707.jpg
! W, e5 \8 j5 n9 H
9 z- K7 x/ a# q* {9 e" U
IMG_20210820_134114.jpg * x( P" n* c3 \" X
2 p2 w& L% _( \) t/ t, L
电源芯片
% c2 w2 Z' I0 q5 d
' S3 V' k7 Q, D3 X9 X8 S
/ x; |+ g) |! ]; n* q
: Z8 L5 R9 q" O" k: b+ x8 F
有一个按钮,按钮有二个蓝色LED灯
3 v5 L, c# v6 V9 R4 W% |; M. \5 v  ` IMG_20210820_134157.jpg ; O# s/ N- L+ Y
/ t2 l( _' B" y" v- K- i6 z8 F

/ w7 ]; Z$ Z. g- J! W2 L8266* q1 O) E  y% c! M
IMG_20210820_141913.jpg . ~% }7 ], z3 O: @7 U- L

* {' S( Y2 \4 `& Y. _7 U7 Q

/ v9 @7 P: v0 u- d$ a8 n& l5 ?. b6 w0 L& r8 _# V5 N
* @& S4 x4 C8 r: ?2 \/ ^
接下来就是刷机了,版子上面都预留测试点。, v- i( ~$ P( ]$ O" S5 c& G& f9 e
接线比较容易,上面都有标示,GND,3.3V,TXD-RX,RXD-TX,还有一个就是IO0接地后刷机。8 ?: @8 y; _' s. N7 B
未标题-1.jpg ) j2 Z$ r! W) ]6 w
注意RX这个点,就是3.3V边上的这个点,焊盘设计的就点问题,电烙铁热一点或是焊的刷机线过粗的话,容易掉焊盘。
' V2 S5 L8 ]  w( `( v要是掉了就只有一个过孔了,要是焊不上,只能再拆开接在另一面,所以为了避免不必要的麻烦,请注意一下。
; K9 G( ]! ]+ [' V! y, V9 e1 \* F5 h

* [) |% L. X5 s. f
0 L9 D- p3 O* I; U: V

# B4 ~# Z% g+ X2 g; `9 F& t2 q* ^9 x

5 m1 Z" t8 l/ U8 M( V! W    5号脚位是继电器输出
; ?! L5 b! a$ r" ]; H3 Y6 P( e, A    12号脚位是灯输出0 b/ p" |( ?1 b
    4号脚位是按键
# h( s$ p; C7 |3 F0 U$ {
5 Y; v  N8 ^$ w7 U" \" H
5 @* |, T: z4 C% s& O8 J: C+ P

# t" R( p4 ]1 ~2 @0 i/ e
% m& d% G* e1 ~
卖家有发一个源码,如下
  1. #define BLINKER_WIFI                    //官方wifi协议库
    5 X  [8 S$ b* g" \( w  h1 z
  2. #define BLINKER_MIOT_LIGHT              // 设置小爱灯类库$ U$ d( q5 V- r" T. j. i% x
  3. #define BLINKER_ALIGENIE_LIGHT          // 设置天猫灯类库! f9 P4 I: f+ n* y; B" l
  4. #define BLINKER_PRINT Serial            //串口协议库
    ; s( d% Q5 n' c8 ?+ A; N
  5. #include <Blinker.h>                    //官方库" `) k6 E: s) F6 y3 I* F- j. w2 c8 O) r
  6. #include <ESP8266WiFi.h>                //官方库
    9 f  d' D5 c1 w2 D  ^7 b1 x
  7. WiFiServer server(80);                  // 服务器端口号
    9 `* c+ D( t: D1 B/ S
  8. % t1 S4 I: \# W' v2 l% X' E, P
  9. char auth[] = "c4942fb1d5e4";     //设备key
    ) \$ [& p- I# M2 b
  10. char ssid[] = "wanboshi";     //路由器wifi ssid! f% |. n4 G3 ?  `; Q
  11. char pswd[] = "1365662999813586348220";     //路由器wifi 密码
    ) ]  @, x6 H2 ^' [5 i+ j

  12. 9 N5 D9 d" @6 o% l4 a( }! w8 }* m
  13. bool oState = false;! P5 m$ W* u/ Q- z" G6 E; ^2 v
  14. ( i1 x  t3 b9 b* o2 ~
  15. int kg=5;//继电器输出
    3 C) \) R' `" C8 i
  16. int de=12;//灯输出4 q" l! F3 U/ e6 |1 m* \$ G9 @, ]
  17. int key=4 ;//按键( t5 C4 S+ s! |* p$ {, I& `
  18. //*******新建组件对象
    ; Q$ _4 c% X" }
  19. 1 n- F# @* @, a& Z4 @3 K8 ?
  20. BlinkerButton Button1("btn-abc");              //设置app按键的键名# H. z7 @" i/ O6 p* U- ]' r
  21. //*******app上按下按键即会执行该函数app里按键
    & ?% l% ~' p- s1 ]! b% ^; C
  22. void button1_callback(const String & state)
    0 F( N% {0 r/ x, P! k
  23. {
    , {+ A2 U0 n7 R( L! G8 Y- O$ _
  24.    if (digitalRead(kg)==LOW)
    / {6 `" `+ h9 W4 S+ q0 _( y
  25.    {
    / J8 r8 ^; t$ y9 i3 i. |7 ~4 z! R# G, I
  26.         BLINKER_LOG("get button state: ", state);0 U1 ^6 P6 V! i  p# i5 m/ z
  27.         digitalWrite(kg, HIGH);1 i' `8 Z- b- s1 b
  28.         digitalWrite(de, LOW);0 T+ _7 ]4 J4 Q6 R! J6 c
  29.         Button1.print("on");
    3 |6 H9 K8 ^! U- @: u) c% A
  30.         Button1.color("#0000FF");              //设置app按键是浅蓝色
    ' T& P" ^( I# v4 u. U3 C
  31.         Button1.text("开启中");
    6 @+ n0 `" V( Q1 Y6 w
  32.    }* H) z. U5 N* x  G, D
  33.    else if (digitalRead(kg)==HIGH)
    + N4 D2 L7 y& a+ |
  34.    {+ f8 |7 d/ d" l6 N
  35.         BLINKER_LOG("get button state: ", state);
    & F9 S2 @+ C4 G( Q# U2 S3 K
  36.         digitalWrite(kg, LOW);& X4 Q- c' c3 V) A
  37.         digitalWrite(de, HIGH);2 S$ B& a' ^% ~) y1 `# l* j3 D
  38.         Button1.print("off");
    / W% Z8 i+ Z4 S  b
  39.         Button1.color("#00FFFF");              //设置app按键是深蓝色! y4 m3 I1 X& I/ l
  40.         Button1.text("关闭中");# C9 B6 }; b4 `; b3 ^9 k/ S2 x! W
  41.    }, {, i9 g. C+ X! d5 k
  42. }
    3 \: b+ x: k0 o3 o+ `
  43. . P! }" n/ E: U% c8 m+ j" f* C
  44. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++& T5 e1 p  m- ~
  45.   q  Q3 {8 m1 C* ?4 y5 Q
  46. //*******如果小爱有对设备进行操作就执行下面
    + a7 u* C0 _7 Q: e, L/ {  j( t1 {
  47. void miotPowerState(const String & state)# Z4 H6 J* ^- B, ~2 ~$ h0 s( I
  48. {
    , D5 P4 f- v: J( b# `5 H( @
  49.     BLINKER_LOG("小爱语音操作!");              //串口打印
      h* X9 P* t! P3 d+ j7 m5 ^
  50.     if (state == BLINKER_CMD_ON){
    * O2 G, N6 x2 [  {6 }3 R
  51.         2 J# E6 [7 |" x* I
  52.         digitalWrite(kg, HIGH);# R, i8 f) i$ [( e9 D% `5 [& s
  53.         digitalWrite(de, LOW);
    3 N& a3 w5 x9 b: q
  54.         Button1.print("on");
    2 y7 F% q8 g2 ^
  55.         Button1.color("#0000FF");              //设置app按键是浅蓝色" d8 }, ^, t$ d; N6 x1 I
  56.         Button1.text("开启中");
    / m/ `( B7 K" q2 g4 [
  57.         BlinkerMIOT.powerState("on");
    0 t- P, }  L7 |; v% {
  58.         BlinkerMIOT.print();
    ( Y% y2 t9 b; d6 y$ H
  59.    }
    # y1 t- \) x6 x3 z# l# X3 N  z# m
  60.    else if (state == BLINKER_CMD_OFF)
    * ?0 N! W8 i5 ]+ H# Q1 Q% Z
  61.    {
    + `/ r; H, e/ Z$ w9 z
  62.         ' z0 ~* g/ @  K2 |1 B
  63.         digitalWrite(kg, LOW);6 K/ a1 m8 [1 O- A9 b2 r
  64.         digitalWrite(de, HIGH);
    4 E0 F1 ^" L: v$ K* F0 ~
  65.         Button1.print("off");& |- t2 \1 `5 k0 K+ p" T( ^' R
  66.         Button1.color("#00FFFF");              //设置app按键是深蓝色
    * x; b0 x- F) k0 J) f# `
  67.         Button1.text("关闭中");
    ! `0 |4 @  K( ], H* i
  68.         BlinkerMIOT.powerState("off");; m4 f2 y  X/ B
  69.         BlinkerMIOT.print();  Q+ L5 n4 G4 X5 s5 t* d# r
  70.    }
    + S7 s& {' r& L. U6 u1 U9 k
  71.        + N5 |5 n- Z" n% f' @& O

  72. 0 k* z/ z5 N: y
  73. }
    7 g; y% O3 }. f
  74. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- b5 l' b3 J: g" {% P  v8 F
  75. //*******如果天猫精灵有对设备进行操作就执行下面2 d* A+ N7 l, p: S' K, @- U
  76. void aligeniePowerState(const String & state)/ E; {. T' Q2 j7 |" o
  77. {
    + Q  F, d8 J2 H$ h" f
  78.     BLINKER_LOG("need set power state: ", state);$ l4 }& @7 ~8 S6 o, A& L- p: A
  79.     if (state == BLINKER_CMD_ON)
    7 Q" p1 R2 l5 e5 n* ^# j# L+ V4 n
  80.     {- F. T* p6 t( r
  81.         
    ) _5 m6 i- r6 s+ E4 {
  82.         digitalWrite(kg, HIGH);7 U8 G' \  z2 J* V; h9 E
  83.         digitalWrite(de, LOW);6 w2 E, m9 ]+ M/ c7 y# A
  84.         Button1.print("on");8 x, p) L0 I" ~3 [( J0 P% ^
  85.         Button1.color("#0000FF");              //设置app按键是浅蓝色. n7 }% M4 y; M9 n' S1 o3 N
  86.         Button1.text("开启中");
    : j, K$ v) F& h5 P( t8 ^9 I% \
  87.         BlinkerAliGenie.powerState("on");0 g$ r5 u8 p; t& X1 H4 ^. I
  88.         BlinkerAliGenie.print();
    ! b& ~7 m7 Z4 c2 k# h
  89.     }
    1 S* F1 J# T1 `2 a+ w
  90.     else if (state == BLINKER_CMD_OFF)7 S. n& v6 R5 I2 I6 Q
  91.     {
    - y0 X$ k/ A+ x. i4 u1 W
  92.         / T2 ~2 E1 g$ V5 g
  93.         digitalWrite(kg, LOW);
    / V3 V" t  s0 {9 q7 Y! m
  94.         digitalWrite(de, HIGH);: M# h8 _7 z2 e! P5 ^
  95.         Button1.print("off");! Z8 k; j, N2 r/ J' U! w) f
  96.         Button1.color("#00FFFF");              //设置app按键是深蓝色- P: L1 i: A9 W
  97.         Button1.text("关闭中");0 u; g; @+ {+ k5 U$ m9 K. l! i
  98.         BlinkerAliGenie.powerState("off");) v  j* H$ m% |
  99.         BlinkerAliGenie.print();# C; |/ S% g  y) z: E8 H$ K0 Y. S, o
  100.     }
    0 {1 A( j9 {/ i' E
  101.         
    5 }/ C, }# B6 K; w' e7 U- z
  102. . M" q7 c3 v7 [) {" n9 R4 q! Z/ d
  103. }6 P# y. z: B$ I
  104.   //*******app定时向设备发送心跳包, 设备收到心跳包后会返回设备当前状态30s~60s一次
    4 y, t: z: _) K5 {9 L
  105. void heartbeat()
    # k7 T' ^. C* G$ D# s- X
  106. {
    : L. e) v8 n% k& y# G  x
  107.   BLINKER_LOG("状态同步!"); 9 L7 X5 O2 P6 M' r: Y
  108.    if (digitalRead(kg)==HIGH)
    ( Z9 B$ |0 i  m$ V+ @# U
  109.     {
    # V  E6 X6 y2 p! g
  110.       Button1.print("on");
    ; R; A5 l1 m8 [7 v; `* g3 T
  111.       Button1.color("#0000FF");              //设置app按键是浅蓝色
    5 p3 }- u% y7 O8 f3 ~- R
  112.       Button1.text("开启中");) A' a" C2 {4 `, b, L
  113.     }
    + f) ~* u- |) S
  114.     else
    1 G& _5 a5 U. i
  115.     {! b2 |, |3 X$ Q' c% e
  116.       Button1.print("off");4 }9 b  C6 ~7 t" S$ V+ N8 H; ]/ C
  117.       Button1.color("#00FFFF");              //设置app按键是深蓝色: h3 f$ ^  P% [# S8 k9 W3 @8 S
  118.       Button1.text("关闭中");( g( i; N' c- V! B$ q: G% d# k
  119.    
    ; ?8 w  Z5 D! X) k/ v; s5 Z
  120.     }7 }! Z2 M- h6 n" v' L. e5 L
  121. }
    + a3 v. z% }! [, M3 Q) L
  122. //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++$ r6 o8 K# `( U8 V7 }
  123. void setup()/ f8 K! `& y0 j
  124. {
    ; P6 @4 [/ l8 S( O5 x2 W6 m8 m2 ?
  125.   // 初始化串口
    % v$ P$ ^+ s# o7 N! k4 n
  126.   Serial.begin(115200);, Z' S& Z+ G' q7 ]6 @9 b
  127.   delay(10);
    ; Z9 ?* D  Y! B( e) [/ A* M" F, ?
  128.   BLINKER_DEBUG.stream(Serial);
    1 C- q6 @3 a, t! W  ]
  129.   // 初始化有LED的IO
    - ~0 p# Y* ?' V8 {+ J* o
  130.   pinMode(kg, OUTPUT);                 + k, T! B& D/ @, [0 y
  131.   digitalWrite(kg, LOW);//初始化继电器上电状态
    ( e% A9 t' l* Q
  132.   pinMode(de, OUTPUT);1 G- a, _9 N: G  H/ d" V5 }
  133.   digitalWrite(de, HIGH);" s: S4 y- h% W  u7 Q/ D+ _) S* S
  134.   pinMode(key, INPUT);            ) ~4 L% m5 C' ?. {. y. t
  135.   Serial.println();" S2 M, ~% j) h9 ]
  136.   Serial.print("Connecting to ");
    ' e+ a- M! J! E
  137.   Serial.println(ssid);3 ]# }! `, c+ D( v1 s; q' ?# @
  138.   WiFi.begin(ssid, pswd);9 T3 \) G. I- T0 ?( i7 ~" g
  139.   while (WiFi.status() != WL_CONNECTED) {
    . J0 F/ A' l. m7 x- ~5 e
  140.     delay(500);# O- T( w* c# k1 H  H! l8 d' f& L
  141.     Serial.print(".");
    - C: x1 w  K4 g& W, D0 M: X, ?
  142.   }# u8 `' @8 @' b2 y. G6 V
  143.   Serial.println("");
    . B' `) k/ x' f2 K7 D# f4 I1 {
  144.   Serial.println("WiFi connected");
    5 E4 e( |% D6 z$ ]8 ]9 S! T
  145.   server.begin();
    1 e0 H6 U( B1 M7 R/ b0 w
  146.   Serial.println("Server started @ ");
    3 X+ y5 L+ M% O; o
  147.   Serial.println(WiFi.localIP());
    2 R( {* \3 O% I7 z4 ^
  148.   //打印出IP地址,后期可以制作显示器来外部硬件显示ip
    & F6 ?9 \: t9 R  [# ~
  149.   Serial.println("To control GPIO, open your web browser.");5 M6 r' S; y: k
  150.   Serial.println("To set GPIO 0 high, type:");6 R- k7 B) C; D! i3 z" c
  151.   Serial.print(WiFi.localIP());
    # x, [0 D  N- W& c$ J6 u! F
  152.   Serial.println("/gpio/1");5 J8 y% n& F* L; [
  153.   Serial.println("To set GPIO 0 low, type:");$ a6 E; U! t4 i
  154.   Serial.print(WiFi.localIP());
    ) w9 V6 B; M! ?" `
  155.   Serial.println("/gpio/0");/ m6 H. X4 o* f8 `
  156.   Serial.println("To toggle GPIO 0, type:");. C8 p+ c. ]. |! P
  157.   Serial.print(WiFi.localIP());
    . T$ @9 ^. m; x
  158.   Serial.println("/gpio/4");
    3 X0 M' _# H+ t8 W$ F
  159. 3 x4 B/ v$ B  ], A0 t, V
  160.   // 初始化blinker' l( J0 L' S/ k( ~" m% i
  161.   Blinker.begin(auth, ssid, pswd);
    * ~' }6 \# x+ R' Q
  162.   BlinkerMIOT.attachPowerState(miotPowerState);              //小爱语音操作注册函数& q( z6 y% O4 {" Q2 C2 Q1 R. n/ v
  163.   BlinkerAliGenie.attachPowerState(aligeniePowerState);      //天猫语音操作注册函数
    0 R5 u$ a0 M! h. t2 u
  164.   Blinker.attachHeartbeat(heartbeat);              //app定时向设备发送心跳包, 设备收到心跳包后会返回设备当前状态进行语音操作和app操作同步。6 `- N# x$ D: E( S

  165. - M8 B( {3 @- Z/ b
  166.   Button1.attach(button1_callback);             //app上操作必须的注册回调函数关联按键名“Button1”和判断程序“button1_callback: d3 N% _( m) q5 @' q
  167. }
    - B- ~; W7 a1 h
  168. void dataRead(const String & data)# r1 p% x" P, l
  169. {
    , U6 j% }8 C8 D# D
  170.     BLINKER_LOG("Blinker readString: ", data);+ S& V8 ~" b$ Q7 ]( \; s

  171. ! G9 o; [! J. W: q  p5 j3 s
  172.     Blinker.vibrate();
    2 ~! t; _& @7 q1 Q/ _
  173.    
    ) r% }. @2 a6 p7 [, y' m
  174.     uint32_t BlinkerTime = millis();/ [& C1 T4 }4 A* W" o8 B
  175.    
    3 b9 [/ u8 n2 w
  176.     Blinker.print("millis", BlinkerTime);: R2 r0 ?2 g$ O( S) o. e
  177. }
    * A+ J: I1 i+ {: `$ e
  178. void loop()8 K/ N1 k6 V' N( W9 y2 |0 e
  179. {0 [2 }7 F) c2 Q! F7 `5 ^% W; ~
  180.   Blinker.run();
    3 u: I! [% h+ c, }
  181.   if (digitalRead(key)==LOW)
    % {" W8 x1 u& N7 p
  182.   {" D# B( z3 X# Q6 N  L4 Y9 j
  183.     Blinker.delay(200);
    9 E4 Y1 d0 b; g( V) R
  184.     if (digitalRead(key)==LOW)  ~. M+ s' W0 ^* l1 K: B
  185.     {1 e$ ^) m3 ]; \$ w0 Z
  186.           if (digitalRead(kg)==LOW)
    . q! c+ |' |; Q( ^+ F' Z% T
  187.        {1 F2 g2 l2 ~- l  F6 q
  188.             # n1 o: c2 G3 K
  189.             digitalWrite(kg, HIGH);0 s; q( s; p( [4 B1 ^
  190.             digitalWrite(de, LOW);
    * w! n+ W/ B1 ?. D
  191.             Button1.print("on");
    + o' Q+ R5 a1 h. F% h
  192.             Button1.color("#0000FF");              //设置app按键是浅蓝色
    . h9 N- r" l/ E+ j5 q7 ]
  193.             Button1.text("开启中");
    - i% r0 f$ e! c" W
  194.        }
    4 K1 V3 b+ \& Y" u
  195.        else if (digitalRead(kg)==HIGH)2 l( E0 ^" T) M  X! ^* Q0 _
  196.        {
    + r' O5 w; ?" i' ?  A, D
  197.             digitalWrite(kg, LOW);' y  @4 k  g5 V: o2 Z# V- a' o3 U
  198.             digitalWrite(de, HIGH);
    ) J* Z8 T6 i( u' d/ `
  199.             Button1.print("off");, `5 c. p8 s8 T7 }. E4 D
  200.             Button1.color("#00FFFF");              //设置app按键是深蓝色; z4 U( V/ H( N* t/ h( E& ^+ a
  201.             Button1.text("关闭中");1 U/ Y$ e2 j9 {6 k9 z
  202.        }
    " g3 ?1 _: B* d4 x$ o: ]6 |
  203.       }& C" J3 S. Z. t. _
  204.     }
    ! L* w2 E, L3 k( Q
  205. }
复制代码
& Q8 ^/ n# Z8 P: q
" T# ^! W/ y9 q3 X2 H7 F5 J9 o
我没有用卖家给的码,我自己写了一个,参考我前面的文章最简单的8266天猫精灵控制开关,点灯、Mixly可视模块化编程 https://bbs.nasdiyer.com/thread-18755-1-1.html( [9 s6 Z( |: @. M5 }' L3 ~

! u7 r8 X+ Q. U* d把上面的2改成5,把高低电平对调一下就可以使用天猫精灵来控制你的这个插座了。我是把我的第一个插座放在了我的落地电风扇中了,当我慵懒的在沙发上刷着手机时候感觉有一点点热,我只要呼唤“天猫精灵,打开风扇”,就可以了。. K( q9 U3 g' i' x% |7 F: E. {; R

9 @0 a% _7 y6 M) y% t7 T8 g
! L2 h. z/ ^0 q9 ~, S

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
4 `# h% u9 M. _: N- D: Q买了几个   做工挺扎实的,但是外壳怎么拆啊  拿斜口钳拨了一个,   四个圆角的卡口根本没法正常拆 ...
8 X( z. O6 v6 b/ x& Z$ W2 ]
大力出奇迹呀

1

主题

8

回帖

257

积分

中级渣柚V1

积分
257
sevenup0719 发表于 2021-8-29 08:14:58 | 显示全部楼层 IP:–江苏–连云港 联通
a467913252 发表于 2021-8-24 15:53
* p; J+ l) n* {# m' C0 u买了几个   做工挺扎实的,但是外壳怎么拆啊  拿斜口钳拨了一个,   四个圆角的卡口根本没法正常拆 ...

) c+ f" O% C2 N; y) }昨晚拆了一个,废了老大劲,想和卖家说的无损拆下来,不拆个三五个积攒经验,基本不可能

2

主题

11

回帖

62

积分

初级渣柚V2

积分
62
QQ
a467913252 发表于 2021-9-4 23:05:22 | 显示全部楼层 IP:–湖北–武汉–江夏区 电信
sevenup0719 发表于 2021-8-29 08:14
& S* ]4 `, C- c7 m6 W" l昨晚拆了一个,废了老大劲,想和卖家说的无损拆下来,不拆个三五个积攒经验,基本不可能 ...

7 Q/ j" y0 @  v- ^# u你的搞定没  为什么我的根本没法烧录   连接不上,,用esp01s还没问题的
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-8-27 04:28 , Processed in 0.070144 second(s), 24 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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