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

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

[复制链接]

11

主题

51

回帖

209

积分

中级渣柚V1

积分
209
QQ
 楼主| 发表于 2021-8-21 13:57:54 | 显示全部楼层 |阅读模式
本帖最后由 易记 于 2021-8-21 14:05 编辑
! p8 a. k, `7 f1 o
8 L! m- q4 c  \0 n- j最近玩ESP8266,想做个天猫控制开关。
  b+ Q% S2 a0 k但是我很懒,一个个配元件嫌麻烦,于是想着能不能淘到便宜的带电源板的模块,多倒是蛮多,一般都要20多块钱。- L% m1 I3 |  \- {
还是闲钱上逛一下看,找到一个联想的国外版8266智能插座,价格才8.5元一个。有一点不足,就是只有三孔,要是五孔的就好了。老板说五孔杂牌价格一样也有货,晚两天发布。
8 O  r* i( @* |/ } QQ截图20210821125037.jpg
8 F+ e6 o3 c( }/ K  G5 d+ x7 K6 }- r6 G4 B% v& D0 s# M6 y6 ]
# p8 w5 y* N4 n% e, _9 l; I- u& @
问了一下店主,买20个一盒才包邮,想着20个还是有点多,买了5个,连运费47.5元。  @, O  D' H; F

5 G! L+ f; D$ K, W. `0 ` QQ图片20210821124517.jpg ! ^# d! p  j5 m/ g: D- `

2 M" [7 ]& w7 m
# q; b( B' l# Q

( E' ^( I& H  v) s到手,当然是拆拆拆。
$ S" Z/ n; F9 w, g IMG_20210820_134104.jpg 6 O7 q% [' d$ V' g% f. K& Y

: ~" P. O8 g  n) W
/ ?. P: j7 d( [. V, a, `
联想的做工,还是感觉不错的,光这个继电器应该也要个7-8块钱。' z* D1 o1 S9 _2 x8 I% ?) o9 d
IMG_20210820_160634.jpg ! A% [% ]. c8 O
" k$ Y3 x6 _! v+ V
4 D& \) y+ \! v7 N) i
继电器是两组常开,感觉要是接电灯双控开关是不是有点麻烦的,不过用于插座是很安全,要断二条线都断开。0 ^( t) |; M8 A2 i8 g9 O& v
QQ截图20210821133707.jpg
  w2 t0 a' H' ~6 y0 d/ K0 `

+ J8 e! S! ?+ j0 @ IMG_20210820_134114.jpg
, V/ O& J' ^0 [6 o; _* F- r7 h
' n9 f8 {7 s1 }% G
电源芯片
/ S! }& s  T7 M! H) T6 d6 Q
1 x  l/ A4 Y) K; b9 {1 ~& ^- A  ^* S  ~# T. V

3 j3 m6 o& u% B6 Y. E有一个按钮,按钮有二个蓝色LED灯
3 Y* j8 D3 T8 R$ U' H5 |# u8 l IMG_20210820_134157.jpg 3 M9 I: }3 Y- E
& |8 _6 t6 K7 X. d6 H& h, f9 m1 L/ U5 j

2 v+ f/ ?! `! u7 }6 V! \# I, A8266
( H+ ~* t3 T8 D1 y( G IMG_20210820_141913.jpg
- Z0 D& w/ J3 h3 W, t
7 Z, d1 @7 w- x8 i5 x- a

! ]! [: ~0 {# M% i) j" K  V% V& z) n* e0 c
8 F  ~; ~) O  e& r) z
接下来就是刷机了,版子上面都预留测试点。
" W: b6 a1 q3 W7 h3 S* Z. x& r接线比较容易,上面都有标示,GND,3.3V,TXD-RX,RXD-TX,还有一个就是IO0接地后刷机。
* T! S& L; l2 I4 j( u& [" W 未标题-1.jpg   P0 z& y2 y' v
注意RX这个点,就是3.3V边上的这个点,焊盘设计的就点问题,电烙铁热一点或是焊的刷机线过粗的话,容易掉焊盘。
. J' }: n( N& ?" I7 ~1 ?) I要是掉了就只有一个过孔了,要是焊不上,只能再拆开接在另一面,所以为了避免不必要的麻烦,请注意一下。

# E. e6 \; h. d5 M1 \2 g
! t; n% l+ R) U: T
9 |7 H0 F- D+ S3 L9 g! c

; e. p# l% j: x( `9 l) e! J3 b8 z

7 c) e1 W5 n2 H; X+ b. N( W* s7 x8 W    5号脚位是继电器输出
9 S( h0 G. y, a# m, Y) |3 L- W    12号脚位是灯输出: m6 ~( ?1 C8 i6 F9 S+ H' T7 I& y
    4号脚位是按键

4 F3 F" P- K8 `* I- U1 @
7 Y* c9 q4 k, P/ s! g

1 ]* F0 {6 d5 }9 }# d8 i  J% s9 N4 a/ t  _, x
- b9 C; y' z* I
卖家有发一个源码,如下
  1. #define BLINKER_WIFI                    //官方wifi协议库  M3 W& I, w: c: k  \% _
  2. #define BLINKER_MIOT_LIGHT              // 设置小爱灯类库
    9 A* Y& B6 b' S9 m
  3. #define BLINKER_ALIGENIE_LIGHT          // 设置天猫灯类库$ J4 R" }% y, d% l+ e. C' |7 C1 U( @( |
  4. #define BLINKER_PRINT Serial            //串口协议库+ f; C4 i5 h7 ~$ X, J, m3 X: [
  5. #include <Blinker.h>                    //官方库% Y! E, Y% U* D4 |
  6. #include <ESP8266WiFi.h>                //官方库
    , }- f6 Q% m% O1 S# K% Z7 J& T
  7. WiFiServer server(80);                  // 服务器端口号
      _* A! }6 `: r6 o

  8. 2 ^! S# O5 t# v; P7 e8 |
  9. char auth[] = "c4942fb1d5e4";     //设备key
    * \+ X1 M) ?( l- ]- x
  10. char ssid[] = "wanboshi";     //路由器wifi ssid
    8 w5 ^7 ], ]+ @# w
  11. char pswd[] = "1365662999813586348220";     //路由器wifi 密码# i0 N* I' Z$ U$ N0 i7 ^8 P, u
  12. ! R/ k' E7 q7 F8 }# R5 Q$ }
  13. bool oState = false;8 M* p3 Y0 E) ^' S: Y' |
  14. . T. ?; }. D0 b' h- N* f; @
  15. int kg=5;//继电器输出2 i3 w8 I3 {8 ?3 Q6 _" l
  16. int de=12;//灯输出* W9 a. z2 H7 }
  17. int key=4 ;//按键
    1 r' w5 d7 k& v! k
  18. //*******新建组件对象( ~' `1 R! K  i: ^% D* V" k
  19. - A  V- j! W9 t8 d
  20. BlinkerButton Button1("btn-abc");              //设置app按键的键名
    ' N+ }( q' t5 V7 A
  21. //*******app上按下按键即会执行该函数app里按键
    5 K7 K* ^& L* t3 a6 m
  22. void button1_callback(const String & state). `' y! Z/ D0 w" _
  23. {
    6 `7 p5 b5 ?5 f0 J( f
  24.    if (digitalRead(kg)==LOW)3 v; n* q) j1 X- J' Q
  25.    {
    ) [' L: G) ?+ l$ e: X8 b( w
  26.         BLINKER_LOG("get button state: ", state);6 c+ _5 j9 h8 U9 A0 c) g
  27.         digitalWrite(kg, HIGH);- \* l8 Y/ ^. ]- _' _' |& ?
  28.         digitalWrite(de, LOW);
    , Z4 W+ x- X# {+ m
  29.         Button1.print("on");( q+ p( q/ u, g0 _7 c
  30.         Button1.color("#0000FF");              //设置app按键是浅蓝色
    ; G: ?0 l- ]% x' K9 @9 I% z
  31.         Button1.text("开启中");
    ' F# N/ W9 S4 `# N, u' `+ @( [
  32.    }! _" v; m8 h9 {4 e+ ?  e+ L
  33.    else if (digitalRead(kg)==HIGH)
    0 B3 \2 w7 h5 k* C% ^
  34.    {
    7 C' d2 z- H( t3 d! Q
  35.         BLINKER_LOG("get button state: ", state);, L. J5 p7 R) K" a/ i' z
  36.         digitalWrite(kg, LOW);
    ' h$ ], M1 J- g& \; A
  37.         digitalWrite(de, HIGH);
    ; W2 Q9 _( Q# z0 j$ ~- }
  38.         Button1.print("off");
    % ^! Z% G  {0 s
  39.         Button1.color("#00FFFF");              //设置app按键是深蓝色
    5 U2 p$ t; H+ N4 D% J5 l" x
  40.         Button1.text("关闭中");
    $ K; e$ U+ t7 t: Z. A
  41.    }
    7 o- B% B/ ^1 I% b
  42. }5 i* y' u! ?8 W: z/ s* I

  43. ' g# I+ X8 U- Q% `5 r
  44. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    , V9 v) |8 l9 L$ _

  45. ) C( J+ o4 L4 v
  46. //*******如果小爱有对设备进行操作就执行下面) `& n3 C7 [2 [: a, U# n0 Z
  47. void miotPowerState(const String & state)
    ' E) b* {( y: q# A
  48. {
    5 ]  O/ I5 N+ e1 x- |3 V) C
  49.     BLINKER_LOG("小爱语音操作!");              //串口打印# l2 j4 t, P, j' D6 f8 N6 X- q
  50.     if (state == BLINKER_CMD_ON){
    5 x5 {6 F. }) m! {6 e
  51.         - y* b( u9 s6 _+ F
  52.         digitalWrite(kg, HIGH);
    . r9 q9 ~7 h) [
  53.         digitalWrite(de, LOW);6 A2 Q& F) Y. y/ o# I$ |+ X$ S) V. W
  54.         Button1.print("on");
    . \: V1 x  s, F( d
  55.         Button1.color("#0000FF");              //设置app按键是浅蓝色  U  j7 h! v/ j( b/ T9 }
  56.         Button1.text("开启中");: C2 W. b7 g  L9 X" S3 T% z; Y
  57.         BlinkerMIOT.powerState("on");4 R6 _: Q5 o( R) z& j& x
  58.         BlinkerMIOT.print();- s) V' g$ A5 g% B! L( B
  59.    }
      B$ V8 v) |* R
  60.    else if (state == BLINKER_CMD_OFF)+ c/ ?+ J# q7 x# v
  61.    {
    2 l4 t  f- f& w/ ^
  62.         
    . L2 _) v" h# f
  63.         digitalWrite(kg, LOW);) z: k9 K* x+ g/ H1 f# s. Z
  64.         digitalWrite(de, HIGH);+ d8 D4 P) n" @. A; L; T- j
  65.         Button1.print("off");
    ! D, V2 }7 L" f* j9 l) g  C
  66.         Button1.color("#00FFFF");              //设置app按键是深蓝色
    ) g/ O: i7 q% P: w1 y
  67.         Button1.text("关闭中");3 I, |( Z4 b) G- d3 m
  68.         BlinkerMIOT.powerState("off");
    $ ?: s" d5 f$ J  ~
  69.         BlinkerMIOT.print();
    - E" r, @* k0 ~5 M" g+ G6 d
  70.    }
    % s2 ?5 K+ F, |0 {& ^$ x: |2 ~
  71.        : b; y; G. l8 l  h: r, b

  72. 9 k4 c3 G# L" \7 ?( y2 N5 ^
  73. }
    + Z6 q' g( L) d  N* i
  74. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    4 `6 m6 u/ s; c+ f3 s3 y8 @: q
  75. //*******如果天猫精灵有对设备进行操作就执行下面/ R8 E/ u9 M. w
  76. void aligeniePowerState(const String & state)
    $ F! t; ^3 A5 Z! p5 [3 r; E$ I
  77. {) Q4 Z+ w" {8 c" ]( |5 j8 ]
  78.     BLINKER_LOG("need set power state: ", state);& a$ n" l5 P5 d4 s+ E9 Q9 u: l7 z; n
  79.     if (state == BLINKER_CMD_ON)% G. f/ F, k' H; @9 ^6 N
  80.     {
    ' n9 r1 ~+ s0 Q$ |; d1 M$ X
  81.         
    3 ]2 k9 i0 _% d7 f6 O( g7 W1 D+ ~6 a! c
  82.         digitalWrite(kg, HIGH);
    ) e4 D1 L1 {  W5 z; n
  83.         digitalWrite(de, LOW);
    # i7 J( t. ^5 }9 p
  84.         Button1.print("on");
      ~: [7 d9 |; t1 Q$ E, E8 {7 o6 z/ n
  85.         Button1.color("#0000FF");              //设置app按键是浅蓝色
    & O/ p! ?! F8 d9 x' ^0 Q
  86.         Button1.text("开启中");8 l3 X1 C  A6 a7 @2 T
  87.         BlinkerAliGenie.powerState("on");
    * Q  I% y. M3 H. u
  88.         BlinkerAliGenie.print();
    7 L* d! u0 `  W5 g3 ~7 [" P  I
  89.     }
      g8 `! m9 D5 W5 Q! w; Y
  90.     else if (state == BLINKER_CMD_OFF)
    + k/ Y# u& J, R* x: F: [
  91.     {3 ~8 A: r8 G! \
  92.         
    - l; U/ B4 {- N( C
  93.         digitalWrite(kg, LOW);- \, D+ p' ]" h% n! p1 ]6 v
  94.         digitalWrite(de, HIGH);) ~% S. o2 A, Z% r2 f6 T; u
  95.         Button1.print("off");
    - T4 _- x9 i" A6 s5 h1 ^. d3 N
  96.         Button1.color("#00FFFF");              //设置app按键是深蓝色0 W8 y& ?* A! G# m3 q0 Y
  97.         Button1.text("关闭中");
    ; }& m2 d2 y& ?! Z' T& Z7 V
  98.         BlinkerAliGenie.powerState("off");" U8 P3 f5 v- K; O- z4 B
  99.         BlinkerAliGenie.print();- d( c$ _  e& X. h) T- D% [7 h0 Z% m: ]
  100.     }( y; T" N  B9 }7 @
  101.         
    3 n7 h5 }! `; i) D& b, }; ]

  102. + x& _5 _) W% C" q
  103. }, e. D0 q. U2 o# M( J8 s  U
  104.   //*******app定时向设备发送心跳包, 设备收到心跳包后会返回设备当前状态30s~60s一次
      B, Q" o) V5 F
  105. void heartbeat()  s: w' |- ^4 `6 ~7 S' Q8 @) o/ x
  106. {
    + W0 `/ k, [% K* W% L
  107.   BLINKER_LOG("状态同步!"); # P% d7 U5 F2 D: k9 C# h
  108.    if (digitalRead(kg)==HIGH)
    0 ]4 C1 C# D, M+ b5 e0 ^  ]/ O
  109.     {
    9 R1 Y3 r4 K& |
  110.       Button1.print("on");
    0 h+ @4 e! g  ]! X
  111.       Button1.color("#0000FF");              //设置app按键是浅蓝色
    " v/ ^- h$ _) m# m; }. I% \' P
  112.       Button1.text("开启中");! k6 C- y  E' {2 S/ _
  113.     }
    ) e) r: e! M  l" s( r6 u
  114.     else
    - z7 W; d, h1 ?: P# {" F+ t' f& J
  115.     {6 A) g4 n8 e7 L( s. X2 X+ C$ V3 }
  116.       Button1.print("off");
    + o5 n# x- _# x, ?
  117.       Button1.color("#00FFFF");              //设置app按键是深蓝色
    ' r; Y/ j  R; r* k" T/ D7 [, C: t
  118.       Button1.text("关闭中");
    4 p/ e( c3 _) k+ b
  119.    
    / Y5 @# X' N, S: W
  120.     }
    0 K. u3 K5 v0 ?7 [3 X! w" J
  121. }
      L5 _. B* @' q+ b* S- w) U* _1 N
  122. //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- v& k# m- C/ a( {: p, _+ R7 R( f- R
  123. void setup()4 O4 U. [3 t( i7 S! n
  124. {
    # v4 |/ |- X! g' F7 ?, F2 [
  125.   // 初始化串口
    , w" Q) ^1 X. W7 s9 ]
  126.   Serial.begin(115200);
    $ `/ @/ e9 o: d0 z6 E+ z: C" y4 X
  127.   delay(10);
    8 ~* B" ~1 E' u. y- s
  128.   BLINKER_DEBUG.stream(Serial);# E) O) Z/ d, R
  129.   // 初始化有LED的IO. S1 _: y6 K! n1 M/ s# f& p
  130.   pinMode(kg, OUTPUT);                 2 A  W: b' f/ ?! l# F1 o
  131.   digitalWrite(kg, LOW);//初始化继电器上电状态
    $ }7 |7 K9 o3 D. q3 l
  132.   pinMode(de, OUTPUT);4 X- F- f! V6 `
  133.   digitalWrite(de, HIGH);* C# e  N* ~: k# y
  134.   pinMode(key, INPUT);            
    4 a, j3 \8 L9 F4 u! r4 V* D
  135.   Serial.println();
    * g% r9 Z1 s$ y
  136.   Serial.print("Connecting to ");
    ' }6 }7 Y0 t' R/ d& h, w
  137.   Serial.println(ssid);
    ; o# \% E8 _" x, _5 w6 F
  138.   WiFi.begin(ssid, pswd);
      a6 `' U% ?. T% V4 P
  139.   while (WiFi.status() != WL_CONNECTED) {$ i1 D. ?% o0 N- E  b& e% j. ?
  140.     delay(500);! J* t# f$ }! p
  141.     Serial.print(".");0 u- f1 r( Q) q" ?
  142.   }6 v7 J; [7 D) |: K  |! M8 x
  143.   Serial.println("");
    ; b& ~. T% ~% Z
  144.   Serial.println("WiFi connected");8 i) i! V1 f1 _9 Q4 G
  145.   server.begin();, s/ t1 _5 C" F. O8 h
  146.   Serial.println("Server started @ ");* X- }7 @4 K" U: T" Z1 C) e
  147.   Serial.println(WiFi.localIP());6 U* c" P$ s$ O
  148.   //打印出IP地址,后期可以制作显示器来外部硬件显示ip
    8 q' H& i+ M# S3 _
  149.   Serial.println("To control GPIO, open your web browser.");- l- S$ V( n2 p% d
  150.   Serial.println("To set GPIO 0 high, type:");
    / n6 d# U3 j9 N
  151.   Serial.print(WiFi.localIP());
    $ _) F0 t# }9 F8 g
  152.   Serial.println("/gpio/1");
    9 y$ z5 R5 S4 b& _
  153.   Serial.println("To set GPIO 0 low, type:");
      T. U0 R  I* A% ~. A; ^
  154.   Serial.print(WiFi.localIP());
    8 ?$ f9 Y' d$ v7 s3 r7 s) p+ V( M. ]
  155.   Serial.println("/gpio/0");% ?. W8 ^- A2 q' m  [9 R3 O" f1 ?" Y
  156.   Serial.println("To toggle GPIO 0, type:");; o% N& v  Y& e( K
  157.   Serial.print(WiFi.localIP());
    5 K4 `8 Z+ y/ i6 r+ y0 x
  158.   Serial.println("/gpio/4");4 @5 _0 B* w0 ^9 M* F8 a

  159. 4 n; z. Y% Q" U# U3 l" V- i! U. v
  160.   // 初始化blinker' I" a/ N% M2 i. b9 H, K
  161.   Blinker.begin(auth, ssid, pswd);
    - A- Z, w3 l4 M; O( F6 W1 _
  162.   BlinkerMIOT.attachPowerState(miotPowerState);              //小爱语音操作注册函数
    2 i; [3 Y, X8 S
  163.   BlinkerAliGenie.attachPowerState(aligeniePowerState);      //天猫语音操作注册函数  k! g* W& r0 i* o4 A6 I
  164.   Blinker.attachHeartbeat(heartbeat);              //app定时向设备发送心跳包, 设备收到心跳包后会返回设备当前状态进行语音操作和app操作同步。
      Z( v. z* h. y5 h/ s( Q
  165. , ~: C! ]+ _* N( Z1 x" @) }8 x1 Q
  166.   Button1.attach(button1_callback);             //app上操作必须的注册回调函数关联按键名“Button1”和判断程序“button1_callback
    6 h. y6 c# K& ?3 q
  167. }
    1 I" }# q; b2 O, I
  168. void dataRead(const String & data)
    1 I" F: l' V# J- T. M6 h! S5 i0 Y
  169. {
    " |* n# b1 k; m
  170.     BLINKER_LOG("Blinker readString: ", data);
    " W1 E- e. F5 F4 p$ j3 e9 C

  171. 8 A& x, y, q& h" u$ P# d3 @
  172.     Blinker.vibrate();
      p2 ]9 y5 |$ H( V
  173.     / `/ T9 X6 X5 K
  174.     uint32_t BlinkerTime = millis();* M3 a3 K+ e( W. o6 ~6 B
  175.    
    9 l7 x/ A! y% n* [2 r
  176.     Blinker.print("millis", BlinkerTime);
    ) @+ o' e& J8 T( r( |
  177. }9 L% d' c( q7 j+ N& k/ T
  178. void loop()
    6 x7 F, }, Z% X  c& }
  179. {9 A$ g) F8 T2 r+ f0 Z. y* N' a6 K0 L
  180.   Blinker.run();
    2 M( G' q9 ~/ w& l5 C
  181.   if (digitalRead(key)==LOW)
    + o* ^  r) F2 V, P' Q
  182.   {5 z# ~  \6 U( c5 t8 u  \0 b
  183.     Blinker.delay(200);
    : ?' U( ?! E+ ^8 w8 L$ l0 Z& S2 Z; W0 @
  184.     if (digitalRead(key)==LOW)' H# X- t+ a& t# ?
  185.     {
    . O4 R( I+ \' k( P' d# E
  186.           if (digitalRead(kg)==LOW)
    7 k5 ~* O; ]6 i" R
  187.        {
    8 A5 L" I( o3 T' i, @! ~2 d
  188.             " M/ X' K7 t8 k5 ^7 z% M
  189.             digitalWrite(kg, HIGH);, }5 l+ X7 d! z1 }" T
  190.             digitalWrite(de, LOW);( {& Q: p; x/ ^& @
  191.             Button1.print("on");+ w- W# {1 e5 X$ G
  192.             Button1.color("#0000FF");              //设置app按键是浅蓝色
    4 ^. ?, d; m: s5 G
  193.             Button1.text("开启中");
    : `: c8 w8 X+ h8 d& Y: i3 C# |; \5 ^
  194.        }
    # n5 y6 t9 u# X
  195.        else if (digitalRead(kg)==HIGH)& ?# z9 `- O+ B! D! |8 J8 u  b
  196.        {
    5 L3 M: y+ B& r( E
  197.             digitalWrite(kg, LOW);8 k) O" ?7 q6 M& d. t8 V
  198.             digitalWrite(de, HIGH);6 C8 V* }/ L( X8 w7 X: U
  199.             Button1.print("off");
    + ?3 \' T+ P# ?# ?
  200.             Button1.color("#00FFFF");              //设置app按键是深蓝色* J6 u4 R7 u# L" h# R9 P0 k
  201.             Button1.text("关闭中");
    6 M2 ]9 @* C6 c# h  l
  202.        }; ^$ a: f) D+ |. w1 o% U6 d8 b
  203.       }6 K7 Y6 N! Z3 t5 ^% x5 Y8 ~2 g' c: @
  204.     }6 E2 ^6 @5 ~4 v) g! J
  205. }
复制代码

9 G4 L+ v2 Y$ A; x7 u# H$ t! r. O. Y4 R3 y9 f; A  \
我没有用卖家给的码,我自己写了一个,参考我前面的文章最简单的8266天猫精灵控制开关,点灯、Mixly可视模块化编程 https://bbs.nasdiyer.com/thread-18755-1-1.html
- k3 Q3 v9 b) n3 w4 W! L4 l0 R! E* T9 r1 C/ ?& k- D# m
把上面的2改成5,把高低电平对调一下就可以使用天猫精灵来控制你的这个插座了。我是把我的第一个插座放在了我的落地电风扇中了,当我慵懒的在沙发上刷着手机时候感觉有一点点热,我只要呼唤“天猫精灵,打开风扇”,就可以了。
, }! n0 U7 d9 m# _
: H& k) }' n& J$ v/ E2 P
9 x& U- [4 g1 T4 F

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:533 E! _- O' j9 {9 R
买了几个   做工挺扎实的,但是外壳怎么拆啊  拿斜口钳拨了一个,   四个圆角的卡口根本没法正常拆 ...
1 A; ]& S7 h/ D) {3 G
大力出奇迹呀

1

主题

8

回帖

256

积分

中级渣柚V1

积分
256
发表于 2021-8-29 08:14:58 | 显示全部楼层
a467913252 发表于 2021-8-24 15:53. V7 `) [8 D, a4 }, k" S
买了几个   做工挺扎实的,但是外壳怎么拆啊  拿斜口钳拨了一个,   四个圆角的卡口根本没法正常拆 ...
) p2 c! }6 ]4 s& e3 E* Q0 u4 ^% ?
昨晚拆了一个,废了老大劲,想和卖家说的无损拆下来,不拆个三五个积攒经验,基本不可能

2

主题

11

回帖

62

积分

初级渣柚V2

积分
62
QQ
发表于 2021-9-4 23:05:22 | 显示全部楼层
sevenup0719 发表于 2021-8-29 08:149 `; Q+ U' E& u3 P/ c/ I9 E" e* D
昨晚拆了一个,废了老大劲,想和卖家说的无损拆下来,不拆个三五个积攒经验,基本不可能 ...

! S+ e4 c9 Y, j; A- E你的搞定没  为什么我的根本没法烧录   连接不上,,用esp01s还没问题的
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-9-6 00:05 , Processed in 0.192012 second(s), 3 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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