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

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

[复制链接]

11

主题

51

回帖

209

积分

中级渣柚V1

积分
209
QQ
 楼主| 发表于 2021-8-21 13:57:54 | 显示全部楼层 |阅读模式
本帖最后由 易记 于 2021-8-21 14:05 编辑 ( X- `& V- ^" C; M2 H
" ^) Y4 B9 P$ J: Y+ X/ z
最近玩ESP8266,想做个天猫控制开关。
+ J: T2 h1 e0 A% C$ @但是我很懒,一个个配元件嫌麻烦,于是想着能不能淘到便宜的带电源板的模块,多倒是蛮多,一般都要20多块钱。
+ e, r+ [4 V/ l# l' z0 l7 S还是闲钱上逛一下看,找到一个联想的国外版8266智能插座,价格才8.5元一个。有一点不足,就是只有三孔,要是五孔的就好了。老板说五孔杂牌价格一样也有货,晚两天发布。
0 I/ k1 Q  l8 M' O QQ截图20210821125037.jpg
* h6 C8 w; R$ c% }  z" I. o$ L) ^! S! Z4 J
3 O$ d, X# u) |. x- Y9 n3 I7 }* M
问了一下店主,买20个一盒才包邮,想着20个还是有点多,买了5个,连运费47.5元。! L2 D* A& Y# v
. q1 f0 ]: s0 ~
QQ图片20210821124517.jpg
1 i7 g/ u3 O% j% {
; }5 G% p8 r3 Q8 r  o$ o- R& {

, }* e9 R" x9 t

( a* X+ y, c$ E% A  f9 ]! k' B. @* z到手,当然是拆拆拆。' i2 d" f: m1 d0 T' @' g4 r( N
IMG_20210820_134104.jpg
5 i' g' Q% p) }/ w+ |+ O9 o( \$ U: s& A" e' H
& o; w- M6 x; [" K$ H
联想的做工,还是感觉不错的,光这个继电器应该也要个7-8块钱。6 R3 Z6 q% A/ O% o7 k7 y
IMG_20210820_160634.jpg 4 W7 ^0 f% u8 l  T: ?2 C

' @" P$ x8 j- F5 K! f

& M! M( W" X+ v继电器是两组常开,感觉要是接电灯双控开关是不是有点麻烦的,不过用于插座是很安全,要断二条线都断开。8 v* P+ I  E) J6 p7 v
QQ截图20210821133707.jpg
, o( r; @+ u% G9 B* G; g

) D6 R. E" h9 T  s9 q' M: w* Q4 f IMG_20210820_134114.jpg
3 p+ \( [! w2 `4 ?
1 z* s# B0 L" v2 [  k# m: Q9 L
电源芯片  r* }# K% `4 x  O, l9 g& Y
' Z6 Q4 C  u5 ^% K. T! i7 ^8 V

/ y5 A7 P: Z: \! g
, y, l$ Y, F4 U2 \0 O, ~+ v1 S7 A7 p1 m
有一个按钮,按钮有二个蓝色LED灯
9 z& F# K0 A7 E; N# f IMG_20210820_134157.jpg + Y' ^/ b+ j; D- i3 [2 \

; z" n3 K4 Z+ ^# t+ I* h# N
+ E% `; K7 \7 z1 U  J
82669 K; X5 X" }$ b+ E3 Q
IMG_20210820_141913.jpg 0 m5 P  q; y8 ]& {# ?

6 C( ?, N9 V( f! {

* M$ s9 g( x; m2 M2 E* a
) G+ m% T" s' m5 F
( N% x; t' O7 w* v
接下来就是刷机了,版子上面都预留测试点。% m- l) V' V! K: r0 L2 Z( V3 o% n
接线比较容易,上面都有标示,GND,3.3V,TXD-RX,RXD-TX,还有一个就是IO0接地后刷机。
/ T; p4 r8 o# h% H/ Q 未标题-1.jpg
" F  P1 q( ]' U# N% E5 p9 z0 @
注意RX这个点,就是3.3V边上的这个点,焊盘设计的就点问题,电烙铁热一点或是焊的刷机线过粗的话,容易掉焊盘。
& `8 o# d1 {) F9 d# S- M+ R要是掉了就只有一个过孔了,要是焊不上,只能再拆开接在另一面,所以为了避免不必要的麻烦,请注意一下。

/ n. i* X+ k& F# ^4 e8 t, d% k! {% z" K/ O

# S, k; S5 k0 Z: b4 A# f. w

4 e2 @, y; f+ w) P9 k- W
. U4 P2 y7 n" K. j/ K$ Q
0 F- W% _" E8 d2 c  ]* F7 `1 m
    5号脚位是继电器输出: J, G  P1 v, d4 F! P: E9 _
    12号脚位是灯输出
# r+ h+ N( h9 S3 }8 U+ _% \' o    4号脚位是按键

4 t" y3 ?7 }$ Q1 v4 B
8 V$ q6 m  K: J6 N/ d7 i* ]/ g0 e
3 q4 q- x  x+ r( T) S
) E" K1 I, C) v: o
/ N5 ?5 m5 v2 {- T
卖家有发一个源码,如下
  1. #define BLINKER_WIFI                    //官方wifi协议库- s/ e% i7 w" y9 n/ u8 r2 o% {
  2. #define BLINKER_MIOT_LIGHT              // 设置小爱灯类库
    ! c' e8 p$ e: T  u0 c8 o! k
  3. #define BLINKER_ALIGENIE_LIGHT          // 设置天猫灯类库
    , I" S, B  i- y! f/ M; s
  4. #define BLINKER_PRINT Serial            //串口协议库
    ) I( }4 j. D' |+ w# n
  5. #include <Blinker.h>                    //官方库
    . r& x# \/ k* t" Z7 ~
  6. #include <ESP8266WiFi.h>                //官方库7 c9 G* |: B8 w  J$ T
  7. WiFiServer server(80);                  // 服务器端口号
    + x5 s" `5 l# C* G

  8. 0 Z6 p- ?+ ^2 Y4 }0 j/ _7 r+ w
  9. char auth[] = "c4942fb1d5e4";     //设备key0 I( i; S1 ]/ O# h
  10. char ssid[] = "wanboshi";     //路由器wifi ssid  n! G2 ?6 ~7 [& R- M* ?2 p2 R
  11. char pswd[] = "1365662999813586348220";     //路由器wifi 密码
    3 r# Y* K, R' R( F

  12. ! k# _6 X% c* u
  13. bool oState = false;
    8 k7 K' p3 @! J" v6 j6 F( O
  14. 4 {6 J9 K. u6 G% o3 p% @3 d% P2 X
  15. int kg=5;//继电器输出
    # _' |( n1 R* `# g- f
  16. int de=12;//灯输出8 m; p# c  w4 W8 C3 q5 x
  17. int key=4 ;//按键
    9 d; B5 k  _* L" c5 K* V- o: B/ G
  18. //*******新建组件对象
    5 e$ F) V% U; h+ X* P: t7 x

  19. 5 j1 p8 f) p: \  I5 [
  20. BlinkerButton Button1("btn-abc");              //设置app按键的键名% v9 c9 ^6 O2 f+ n  \1 B
  21. //*******app上按下按键即会执行该函数app里按键
    8 ?3 ?& r7 q( Y! y9 c9 O  j4 `$ }
  22. void button1_callback(const String & state)
    1 h9 Y0 f) |! H- z1 P  P. d
  23. {
    ; m8 w  c, w$ X3 w1 r  Q
  24.    if (digitalRead(kg)==LOW)3 y* h, K! `* s+ L( [8 R
  25.    {
    8 V: `1 P* u* n7 c5 R
  26.         BLINKER_LOG("get button state: ", state);
    + J9 @0 n( _. J  M, ?
  27.         digitalWrite(kg, HIGH);$ t5 {. \! k' }+ z* W
  28.         digitalWrite(de, LOW);/ P: f3 A+ w: D( m4 Y/ t6 m
  29.         Button1.print("on");
    1 q- }+ x2 {4 A/ p! f2 ]% @  r
  30.         Button1.color("#0000FF");              //设置app按键是浅蓝色
    1 G. n) g9 y* A. ]: l. R# ~2 {
  31.         Button1.text("开启中");
    # H* o3 W' K0 u, ^& J
  32.    }
    6 {5 @: r- u, @1 e
  33.    else if (digitalRead(kg)==HIGH)
    ; \$ D9 k2 d9 i& y' g* Z" `! O
  34.    {
    ' N8 k- C- G6 B7 y  I
  35.         BLINKER_LOG("get button state: ", state);8 k7 W/ N) T9 i8 Z. Z. F; z- V
  36.         digitalWrite(kg, LOW);/ [! F7 @; F: P8 H: j& g
  37.         digitalWrite(de, HIGH);
      i6 V1 S# H* y% u: ^  {
  38.         Button1.print("off");- W% l) O3 U# [6 G0 k) O' p
  39.         Button1.color("#00FFFF");              //设置app按键是深蓝色: T$ |+ F5 Z9 _% b9 D
  40.         Button1.text("关闭中");
    / X/ H' D$ T, I# @9 Z
  41.    }' c( d$ ?  W% l
  42. }: y8 |' Q. A! O) ~0 q8 w$ J
  43. . r. Y% C9 g/ }
  44. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
      Q( \1 @3 {+ Q+ ]& P
  45. ; H" M- g0 O. }) v5 t, _
  46. //*******如果小爱有对设备进行操作就执行下面
    % }. ^+ {2 `8 }
  47. void miotPowerState(const String & state)- r9 ~4 G1 c. _" |+ o% r9 P1 E
  48. {
    7 l4 p6 X( v  p& Q2 P5 H
  49.     BLINKER_LOG("小爱语音操作!");              //串口打印
    ! i4 m+ v) `# O- R0 z  n1 z4 _$ F
  50.     if (state == BLINKER_CMD_ON){
    " e$ m) V' Z- x+ H3 T
  51.         
    6 v9 u. {& }' i, c
  52.         digitalWrite(kg, HIGH);2 ]8 m. h& [( R, M  q6 L
  53.         digitalWrite(de, LOW);8 r+ V0 [* f, B* e0 M, J$ a1 q
  54.         Button1.print("on");
    & f7 x9 a6 d* a# R/ \# s" z
  55.         Button1.color("#0000FF");              //设置app按键是浅蓝色% U: V: ]: I" S
  56.         Button1.text("开启中");
    1 Y" ]7 v, u/ e( i3 S- h3 y
  57.         BlinkerMIOT.powerState("on");
    4 U" U( y: b, X2 F
  58.         BlinkerMIOT.print();' v* z, A2 D  @, b
  59.    }
    % v8 W% M2 i/ n- l) a* K
  60.    else if (state == BLINKER_CMD_OFF)! |0 F5 d8 b# q6 ]9 X
  61.    {, }: p1 x" Q# v- I
  62.         9 M: G0 F% ?& L2 s% j
  63.         digitalWrite(kg, LOW);. _/ B, u& L& @# h" I4 P$ R/ l0 a! s
  64.         digitalWrite(de, HIGH);
    ( I$ g3 q# X& o% P- l6 h, e
  65.         Button1.print("off");! H$ K) J: x$ v
  66.         Button1.color("#00FFFF");              //设置app按键是深蓝色% P! a1 Q& H/ S1 }! Z- s
  67.         Button1.text("关闭中");, U6 p) q  E# ^% m2 k
  68.         BlinkerMIOT.powerState("off");& ]) W1 I. ~# L. m
  69.         BlinkerMIOT.print();
    ; [+ g  a7 ^- h1 E" p5 t; G
  70.    }
    8 h! F/ Z9 Y2 M1 b/ j
  71.        4 \8 v" H7 j& t* A! k

  72. : N7 }6 O! ?& [1 F* h/ |& `
  73. }
    8 w' T7 Q9 h9 N6 L# i8 }6 R
  74. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    - H+ p- x! O) j5 Y( r( E
  75. //*******如果天猫精灵有对设备进行操作就执行下面  r9 e7 |- j6 A  c1 ?: n
  76. void aligeniePowerState(const String & state)
      M* B6 _8 d5 j- @
  77. {
    ) H. s) R  M+ g* H$ [
  78.     BLINKER_LOG("need set power state: ", state);4 s( [+ E+ w  i  j, H0 M& h
  79.     if (state == BLINKER_CMD_ON)+ C8 H. ]& W" G( c( x( f( p
  80.     {9 C# Q0 a7 S* g  v' K/ h  p
  81.         7 L; V! l! w" d4 b
  82.         digitalWrite(kg, HIGH);
    # J' `% p4 y0 y2 A- n- y
  83.         digitalWrite(de, LOW);" z7 b+ c. g$ b6 d  h% S# r
  84.         Button1.print("on");
    # \7 K2 E2 X+ C; I( [
  85.         Button1.color("#0000FF");              //设置app按键是浅蓝色
    3 j5 L0 G+ k3 \. l8 L
  86.         Button1.text("开启中");# D/ \9 }. H# n/ A) g/ `, D8 U6 X
  87.         BlinkerAliGenie.powerState("on");0 E1 c8 [* G+ m1 W7 k; |
  88.         BlinkerAliGenie.print();
    : j1 T+ w. g, Z% j
  89.     }
    , f) h, c2 X- v* Y
  90.     else if (state == BLINKER_CMD_OFF)
    $ a: x5 ?8 y+ H6 \: W3 z
  91.     {
    1 _) d8 ]- R5 H1 o" h7 R
  92.         5 j! @, g% ?* d; e
  93.         digitalWrite(kg, LOW);
    + y. A0 C  L9 y8 ?: B$ t
  94.         digitalWrite(de, HIGH);/ G' x, p. [; S0 C
  95.         Button1.print("off");
    ! p3 p5 D$ c4 g2 F( _3 ~2 s
  96.         Button1.color("#00FFFF");              //设置app按键是深蓝色8 P- B$ T! R& \2 T% x% J
  97.         Button1.text("关闭中");
    6 V  S9 L/ t# e& }
  98.         BlinkerAliGenie.powerState("off");9 O$ n6 o) j% Z8 J1 [/ C, s
  99.         BlinkerAliGenie.print();
    % d: x* g% M6 l) z
  100.     }
    9 o+ {  `; q# f% S* R& E& G
  101.           u/ f6 |) k9 v; [% W5 e  w6 o
  102. * W2 f& b9 x7 q. j
  103. }8 x8 U  |' M1 g* c% t; Z$ J
  104.   //*******app定时向设备发送心跳包, 设备收到心跳包后会返回设备当前状态30s~60s一次
    0 _7 `* [" R! q1 k3 B+ r
  105. void heartbeat()& N7 X# f$ A" z3 g% A$ \& \
  106. {
    / B  m+ C: ~* X" O+ U- I
  107.   BLINKER_LOG("状态同步!");
    $ _* f5 x% _; K+ P1 q; v2 a
  108.    if (digitalRead(kg)==HIGH)
      D9 Y7 e$ D5 X4 a9 x9 g
  109.     {
    % T, M2 ]0 s, c5 F6 N
  110.       Button1.print("on");
    1 z- k+ A3 y8 \
  111.       Button1.color("#0000FF");              //设置app按键是浅蓝色
    8 X, V1 p+ m' J0 D
  112.       Button1.text("开启中");9 P. q( Y- _/ d9 @8 |) `! @. A1 S
  113.     }3 B% X. W4 J1 k& r
  114.     else # e4 E) C8 V" G
  115.     {
    ; v9 r( j% L% Y/ h4 |. j* g
  116.       Button1.print("off");) e, a  s. e7 k8 J( B& S2 O
  117.       Button1.color("#00FFFF");              //设置app按键是深蓝色
    # Q& w5 K) V  ?) F+ r' b/ p: c
  118.       Button1.text("关闭中");
    6 N9 o1 W; o. T6 i5 w; p- I
  119.    
      _* i9 m  S7 M2 z% {( G
  120.     }6 `# s& h" z- Y" d  }% o
  121. }
    $ g8 d) p0 R. ~# w  ?( U* d% b
  122. //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++1 a4 y  D( s9 [. I  _& d5 F4 y
  123. void setup()
    : o, w7 l  J3 [* ?: ]: J+ i
  124. {4 C: k% e7 `9 F* `4 @
  125.   // 初始化串口
    : p0 K! s6 Y$ |
  126.   Serial.begin(115200);9 ~* l' V( s- D
  127.   delay(10);
    # I' S" ]" N2 r& F
  128.   BLINKER_DEBUG.stream(Serial);  r# q* H7 c; u) y: o' L* w
  129.   // 初始化有LED的IO6 i. A8 H8 z/ `. ]
  130.   pinMode(kg, OUTPUT);                 ' ~  W0 F- L3 W0 d4 T
  131.   digitalWrite(kg, LOW);//初始化继电器上电状态 0 M- e/ w, e1 d6 O/ ]) X& |" {
  132.   pinMode(de, OUTPUT);
    & ?" a( y& O: P( P0 y1 ~8 n
  133.   digitalWrite(de, HIGH);
    3 U$ K0 ?, ?7 v% Z5 |1 v
  134.   pinMode(key, INPUT);            ) {8 A/ D% h9 I3 s+ z1 q
  135.   Serial.println();6 n8 i; R4 Y' k+ ]
  136.   Serial.print("Connecting to ");
    ' S) ?' ?" @, t" a8 Q2 ?5 d
  137.   Serial.println(ssid);
    3 c2 j) D0 B- u2 T
  138.   WiFi.begin(ssid, pswd);' ^) k, X1 Z2 C7 {6 s' N/ h% }: `
  139.   while (WiFi.status() != WL_CONNECTED) {
    . L3 v% J8 ]+ e) f8 I4 q
  140.     delay(500);5 _6 U3 G! N6 n) _2 l" f
  141.     Serial.print(".");& u' N* ^6 i$ r3 y" u3 k( }/ g
  142.   }
    - b  X! A6 T4 s" E% L+ v/ `
  143.   Serial.println("");6 c8 A- G, m$ T" y5 F
  144.   Serial.println("WiFi connected");
    9 f6 M9 _6 H1 M- `/ M- p/ D
  145.   server.begin();% @5 f) W4 c, G3 j" m
  146.   Serial.println("Server started @ ");
      J. X; ]4 `7 C) X3 u1 v4 D
  147.   Serial.println(WiFi.localIP());
    / l2 c, o! ~( C0 W( }
  148.   //打印出IP地址,后期可以制作显示器来外部硬件显示ip' N: F; @8 I$ k3 d( X- W) P
  149.   Serial.println("To control GPIO, open your web browser.");
    9 v% N$ M0 T1 z, U1 Y
  150.   Serial.println("To set GPIO 0 high, type:");
    ; ]* L9 q% s$ s0 s; b
  151.   Serial.print(WiFi.localIP());
    4 U( g3 Z* J* S; L9 Z. W
  152.   Serial.println("/gpio/1");1 B4 e9 p) a1 X; O2 c
  153.   Serial.println("To set GPIO 0 low, type:");! {# F# i1 U6 j  k
  154.   Serial.print(WiFi.localIP());
    6 c! g. e9 G3 H4 Q
  155.   Serial.println("/gpio/0");2 M; c2 x, c9 a! E% d: h
  156.   Serial.println("To toggle GPIO 0, type:");
    . ]3 x+ m; v( P: H6 s8 t: K
  157.   Serial.print(WiFi.localIP());
    . r1 H5 z1 a: U$ a, G, Y
  158.   Serial.println("/gpio/4");
    ) y) w* B0 H1 O5 O
  159. ( t( s: l! _+ w2 u- d( v$ B- O
  160.   // 初始化blinker
    & Q; j5 N# |5 L
  161.   Blinker.begin(auth, ssid, pswd);* m& a7 i8 j4 M  h# ]
  162.   BlinkerMIOT.attachPowerState(miotPowerState);              //小爱语音操作注册函数
    3 E9 s# ]4 I4 s3 H2 C/ P
  163.   BlinkerAliGenie.attachPowerState(aligeniePowerState);      //天猫语音操作注册函数
    & e. j, V3 u8 @; |& h" ]5 W% X
  164.   Blinker.attachHeartbeat(heartbeat);              //app定时向设备发送心跳包, 设备收到心跳包后会返回设备当前状态进行语音操作和app操作同步。" `; d$ w  H! q5 A

  165. . B# @2 W4 K+ [" |
  166.   Button1.attach(button1_callback);             //app上操作必须的注册回调函数关联按键名“Button1”和判断程序“button1_callback
    4 ], \; \6 j1 _: |# P
  167. }
    / Y  d& l, {7 F4 s; s4 l& S& s3 _/ B4 s
  168. void dataRead(const String & data); ~, p' L' \& [$ N$ M' ?% z
  169. {
    ' O% ?1 T4 t: f* M2 x: ?7 ?2 O
  170.     BLINKER_LOG("Blinker readString: ", data);
    1 [8 D3 d) |5 u' W0 z1 d3 T
  171. ' f' ^# g& M7 N
  172.     Blinker.vibrate();
    . p( W5 d4 P. w7 k: Y  n# A
  173.    
    + N' w; t' G  a7 A+ k
  174.     uint32_t BlinkerTime = millis();$ h7 _' Z! T: o! z+ l# K
  175.    
    ! r9 R. Z+ t4 ?- D! t0 Q+ @
  176.     Blinker.print("millis", BlinkerTime);
    # S0 p3 n0 `8 ]5 i9 s( `
  177. }' c* a2 C  w! N; c, f! R4 F3 {1 _
  178. void loop()% v6 M9 W- B6 V3 A7 L
  179. {! t7 d( {) N' Q. L5 p
  180.   Blinker.run();
    # n9 \" n8 e1 |& B& o
  181.   if (digitalRead(key)==LOW)" ~9 c% O  r2 p; |6 n
  182.   {, l( w* m$ I" G* o( s7 o
  183.     Blinker.delay(200);
    . V8 C: U% }) l5 d& J( Z: \
  184.     if (digitalRead(key)==LOW)
    + A. w, B8 o8 I! e
  185.     {9 C) I- G+ ~* u5 T9 z' n
  186.           if (digitalRead(kg)==LOW)# h+ b% C) B8 q
  187.        {8 Q- z8 s- v) g2 k
  188.             4 n! e' n' t" `
  189.             digitalWrite(kg, HIGH);
    8 d/ n# e9 \$ ~( R0 r- n
  190.             digitalWrite(de, LOW);  n* z9 {$ z3 u1 K, @5 N% t
  191.             Button1.print("on");
    % M1 @0 |* `. W' V
  192.             Button1.color("#0000FF");              //设置app按键是浅蓝色
    # }! q2 Y* I) f2 H# w, J
  193.             Button1.text("开启中");# z3 R+ g# g' x
  194.        }
    ' d6 W! ]' k/ l- _
  195.        else if (digitalRead(kg)==HIGH)/ P4 b8 A& ?( F# @& Q+ F2 @9 C& I/ ~
  196.        {' {) E5 R, a$ j- l6 r$ r5 v0 P
  197.             digitalWrite(kg, LOW);
    5 Y4 J: M( z9 t! f+ x- g# s0 x+ Y  z
  198.             digitalWrite(de, HIGH);( }9 A' x! n1 @7 N/ ~8 J4 P
  199.             Button1.print("off");
    7 k' q. Q' k1 c$ L; {, @- }$ w
  200.             Button1.color("#00FFFF");              //设置app按键是深蓝色
    / p! P1 F2 h' b: U7 {3 m$ J3 n
  201.             Button1.text("关闭中");* ^$ o: G9 U) b# A' W6 l% M& _! l; p
  202.        }1 F. {, ^4 Z5 K$ d& I2 @
  203.       }
    % G7 A  M: S0 k; W# b
  204.     }
    0 C: d  u2 `! u( z6 h
  205. }
复制代码

% t& z0 F$ U, V* t, G
/ `& V. Y/ _2 n我没有用卖家给的码,我自己写了一个,参考我前面的文章最简单的8266天猫精灵控制开关,点灯、Mixly可视模块化编程 https://bbs.nasdiyer.com/thread-18755-1-1.html, b% O# m; T% F3 e! \% N) R

, R4 W7 ]6 w- ?# ?把上面的2改成5,把高低电平对调一下就可以使用天猫精灵来控制你的这个插座了。我是把我的第一个插座放在了我的落地电风扇中了,当我慵懒的在沙发上刷着手机时候感觉有一点点热,我只要呼唤“天猫精灵,打开风扇”,就可以了。
: s) |7 [; d6 J* ]: U$ j' \! U
9 K7 r8 e! h7 Q% d; n: @
8 i# t* [: T3 T  `- t, t% a

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:53
2 m; I( j& F6 g) e买了几个   做工挺扎实的,但是外壳怎么拆啊  拿斜口钳拨了一个,   四个圆角的卡口根本没法正常拆 ...
; w# Y2 c# l' H+ {! h3 t7 u4 l/ ~
大力出奇迹呀

1

主题

8

回帖

256

积分

中级渣柚V1

积分
256
发表于 2021-8-29 08:14:58 | 显示全部楼层
a467913252 发表于 2021-8-24 15:53
1 x$ I2 o5 Z! j3 T买了几个   做工挺扎实的,但是外壳怎么拆啊  拿斜口钳拨了一个,   四个圆角的卡口根本没法正常拆 ...

" B' R: x3 M* [0 X# ^昨晚拆了一个,废了老大劲,想和卖家说的无损拆下来,不拆个三五个积攒经验,基本不可能

2

主题

11

回帖

62

积分

初级渣柚V2

积分
62
QQ
发表于 2021-9-4 23:05:22 | 显示全部楼层
sevenup0719 发表于 2021-8-29 08:14
! j3 R1 X9 @2 N& j( o昨晚拆了一个,废了老大劲,想和卖家说的无损拆下来,不拆个三五个积攒经验,基本不可能 ...
# G6 ]  {' G8 N  n% z4 |2 |5 e
你的搞定没  为什么我的根本没法烧录   连接不上,,用esp01s还没问题的
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-3-9 21:22 , Processed in 0.123583 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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