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

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

[复制链接]

11

主题

51

回帖

209

积分

中级渣柚V1

积分
209
QQ
 楼主| 易记 发表于 2021-8-21 13:57:54 | 显示全部楼层 |阅读模式 IP:–浙江–嘉兴 电信
本帖最后由 易记 于 2021-8-21 14:05 编辑
. g. R8 d9 h7 S: l# a4 G/ t8 t4 B
: B* E; L4 X7 f7 ~" y7 W2 P1 R9 O最近玩ESP8266,想做个天猫控制开关。
! s! g. B7 a2 Y, b( k  X, u但是我很懒,一个个配元件嫌麻烦,于是想着能不能淘到便宜的带电源板的模块,多倒是蛮多,一般都要20多块钱。% O) I& C$ x# l
还是闲钱上逛一下看,找到一个联想的国外版8266智能插座,价格才8.5元一个。有一点不足,就是只有三孔,要是五孔的就好了。老板说五孔杂牌价格一样也有货,晚两天发布。
; Z; q) [7 L. @- |" j QQ截图20210821125037.jpg ) b" k4 T  Q6 l$ _: d6 [. v5 C
: k- {$ ^) K; s5 _5 ]6 S
& b% l3 I6 I2 K# Z7 I
问了一下店主,买20个一盒才包邮,想着20个还是有点多,买了5个,连运费47.5元。* Y' W: x7 ~2 O, C# X" U
: D+ W5 ]4 E6 l7 J2 a
QQ图片20210821124517.jpg : ?' |* i# I- V5 _% C9 g* V

2 }1 m" I' Y: ]# S3 ?- v0 i$ H# K; V8 w* j! D0 H
7 T% Y3 A' g8 l) w: e8 a2 C
到手,当然是拆拆拆。+ j' [7 a0 G. A. R/ z9 Q
IMG_20210820_134104.jpg
, |7 s; ?+ t/ ^1 T
" t. f6 s: }: G. J7 X/ E, D

( d, e- B# b  [* a) m' D7 S联想的做工,还是感觉不错的,光这个继电器应该也要个7-8块钱。
( g, K: \0 m1 `1 t% _3 m3 Q- M IMG_20210820_160634.jpg   p& I: i: d8 q: P3 N

7 k* m$ Z3 j0 S: T8 B
6 W% j" i+ G! V0 i
继电器是两组常开,感觉要是接电灯双控开关是不是有点麻烦的,不过用于插座是很安全,要断二条线都断开。1 o0 x/ M% s0 T+ [) T" W, m4 d
QQ截图20210821133707.jpg ) ~! i- k" w% _. K+ ~0 V
2 i$ v6 ^- F0 R& k! P+ b
IMG_20210820_134114.jpg ) _) u, H/ a0 Q' O

* l# S. \  F$ z5 q电源芯片+ v" M, \5 s$ ]- O/ q/ p/ {

' K7 ^  ~/ ?- V+ X- Z. z4 h. p6 z+ g; ~3 N0 M9 ]
+ D: T+ I: w2 v) x
有一个按钮,按钮有二个蓝色LED灯4 K( a" s0 K- ^
IMG_20210820_134157.jpg
% l! ?2 i! j; q2 O' L; O+ T/ g% V' e6 k9 F; n

! m; E1 r% [9 V- V) L8266
4 I1 r! D. ?- u2 r IMG_20210820_141913.jpg
  D6 r- `. C. s; w/ J( w0 B4 j: [# C% `7 o, ~; T" R

$ Y$ d0 `: v2 @6 {0 s1 j4 \9 W
9 G* x$ P: M! n' I
接下来就是刷机了,版子上面都预留测试点。4 j: a& I3 j8 A2 S# ^! i" k
接线比较容易,上面都有标示,GND,3.3V,TXD-RX,RXD-TX,还有一个就是IO0接地后刷机。1 `/ c; w0 I% ^4 o  b9 ^
未标题-1.jpg . k% i" V8 U) J
注意RX这个点,就是3.3V边上的这个点,焊盘设计的就点问题,电烙铁热一点或是焊的刷机线过粗的话,容易掉焊盘。
( n: ]6 c& u7 e' H0 o要是掉了就只有一个过孔了,要是焊不上,只能再拆开接在另一面,所以为了避免不必要的麻烦,请注意一下。
: W: o3 L4 \/ {5 \) {

3 S, M6 H7 t8 A( t( F, g" s) A- a2 \5 ^3 P* F
# L0 `, J+ V  V" n
: h, O2 b3 s6 d$ @

9 {. j- y' X- y$ U. F    5号脚位是继电器输出4 X; F6 q) }# A/ g1 ^6 ~' b
    12号脚位是灯输出
+ r% n" \$ w2 w7 J; b    4号脚位是按键

% D8 W: Y: T3 R6 \7 e' h1 J- l2 y4 x# W& k
2 A8 t* n! F5 v' }: m2 G7 S! k
- z4 a: s, T/ B; u% Z( t. U
, \$ X. J/ y  M1 B% |0 v
卖家有发一个源码,如下
  1. #define BLINKER_WIFI                    //官方wifi协议库
    . p/ S* p3 f5 T$ I7 b' k8 ^
  2. #define BLINKER_MIOT_LIGHT              // 设置小爱灯类库! I: Y, v) J% p/ r4 K) z
  3. #define BLINKER_ALIGENIE_LIGHT          // 设置天猫灯类库+ v/ S3 f- W0 k8 \3 V
  4. #define BLINKER_PRINT Serial            //串口协议库# o2 C8 a* A8 `$ W
  5. #include <Blinker.h>                    //官方库
    2 e3 b$ m! y* |+ r
  6. #include <ESP8266WiFi.h>                //官方库
    1 e( \9 v% w( B; ?, z$ e7 d/ o
  7. WiFiServer server(80);                  // 服务器端口号
    ) J2 r/ }5 m+ K6 |8 H- a9 \
  8. , j, J5 x: A0 f8 v$ G
  9. char auth[] = "c4942fb1d5e4";     //设备key( ^) m) A8 u$ J! U+ E2 L0 G
  10. char ssid[] = "wanboshi";     //路由器wifi ssid  `2 b& g0 l3 K! l
  11. char pswd[] = "1365662999813586348220";     //路由器wifi 密码
    $ Q/ B& K8 [' o+ _4 D

  12. 6 F% A' @: \/ {4 S9 E
  13. bool oState = false;
    " ?* C% ?/ r, o' l

  14. . I) b& M3 ?2 B) t: @1 e9 ~- y
  15. int kg=5;//继电器输出3 b* `2 A; d4 m) g5 Q7 y+ Z% x
  16. int de=12;//灯输出9 s0 W5 a( ~4 X5 H! O
  17. int key=4 ;//按键1 r. X7 |1 E/ n& a) t: y/ U4 E
  18. //*******新建组件对象
    + `% D. {  N+ T1 B! g7 y$ g3 K0 I
  19. 4 t4 i, {. V+ `* X/ ~7 }
  20. BlinkerButton Button1("btn-abc");              //设置app按键的键名6 T  J) Z2 J) |7 t6 q8 K
  21. //*******app上按下按键即会执行该函数app里按键, H5 Z& @0 v4 V3 T( |2 B, w
  22. void button1_callback(const String & state)# v. b3 t2 ~1 C" d" z+ D0 j' y
  23. {: `9 W% _. M  {3 Z; B) A9 H3 N
  24.    if (digitalRead(kg)==LOW)
    4 }" H! S1 c+ Q8 G
  25.    {- V/ g  F& s, r: ]0 `7 |
  26.         BLINKER_LOG("get button state: ", state);
    - P2 e" F, U% {/ ?$ U. }3 w, T
  27.         digitalWrite(kg, HIGH);
    % h/ y5 y6 S$ g$ `3 x& x
  28.         digitalWrite(de, LOW);' T- n) J' Z# Y
  29.         Button1.print("on");# _- N$ i! x9 x6 m  r: ?4 ~
  30.         Button1.color("#0000FF");              //设置app按键是浅蓝色, z+ {, R& H% d( P2 q( ^. h) x
  31.         Button1.text("开启中");5 F! ]  Z' \1 m" Q( P
  32.    }
    : R$ w# A, O9 y. R  J" B
  33.    else if (digitalRead(kg)==HIGH)& `& i9 T% G, h% u
  34.    {
    ) z: X2 N/ E9 e  n( C
  35.         BLINKER_LOG("get button state: ", state);
    " C* V* }9 }" _/ d1 f! x
  36.         digitalWrite(kg, LOW);0 K4 c3 ~" |5 W* u" T" J
  37.         digitalWrite(de, HIGH);
    % p' m5 A6 y( H8 f
  38.         Button1.print("off");
    7 ~! v" d8 u9 ^) v
  39.         Button1.color("#00FFFF");              //设置app按键是深蓝色
    6 J: ~4 ], r8 R5 ?
  40.         Button1.text("关闭中");" m1 x! n% P. a$ [/ d0 m: w) `! O
  41.    }
    8 B3 }5 ?6 U# y  q
  42. }. [' p5 _+ \6 P% E+ L) C: u& F) K0 T

  43. 5 B8 W. i. Y& I* @4 I+ v
  44. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    3 q' K' v+ ~" e7 Y2 Z

  45. : i# V- o# ~; z# }$ e% b& _
  46. //*******如果小爱有对设备进行操作就执行下面
    ' ~6 p3 [. a1 U8 _: e' {$ d
  47. void miotPowerState(const String & state)
    , V; l+ ]  ?8 M! v3 P
  48. {
    9 V# T0 l+ B2 Z/ L6 c8 ^
  49.     BLINKER_LOG("小爱语音操作!");              //串口打印
    9 P4 i& q. K% w
  50.     if (state == BLINKER_CMD_ON){7 [4 d9 {! K! K0 P
  51.         ; M" y* ~& @( b; x
  52.         digitalWrite(kg, HIGH);0 r( p: s- i1 J- C5 Z0 o7 h, b+ w! ?
  53.         digitalWrite(de, LOW);
    # t$ Y8 ~; L7 h$ G, }
  54.         Button1.print("on");
    " t6 ?2 |+ h2 r# |5 x
  55.         Button1.color("#0000FF");              //设置app按键是浅蓝色
    ) m$ b4 ]' l8 H. y" l6 p% \6 c
  56.         Button1.text("开启中");
    2 ]  J& {( k. \
  57.         BlinkerMIOT.powerState("on");
    ; _% Q4 ~' A! x0 M( b4 O' u1 S) x
  58.         BlinkerMIOT.print();2 K$ D8 |5 }7 y2 [
  59.    }
    + u; o5 {% P9 Y& Z0 Y% ~
  60.    else if (state == BLINKER_CMD_OFF)
    8 e" Z8 o3 ]! k. X
  61.    {
    8 y4 Y* S, v7 s' V: R' Z
  62.         ( D1 V0 M: _7 _* c$ y" M$ T/ P, `# S
  63.         digitalWrite(kg, LOW);
    5 f0 b& R, S6 q$ Q, \
  64.         digitalWrite(de, HIGH);# N0 w. r: X6 e% Y" {+ e
  65.         Button1.print("off");8 O! _: C; B& i) X1 ]" X
  66.         Button1.color("#00FFFF");              //设置app按键是深蓝色
    : j+ o3 I/ [1 M/ U# U$ Q# w
  67.         Button1.text("关闭中");$ j9 s3 l7 Q' [, |8 B9 s- g: s
  68.         BlinkerMIOT.powerState("off");
    & E# |7 F# G1 Q8 D2 N6 n
  69.         BlinkerMIOT.print();
    & z3 K/ a4 S" c4 h' N: |
  70.    }) D  c6 k8 U+ n0 P
  71.       
    6 z! d$ L( d# O3 i2 i
  72. $ k& J: \. _1 Q- Y- X* c5 ^/ R% W9 N
  73. }" _/ h! W5 Y% C8 Y$ o; a. f
  74. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    ; F7 B- i7 S$ n. N6 a/ v3 r" M, @
  75. //*******如果天猫精灵有对设备进行操作就执行下面
    . q7 ]1 K$ O% ~' ?, ?
  76. void aligeniePowerState(const String & state)( ~% X( b" G! v# z
  77. {3 C0 F$ I5 I4 Y* ~5 S) |$ A
  78.     BLINKER_LOG("need set power state: ", state);4 I% K# a! G4 J) x% v% y
  79.     if (state == BLINKER_CMD_ON)
      f$ |2 c; L& w+ ~/ E( y' _+ M
  80.     {$ y; d7 d8 h! U/ n  e
  81.         $ _" H6 L# ]" \( g, A1 L% o
  82.         digitalWrite(kg, HIGH);0 |" P, b: m! b+ I8 S+ ]" e
  83.         digitalWrite(de, LOW);7 _6 k9 |* I% q4 `  v. p# m
  84.         Button1.print("on");2 ]: C, s6 s6 r4 o& T- @) I7 _
  85.         Button1.color("#0000FF");              //设置app按键是浅蓝色
    0 \. i. i& `7 n% v6 ]
  86.         Button1.text("开启中");
    7 p3 f( }+ ^+ F" U
  87.         BlinkerAliGenie.powerState("on");/ S" Q; `( x9 J, G2 S$ y
  88.         BlinkerAliGenie.print();
    0 q. m# e0 h# H+ r6 v/ ^
  89.     }
    ( P& U/ I; W* ?3 e& L# D
  90.     else if (state == BLINKER_CMD_OFF)5 X: D( L8 n2 H. f
  91.     {, d* M3 i6 o; d) G
  92.         
    ' u% u% f$ C. ?- j3 B
  93.         digitalWrite(kg, LOW);
    9 [3 n$ M: m5 y
  94.         digitalWrite(de, HIGH);
    ) [0 ^0 \  Z5 C5 ~
  95.         Button1.print("off");$ H, ?! S0 K3 {  O, I- S
  96.         Button1.color("#00FFFF");              //设置app按键是深蓝色: }/ f# y! b/ o; P; z
  97.         Button1.text("关闭中");
    & S9 s! x* w; R$ l, `  s4 {
  98.         BlinkerAliGenie.powerState("off");/ Z4 n& N: S2 I- d* D
  99.         BlinkerAliGenie.print();
    % s3 B$ n% h' @5 S
  100.     }0 N, J5 |. c' y' P! g' B
  101.         
    / U' U8 ~# P$ O2 A2 X4 U3 ~

  102. ) C! u  z7 _- j  i3 n- C
  103. }2 i3 ?% {+ F, L1 J0 {% W% Z
  104.   //*******app定时向设备发送心跳包, 设备收到心跳包后会返回设备当前状态30s~60s一次% ~; [* R# M! v  |. s) X% A+ x$ p: T
  105. void heartbeat()
    + g2 _+ S+ `, C- A8 E# w0 r
  106. {
    / O4 F% t- t# x. y
  107.   BLINKER_LOG("状态同步!");
    ) [) F7 N# }" i+ G
  108.    if (digitalRead(kg)==HIGH) $ u# H. \( u. j; J* J
  109.     {
    1 w. P7 Z! l, _; J6 H
  110.       Button1.print("on");
    . ^/ @' o. W& m
  111.       Button1.color("#0000FF");              //设置app按键是浅蓝色
    2 H6 O& h) U/ O* R: }
  112.       Button1.text("开启中");
    , A9 D& v4 U8 N8 O  n
  113.     }
      B; t1 x0 F& Z' J7 G
  114.     else
    2 Z% N* I: R6 @. E  w: _3 J
  115.     {
    6 P1 V1 g' J7 h* r
  116.       Button1.print("off");
    : H6 q. L& a( I5 v& C; Z( I
  117.       Button1.color("#00FFFF");              //设置app按键是深蓝色, M3 i* U' ?- b% ^
  118.       Button1.text("关闭中");
    5 j# v% u- X9 }3 {3 m( W# e& B4 Q0 i
  119.    
    8 S2 k1 d+ r/ E0 z
  120.     }
    , q1 R! J8 ]* q) a) Q; E1 ?& i
  121. }
    / ~/ `  f) n$ D; N
  122. //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++" W8 n) T+ s+ k
  123. void setup()
    6 v+ y: v6 O  {$ B* g
  124. {
    4 J; i+ O( t: s0 n, C
  125.   // 初始化串口
    ; p; K4 ]% u  V9 Z' K4 K, l4 {0 O! U
  126.   Serial.begin(115200);
    - P& P" [4 w, Y. q1 S3 q
  127.   delay(10);7 M! O' B- C7 }2 `! P8 r+ S
  128.   BLINKER_DEBUG.stream(Serial);
    * |5 Y! ~# d$ w0 {( P
  129.   // 初始化有LED的IO, E' y) C% e9 Q1 t+ J& @
  130.   pinMode(kg, OUTPUT);                 
    - x: q7 P" u9 K" z# K7 r' m
  131.   digitalWrite(kg, LOW);//初始化继电器上电状态 : g- O3 d: o) J3 v
  132.   pinMode(de, OUTPUT);9 T3 Z; R  w% p2 S. l5 O% a8 G$ t
  133.   digitalWrite(de, HIGH);
    ! U+ m( o  d/ u9 }
  134.   pinMode(key, INPUT);            
    $ I" b8 |0 x0 |/ i# h! r
  135.   Serial.println();" j& g- S. @% B# @& g8 ]
  136.   Serial.print("Connecting to ");( ~, K5 X' }, y8 K
  137.   Serial.println(ssid);9 [2 [  T4 h2 H  ~; F
  138.   WiFi.begin(ssid, pswd);1 i, c% d( h; F
  139.   while (WiFi.status() != WL_CONNECTED) {
    . n: d  o0 b2 u- Q7 z5 `+ a
  140.     delay(500);
    8 g7 \6 k# U6 R4 Q
  141.     Serial.print(".");
    : g" P. R, y, |' u- [" [! d7 y
  142.   }/ K6 N& ^0 u' Q  ?( j: Q/ S( K
  143.   Serial.println("");% I- L+ o& Z6 n  u
  144.   Serial.println("WiFi connected");' p+ O' [- [7 q8 A/ Q2 D+ ]
  145.   server.begin();
    $ \1 P$ N9 {1 K( l' Q# u; Z
  146.   Serial.println("Server started @ ");/ B/ u2 Y# C' b( ^  z
  147.   Serial.println(WiFi.localIP());
    ' G! I7 p# P6 k2 _6 d  H
  148.   //打印出IP地址,后期可以制作显示器来外部硬件显示ip; ]% j4 n* e& G6 e+ r! t6 C
  149.   Serial.println("To control GPIO, open your web browser.");
    4 s4 c  g9 R3 _9 N. d) h
  150.   Serial.println("To set GPIO 0 high, type:");
      j6 \  n" K/ L& X1 N3 e
  151.   Serial.print(WiFi.localIP());2 `# y7 J3 J0 F7 W7 w
  152.   Serial.println("/gpio/1");
    * X( l# ~$ O* Y3 D) H7 @+ |1 O
  153.   Serial.println("To set GPIO 0 low, type:");
    9 L5 \) x2 S1 G! X/ H, Y/ j3 d
  154.   Serial.print(WiFi.localIP());0 q* b  ^" b/ U& b+ _
  155.   Serial.println("/gpio/0");/ r, H3 |: k3 P' y* C9 p& Z1 r
  156.   Serial.println("To toggle GPIO 0, type:");
    8 |; {; |% _) q6 v" k
  157.   Serial.print(WiFi.localIP());
    . r' m6 L7 K6 H( e
  158.   Serial.println("/gpio/4");
    9 j- k- }6 }: e3 R
  159. 7 X7 G4 R( Z) k4 _+ z
  160.   // 初始化blinker' k6 H, h, W4 \  r% T. Y" P
  161.   Blinker.begin(auth, ssid, pswd);
    8 J: C5 a5 x- x4 D# i# i
  162.   BlinkerMIOT.attachPowerState(miotPowerState);              //小爱语音操作注册函数6 [+ x6 B# X6 R# J
  163.   BlinkerAliGenie.attachPowerState(aligeniePowerState);      //天猫语音操作注册函数, Z+ ^3 B& j. z, X
  164.   Blinker.attachHeartbeat(heartbeat);              //app定时向设备发送心跳包, 设备收到心跳包后会返回设备当前状态进行语音操作和app操作同步。( N0 S& E# N( N  Y( G3 R+ j

  165. 8 s/ o. M& p9 I( A$ s
  166.   Button1.attach(button1_callback);             //app上操作必须的注册回调函数关联按键名“Button1”和判断程序“button1_callback
    + W+ [& T& s5 |' G
  167. }5 t6 |# H5 p8 x1 D1 m% D5 G+ A$ {
  168. void dataRead(const String & data)5 I% E2 X' M: N2 J% n
  169. {7 O% x! B, i# K3 Q. T# U) Z; U
  170.     BLINKER_LOG("Blinker readString: ", data);
    " h/ V- s5 y7 b. t( M
  171. / a$ L6 g  A) V# [
  172.     Blinker.vibrate();
    $ \' Q" H/ X( Q1 Z8 o
  173.     " c* G8 P; H+ c3 B1 E
  174.     uint32_t BlinkerTime = millis();; i8 \; C, l" Z1 k+ J. Y0 a. g: A
  175.     % P. _% A- x- t; l& h
  176.     Blinker.print("millis", BlinkerTime);
    4 M0 k; Z) l. `% u. w
  177. }
    ' i: q9 R6 `: F$ `! f
  178. void loop()* F) f- O. c# C. R, B' \
  179. {, W% }  a3 n6 x6 P" ?& O& l0 Q
  180.   Blinker.run();* i3 v) K( g+ P( @0 ]4 a
  181.   if (digitalRead(key)==LOW)
    6 G; k# I2 v1 T9 ?
  182.   {
    - i. {- {. V9 l
  183.     Blinker.delay(200);0 c' _; |5 i- e9 H+ C
  184.     if (digitalRead(key)==LOW)
    4 ~3 N- _4 T: r8 E; P
  185.     {
    2 O+ ?" B, \$ z0 {  L* F5 R
  186.           if (digitalRead(kg)==LOW)
    - a4 q5 ^0 g1 Y# a
  187.        {
    ( W! `% `' l2 u, U
  188.             
    . o# A0 _0 E4 \3 b# D  K" w% ^
  189.             digitalWrite(kg, HIGH);
    3 a2 e  d3 _! O- ^
  190.             digitalWrite(de, LOW);) h/ i, z4 r- e+ B
  191.             Button1.print("on");/ m# U, @: e2 _
  192.             Button1.color("#0000FF");              //设置app按键是浅蓝色$ G) Y7 F( ^/ e7 h" p. N& A, y3 d. o) Z
  193.             Button1.text("开启中");' [+ z& ^2 j+ w- |8 T
  194.        }
    % I0 Y; J( o: D  S
  195.        else if (digitalRead(kg)==HIGH)7 r7 h' K- j  B9 m- e0 D
  196.        {2 T4 o. Y" j/ E0 |9 j
  197.             digitalWrite(kg, LOW);
    5 A* r- g% v: x9 q6 V5 k
  198.             digitalWrite(de, HIGH);( L* e3 `; Q! R) l  N* _
  199.             Button1.print("off");" o7 A5 k+ ~1 X% \0 F- U
  200.             Button1.color("#00FFFF");              //设置app按键是深蓝色- A: p, [, I; o3 i. H
  201.             Button1.text("关闭中");& f9 @% M  d6 z9 G" m
  202.        }2 Y+ d* p* |7 Y6 |
  203.       }
    4 r$ ]* p$ @% N6 l* k3 H
  204.     }9 O4 Y1 g' A$ H! h% u
  205. }
复制代码

5 b: Q& z$ S- R; l1 T9 t; C$ r  T: \( C1 F% z2 X; ^% y( b" i
我没有用卖家给的码,我自己写了一个,参考我前面的文章最简单的8266天猫精灵控制开关,点灯、Mixly可视模块化编程 https://bbs.nasdiyer.com/thread-18755-1-1.html
' J# p+ r5 d& h1 A- t& `0 R; R) F
7 R5 T: s/ I6 u% W" @把上面的2改成5,把高低电平对调一下就可以使用天猫精灵来控制你的这个插座了。我是把我的第一个插座放在了我的落地电风扇中了,当我慵懒的在沙发上刷着手机时候感觉有一点点热,我只要呼唤“天猫精灵,打开风扇”,就可以了。
. A6 }( L# T; [, J. n" m/ `, R/ y0 G7 ]" p

0 ]8 [  j8 T: X  f1 m) m

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: I; p# @" I: x6 e2 c$ d& z8 u
买了几个   做工挺扎实的,但是外壳怎么拆啊  拿斜口钳拨了一个,   四个圆角的卡口根本没法正常拆 ...

1 Y0 K* Z6 r# ?大力出奇迹呀

1

主题

8

回帖

257

积分

中级渣柚V1

积分
257
sevenup0719 发表于 2021-8-29 08:14:58 | 显示全部楼层 IP:–江苏–连云港 联通
a467913252 发表于 2021-8-24 15:53
  ^) C: s1 ~2 m; ~7 u买了几个   做工挺扎实的,但是外壳怎么拆啊  拿斜口钳拨了一个,   四个圆角的卡口根本没法正常拆 ...
! t' t& a4 Q; a) A# E0 ?+ G
昨晚拆了一个,废了老大劲,想和卖家说的无损拆下来,不拆个三五个积攒经验,基本不可能

2

主题

11

回帖

62

积分

初级渣柚V2

积分
62
QQ
a467913252 发表于 2021-9-4 23:05:22 | 显示全部楼层 IP:–湖北–武汉–江夏区 电信
sevenup0719 发表于 2021-8-29 08:14
4 h3 k' u! _0 s# d1 ^; }- I昨晚拆了一个,废了老大劲,想和卖家说的无损拆下来,不拆个三五个积攒经验,基本不可能 ...
6 }. o6 P$ H( H% U4 |& S$ T1 u
你的搞定没  为什么我的根本没法烧录   连接不上,,用esp01s还没问题的
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-7-25 16:08 , Processed in 0.068513 second(s), 23 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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