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

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

[复制链接]

11

主题

51

回帖

209

积分

中级渣柚V1

积分
209
QQ
 楼主| 发表于 2021-8-21 13:57:54 | 显示全部楼层 |阅读模式
本帖最后由 易记 于 2021-8-21 14:05 编辑
0 }4 q/ T5 z) p6 M4 ]% f/ [; C( E1 e
最近玩ESP8266,想做个天猫控制开关。% F1 S4 P0 Y; ]1 ]* C7 P' G/ ~
但是我很懒,一个个配元件嫌麻烦,于是想着能不能淘到便宜的带电源板的模块,多倒是蛮多,一般都要20多块钱。
# _" i* }; k/ h' b还是闲钱上逛一下看,找到一个联想的国外版8266智能插座,价格才8.5元一个。有一点不足,就是只有三孔,要是五孔的就好了。老板说五孔杂牌价格一样也有货,晚两天发布。9 L2 t( |# e5 a" j+ e7 [
QQ截图20210821125037.jpg
6 q1 ]+ _- F. a7 \* W+ s! j# x. w# G
+ R8 A! ~# _% B$ _, [; e6 N
# j4 \2 a% V" Z( Q9 P( \
问了一下店主,买20个一盒才包邮,想着20个还是有点多,买了5个,连运费47.5元。
3 g- F7 V' T' @( r( b( V/ I; m( z7 f0 x" ]8 @8 N8 }5 H# C  m7 s
QQ图片20210821124517.jpg 5 _' W7 N6 q7 E

, ~/ `% w. i. B; I2 x2 B" m6 j- h$ K0 v3 |$ r

( E" j4 {, N0 g% k8 z  @# X6 D到手,当然是拆拆拆。: A$ l* I# _4 }  H1 ~% S
IMG_20210820_134104.jpg 8 P( h+ P1 \9 k% m. G7 g* v

! _: N" M! h( M" i% n

1 j3 e9 }2 A& k, w+ y4 p& i联想的做工,还是感觉不错的,光这个继电器应该也要个7-8块钱。( C. f1 q# E/ |# Y, d! ~7 {
IMG_20210820_160634.jpg 8 H0 u$ U8 \0 u3 ?& b
" c/ O' U" m" I: U
' O* L. Z% t* ]# ]0 g" z
继电器是两组常开,感觉要是接电灯双控开关是不是有点麻烦的,不过用于插座是很安全,要断二条线都断开。
' z" r6 g9 b- P, B1 x QQ截图20210821133707.jpg / [: Y& {( ^5 @  d: P; Y  ^, W
( l* ?) Y7 T" B* h* B4 l2 x) S
IMG_20210820_134114.jpg ) A5 q: n) C! E6 O3 a( i* L- O

9 ~1 P, R  p1 n! r1 V: d电源芯片4 q& E" X8 Z3 i0 \& T

3 X) n/ {) F) u. @( g9 X; U: K9 @! w* Y5 m) }( m; r2 F9 \" Q
5 N- t& `# R# t; ?+ r' T+ f
有一个按钮,按钮有二个蓝色LED灯' ^6 H2 c) a! d
IMG_20210820_134157.jpg
7 ?; x% A! _& B; d7 w
9 t% L0 q6 P& ?9 Z4 J
# ~1 D* k& k) z
8266# L. H. v7 V( k0 \& Q7 `
IMG_20210820_141913.jpg
; \0 k# [! g* a
% [( N" N8 l5 x# n! u

/ l' w" }. S) D: z4 ^8 @2 X& m; Z, J# F

" o+ B2 _; h0 @4 k接下来就是刷机了,版子上面都预留测试点。
0 U1 G# ~3 s, {/ f3 D$ l; _3 K接线比较容易,上面都有标示,GND,3.3V,TXD-RX,RXD-TX,还有一个就是IO0接地后刷机。
' f# x6 k1 ^: L, X 未标题-1.jpg 4 e, o5 {# {6 f; O
注意RX这个点,就是3.3V边上的这个点,焊盘设计的就点问题,电烙铁热一点或是焊的刷机线过粗的话,容易掉焊盘。1 {# V0 c: e5 `4 k
要是掉了就只有一个过孔了,要是焊不上,只能再拆开接在另一面,所以为了避免不必要的麻烦,请注意一下。

: l" V0 Q/ H$ Y. D
$ q0 f) y, c' u" S" W' W$ Z! c! p/ {# G1 E, |3 E) T
3 L3 E8 `% b: q, T1 ^1 I

* O2 m5 ]8 k* v

6 n3 _! r) E" J2 p+ Q8 f7 c    5号脚位是继电器输出
' c6 p8 o! _$ `0 |# R, }9 L5 p$ F- q    12号脚位是灯输出
3 Y$ C% s9 h2 l" g# M! i8 H    4号脚位是按键

6 l7 ?. }5 c8 O' J3 s8 O
  v0 h  f& h3 Y& g' [* |0 _3 e

/ V% a5 [7 o6 j
" M7 h) c/ n: T' f2 k

+ R- V0 H+ w! T, @卖家有发一个源码,如下
  1. #define BLINKER_WIFI                    //官方wifi协议库
    + H6 J5 |2 T9 A3 c7 e+ k
  2. #define BLINKER_MIOT_LIGHT              // 设置小爱灯类库
    ' [7 a3 ]; ?4 M0 ^: @3 ?- r6 V
  3. #define BLINKER_ALIGENIE_LIGHT          // 设置天猫灯类库" Q+ s" P3 m4 h+ c# z1 o1 `- `
  4. #define BLINKER_PRINT Serial            //串口协议库
      U4 f- {8 k  q
  5. #include <Blinker.h>                    //官方库6 z9 t8 g+ H2 k+ D- p" U3 D, L. ~
  6. #include <ESP8266WiFi.h>                //官方库% R7 g0 b$ S( |8 A
  7. WiFiServer server(80);                  // 服务器端口号. h0 N5 J% l2 }1 f
  8. : l' z) u- S) K! l2 o4 e3 X7 V. l
  9. char auth[] = "c4942fb1d5e4";     //设备key6 c" b5 n) S" d1 R" n7 q$ e, `
  10. char ssid[] = "wanboshi";     //路由器wifi ssid. o. W( @6 A, B0 U: h/ [0 G% C! z
  11. char pswd[] = "1365662999813586348220";     //路由器wifi 密码# y' V3 u( I5 Q% O
  12. - i2 W7 [4 E7 z4 b+ K
  13. bool oState = false;- f! N8 P6 Y% i1 n' h: ^* z  {# I
  14. $ h8 O% c+ ~& l% [  P3 Y/ |- v
  15. int kg=5;//继电器输出
    1 j# a( @; J2 D. A: ~: [) \" j
  16. int de=12;//灯输出
    9 b- I! e) D3 {) C% ]6 X: G
  17. int key=4 ;//按键5 x" k/ a$ s* Q5 R. M
  18. //*******新建组件对象1 j2 w0 G4 o: {+ r7 `
  19. * i9 R% g. e- b) W
  20. BlinkerButton Button1("btn-abc");              //设置app按键的键名
    * E5 X  b8 v, V; s: |
  21. //*******app上按下按键即会执行该函数app里按键6 P. n0 g& x. ~7 U! v4 v  @: o2 \
  22. void button1_callback(const String & state)
    0 }- X4 S. a' |5 T+ U: k
  23. {# V6 b2 [2 y, _: C4 W
  24.    if (digitalRead(kg)==LOW). Y4 O- f/ U$ f4 m4 q7 k
  25.    {
    - a% \! b6 T1 \4 X$ k7 @6 M
  26.         BLINKER_LOG("get button state: ", state);. h, G0 n9 k. k" k5 }
  27.         digitalWrite(kg, HIGH);0 a& ]) Q: R% E. h
  28.         digitalWrite(de, LOW);6 t% ~- Z8 {2 R+ t4 J
  29.         Button1.print("on");
    : U; E% Q7 r5 l! ]& W0 v
  30.         Button1.color("#0000FF");              //设置app按键是浅蓝色+ k( g9 Q7 j6 S  L0 e$ q/ {1 @3 o
  31.         Button1.text("开启中");- e3 F: k1 s' }+ P% ]
  32.    }, x& o6 \- C4 K  r4 S4 Q1 I
  33.    else if (digitalRead(kg)==HIGH)
    / b/ C# B. }# R5 G; L! o
  34.    {
    ; ?# K' E. i4 z  f9 E. |- H0 Z& |
  35.         BLINKER_LOG("get button state: ", state);
    5 }: H! {/ P' J4 {  H! q
  36.         digitalWrite(kg, LOW);
      ]8 R) \; V6 S! o
  37.         digitalWrite(de, HIGH);
    6 {5 s1 o8 A6 }( R0 H! k
  38.         Button1.print("off");: D  K) r" ~0 _7 J& L6 H* u
  39.         Button1.color("#00FFFF");              //设置app按键是深蓝色
    - u+ Q0 E2 c3 c. @( V* j. W
  40.         Button1.text("关闭中");  D, C, n. u4 N- @( f
  41.    }
    9 w. C3 a0 s+ M
  42. }+ k$ l% X$ L" [7 _: s  E) r* ], N

  43. 0 x2 s  @: l( I
  44. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    0 t1 f1 _+ k# q1 p, o

  45. , e" Y, p4 C* l7 p* p( r
  46. //*******如果小爱有对设备进行操作就执行下面3 w( O. A5 B4 R9 }* P8 s
  47. void miotPowerState(const String & state)
    $ O+ B7 h0 F1 h2 q: M
  48. {
    * a' b) M# i+ @4 n. I
  49.     BLINKER_LOG("小爱语音操作!");              //串口打印% ]( D0 o* |# R$ O# {  [' |* `
  50.     if (state == BLINKER_CMD_ON){0 B" G8 e1 L, \8 Q
  51.         0 }% l, n9 }! }1 j" p/ i' g
  52.         digitalWrite(kg, HIGH);
    4 k$ u( m% I0 P* @
  53.         digitalWrite(de, LOW);& N' J) r/ x) u' J
  54.         Button1.print("on");4 W3 K8 i) ~: L$ F" t/ F
  55.         Button1.color("#0000FF");              //设置app按键是浅蓝色
    ) a3 u. t2 ]3 p' \# a" k
  56.         Button1.text("开启中");8 j' p( g( j! R3 k
  57.         BlinkerMIOT.powerState("on");; W1 E$ L2 Z& N, C
  58.         BlinkerMIOT.print();
    - ~! m1 J. V7 F" W
  59.    }; c$ U$ G; ]" `: |9 g
  60.    else if (state == BLINKER_CMD_OFF)# i, _8 Q$ {7 N+ W9 z) E' W  ?
  61.    {; q' E+ t5 X# r: y, r  W! p
  62.         ' A4 h3 U1 n% @, M" F4 F) t7 x. n0 t
  63.         digitalWrite(kg, LOW);
      n$ u+ [+ e2 S; |0 B* S
  64.         digitalWrite(de, HIGH);
    6 o& s) d7 i  ?7 E6 {
  65.         Button1.print("off");& P+ F) g# N1 M
  66.         Button1.color("#00FFFF");              //设置app按键是深蓝色
    4 t0 a6 d+ c, R+ G6 h
  67.         Button1.text("关闭中");; q9 H' q5 W& f5 y' Q
  68.         BlinkerMIOT.powerState("off");: J+ f( [: i7 a) T0 d
  69.         BlinkerMIOT.print();
    5 J8 v5 ~. g7 ^2 ?$ M
  70.    }; i3 y: B5 e' i
  71.       
    # L8 d8 b- d( f6 ?
  72. # [8 x2 }2 p( t: p, [8 e( r
  73. }4 S( d# ?4 i; t( d
  74. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    2 `0 Z3 c" x# |, B
  75. //*******如果天猫精灵有对设备进行操作就执行下面
    - G5 R+ ~) y  n: I! K/ T  y
  76. void aligeniePowerState(const String & state)
    ! O2 c2 r( [/ A* [! @% x& l( }2 m* _
  77. {
    - m+ \* ~: d: p5 `6 z- d" a  K& Z
  78.     BLINKER_LOG("need set power state: ", state);) W" [: p% d/ C- p: I
  79.     if (state == BLINKER_CMD_ON)5 U- z8 w2 ~  b0 A5 D3 h
  80.     {2 O$ V* k' q: L! X
  81.         ) ~' Z% \' s8 M1 ]- f/ @( F
  82.         digitalWrite(kg, HIGH);
    " u4 b  k; P6 b6 w
  83.         digitalWrite(de, LOW);* w3 u0 L% a$ j
  84.         Button1.print("on");
    / N! z# l. k3 ~7 T( t
  85.         Button1.color("#0000FF");              //设置app按键是浅蓝色8 H# A9 C1 J7 b  G! |0 {
  86.         Button1.text("开启中");8 \# F. h  e$ d5 n" W0 [3 A7 [
  87.         BlinkerAliGenie.powerState("on");
    ! O; G! h* E1 F  l# l2 @
  88.         BlinkerAliGenie.print();2 o. t7 j1 O, H$ P3 |) L; N
  89.     }
    ; L8 B4 |7 ?- |
  90.     else if (state == BLINKER_CMD_OFF)9 n, Z8 E" I5 ]
  91.     {
    ! R: Q, S% E! c2 \
  92.         
    ! {3 _. B% h6 e. h8 J* E2 }
  93.         digitalWrite(kg, LOW);4 R" m- C5 b$ ~+ F$ P. ]9 F" I
  94.         digitalWrite(de, HIGH);
    % t8 w' J7 a$ X. S) [5 _# Z
  95.         Button1.print("off");# K- F$ L1 ]/ B  [, ^
  96.         Button1.color("#00FFFF");              //设置app按键是深蓝色6 X9 s- g& J. q  v! T8 @) q
  97.         Button1.text("关闭中");: n1 r) G6 T6 _% H! Z
  98.         BlinkerAliGenie.powerState("off");
    ( \9 b5 C4 @$ W5 U/ j2 ]3 C
  99.         BlinkerAliGenie.print();
    * l7 ^3 h8 v1 r8 y) h; m4 u% v# ?9 d
  100.     }
    . m1 t8 e( a5 ]/ M! q- t7 E! D; A( p
  101.         5 f3 C; }( K; r: h' R

  102. # }6 d# B, k! [0 G2 y- l  p
  103. }8 M9 b3 `7 m$ p6 [
  104.   //*******app定时向设备发送心跳包, 设备收到心跳包后会返回设备当前状态30s~60s一次! h' ]6 B; S1 f
  105. void heartbeat()
    1 D" q) S! j" T; i7 k
  106. {' S% Y+ j3 I! q& }' g8 ]
  107.   BLINKER_LOG("状态同步!");
    # y, N. u) A7 o( b
  108.    if (digitalRead(kg)==HIGH) 2 k; E- t( p9 O4 O9 [: a* A
  109.     { / L" ]' W- L5 j
  110.       Button1.print("on");& P0 L* @! Y: I: Y- R" p! J
  111.       Button1.color("#0000FF");              //设置app按键是浅蓝色& n2 E% z0 I' l6 Y9 e
  112.       Button1.text("开启中");% P* T4 N9 k( ?) m. y/ D7 }- [/ U
  113.     }* y' {' p% u# C5 F! A' v& g
  114.     else ! ^, M  m/ o- m5 c# i
  115.     {
    5 v6 `; `: i; K& C
  116.       Button1.print("off");- P) I) _8 Z& p1 q2 y$ Y9 J3 X  A
  117.       Button1.color("#00FFFF");              //设置app按键是深蓝色
    ( R6 p4 g  l/ ?
  118.       Button1.text("关闭中");+ c3 w( m* F' L) n
  119.     1 x/ I" w- h0 N8 W0 C" B
  120.     }
    & L$ y( j) u6 {8 u+ v
  121. }
    ' G) v& Q  b$ r; O" a
  122. //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++9 _# m( ~( B4 U- ~' _; j  C
  123. void setup()% P0 e  y1 k1 E6 E" t' r$ v4 w- m
  124. {
    6 J! w. b+ \  T5 m4 c
  125.   // 初始化串口2 h7 Z5 v  s8 L) M! p' k
  126.   Serial.begin(115200);# r6 C+ l" y  N5 L* x2 D+ @; F
  127.   delay(10);1 ?& Y6 N6 s* u# Z0 c
  128.   BLINKER_DEBUG.stream(Serial);, P/ b: E9 E+ r% ~5 t" s
  129.   // 初始化有LED的IO8 n) `" m7 w6 H; u! _! ]
  130.   pinMode(kg, OUTPUT);                 4 B+ f2 W! E  c2 u0 w- x! X! ^0 B
  131.   digitalWrite(kg, LOW);//初始化继电器上电状态
    4 W) Y: c- {+ d6 u! Q
  132.   pinMode(de, OUTPUT);
    & f4 B$ g; B7 [# v4 g4 w# i4 U2 S
  133.   digitalWrite(de, HIGH);
      g% H: \- _, s3 N- z
  134.   pinMode(key, INPUT);            
    6 V( ~) ~, W9 m) d# e
  135.   Serial.println();
    9 x% v! ?, W4 a/ s4 Z  I
  136.   Serial.print("Connecting to ");
    $ {) b. l& y0 Z7 t2 Z3 G
  137.   Serial.println(ssid);
    : ^  X! l' z" O
  138.   WiFi.begin(ssid, pswd);# }0 `, C2 W" ~% V3 q
  139.   while (WiFi.status() != WL_CONNECTED) {: X. _* e, P# t% \
  140.     delay(500);
      @( k" c& P  ~" W! r8 i0 I
  141.     Serial.print(".");4 ?8 [2 F/ s6 v/ W* b: ~' ?
  142.   }
    , I5 b. _/ E) e1 ]- E$ n8 }3 j
  143.   Serial.println("");
    3 |' x% x2 D0 I" S2 L8 m7 U
  144.   Serial.println("WiFi connected");8 A5 b7 z1 T2 H* s/ D
  145.   server.begin();4 r" S1 n7 {, J+ Z& }
  146.   Serial.println("Server started @ ");
    2 f5 P2 R7 n: C& S2 ?; g1 t
  147.   Serial.println(WiFi.localIP());; B. q8 p5 L! ~  q; U$ A* H* ]' W
  148.   //打印出IP地址,后期可以制作显示器来外部硬件显示ip' n& |/ c: g+ ^' I' [
  149.   Serial.println("To control GPIO, open your web browser.");! X7 e& l: L& p: w2 _
  150.   Serial.println("To set GPIO 0 high, type:");
    5 v# L+ V8 l! x7 D" R3 i
  151.   Serial.print(WiFi.localIP());. S8 F  ]" N7 o
  152.   Serial.println("/gpio/1");7 b* [, G$ G! R% J) j
  153.   Serial.println("To set GPIO 0 low, type:");
    & Q$ F1 v( h, O, s/ g" @8 o+ B
  154.   Serial.print(WiFi.localIP());3 ^4 A3 B+ e! W" i6 G% ]
  155.   Serial.println("/gpio/0");; y0 u) P2 d/ {) C7 u  Z
  156.   Serial.println("To toggle GPIO 0, type:");9 j* d6 b, n) c# T% f' r8 @: W
  157.   Serial.print(WiFi.localIP());# z: ?* Z/ L. d: X) \
  158.   Serial.println("/gpio/4");
    , }% r+ U3 d$ G
  159. % |8 E9 L# v3 v* m: O  H
  160.   // 初始化blinker: b7 A! h! d2 |* x2 d
  161.   Blinker.begin(auth, ssid, pswd);/ u0 h3 _5 s+ u1 ~- N
  162.   BlinkerMIOT.attachPowerState(miotPowerState);              //小爱语音操作注册函数
    $ V5 f. R5 z5 ~% ^
  163.   BlinkerAliGenie.attachPowerState(aligeniePowerState);      //天猫语音操作注册函数0 ]+ f% x" L( g
  164.   Blinker.attachHeartbeat(heartbeat);              //app定时向设备发送心跳包, 设备收到心跳包后会返回设备当前状态进行语音操作和app操作同步。; |4 L9 b' L8 f. M5 Z+ \$ L  p

  165. 5 V3 w$ A: D  T  Q$ r% b" d
  166.   Button1.attach(button1_callback);             //app上操作必须的注册回调函数关联按键名“Button1”和判断程序“button1_callback
    3 @2 _2 o' B$ g8 y/ q
  167. }
    + P) h8 M# Q9 Q0 r1 `! W
  168. void dataRead(const String & data)* q# E( ?8 Y7 v7 g  E$ s- y6 T
  169. {( b2 z1 p! L6 A% {
  170.     BLINKER_LOG("Blinker readString: ", data);
    $ }* n1 S# J. M5 I2 S4 x
  171. ) Z% Q) Y) I, [+ Z2 {$ {
  172.     Blinker.vibrate();: k/ A# e: v/ N
  173.     , J4 Z  U8 m2 v1 u+ j7 G/ b& b3 s" i' \
  174.     uint32_t BlinkerTime = millis();3 U  @2 D- G% b0 N# e, C
  175.    
    1 l% D$ Z2 x' g$ L
  176.     Blinker.print("millis", BlinkerTime);7 ~1 P7 V8 Y2 O4 K
  177. }
    8 n9 I9 u4 k/ X) |- y) M4 B) ^! T
  178. void loop(); K# X- q* F) \" F2 W5 V$ r% S" b
  179. {  F: ^6 Y( N& I4 t: m+ f- C
  180.   Blinker.run();+ w. s, b9 m& T# z; Y
  181.   if (digitalRead(key)==LOW)
    + W1 g% i- H! ^' _% \
  182.   {0 X8 x1 v0 o+ J7 y' a9 S
  183.     Blinker.delay(200);
    8 |7 E. n+ l( R+ C
  184.     if (digitalRead(key)==LOW)& m# d+ C* k; K8 \
  185.     {9 M: b- D+ a* g: U* y; e
  186.           if (digitalRead(kg)==LOW)
    9 m8 t3 V* K7 r% N4 t
  187.        {
    - N/ I# s) I% T. A8 l
  188.             & _0 w" _; `$ d- R
  189.             digitalWrite(kg, HIGH);
    ' G: \( N% [2 y* O2 Y
  190.             digitalWrite(de, LOW);
    ) _; X- K6 @- j4 N6 W
  191.             Button1.print("on");$ t+ a8 N6 E# k, z" [- K
  192.             Button1.color("#0000FF");              //设置app按键是浅蓝色
    " C* K* f5 N# ]6 [+ E
  193.             Button1.text("开启中");8 M# ^  {  |9 Y% H( V
  194.        }4 c; _# X4 m* _0 s! T: R/ f8 p
  195.        else if (digitalRead(kg)==HIGH)# F5 S0 H8 A: |& U& f: T
  196.        {
    9 t7 c! z) O' [. [) D  z6 g, F
  197.             digitalWrite(kg, LOW);: _' T# \9 _. t& i# w. d4 O
  198.             digitalWrite(de, HIGH);5 X! A1 p- H5 }7 |+ B
  199.             Button1.print("off");
    . H5 @+ i  U  K, Q! q
  200.             Button1.color("#00FFFF");              //设置app按键是深蓝色1 \& J" J( C& c! i5 n/ `
  201.             Button1.text("关闭中");
    8 E6 j' F8 T. t  b# |
  202.        }1 p6 s7 Y2 S- O1 F8 v
  203.       }
    1 Z9 `1 K+ ^9 N
  204.     }
    # V) s# ~4 _% w! p% C+ ?, {
  205. }
复制代码
3 v- f/ J3 N6 T

% F+ [6 w0 O* d" S! X我没有用卖家给的码,我自己写了一个,参考我前面的文章最简单的8266天猫精灵控制开关,点灯、Mixly可视模块化编程 https://bbs.nasdiyer.com/thread-18755-1-1.html
  g" n* Q6 D7 P2 I8 s( h' f$ e* H
9 ~: E& v: S7 p3 x8 o把上面的2改成5,把高低电平对调一下就可以使用天猫精灵来控制你的这个插座了。我是把我的第一个插座放在了我的落地电风扇中了,当我慵懒的在沙发上刷着手机时候感觉有一点点热,我只要呼唤“天猫精灵,打开风扇”,就可以了。  s, r  o) K% b9 g6 P
5 a8 y7 F( m9 ]: g( X

: S+ [- C! V5 N% B1 U

0

主题

18

回帖

85

积分

初级渣柚V2

积分
85
QQ
发表于 2021-8-23 13:06:07 | 显示全部楼层
高手,没玩过!达人

2

主题

11

回帖

62

积分

初级渣柚V2

积分
62
QQ
发表于 2021-8-24 15:53:16 | 显示全部楼层
买了几个   做工挺扎实的,但是外壳怎么拆啊  拿斜口钳拨了一个,   四个圆角的卡口根本没法正常拆

11

主题

51

回帖

209

积分

中级渣柚V1

积分
209
QQ
 楼主| 发表于 2021-8-24 17:20:24 | 显示全部楼层
a467913252 发表于 2021-8-24 15:530 T3 R0 V7 k% m$ q5 k9 D5 {$ u/ [: n+ M
买了几个   做工挺扎实的,但是外壳怎么拆啊  拿斜口钳拨了一个,   四个圆角的卡口根本没法正常拆 ...
+ h+ X& h5 a2 U4 Z* L: z& d# t* n
大力出奇迹呀

1

主题

8

回帖

256

积分

中级渣柚V1

积分
256
发表于 2021-8-29 08:14:58 | 显示全部楼层
a467913252 发表于 2021-8-24 15:531 R4 ?9 R+ _( g1 V
买了几个   做工挺扎实的,但是外壳怎么拆啊  拿斜口钳拨了一个,   四个圆角的卡口根本没法正常拆 ...

0 ]9 h8 a+ q- C5 c3 X8 b. \! W昨晚拆了一个,废了老大劲,想和卖家说的无损拆下来,不拆个三五个积攒经验,基本不可能

2

主题

11

回帖

62

积分

初级渣柚V2

积分
62
QQ
发表于 2021-9-4 23:05:22 | 显示全部楼层
sevenup0719 发表于 2021-8-29 08:14" c  Y4 y2 _) P# B( t# I
昨晚拆了一个,废了老大劲,想和卖家说的无损拆下来,不拆个三五个积攒经验,基本不可能 ...
1 ?5 o: p, Z% K5 y- u
你的搞定没  为什么我的根本没法烧录   连接不上,,用esp01s还没问题的
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-9-4 09:56 , Processed in 0.102656 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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