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

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

[复制链接]

11

主题

51

回帖

209

积分

中级渣柚V1

积分
209
QQ
 楼主| 发表于 2021-8-21 13:57:54 | 显示全部楼层 |阅读模式
本帖最后由 易记 于 2021-8-21 14:05 编辑 5 y0 U8 C( U& [1 D, L' r0 o, ]- n+ d
! c9 o# V! y7 E' {
最近玩ESP8266,想做个天猫控制开关。
- X$ n- P5 c1 o# g* i$ z0 s但是我很懒,一个个配元件嫌麻烦,于是想着能不能淘到便宜的带电源板的模块,多倒是蛮多,一般都要20多块钱。
% i* _* T/ x! O+ ~还是闲钱上逛一下看,找到一个联想的国外版8266智能插座,价格才8.5元一个。有一点不足,就是只有三孔,要是五孔的就好了。老板说五孔杂牌价格一样也有货,晚两天发布。6 ?2 d; ]' G  B* n- {
QQ截图20210821125037.jpg
! R: q) N1 x2 L7 C( j' G. c) [/ E/ i( \- T, @! |, ^
/ v' h, G; A' B: }% H# R) L) c
问了一下店主,买20个一盒才包邮,想着20个还是有点多,买了5个,连运费47.5元。
- ]. S' X  e& r+ F  _& Z) V7 }% S  Z9 X, [; g) f+ D
QQ图片20210821124517.jpg $ F9 K7 J( }2 U5 s; p6 {) W* K

3 v7 a5 J( C2 }3 P; y7 q. k
7 {3 ]9 X/ P9 Y+ j( J. y
& [) P2 T/ W  a+ t5 M
到手,当然是拆拆拆。1 R. |( U. A% a1 L" [
IMG_20210820_134104.jpg 3 r5 V% A0 o) H: x& }. y3 C
) J2 T* g# ~3 @9 h  G

( k+ d6 ~: c8 l联想的做工,还是感觉不错的,光这个继电器应该也要个7-8块钱。
7 a. w  D6 a& Y* i2 g' O# ` IMG_20210820_160634.jpg
  n4 w8 t# ?/ n8 n+ T  d- K5 W1 S4 ?' k7 v$ S1 `

# `' t; A. F& l' U3 I继电器是两组常开,感觉要是接电灯双控开关是不是有点麻烦的,不过用于插座是很安全,要断二条线都断开。
5 {# K$ ]; @; y' [( H8 \% ] QQ截图20210821133707.jpg
1 `! Z; P; H* ]7 P: b7 f3 f  Q
- `8 u" }4 a% [' E
IMG_20210820_134114.jpg : {! @5 ~2 e: l# H8 ]2 c6 q( L
6 q4 A$ X  y  k+ ?; e) e
电源芯片+ P7 h4 B! Y6 p7 F5 j

' `* [" q  l8 Z9 U0 Y0 O9 p+ i  \' A; i

, x3 z9 @* e. r7 K5 X# b! g有一个按钮,按钮有二个蓝色LED灯
: T( j) q- p. {7 e9 b* Z IMG_20210820_134157.jpg 5 C) H" R4 t) E- m. B! B
5 E- s/ D7 q4 T
7 |& V6 t) m9 a  Q8 b2 n' L
8266, {( r" ~; s0 Z. F* B# L
IMG_20210820_141913.jpg - o3 k: v1 D+ @! l

- b6 r! n# @+ A# Q5 g6 _

" @/ D; |& H4 T  S" E. Z4 ^( t& H
" u6 ?) G7 j6 s6 p4 t$ I

7 ~% l; T/ v* O' p! h6 ~接下来就是刷机了,版子上面都预留测试点。" H4 N3 i+ S2 @6 x! ?8 Q, l% J5 z6 s
接线比较容易,上面都有标示,GND,3.3V,TXD-RX,RXD-TX,还有一个就是IO0接地后刷机。
* i1 _# j( m) t, q" c7 q# K 未标题-1.jpg / R4 i+ P9 F# u+ c7 j7 }& J
注意RX这个点,就是3.3V边上的这个点,焊盘设计的就点问题,电烙铁热一点或是焊的刷机线过粗的话,容易掉焊盘。
6 R# s/ S# z' J要是掉了就只有一个过孔了,要是焊不上,只能再拆开接在另一面,所以为了避免不必要的麻烦,请注意一下。

5 }: D6 E" T& M5 U; J) R6 [/ w# ]6 ^

  J4 w; Z7 Z+ n) e4 d2 d/ n
5 z0 C% }8 r: F+ E

! L! }) d, p* S9 y2 X

( }/ l5 g' {! w5 m; d. V    5号脚位是继电器输出+ e. t4 O" w( V
    12号脚位是灯输出
3 C" G2 U3 u& M: y3 b$ v( K    4号脚位是按键

% z7 [, {: k2 p' v4 d  N
) t* G) ~# ^8 }

8 t9 ~/ ]! ]0 Q' }' @8 t
- U0 N; A8 V, z5 L1 ~

8 \1 G+ j7 y2 Q& m! G卖家有发一个源码,如下
  1. #define BLINKER_WIFI                    //官方wifi协议库
    3 d9 W4 [- Q% b# m2 m; Z# P3 X
  2. #define BLINKER_MIOT_LIGHT              // 设置小爱灯类库
    / L8 T4 y3 B7 \8 Q$ a  P* Y
  3. #define BLINKER_ALIGENIE_LIGHT          // 设置天猫灯类库9 X! c+ o; T& ?& o* e6 Z
  4. #define BLINKER_PRINT Serial            //串口协议库
    4 n0 o  Y& B6 B. v/ c  o. [
  5. #include <Blinker.h>                    //官方库5 h$ n) m3 t9 n( t
  6. #include <ESP8266WiFi.h>                //官方库
    8 V7 c( Q; z5 }& Z* G
  7. WiFiServer server(80);                  // 服务器端口号
    3 \! ^! f& r* G: d- @
  8. * J6 ?1 U: z& l0 P& D, U
  9. char auth[] = "c4942fb1d5e4";     //设备key
    5 Q6 d  Y8 {6 O$ r: \% P; r
  10. char ssid[] = "wanboshi";     //路由器wifi ssid) _/ \4 O5 D! b7 B3 u7 ]
  11. char pswd[] = "1365662999813586348220";     //路由器wifi 密码+ }( Z; y; E, A' C+ t
  12. $ j) h, M8 y$ \3 I
  13. bool oState = false;( s4 X" H) _. g. m

  14. 6 @. T+ Y; F( S
  15. int kg=5;//继电器输出9 w1 |0 S+ B; `  b5 M2 a
  16. int de=12;//灯输出! {, L8 T+ a/ i! ^- \
  17. int key=4 ;//按键
    3 z6 d7 Y% S; E2 f
  18. //*******新建组件对象. `; {! T( L/ n3 v+ i$ f; Z

  19. 2 K$ z+ `3 [6 `) B/ q# a
  20. BlinkerButton Button1("btn-abc");              //设置app按键的键名
    5 r$ l. z( f9 d$ r% X7 S% s- r
  21. //*******app上按下按键即会执行该函数app里按键: _  s6 r# E; t1 {5 @' B
  22. void button1_callback(const String & state)/ |, L2 H! `/ r7 i: w
  23. {* k, t' X! ?5 M  i/ G5 }- o$ s
  24.    if (digitalRead(kg)==LOW)4 P' K4 P# V" r1 Y
  25.    {
    . e. l# f4 Z% J' I4 ^" G. @
  26.         BLINKER_LOG("get button state: ", state);5 ~+ }5 G0 o1 f$ C5 s/ r3 F
  27.         digitalWrite(kg, HIGH);$ w6 {$ w$ C/ Y& F  o, K8 B
  28.         digitalWrite(de, LOW);
    # d1 v3 o0 ?! s# v: ~$ ]
  29.         Button1.print("on");. d. O$ f; i  x! Z' f
  30.         Button1.color("#0000FF");              //设置app按键是浅蓝色( A  V7 k/ x3 N, y; U
  31.         Button1.text("开启中");
    ! p8 o8 M" Z+ b7 s7 L: K! x0 N
  32.    }
    - \3 W$ s0 ^$ h8 c) P9 v( j9 h
  33.    else if (digitalRead(kg)==HIGH)4 Q) q  a( n4 R4 V! i6 T4 I
  34.    {- \4 p3 q- e) O7 w
  35.         BLINKER_LOG("get button state: ", state);9 I5 Q  Y& M& ^) Q1 U+ U- ]7 p
  36.         digitalWrite(kg, LOW);5 ?" C0 l) h% ?* Q/ J
  37.         digitalWrite(de, HIGH);  p! \# u& B9 `- B4 t
  38.         Button1.print("off");; U. C, I$ R7 W" a0 l; o
  39.         Button1.color("#00FFFF");              //设置app按键是深蓝色) N4 |. u# X" g  C; F
  40.         Button1.text("关闭中");$ z0 p/ ^4 f  w" `8 @
  41.    }( R( K/ b( q! |
  42. }: o: V. Y7 q* ~$ l( ^

  43. 8 j' w% T( K- t. U# D: V- T
  44. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    2 g# O0 \/ v7 x( O6 R$ b

  45. 4 [: P! h. n" f' H6 |# v9 F
  46. //*******如果小爱有对设备进行操作就执行下面- I# @# M, E! p! D
  47. void miotPowerState(const String & state). v" |! Z& v1 C. L7 L
  48. {
    ( v, T7 Q- Q2 D  |0 U' |3 `1 s6 @
  49.     BLINKER_LOG("小爱语音操作!");              //串口打印
    , X! ^3 ?8 w$ v4 w. U
  50.     if (state == BLINKER_CMD_ON){& R# R' X0 X  c* r. ?
  51.         6 Y: T/ {# c' |3 O# h
  52.         digitalWrite(kg, HIGH);
    ( d, \% ^! X& g% V
  53.         digitalWrite(de, LOW);  F$ }  k" u& y" q
  54.         Button1.print("on");
    % D, b! F2 c3 Z- q: I8 }0 y
  55.         Button1.color("#0000FF");              //设置app按键是浅蓝色
    % r( h+ c( w9 s) u6 f& q# G) c" F
  56.         Button1.text("开启中");
    * k" ?' ]9 O  f; ?0 F+ C, }3 T
  57.         BlinkerMIOT.powerState("on");7 G* Z4 y8 o% i* m5 Q9 J
  58.         BlinkerMIOT.print();
    0 \& L' J  ^! Y1 O1 i) K: F
  59.    }4 U5 x1 f! W' ~  W6 q! m- ~
  60.    else if (state == BLINKER_CMD_OFF)$ ?" |" M/ F! O9 w+ ?) Z
  61.    {
    $ c6 f9 u* m4 }4 W% i* O, e
  62.         6 i: v7 C6 d% ?1 [! o3 ]3 F/ \
  63.         digitalWrite(kg, LOW);8 Q& }, T- g8 j( n
  64.         digitalWrite(de, HIGH);7 ^( U6 v- Q8 A& a
  65.         Button1.print("off");
    7 o0 F) \! d2 p- e9 u( {1 _
  66.         Button1.color("#00FFFF");              //设置app按键是深蓝色6 B( O  [8 M6 U
  67.         Button1.text("关闭中");4 r" N+ s- c$ u1 u% ~
  68.         BlinkerMIOT.powerState("off");1 b* |. G  `% W6 B
  69.         BlinkerMIOT.print();) _# d' M9 X; D+ q" d! H$ c1 l$ q
  70.    }
    " A9 b+ u- ?( y$ T& V
  71.        ; S) u1 [- p0 v6 g

  72. # p' O6 i, J0 y$ h4 J
  73. }4 @+ z4 I0 Z( Q/ d: ?* s1 f; ^
  74. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    + Z1 O* S, D0 l5 D$ d) A  B. g
  75. //*******如果天猫精灵有对设备进行操作就执行下面( [, ~" _; n0 D) K7 t1 K8 L0 O
  76. void aligeniePowerState(const String & state)
    # m4 [9 t: T2 }5 A2 f
  77. {
    6 o* D  T; d& N* g- X- V% a$ X
  78.     BLINKER_LOG("need set power state: ", state);* ?1 y4 {0 t9 I) H
  79.     if (state == BLINKER_CMD_ON)( m; O  T5 C# M+ s- M
  80.     {
    9 s7 i% }% s# Z/ T) ]
  81.         
    ( I1 S! c7 |  n$ }$ G8 a. {
  82.         digitalWrite(kg, HIGH);
    3 u6 e$ \2 K4 x  K$ J' r
  83.         digitalWrite(de, LOW);
    + B1 a+ G/ k$ S/ f- X% ^0 n
  84.         Button1.print("on");
    7 p2 z: H! g3 ^  D
  85.         Button1.color("#0000FF");              //设置app按键是浅蓝色) R* \# S- {  s5 h" p
  86.         Button1.text("开启中");- o6 t% ~* r* F5 {. M' `
  87.         BlinkerAliGenie.powerState("on");7 M6 {& [, ]' c5 x! p
  88.         BlinkerAliGenie.print();
    ) Z# @" C  H* u. G
  89.     }# _4 ~- h' c3 i
  90.     else if (state == BLINKER_CMD_OFF)
    2 o! w7 ~. Z% S  D# |) O
  91.     {
    ' @0 N; Z9 d/ J8 h! M. }$ D
  92.         
      W$ g  h& y4 h' j
  93.         digitalWrite(kg, LOW);
    0 {) F6 a- l* [" E7 t1 N7 ?3 c
  94.         digitalWrite(de, HIGH);
    4 Z( y5 v: v8 s1 {3 s9 F0 z
  95.         Button1.print("off");$ j" h% y! i; C  S' o) h' N
  96.         Button1.color("#00FFFF");              //设置app按键是深蓝色
    ' [3 K6 X6 L: s
  97.         Button1.text("关闭中");
    ( k! ]! X- H; |9 z5 I
  98.         BlinkerAliGenie.powerState("off");' ?3 W9 N  f. V$ D
  99.         BlinkerAliGenie.print();
    2 [6 h" K4 t. S1 p; R! W
  100.     }, E1 n. z5 Y1 M% ?, S' o" G4 V8 V1 r# Z
  101.         
    ; }/ {7 z2 n, v

  102. ! n" d4 ?% f- y; s2 [! O
  103. }
    4 _% f' k5 C! s: x# J
  104.   //*******app定时向设备发送心跳包, 设备收到心跳包后会返回设备当前状态30s~60s一次
    8 d8 z$ w+ C+ O$ ~" |3 m
  105. void heartbeat()
    ; P4 n3 x0 E% ]* d% h
  106. {
    " t- C8 U: @" Z. D2 n0 n
  107.   BLINKER_LOG("状态同步!");
    : a: f6 V) E( t0 w
  108.    if (digitalRead(kg)==HIGH) * f5 s1 }& z9 L" P+ |  Z
  109.     {
    7 M6 V$ w3 d/ e, R. d
  110.       Button1.print("on");
    / ?7 z2 ~% H  [$ K% ], f( r; O" A
  111.       Button1.color("#0000FF");              //设置app按键是浅蓝色
    3 s2 E: L2 r; W. h
  112.       Button1.text("开启中");
    ; M5 D2 {( I5 n9 t+ x
  113.     }
    8 _2 Q7 H  w7 g: i; a
  114.     else 1 y, G6 V  T. _1 a& n* A' u
  115.     {, U6 ~  m) Q; s' x" b
  116.       Button1.print("off");
    ( }. n9 X7 m( B# V3 U/ ]4 i
  117.       Button1.color("#00FFFF");              //设置app按键是深蓝色
    3 f! R# }3 a1 o* Y# G8 u6 N
  118.       Button1.text("关闭中");$ p' i4 [7 {9 G$ `, S
  119.     - S. l4 Y; w4 k+ i
  120.     }
    7 w& @  g& @2 S
  121. }
    # x! J- J7 u/ @, s& A$ e" Y
  122. //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- i3 m. g5 {- d* U
  123. void setup()/ y* _5 b0 @' Q
  124. {  e$ _# v0 T4 R4 C+ [, r0 k) T, I
  125.   // 初始化串口+ e4 `3 k* [1 U' G5 W
  126.   Serial.begin(115200);
    5 W+ J  \% \6 k+ h& y) j- b! H
  127.   delay(10);
    & `$ l; |& U; r& @  @, |4 r+ a
  128.   BLINKER_DEBUG.stream(Serial);
    / r2 q! L* @: X* P& e. F! T8 O
  129.   // 初始化有LED的IO1 k! X& |+ \; i2 ]) h
  130.   pinMode(kg, OUTPUT);                 , G7 b2 L4 Z7 A9 I2 v+ V
  131.   digitalWrite(kg, LOW);//初始化继电器上电状态 9 n  p: g' I% V* Q+ o" C& R
  132.   pinMode(de, OUTPUT);! |1 c' B0 K$ D1 x5 a# x$ X) p; b$ N9 [
  133.   digitalWrite(de, HIGH);4 ]# n$ r" s3 p* m" |% v- K
  134.   pinMode(key, INPUT);            
    ) a& A, o" b; Q6 R  T
  135.   Serial.println();
    ' }' N% g1 J. U' F
  136.   Serial.print("Connecting to ");6 \3 z  T* C1 w8 U7 }( _4 m2 r4 b
  137.   Serial.println(ssid);4 |- U2 O) k- ^. f
  138.   WiFi.begin(ssid, pswd);
    4 }) V0 T( K- [& `( K
  139.   while (WiFi.status() != WL_CONNECTED) {9 U. d: L4 ^# Q3 e
  140.     delay(500);
    3 a2 d* |) N* J" Q: e5 n
  141.     Serial.print(".");
    6 D) u: X- _) }' t! H
  142.   }3 ^! L* i$ [' ^* k; c5 L# S
  143.   Serial.println("");4 e# }; j$ n9 K$ t$ F
  144.   Serial.println("WiFi connected");1 _* n0 F$ V& r. K  A
  145.   server.begin();! {" E) V# V* W2 ?: G7 `
  146.   Serial.println("Server started @ ");
      {4 Y8 X) V/ s8 Y' j
  147.   Serial.println(WiFi.localIP());
    1 F9 b  W0 r  p5 Z  a$ d
  148.   //打印出IP地址,后期可以制作显示器来外部硬件显示ip$ Y5 G' i) ~# k) p7 n& z
  149.   Serial.println("To control GPIO, open your web browser.");4 R& N6 {/ G+ N1 @, z
  150.   Serial.println("To set GPIO 0 high, type:");  Y# t2 O) U! a) }9 Z5 D: c; d
  151.   Serial.print(WiFi.localIP());
    ! l5 I& E+ D+ s, {
  152.   Serial.println("/gpio/1");: R0 [4 p, D/ z
  153.   Serial.println("To set GPIO 0 low, type:");
    , e( e& x9 G7 w; B$ t
  154.   Serial.print(WiFi.localIP());/ P4 b  t4 @5 m) b+ Q
  155.   Serial.println("/gpio/0");
    # b& P' l% t' k
  156.   Serial.println("To toggle GPIO 0, type:");0 d/ i9 ^% _0 P6 U% b
  157.   Serial.print(WiFi.localIP());
    + T$ x* c; _+ @) G/ B( C/ }
  158.   Serial.println("/gpio/4");
    4 M6 R3 p7 ^! A# w% n  Q5 ?
  159. 6 a' b) {5 j) B3 F4 [
  160.   // 初始化blinker) d: o3 ~  E5 T/ i7 i# p% D
  161.   Blinker.begin(auth, ssid, pswd);% ~0 b. k9 }* z& I$ u. J! E  `
  162.   BlinkerMIOT.attachPowerState(miotPowerState);              //小爱语音操作注册函数* P! @8 V8 k2 f7 N8 Y1 Y
  163.   BlinkerAliGenie.attachPowerState(aligeniePowerState);      //天猫语音操作注册函数# g7 ]: I1 R2 O
  164.   Blinker.attachHeartbeat(heartbeat);              //app定时向设备发送心跳包, 设备收到心跳包后会返回设备当前状态进行语音操作和app操作同步。/ ^9 q8 i- d( m% U6 p; J

  165. 2 I( h# e3 @* W  ]# a9 P* e2 L+ u
  166.   Button1.attach(button1_callback);             //app上操作必须的注册回调函数关联按键名“Button1”和判断程序“button1_callback# O0 a% i. P5 m+ c* W4 P
  167. }
    $ p- }) D1 N& F. o, P
  168. void dataRead(const String & data)
    4 s* p% w4 @% X  Q6 N
  169. {
    , Y0 n# r9 G! ?( F: u7 x
  170.     BLINKER_LOG("Blinker readString: ", data);  n6 P3 Y; I1 Z5 z+ M
  171. * N9 R* O( X2 N& x, r8 _$ a
  172.     Blinker.vibrate();" X# q. \5 K; I9 z8 q
  173.     3 _! Q/ a# ^% M1 |) E; a' E
  174.     uint32_t BlinkerTime = millis();
    0 V+ E; t" {* w6 c% I7 a$ Q0 U3 H
  175.    
    * P- f2 N/ t/ Q% x4 ~
  176.     Blinker.print("millis", BlinkerTime);3 a5 |+ I$ o2 i, s* s
  177. }
    8 S+ Q& Z8 i. J5 I# j
  178. void loop()
    * F& m7 D) @6 M, W) U/ Q6 ?
  179. {8 K% O- E- X5 c3 X/ j. n, [
  180.   Blinker.run();
    " V& |+ m' O) ~2 _# Z
  181.   if (digitalRead(key)==LOW)0 P; w4 s9 @" V/ e2 B
  182.   {
    / n! k5 Q. s+ h) p& T- j( Q
  183.     Blinker.delay(200);0 A4 U7 W8 x! ?& K+ T5 M& j
  184.     if (digitalRead(key)==LOW)
    4 K: Q$ X1 \6 r
  185.     {
    ( O* m# W; ]' C' x
  186.           if (digitalRead(kg)==LOW)
    % L% x3 }4 e2 E0 G
  187.        {
    6 |& Y/ f' C/ A5 i
  188.             7 h7 r' u0 N/ R# W, `
  189.             digitalWrite(kg, HIGH);5 k& C3 M9 ^7 B: Q6 @; n
  190.             digitalWrite(de, LOW);5 L2 g& s! A2 }# }
  191.             Button1.print("on");
    ) q9 d, ~' K) K, y- f; \
  192.             Button1.color("#0000FF");              //设置app按键是浅蓝色
    + Z7 D5 p4 w+ W1 r5 z# W
  193.             Button1.text("开启中");! e4 _& v+ e0 A1 j8 @0 L* K
  194.        }
    / |- y- Q" d' M' S: k* D$ C# n
  195.        else if (digitalRead(kg)==HIGH)
    ; `4 ~* t/ N3 v1 I! w$ }* ~; ?
  196.        {. |( H6 t/ ^9 @% d6 C5 A) B" V
  197.             digitalWrite(kg, LOW);/ f4 m7 P, y* B2 [
  198.             digitalWrite(de, HIGH);9 Y5 V$ B  @  z
  199.             Button1.print("off");( }; Y3 C8 i0 w* X, L- C/ f) G* P- y
  200.             Button1.color("#00FFFF");              //设置app按键是深蓝色
    2 X  Q' g5 B; o/ S# u& Q3 b2 W
  201.             Button1.text("关闭中");+ h. A& H7 r$ Q; d! J. V
  202.        }
    ' c) N2 m7 z+ B2 @1 V( Q8 g
  203.       }+ o( h* V5 j! v- @3 q% l( [  x% ]- n
  204.     }* s1 x* P2 t6 x3 Z
  205. }
复制代码

  c6 U! C) _- n. ]- z1 W& D9 J
- y" c! Q( d8 T) l) T我没有用卖家给的码,我自己写了一个,参考我前面的文章最简单的8266天猫精灵控制开关,点灯、Mixly可视模块化编程 https://bbs.nasdiyer.com/thread-18755-1-1.html
, y# N) {2 y( v3 y, D2 J. R" _) E, B
2 w/ m$ b: Z9 e+ F- j  _把上面的2改成5,把高低电平对调一下就可以使用天猫精灵来控制你的这个插座了。我是把我的第一个插座放在了我的落地电风扇中了,当我慵懒的在沙发上刷着手机时候感觉有一点点热,我只要呼唤“天猫精灵,打开风扇”,就可以了。
, S" F& L8 _/ S" w( h
# T5 s) l- h7 m* M! R! m
: H. [- N& T6 F. w- m/ [, q4 k

0

主题

18

回帖

85

积分

初级渣柚V2

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

2

主题

11

回帖

56

积分

初级渣柚V2

积分
56
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
$ X  ?( d5 x; |5 `5 W买了几个   做工挺扎实的,但是外壳怎么拆啊  拿斜口钳拨了一个,   四个圆角的卡口根本没法正常拆 ...
; v( p! Y8 I5 n* ~* Z/ D
大力出奇迹呀

1

主题

8

回帖

256

积分

中级渣柚V1

积分
256
发表于 2021-8-29 08:14:58 | 显示全部楼层
a467913252 发表于 2021-8-24 15:531 d& m. L3 {8 T5 u1 z
买了几个   做工挺扎实的,但是外壳怎么拆啊  拿斜口钳拨了一个,   四个圆角的卡口根本没法正常拆 ...

7 I7 r* h8 l4 T! ^9 P" B$ A昨晚拆了一个,废了老大劲,想和卖家说的无损拆下来,不拆个三五个积攒经验,基本不可能

2

主题

11

回帖

56

积分

初级渣柚V2

积分
56
QQ
发表于 2021-9-4 23:05:22 | 显示全部楼层
sevenup0719 发表于 2021-8-29 08:14! u: Y# n$ B! W9 X9 R
昨晚拆了一个,废了老大劲,想和卖家说的无损拆下来,不拆个三五个积攒经验,基本不可能 ...

5 [( D: Y0 V" L' V& V你的搞定没  为什么我的根本没法烧录   连接不上,,用esp01s还没问题的
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-4-29 05:14 , Processed in 0.056390 second(s), 5 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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