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

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

[复制链接]

11

主题

51

回帖

209

积分

中级渣柚V1

积分
209
QQ
 楼主| 易记 发表于 2021-8-21 13:57:54 | 显示全部楼层 |阅读模式 IP:–浙江–嘉兴 电信
本帖最后由 易记 于 2021-8-21 14:05 编辑
! M* P! G  J/ F+ I4 |2 r: U6 w" _$ |" O- ?0 T+ b0 n1 G
最近玩ESP8266,想做个天猫控制开关。
1 }% Z" M* i+ N" C: k$ ~( _* D但是我很懒,一个个配元件嫌麻烦,于是想着能不能淘到便宜的带电源板的模块,多倒是蛮多,一般都要20多块钱。
2 T0 y& i3 ^. H- {% ?" W还是闲钱上逛一下看,找到一个联想的国外版8266智能插座,价格才8.5元一个。有一点不足,就是只有三孔,要是五孔的就好了。老板说五孔杂牌价格一样也有货,晚两天发布。
7 G3 U5 @& q' f& C3 W QQ截图20210821125037.jpg . N0 ]- D+ y+ Z8 h

1 U  X1 ]! a8 B; j" l  M  m

8 _) b2 E7 j; U# ?: G! Q$ ]问了一下店主,买20个一盒才包邮,想着20个还是有点多,买了5个,连运费47.5元。1 L0 g  M8 r2 ^/ v7 v, K

+ a- ~0 b( {& x" H+ e QQ图片20210821124517.jpg " Z- }8 }6 c4 r! x; n/ K. u, `
6 c9 O* {) S0 O0 V
/ I. ~% Z& C- \, ]

( T1 c5 x' I) r+ P' X9 d9 \到手,当然是拆拆拆。
* q! S7 f! V5 {& S6 D8 R; B* @9 u IMG_20210820_134104.jpg - q7 x+ N: g! m) c9 t

' T  p3 v% T7 y: C) t* N; o
2 V; B) E2 ~: z+ y. m
联想的做工,还是感觉不错的,光这个继电器应该也要个7-8块钱。
8 J2 z9 i7 m! K+ L# M IMG_20210820_160634.jpg 1 f5 K$ [) @& U2 M# I" a7 u
" Q; j3 y6 F# _( z
3 h# ~4 Z7 g% V5 _
继电器是两组常开,感觉要是接电灯双控开关是不是有点麻烦的,不过用于插座是很安全,要断二条线都断开。: H! t/ U  F6 E
QQ截图20210821133707.jpg
1 L; k( n' ]5 n1 ]) |5 W' E2 L( z

" y% Y$ x' F( w  T& D( { IMG_20210820_134114.jpg 8 g0 U! L6 r6 i/ {6 ~5 x- Z
5 E4 }& V( w6 C2 M
电源芯片' v. P( I0 O6 p% Q
5 X7 q) K' ~8 q* S& ~

  z7 b6 w; ~7 ]+ {& @, u

# A& S1 Z% h  J5 e有一个按钮,按钮有二个蓝色LED灯
$ B" J$ C* }0 l2 w IMG_20210820_134157.jpg 7 C) M  c- E: c: z3 }! g8 o
7 [! ]: e  N* z. J; }& T

% z7 Z7 D8 h; f* [3 ]; P+ Z8266* Z: F0 y' C; j; x+ E
IMG_20210820_141913.jpg 8 ]# I; C3 w) T& \# C0 ~' x
3 C7 }: P# {! [7 v. }

9 Q; ]) u5 k5 B/ Q; e5 w) u5 E) |* ?/ O7 l

; B( q. q- \3 `接下来就是刷机了,版子上面都预留测试点。) M- S4 i6 u' u5 J
接线比较容易,上面都有标示,GND,3.3V,TXD-RX,RXD-TX,还有一个就是IO0接地后刷机。1 D- l) i& Q) b* z5 v
未标题-1.jpg
& \; m% n+ Z9 _/ y7 X; F  k
注意RX这个点,就是3.3V边上的这个点,焊盘设计的就点问题,电烙铁热一点或是焊的刷机线过粗的话,容易掉焊盘。- I' s7 f6 Z! g6 P8 u& n; ^
要是掉了就只有一个过孔了,要是焊不上,只能再拆开接在另一面,所以为了避免不必要的麻烦,请注意一下。
& C" K1 `, Q  P) a2 [4 U/ A

: U4 q3 ~( r3 o3 J; T0 L+ s* Z7 v, O6 y4 u- ]1 A
* h( T8 m$ {# Y+ I  ]; B

/ d' h2 B% b! a: |

; b; k1 c2 B3 l7 e    5号脚位是继电器输出
( t$ z: n" C( \" o' `' L    12号脚位是灯输出
# V7 I4 v- |& F. }    4号脚位是按键

6 o: I; k8 u2 Y' [  L/ B" ?, b* s$ ?5 {/ ~: J% Z

- e. G+ l; Y- K: S8 Y9 P3 T  V4 A: b. h

' t* L7 X: s) |/ Y卖家有发一个源码,如下
  1. #define BLINKER_WIFI                    //官方wifi协议库7 w1 e9 f* V; \8 y1 H5 g
  2. #define BLINKER_MIOT_LIGHT              // 设置小爱灯类库. e3 v3 ?& f' Q4 H% ^* h
  3. #define BLINKER_ALIGENIE_LIGHT          // 设置天猫灯类库0 a, H6 J, U# G
  4. #define BLINKER_PRINT Serial            //串口协议库
    % }" c) m( {# D. q% H3 w
  5. #include <Blinker.h>                    //官方库
    6 Y1 |8 j, ~% N' v2 k5 ]1 @
  6. #include <ESP8266WiFi.h>                //官方库
    - B; j4 D+ `/ F" G" S4 y- L( R
  7. WiFiServer server(80);                  // 服务器端口号5 ]: H" B/ n* D7 m6 W

  8. 0 c1 q  A+ R$ K
  9. char auth[] = "c4942fb1d5e4";     //设备key
    5 Q: b* u+ B5 I) K% S  [+ E+ P
  10. char ssid[] = "wanboshi";     //路由器wifi ssid% I' l5 f: D: g3 Q" q4 A$ Y
  11. char pswd[] = "1365662999813586348220";     //路由器wifi 密码
    6 A* s$ x* r$ u0 Q
  12. ( w- g& [+ `* j( ~) ~
  13. bool oState = false;# f  z6 Y9 g) m3 \1 W/ L

  14. 4 s) Y* _( m$ R0 A. n& O
  15. int kg=5;//继电器输出1 `$ ]8 M, q/ q
  16. int de=12;//灯输出) z  x7 r$ p& i
  17. int key=4 ;//按键
    1 B# i# L, \2 F  ?6 k/ z
  18. //*******新建组件对象7 e+ {' L( A7 j4 S
  19. * k8 X  k/ `- b2 u; j' H
  20. BlinkerButton Button1("btn-abc");              //设置app按键的键名8 ?/ a0 t& K9 c# k3 z& b
  21. //*******app上按下按键即会执行该函数app里按键
    + e2 e4 v( C6 K0 R5 e# V
  22. void button1_callback(const String & state). D. F0 @, R' ^* k. g
  23. {2 r# \3 C9 j+ s
  24.    if (digitalRead(kg)==LOW)
    % K2 g# j1 O1 E& A: Q& k
  25.    {- @! O6 S& C0 ]5 F9 X7 d7 P1 A
  26.         BLINKER_LOG("get button state: ", state);
    1 e- }" ^1 v( t0 X
  27.         digitalWrite(kg, HIGH);
    0 I1 e+ d0 m9 P  k
  28.         digitalWrite(de, LOW);
    7 E+ t! N0 L% p9 ?2 ~2 P9 o
  29.         Button1.print("on");! C3 A7 y$ P( {# q/ _
  30.         Button1.color("#0000FF");              //设置app按键是浅蓝色" l3 ~, _; H* @2 n
  31.         Button1.text("开启中");2 W& I/ ?* y) \( E" v2 ?
  32.    }1 F! \4 P) l. v4 J- f* W* I
  33.    else if (digitalRead(kg)==HIGH)* J7 f9 ?0 Q2 e& m( R/ N
  34.    {* r1 A8 i* s) C* d9 M& u3 r! |
  35.         BLINKER_LOG("get button state: ", state);
    . @& i0 \6 H( u( p' b6 A; o
  36.         digitalWrite(kg, LOW);; b8 y3 B, M8 X6 Q
  37.         digitalWrite(de, HIGH);
    : N8 m. v% Q3 k4 g
  38.         Button1.print("off");/ t9 Q) U6 S+ Y. k
  39.         Button1.color("#00FFFF");              //设置app按键是深蓝色
    4 ~+ i0 i7 |/ ^9 M: N0 b/ `( g
  40.         Button1.text("关闭中");
    & a9 |8 M" M4 P5 I4 v
  41.    }' p5 h7 P0 A9 g, z  [
  42. }/ r' ~, T( w& L" P! z
  43. 0 C/ i* k  g2 j2 r6 A5 h& ]
  44. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    ! @8 Z! b. ]- J9 K

  45. ; c6 g" f; J9 t" e/ q4 ]
  46. //*******如果小爱有对设备进行操作就执行下面& J: t# B7 ^9 u6 i
  47. void miotPowerState(const String & state)
    & n" V7 c- X0 d8 d, Y
  48. {5 @  Q( v* l  X. R
  49.     BLINKER_LOG("小爱语音操作!");              //串口打印" u+ |2 N1 g8 v$ \& e" E
  50.     if (state == BLINKER_CMD_ON){& |' Z( ^' S. X; a9 k( e
  51.         7 m) r0 {  I9 {1 M' D' I
  52.         digitalWrite(kg, HIGH);: m2 \" O/ S8 t; A
  53.         digitalWrite(de, LOW);
    9 q  m2 ~' U1 `6 {2 \3 T
  54.         Button1.print("on");
    ( `5 _/ w1 O& c2 A% R4 P
  55.         Button1.color("#0000FF");              //设置app按键是浅蓝色0 a0 d; b4 X. c+ J
  56.         Button1.text("开启中");
    $ R" `& A* P5 E- r9 J
  57.         BlinkerMIOT.powerState("on");
    ! A* ~3 s% Z% q" e
  58.         BlinkerMIOT.print();) {* u" m& N% t
  59.    }) |* V3 b# k' b8 i
  60.    else if (state == BLINKER_CMD_OFF)
    ( d% c3 z# m; v  g8 }' L0 d+ ~
  61.    {6 ]2 f, J8 z9 M/ ]9 X
  62.         
    & ~1 K, Y! E( ~1 I
  63.         digitalWrite(kg, LOW);' V) }+ g9 f, m
  64.         digitalWrite(de, HIGH);
    , L! M, ^% \4 N0 }2 k9 k. H  x$ d1 {
  65.         Button1.print("off");$ P' N+ B1 S, i  N3 K" j) A
  66.         Button1.color("#00FFFF");              //设置app按键是深蓝色
    / L- ^* S8 h, V" {; D/ f9 `
  67.         Button1.text("关闭中");
    + m1 ]* \3 \: Q3 d) w$ r! l: K
  68.         BlinkerMIOT.powerState("off");# X+ K* m  T! ]5 K
  69.         BlinkerMIOT.print();5 e& S6 ]8 l; G; j) ?, g+ N
  70.    }
    2 |) v3 v, z  N; F3 X( R! _
  71.       
    " a2 r! P( t6 u0 N, k
  72. - I# C: \0 R- C% k
  73. }
    ; R" ?: d9 Z- D& U; V
  74. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    0 Y2 k3 y: x9 |2 B# J
  75. //*******如果天猫精灵有对设备进行操作就执行下面3 r1 C; k! J3 s
  76. void aligeniePowerState(const String & state)
    ; I! q$ f7 I/ e; G( l. c
  77. {+ e3 \- j- @" K  W# [" q, a5 O1 J# J
  78.     BLINKER_LOG("need set power state: ", state);4 c, S' T: T4 D
  79.     if (state == BLINKER_CMD_ON)
    + Z3 O: L6 Z8 R$ k! V% r/ X
  80.     {7 _' y: d6 O1 I( C$ [$ k
  81.         6 v& X: ?& i+ x6 o! a2 H0 V6 t
  82.         digitalWrite(kg, HIGH);
    6 m! I& E; H' Q3 ?$ \# ~
  83.         digitalWrite(de, LOW);
    ) G$ P7 H0 u$ t: F9 \
  84.         Button1.print("on");
    , E+ R" s1 H, E4 M1 C# |  I
  85.         Button1.color("#0000FF");              //设置app按键是浅蓝色
    # f9 @: m' y2 T
  86.         Button1.text("开启中");
    7 Z4 F. n# V, \2 O
  87.         BlinkerAliGenie.powerState("on");
    $ I/ Z5 L: X# `: G& r- ]1 i3 t4 `
  88.         BlinkerAliGenie.print();) ]( L. j# [; s
  89.     }3 |8 \" `" w, w8 Z# q6 B
  90.     else if (state == BLINKER_CMD_OFF)  X4 {% P; p3 x5 e! o2 A( O3 h
  91.     {
    ) `! G( p6 j9 @; q
  92.         
    ) z5 J( `! {7 {
  93.         digitalWrite(kg, LOW);
    ' m9 q4 _2 S4 Z; A0 H( s  r
  94.         digitalWrite(de, HIGH);% G) }. v. W! F/ O* r- C( D& _
  95.         Button1.print("off");7 p! @2 J( _. ?! l  k
  96.         Button1.color("#00FFFF");              //设置app按键是深蓝色
    ! _+ Y0 Y: x# S4 A" ?
  97.         Button1.text("关闭中");
    / h5 h: B7 K  j& {9 D6 d: @
  98.         BlinkerAliGenie.powerState("off");
    % G/ ?5 T5 O* W! o0 T3 b- L- F* l
  99.         BlinkerAliGenie.print();
    / x& t0 m$ o& y; M
  100.     }
    / T9 a( c- k+ }0 J- G: _
  101.         
    3 c, i7 X- i$ |# K
  102. & H2 C: G5 X5 N$ `$ Q$ D
  103. }) X# L) |8 \- ~/ t0 @. t8 M# R
  104.   //*******app定时向设备发送心跳包, 设备收到心跳包后会返回设备当前状态30s~60s一次  j# Y' d6 z& [
  105. void heartbeat(); Q6 y2 ]1 ^8 G, [$ ]$ i
  106. {
    ! R" T& U0 n0 a) x3 r& W+ N) h. V
  107.   BLINKER_LOG("状态同步!"); 9 W: ]% R5 V/ t( N8 q
  108.    if (digitalRead(kg)==HIGH) ( ~+ `6 V5 _% w" G, Y8 c) r
  109.     { 1 l- g/ Z! K5 ^" M
  110.       Button1.print("on");* k3 y9 w: S, `, o" l1 O$ t- N. K
  111.       Button1.color("#0000FF");              //设置app按键是浅蓝色2 J' Y6 @! S8 o. k3 Z
  112.       Button1.text("开启中");9 U+ a* M( c1 F- H
  113.     }
    + ^0 M( |2 t1 e
  114.     else * U3 D3 n$ K0 @+ u
  115.     {
    : }4 O1 Z& r4 s, W' G
  116.       Button1.print("off");# _, F) ^+ ?  \, L5 j
  117.       Button1.color("#00FFFF");              //设置app按键是深蓝色
    ! o% t, {  F) p* q/ I
  118.       Button1.text("关闭中");
    7 j, M. o! G& f' b4 j8 E
  119.    
    ( u5 \0 z# E9 A4 ?- S  p- ~. D
  120.     }. G: L& ~+ n7 R( B2 W
  121. }
    + p- x* f+ f6 U: ^3 `
  122. //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    4 O1 t; ^! @6 A$ _8 w6 B2 P, r! b
  123. void setup()! z; O& t8 ^9 Z# q  Z
  124. {# O0 h, K  G6 Z* W  X
  125.   // 初始化串口
    , J! A) c( q4 k5 g, `4 A
  126.   Serial.begin(115200);
    + m* S8 {' B* y( O9 m( k# l: }- Q
  127.   delay(10);
    , O5 a! R4 V" c: B3 x
  128.   BLINKER_DEBUG.stream(Serial);( ~8 S( x+ S% l7 M* R
  129.   // 初始化有LED的IO
    * I3 D& o) M! X: @- ?$ r
  130.   pinMode(kg, OUTPUT);                 
    0 z+ d$ P& Q4 ?7 Q
  131.   digitalWrite(kg, LOW);//初始化继电器上电状态
    5 D9 h7 ^$ N- H, z
  132.   pinMode(de, OUTPUT);' g& U$ U' l% h" _4 L- f% {
  133.   digitalWrite(de, HIGH);
    3 j) a& E4 a: I9 E
  134.   pinMode(key, INPUT);            0 W7 O2 q. ]2 H' Y6 x
  135.   Serial.println();
    ; O2 V) v( i1 S" t5 c. k
  136.   Serial.print("Connecting to ");+ m) ], I; a3 D$ [$ V
  137.   Serial.println(ssid);" u$ @' J: k: c; x' J* {
  138.   WiFi.begin(ssid, pswd);
    - L% m' _- P% ?7 ?0 O9 e
  139.   while (WiFi.status() != WL_CONNECTED) {! _7 ?6 ^2 M. [
  140.     delay(500);, d, e) N+ q8 j" G. a
  141.     Serial.print(".");* p8 K; G& s" f9 U; v2 q
  142.   }
    ) @! B& `& y( ]+ m$ [
  143.   Serial.println("");) ^! V4 k2 ], L) f& j
  144.   Serial.println("WiFi connected");
    + @9 n+ R. C+ k/ }1 k
  145.   server.begin();
    4 m; Z$ y8 c7 c9 f, I' {! X2 ]
  146.   Serial.println("Server started @ ");' V2 S& l2 E: k6 o4 k
  147.   Serial.println(WiFi.localIP());, |/ F* Z) Z- ?
  148.   //打印出IP地址,后期可以制作显示器来外部硬件显示ip7 M% \) `! O4 v. L% o9 `* V
  149.   Serial.println("To control GPIO, open your web browser.");
    ( V- W; T/ ]. }" f4 [) [. O: h) C
  150.   Serial.println("To set GPIO 0 high, type:");. M/ E  R; U9 I8 z3 i
  151.   Serial.print(WiFi.localIP());( @- T5 N, j+ s' ?
  152.   Serial.println("/gpio/1");( \+ w: U5 e6 i0 _
  153.   Serial.println("To set GPIO 0 low, type:");
      j  R6 [. A( i  G
  154.   Serial.print(WiFi.localIP());
    & P4 k8 R  p" Y. ], L' g$ [% Q
  155.   Serial.println("/gpio/0");
    $ x( M5 v3 H% w5 A, g0 U5 n
  156.   Serial.println("To toggle GPIO 0, type:");
    9 o& x8 m1 \5 t
  157.   Serial.print(WiFi.localIP());2 F) {7 c( m4 Y- f
  158.   Serial.println("/gpio/4");" W7 S5 @" S: W) y7 ~" B" A

  159. # g# P( {  |# O8 @
  160.   // 初始化blinker
    # w2 Y4 S- ]( I/ l( b) b
  161.   Blinker.begin(auth, ssid, pswd);
    8 W; }7 I& c) E8 a# e% [' ~0 R2 u
  162.   BlinkerMIOT.attachPowerState(miotPowerState);              //小爱语音操作注册函数+ q2 L( X, x2 n( w; j3 p( s# P$ x; q
  163.   BlinkerAliGenie.attachPowerState(aligeniePowerState);      //天猫语音操作注册函数- ~4 G4 x* m4 X$ J) Q. a7 U
  164.   Blinker.attachHeartbeat(heartbeat);              //app定时向设备发送心跳包, 设备收到心跳包后会返回设备当前状态进行语音操作和app操作同步。
    ; J' x3 K% r* I. y. i
  165. . I6 ?8 q% t" |
  166.   Button1.attach(button1_callback);             //app上操作必须的注册回调函数关联按键名“Button1”和判断程序“button1_callback8 ]$ O. ]) {! b$ f; G7 P6 o5 x
  167. }
    $ q; u9 g1 N3 t: B
  168. void dataRead(const String & data), X+ j+ U% T0 W* ]- R& X
  169. {
    2 `5 ]3 }: O; {# l% K& N
  170.     BLINKER_LOG("Blinker readString: ", data);# U9 T8 u; R; h1 ~8 g8 p
  171. " ]% ?7 d' ^4 Z4 U
  172.     Blinker.vibrate();% f- W5 Y6 i* e4 ], D3 ~8 P0 ]
  173.    
    6 s, u/ Z! M9 p/ w* _9 B
  174.     uint32_t BlinkerTime = millis();0 W/ N. Y5 l1 C: J' \$ n
  175.     ; _( {8 a* }( C
  176.     Blinker.print("millis", BlinkerTime);
    5 P0 I$ G; k" p7 p$ i
  177. }% k& \% T. \9 e! M8 w& O
  178. void loop()
    # `2 ]! ]6 Q* {$ C
  179. {+ n  _; D' B: W0 N# @" J8 i- q* D
  180.   Blinker.run();( ?( f# C' v' P$ E/ x/ W2 Z
  181.   if (digitalRead(key)==LOW)! t% L% W/ j3 Q8 H1 r
  182.   {
    ( p/ ]/ d/ A5 ^; R5 Q8 `0 z
  183.     Blinker.delay(200);
    - a# x: U% _: s1 |) B
  184.     if (digitalRead(key)==LOW)
    ) g& W. _) R# u* g/ q1 J! T' I7 x& Q
  185.     {
    ! Y8 [. ]6 i* D: i: z6 @+ J
  186.           if (digitalRead(kg)==LOW)2 s* ]- t9 W0 `  ]1 B
  187.        {
    9 |, S  G/ r, E: G
  188.             ) h# @1 n; H# H0 U0 b. p
  189.             digitalWrite(kg, HIGH);8 h& S! |$ [% b! @( g4 O$ f0 p0 h
  190.             digitalWrite(de, LOW);$ H2 `* h8 U- y6 v4 b3 l
  191.             Button1.print("on");
      |* f9 Y4 I9 l2 A1 @# m# n" C
  192.             Button1.color("#0000FF");              //设置app按键是浅蓝色, v# n: d: h* N- ~
  193.             Button1.text("开启中");
    & z, g9 C$ k; d, y* J+ u7 @3 G
  194.        }
    9 `  L' [  Q3 E( E) w/ V
  195.        else if (digitalRead(kg)==HIGH)9 d! Q' L( i: }4 {
  196.        {
    " j" P( H3 `+ G% B! p
  197.             digitalWrite(kg, LOW);5 q8 M, R2 Y* }* ~
  198.             digitalWrite(de, HIGH);
    3 M: w' Y" n- x6 m  S# Q4 c6 E
  199.             Button1.print("off");6 ?! _  J$ g' y8 W  o
  200.             Button1.color("#00FFFF");              //设置app按键是深蓝色! u% S  a- D2 v1 [" k( f- v  E
  201.             Button1.text("关闭中");
    , `7 ?4 i& `! \$ E- o# a7 Y) L
  202.        }
      X( x/ o$ N1 M9 |- i7 G
  203.       }
    # ~3 k5 X4 r3 D; e& g
  204.     }
    5 Y* z, j& `9 p( j4 w5 y$ w
  205. }
复制代码
# y( ^# P- S! ]9 d3 W+ P: |& W6 [

% X' O* c; d  Y8 a$ O我没有用卖家给的码,我自己写了一个,参考我前面的文章最简单的8266天猫精灵控制开关,点灯、Mixly可视模块化编程 https://bbs.nasdiyer.com/thread-18755-1-1.html
3 K, G6 ~% h/ @; i3 H$ p
9 e% E  _# ^6 _: v* `, Q  U5 T* T3 L. i把上面的2改成5,把高低电平对调一下就可以使用天猫精灵来控制你的这个插座了。我是把我的第一个插座放在了我的落地电风扇中了,当我慵懒的在沙发上刷着手机时候感觉有一点点热,我只要呼唤“天猫精灵,打开风扇”,就可以了。
7 w+ k; T% s6 c* N/ ~" d6 S
6 R) A& ]% l5 |  ]& N- }. B# c8 x

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
9 d7 b% v2 a0 k6 c& {买了几个   做工挺扎实的,但是外壳怎么拆啊  拿斜口钳拨了一个,   四个圆角的卡口根本没法正常拆 ...

: E9 }+ j& l+ ]" Z, W% A大力出奇迹呀

1

主题

8

回帖

257

积分

中级渣柚V1

积分
257
sevenup0719 发表于 2021-8-29 08:14:58 | 显示全部楼层 IP:–江苏–连云港 联通
a467913252 发表于 2021-8-24 15:53
* C. i" A: ^0 @1 F- ?! s& [买了几个   做工挺扎实的,但是外壳怎么拆啊  拿斜口钳拨了一个,   四个圆角的卡口根本没法正常拆 ...

3 N3 K' t+ |1 @: p昨晚拆了一个,废了老大劲,想和卖家说的无损拆下来,不拆个三五个积攒经验,基本不可能

2

主题

11

回帖

62

积分

初级渣柚V2

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

5 P* a9 T8 F: ~, M" ^" S8 x你的搞定没  为什么我的根本没法烧录   连接不上,,用esp01s还没问题的
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-8-27 05:50 , Processed in 0.065734 second(s), 23 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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