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

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

[复制链接]

11

主题

51

回帖

209

积分

中级渣柚V1

积分
209
QQ
 楼主| 易记 发表于 2021-8-21 13:57:54 | 显示全部楼层 |阅读模式 IP:–浙江–嘉兴 电信
本帖最后由 易记 于 2021-8-21 14:05 编辑 # i3 s  i0 Z0 q4 T% K
  R1 @$ a% C3 `
最近玩ESP8266,想做个天猫控制开关。% O5 f3 {1 L' t1 C, g2 _! ~
但是我很懒,一个个配元件嫌麻烦,于是想着能不能淘到便宜的带电源板的模块,多倒是蛮多,一般都要20多块钱。
# f- g8 F5 u+ e6 S/ v8 R) c4 p还是闲钱上逛一下看,找到一个联想的国外版8266智能插座,价格才8.5元一个。有一点不足,就是只有三孔,要是五孔的就好了。老板说五孔杂牌价格一样也有货,晚两天发布。
+ q$ w6 a- l9 c) |* S- { QQ截图20210821125037.jpg
! F& U1 L; N, k. {0 n* U1 w7 t9 y
5 N# a( s& t  A
) y; s+ ?9 S) x4 ?& ?
问了一下店主,买20个一盒才包邮,想着20个还是有点多,买了5个,连运费47.5元。! }7 L  Z/ C2 {* y4 H: X6 _0 ^* F

  b; C6 B) `+ Z' a QQ图片20210821124517.jpg : @2 d1 d- X4 r$ c* M9 G- F+ j
' T+ L7 v( }' Z, L
" a( Z6 U# A3 x

4 q, x9 w' H" g* A% O; `. U到手,当然是拆拆拆。
/ a5 q+ d5 z7 e: F. |. O IMG_20210820_134104.jpg
9 u( K* ?: s5 f2 E! M8 m
- \5 y  G; C4 R# g

" I$ [4 K: p! U联想的做工,还是感觉不错的,光这个继电器应该也要个7-8块钱。/ P0 R  N" U  D  e+ L$ I, Q$ p
IMG_20210820_160634.jpg
( P; d$ U4 @3 {
* [! q9 m: u1 y

/ |& l' F/ A4 l- z$ I继电器是两组常开,感觉要是接电灯双控开关是不是有点麻烦的,不过用于插座是很安全,要断二条线都断开。$ F( G! H. D$ C( h4 o8 k& m
QQ截图20210821133707.jpg
9 c* e( b$ m5 P9 J: K7 G: n& C

) e) @! w' X  ^' r1 B1 M5 i9 d0 o IMG_20210820_134114.jpg
; b- w$ j3 U3 m; r# ~7 Y9 i6 o, o
- s/ \& \. \4 F4 y
电源芯片
" J' Y$ T6 i1 \4 s( x) W$ @
' C! F  {: Q# N: Q7 }9 h0 @* J4 A5 F# |
  |! [9 u$ b' \. I( ~1 S
有一个按钮,按钮有二个蓝色LED灯
# \9 h- S( k* L7 c IMG_20210820_134157.jpg
8 Y/ F2 O5 x8 c  s' F# R7 D# A8 c1 a
( X2 B# k' t# O' s4 x  Y8 k
82664 v$ l  E. F, x( c* ^0 G" O
IMG_20210820_141913.jpg $ G: X) F# ~4 g7 t, I9 ]

$ ?0 v. Y% B4 l$ k" x" d( n

  ^4 A3 Q% a3 l0 h  Q
0 y& f$ W" U1 q9 d5 ~% |% g
( K7 ]3 O$ N0 g* I4 Q3 x2 ]
接下来就是刷机了,版子上面都预留测试点。9 @% [3 _' c+ C# }. F0 d% |3 s
接线比较容易,上面都有标示,GND,3.3V,TXD-RX,RXD-TX,还有一个就是IO0接地后刷机。5 Z7 E! U% A- ~; u
未标题-1.jpg
3 g4 q; Z3 ~+ D6 @( F0 J1 @. X" G
注意RX这个点,就是3.3V边上的这个点,焊盘设计的就点问题,电烙铁热一点或是焊的刷机线过粗的话,容易掉焊盘。  v% u+ a2 t7 E9 P8 W
要是掉了就只有一个过孔了,要是焊不上,只能再拆开接在另一面,所以为了避免不必要的麻烦,请注意一下。

) z3 ]6 [8 c" F$ J# N. B7 B5 s. E& q+ X9 `

! N. s& e, _( g! C/ ?

8 ^, ?6 Z' u5 W9 c# N# x6 I: T) ^8 d- @# ^+ v- |

( i( b! b0 ~3 ]+ b1 x3 W    5号脚位是继电器输出9 s( }  _4 H' F7 G; \) H8 G
    12号脚位是灯输出
4 A; i, P, m# I8 I: j9 w; a    4号脚位是按键
% E4 I& H) H- S' K0 `3 h% T

5 V0 K6 \4 r$ ~7 b5 |! @
8 z4 e5 G1 }( T

: G1 P& @5 O, d1 F
& K( ^# k# p  Z& A- ]8 Q
卖家有发一个源码,如下
  1. #define BLINKER_WIFI                    //官方wifi协议库. c) _/ o- \5 Y3 |
  2. #define BLINKER_MIOT_LIGHT              // 设置小爱灯类库
    + D5 k0 n+ a0 G
  3. #define BLINKER_ALIGENIE_LIGHT          // 设置天猫灯类库
    * F6 ^2 _0 G% f& U
  4. #define BLINKER_PRINT Serial            //串口协议库
    8 @+ L  q* N# ?0 l1 E  F
  5. #include <Blinker.h>                    //官方库
    ' b( ^; X! S$ F# Q% j
  6. #include <ESP8266WiFi.h>                //官方库( X; e8 y1 r6 q, |0 E
  7. WiFiServer server(80);                  // 服务器端口号7 g. A; j( l( k2 M/ z1 A
  8. , G% e5 @) m' M
  9. char auth[] = "c4942fb1d5e4";     //设备key
    ) S2 T# M3 K% U) a9 {# N; ?
  10. char ssid[] = "wanboshi";     //路由器wifi ssid
    6 U' R+ ~" D4 p6 \4 N. Y
  11. char pswd[] = "1365662999813586348220";     //路由器wifi 密码& M( V# t, F/ f" p9 l3 l

  12. + i$ _; _6 X6 m  S% J: t) W
  13. bool oState = false;
    " g/ p- R: s# g
  14. 6 t3 d! I6 U5 c
  15. int kg=5;//继电器输出4 V" I& ]& }  F; C% r! a
  16. int de=12;//灯输出
    + B6 Z$ u  h% K7 E
  17. int key=4 ;//按键
    9 W2 C: T  n+ ?; k' _
  18. //*******新建组件对象
    5 Z( x9 B% h% ^9 w4 n
  19. / }; N6 ?! R0 J1 \* v" T' }
  20. BlinkerButton Button1("btn-abc");              //设置app按键的键名
    7 z( H+ f# h# B
  21. //*******app上按下按键即会执行该函数app里按键
    . s* ^5 w, o% w* g' ~% D
  22. void button1_callback(const String & state)
    : Q5 k& ^& T! E# A6 E6 S, z
  23. {
    ' A% _1 G! |+ I  s
  24.    if (digitalRead(kg)==LOW)
    9 Y# z" _8 q# r( n
  25.    {* H/ _, F2 I* h! k& h6 R, g
  26.         BLINKER_LOG("get button state: ", state);
    # g7 s  j7 z$ m3 O  B
  27.         digitalWrite(kg, HIGH);, ?, Q3 t) _' v' U! S( P9 X+ a. G" K6 G
  28.         digitalWrite(de, LOW);# V% z6 b2 P- K( W' i* S# x
  29.         Button1.print("on");
      p  b1 ~. w& {
  30.         Button1.color("#0000FF");              //设置app按键是浅蓝色
    - x" C+ y0 u3 g- z) a
  31.         Button1.text("开启中");
    ( |9 ^7 V# y1 Q5 S! I- _
  32.    }
    $ x% Q& h. |' o$ F$ F* A' {" I5 m
  33.    else if (digitalRead(kg)==HIGH)& O+ \4 }3 @9 R$ c- H( q# y* e
  34.    {; K( h  m! x6 J. X" n
  35.         BLINKER_LOG("get button state: ", state);
    6 {* W6 \$ v2 C
  36.         digitalWrite(kg, LOW);
    % H' P( {4 M9 O  }7 b0 f+ M: W
  37.         digitalWrite(de, HIGH);/ u% Z0 B' Q+ Y0 ~& z
  38.         Button1.print("off");1 L! m: q# \5 q+ e& N! v3 K3 e
  39.         Button1.color("#00FFFF");              //设置app按键是深蓝色! C" E3 r# r5 }
  40.         Button1.text("关闭中");2 W) U9 X% E  u  U  r' A
  41.    }, e8 y' _. O- w4 k& g+ G
  42. }
    2 N' |* T) F( J) F( C+ {, J

  43. " b0 h( x! P) s' I0 N% o0 ?2 r
  44. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++! O$ W$ l( H# s
  45. ) _/ O# ~6 L7 z
  46. //*******如果小爱有对设备进行操作就执行下面0 ?! ]2 ~; G, |3 Y
  47. void miotPowerState(const String & state)
    , Z/ T4 [' J. C6 H2 K! \7 f
  48. {7 j% W8 y1 a# L
  49.     BLINKER_LOG("小爱语音操作!");              //串口打印% A( E+ m) m. f8 v( k& [3 _* P
  50.     if (state == BLINKER_CMD_ON){$ g8 j. M# W$ [3 i6 C
  51.         7 F7 d- L; D' @- |: W
  52.         digitalWrite(kg, HIGH);* O# r- i( y: Y' @9 v+ n
  53.         digitalWrite(de, LOW);% |) F/ X! Q- f2 c5 v2 i
  54.         Button1.print("on");/ b6 M/ c7 F2 k( v' E0 r* c' R; d
  55.         Button1.color("#0000FF");              //设置app按键是浅蓝色3 {+ i  C8 n9 D! [$ |0 x
  56.         Button1.text("开启中");
    ! |2 d2 q" `2 f- f5 R1 \
  57.         BlinkerMIOT.powerState("on");6 m, S/ H2 O  W8 p+ V
  58.         BlinkerMIOT.print();
    " I1 L5 u6 o! P  }, j0 c
  59.    }
    % O1 x8 ?( a$ ?9 b- _( K; z# n1 G
  60.    else if (state == BLINKER_CMD_OFF). i0 n" N6 j% A) s
  61.    {
    % B' q% y6 k% B9 w; J5 F: f% Z( L
  62.         ) Z9 D! Y! _! Y5 j" ^' G- ~& {2 B: I
  63.         digitalWrite(kg, LOW);
    1 ]& Z. c" R. [: Q" f$ S. _
  64.         digitalWrite(de, HIGH);
    . S4 b, l0 O& D  [2 L7 a
  65.         Button1.print("off");, _$ R$ ]! U0 r% t, L% J
  66.         Button1.color("#00FFFF");              //设置app按键是深蓝色: h. u# ]. `  ~$ P
  67.         Button1.text("关闭中");
    & W& q& y; Z5 T! h  V
  68.         BlinkerMIOT.powerState("off");- t- p# z( ^2 r% O, W4 o
  69.         BlinkerMIOT.print();
    + [  E* Y  N. a5 @, B8 Y5 }
  70.    }% R4 w# U! g9 i1 U9 S7 \1 o
  71.       
    ' w  ^! Y! {7 y: {+ D# A

  72. / X( J$ K7 p* q4 h8 X8 s1 ]1 p  j
  73. }! s) C. W/ J1 g) Z+ P$ V1 [
  74. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++; m. G; Q: _- J6 ?
  75. //*******如果天猫精灵有对设备进行操作就执行下面
    . C0 O' d) o5 [6 u! R4 E5 j. D& H
  76. void aligeniePowerState(const String & state)7 _# q( |' W* K* R" l; f
  77. {
    2 u. \, ~! w4 F+ X% k2 |! D
  78.     BLINKER_LOG("need set power state: ", state);
    + n+ `# M6 O# N% }
  79.     if (state == BLINKER_CMD_ON)
    # ~- d( F3 D/ h1 g# b
  80.     {' @: m/ p' b# I$ n
  81.         
    : G- l, a" M6 H& `
  82.         digitalWrite(kg, HIGH);
    % q3 P* v5 ?4 V, z/ s' K9 W
  83.         digitalWrite(de, LOW);2 T7 E2 `0 A! J; [0 _& U6 y' A
  84.         Button1.print("on");$ o' R! K) r5 W1 I' j+ x% ^. n
  85.         Button1.color("#0000FF");              //设置app按键是浅蓝色/ M5 U% X5 ~; ?* H8 e
  86.         Button1.text("开启中");
    . Y; V6 O/ q! B& |5 L
  87.         BlinkerAliGenie.powerState("on");
    2 E4 Z: c# b% k2 p4 S: [9 L
  88.         BlinkerAliGenie.print();' _2 c' U7 k' j4 o* i7 j$ x) ^9 y
  89.     }* a8 M8 V8 m5 f& p
  90.     else if (state == BLINKER_CMD_OFF). @* Q8 {$ h0 D1 d* C/ M# F6 N2 N
  91.     {
    : f- Q. S' m( V$ f/ ?! O# r
  92.         
    + C9 n7 }, v' q; f3 u
  93.         digitalWrite(kg, LOW);: T7 D: t2 T$ T+ Z
  94.         digitalWrite(de, HIGH);
    8 j* a5 l& l; {' p
  95.         Button1.print("off");0 v% k6 P# H7 j6 c8 z' D
  96.         Button1.color("#00FFFF");              //设置app按键是深蓝色
    ! z! P3 W) }% X0 }
  97.         Button1.text("关闭中");+ m3 V0 V/ Z: R) ?4 z7 |
  98.         BlinkerAliGenie.powerState("off");
      _# t% D1 w7 ^
  99.         BlinkerAliGenie.print();' S3 a2 \& l1 f/ E' T
  100.     }/ v% I( t1 q7 E% Z) u
  101.         
    1 r4 \2 T& A2 H: N: K

  102. + D3 z5 A& m( G6 H3 @8 H& o1 ~- z
  103. }5 p5 F3 Z5 U; z9 [9 X
  104.   //*******app定时向设备发送心跳包, 设备收到心跳包后会返回设备当前状态30s~60s一次
    % K) Q; e1 B$ I
  105. void heartbeat()4 M/ o+ m! K8 R" Y9 [0 B5 ~! h0 h
  106. {6 T8 n  N4 ]) I3 T. P
  107.   BLINKER_LOG("状态同步!"); ! U0 v" x! H  g! I) J% a1 A; @! y
  108.    if (digitalRead(kg)==HIGH)
    1 {1 a7 F. f7 ^6 e5 O8 }
  109.     {
    ( O; G8 a: B/ V9 N7 ~3 C
  110.       Button1.print("on");* C( [# Q' R) v, A* Q
  111.       Button1.color("#0000FF");              //设置app按键是浅蓝色
    2 S! q- c  w( t6 u% B
  112.       Button1.text("开启中");4 N7 x' a3 R, [" D& }8 G* d4 p  \2 F
  113.     }
    2 c3 ?! j! j* b2 X( K2 t: W; t+ |
  114.     else
    / v" k; `3 l, u  G2 S  n8 D
  115.     {. k; t- V1 V: W. y
  116.       Button1.print("off");- s3 L4 _6 D) e' m4 a
  117.       Button1.color("#00FFFF");              //设置app按键是深蓝色
    0 ^4 u1 w" f0 @# e* F/ d
  118.       Button1.text("关闭中");
    9 l6 _2 r4 W- w: N
  119.     , R0 j6 F, e. ?2 Q) a
  120.     }
      {! v( P) s* T- ~% i0 M9 l9 [
  121. }, _% f7 p, ?4 y' ?8 b1 |, D* D% u- Q2 C
  122. //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++4 L( G- l3 v! x0 j
  123. void setup(). ^- O5 a$ Z5 \# Q: P2 d$ g
  124. {
    1 n9 t; b! j+ h4 ]" V4 N- H/ M
  125.   // 初始化串口
    - g% V7 W; [; v0 p
  126.   Serial.begin(115200);
    - I9 }  G6 |3 N. z
  127.   delay(10);; M8 W0 v; x; K" X5 g
  128.   BLINKER_DEBUG.stream(Serial);. O! R/ {# S  S4 J9 c" f& h
  129.   // 初始化有LED的IO* [4 l( _/ T. y6 A5 ], ^
  130.   pinMode(kg, OUTPUT);                 ' J  n) [" \& j. L4 \1 H2 v  ^
  131.   digitalWrite(kg, LOW);//初始化继电器上电状态 & J& u! a' ]) h  y- o
  132.   pinMode(de, OUTPUT);
    $ V% u  w* X- j5 @/ {3 V. R
  133.   digitalWrite(de, HIGH);
    & x/ g; ]; X& q4 m- ]- \' i( k6 Y& [) u
  134.   pinMode(key, INPUT);            
    3 q* {3 ?* B0 Y' D" @
  135.   Serial.println();0 o& z2 V. `3 ?$ ]$ R
  136.   Serial.print("Connecting to ");+ J. b) U3 L: C4 S6 ~3 `8 C" T1 s
  137.   Serial.println(ssid);
    3 u+ |" |/ F8 ^
  138.   WiFi.begin(ssid, pswd);
    ( y, y$ k/ X* ^2 O- u% S8 w
  139.   while (WiFi.status() != WL_CONNECTED) {3 e1 Z* h, b- M( f' l5 Y
  140.     delay(500);) O; t$ b: h2 _. t
  141.     Serial.print(".");
    0 {) b3 D" q4 @1 e4 d- O
  142.   }
    ) O6 o; T8 j; g" A* t3 }* p: Q
  143.   Serial.println("");
    + k$ C: {" G7 c7 D7 D- y* G
  144.   Serial.println("WiFi connected");
    * J% a6 x3 K2 r% R
  145.   server.begin();
    7 z; D& ?* G' w' G" f+ m
  146.   Serial.println("Server started @ ");
    5 _7 U- n" \$ y" i+ G/ t6 X  L3 x
  147.   Serial.println(WiFi.localIP());( W& I6 t4 U5 E3 U
  148.   //打印出IP地址,后期可以制作显示器来外部硬件显示ip. V5 W7 d: K6 Z" W
  149.   Serial.println("To control GPIO, open your web browser.");7 G+ w! X2 o3 E, V5 |
  150.   Serial.println("To set GPIO 0 high, type:");7 `  V2 y% h. _$ ]& H2 L' D
  151.   Serial.print(WiFi.localIP());$ z, Y9 I/ Y: j' ]7 ]( h3 s8 O
  152.   Serial.println("/gpio/1");
    $ d" A4 K  C5 K( f* ?
  153.   Serial.println("To set GPIO 0 low, type:");  @4 u0 P0 X: w5 `9 h. |, Y
  154.   Serial.print(WiFi.localIP());# j9 [5 c7 ?8 b8 I
  155.   Serial.println("/gpio/0");2 v* v7 j6 Q& o8 {# l% `
  156.   Serial.println("To toggle GPIO 0, type:");: H: r) f% G: {( n
  157.   Serial.print(WiFi.localIP());
    + q$ C4 h* _; \+ V
  158.   Serial.println("/gpio/4");9 ~8 G" V2 k  {2 c; y

  159. 4 B( y* P; |% b2 |" y1 k7 s
  160.   // 初始化blinker
    4 C5 p/ g1 l4 S1 K
  161.   Blinker.begin(auth, ssid, pswd);1 l  [9 P& V2 a& q: g8 F: C
  162.   BlinkerMIOT.attachPowerState(miotPowerState);              //小爱语音操作注册函数8 J. t( {: z: v5 r
  163.   BlinkerAliGenie.attachPowerState(aligeniePowerState);      //天猫语音操作注册函数; ?  E( z9 E% r; ?
  164.   Blinker.attachHeartbeat(heartbeat);              //app定时向设备发送心跳包, 设备收到心跳包后会返回设备当前状态进行语音操作和app操作同步。
    . E; u' n, L" Y8 [. }* T
  165. 2 X; f8 P+ C8 [8 O+ m6 H
  166.   Button1.attach(button1_callback);             //app上操作必须的注册回调函数关联按键名“Button1”和判断程序“button1_callback; h9 {7 u7 Q. |  o; q
  167. }' p" N9 s; ]. `0 r
  168. void dataRead(const String & data)& s0 F+ y. X6 b9 b4 d! f2 T
  169. {/ S+ B* X% T5 S1 e. Q1 E. m  Z
  170.     BLINKER_LOG("Blinker readString: ", data);
    3 x% g' o5 Y* h; s' V2 V

  171. 8 @4 {( d5 d1 U+ h
  172.     Blinker.vibrate();1 f$ V7 [/ I. Z7 F' @: G
  173.     0 @9 S" T2 W+ J/ q. T3 f
  174.     uint32_t BlinkerTime = millis();+ D0 l% T1 U3 [) {$ [" B9 k
  175.    
    % y! `4 n( r: K. K7 \
  176.     Blinker.print("millis", BlinkerTime);
    + Y/ U, c" q* I. B" H
  177. }1 z5 z& s) `3 u( @
  178. void loop()
    7 o: E3 i, s( s* P0 ]9 @) v
  179. {
    / |3 g* ~4 s( b: G
  180.   Blinker.run();
    3 A$ o+ B2 ^$ @3 R
  181.   if (digitalRead(key)==LOW)" D; r* f/ q: p
  182.   {2 d$ p6 k0 e* K& ]. O$ L: h/ L- q
  183.     Blinker.delay(200);
    ' Z4 K2 C! h9 o% _. Z* L9 a* n9 z
  184.     if (digitalRead(key)==LOW)' A  U) K, f% K9 j7 j5 V* n
  185.     {# R! c' |  a5 F4 M) {
  186.           if (digitalRead(kg)==LOW)$ h2 X" V; {; C6 Y% @
  187.        {1 O* [, v8 q: \2 L
  188.             
    % x; b+ h! e, Q0 t2 O3 _
  189.             digitalWrite(kg, HIGH);
    ( ~7 A: u& o6 C; m8 p7 \; L
  190.             digitalWrite(de, LOW);
    & y5 G* D# {7 o# l* j* O
  191.             Button1.print("on");
    - M% {4 t2 C( M
  192.             Button1.color("#0000FF");              //设置app按键是浅蓝色
    ' ?0 |4 Q8 O. i
  193.             Button1.text("开启中");" B) A6 K. |* B, h+ B
  194.        }
      x& R8 ~: h) I9 G4 @( X
  195.        else if (digitalRead(kg)==HIGH)
    1 V. w6 S% V3 @
  196.        {
    8 e& g8 p8 P2 @* v7 Q2 {2 [
  197.             digitalWrite(kg, LOW);+ v5 A7 I' I3 y* n0 v
  198.             digitalWrite(de, HIGH);
    + e: L3 X9 F; H
  199.             Button1.print("off");
    4 K" q3 v2 h  m- G) t
  200.             Button1.color("#00FFFF");              //设置app按键是深蓝色
    % _. K7 A0 @* @6 z
  201.             Button1.text("关闭中");& o% I4 }* R( q$ N, M
  202.        }: P% L( z, `/ m- D* l) s' M% K
  203.       }  @' o, E" O& _0 D' r. j
  204.     }
    ' _: G. W* e% H" o
  205. }
复制代码

/ B3 |3 f5 s2 u" ]% p  G
) ~2 k8 [& @" Y0 W我没有用卖家给的码,我自己写了一个,参考我前面的文章 《最简单的8266天猫精灵控制开关,点灯、Mixly可视模块化编程 》https://bbs.nasdiyer.com/thread-18755-1-1.html8 F0 e" ]& f( _

  T* g  Z0 n$ q: T把上面的2改成5,把高低电平对调一下就可以使用天猫精灵来控制你的这个插座了。我是把我的第一个插座放在了我的落地电风扇中了,当我慵懒的在沙发上刷着手机时候感觉有一点点热,我只要呼唤“天猫精灵,打开风扇”,就可以了。
9 l; j2 W5 X+ v# @0 U( c7 |2 S/ f7 d6 L# o. v7 |
* z# o) f* D; ?) w2 t1 T

0

主题

18

回帖

85

积分

初级渣柚V2

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

2

主题

11

回帖

63

积分

初级渣柚V2

积分
63
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( h! w1 Q! b, h$ ^' e
买了几个   做工挺扎实的,但是外壳怎么拆啊  拿斜口钳拨了一个,   四个圆角的卡口根本没法正常拆 ...
$ S; v( p5 O9 ^$ N( t* \
大力出奇迹呀

1

主题

8

回帖

257

积分

中级渣柚V1

积分
257
sevenup0719 发表于 2021-8-29 08:14:58 | 显示全部楼层 IP:–江苏–连云港 联通
a467913252 发表于 2021-8-24 15:53
5 s( J0 }: o) l1 E4 G* D买了几个   做工挺扎实的,但是外壳怎么拆啊  拿斜口钳拨了一个,   四个圆角的卡口根本没法正常拆 ...
/ H+ ?" J. t, I  b
昨晚拆了一个,废了老大劲,想和卖家说的无损拆下来,不拆个三五个积攒经验,基本不可能

2

主题

11

回帖

63

积分

初级渣柚V2

积分
63
QQ
a467913252 发表于 2021-9-4 23:05:22 | 显示全部楼层 IP:–湖北–武汉–江夏区 电信
sevenup0719 发表于 2021-8-29 08:14% A: R- `( q; o% s- H
昨晚拆了一个,废了老大劲,想和卖家说的无损拆下来,不拆个三五个积攒经验,基本不可能 ...
5 A5 t/ q: s+ V8 J: r
你的搞定没  为什么我的根本没法烧录   连接不上,,用esp01s还没问题的
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-10-19 08:40 , Processed in 0.057303 second(s), 23 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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