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

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

[复制链接]

11

主题

51

回帖

209

积分

中级渣柚V1

积分
209
QQ
 楼主| 发表于 2021-8-21 13:57:54 | 显示全部楼层 |阅读模式
本帖最后由 易记 于 2021-8-21 14:05 编辑
- q* E. v- M$ p/ U5 p8 T' f# _/ w5 w" v: l5 L! x# W4 n! B
最近玩ESP8266,想做个天猫控制开关。
# k7 P! n& f4 a" S0 T* _但是我很懒,一个个配元件嫌麻烦,于是想着能不能淘到便宜的带电源板的模块,多倒是蛮多,一般都要20多块钱。: x, K" ~3 w$ l3 f9 T
还是闲钱上逛一下看,找到一个联想的国外版8266智能插座,价格才8.5元一个。有一点不足,就是只有三孔,要是五孔的就好了。老板说五孔杂牌价格一样也有货,晚两天发布。6 G2 ~" H* P5 Z: U  q8 }% C% {
QQ截图20210821125037.jpg 7 l# X1 |4 x+ r% w! E

3 L, T0 R7 {7 w& }( W
* n3 D5 O/ q) A% L+ H
问了一下店主,买20个一盒才包邮,想着20个还是有点多,买了5个,连运费47.5元。6 T6 i- M  L  S& ?" f

, K0 [% O6 z1 D2 ?" b3 V QQ图片20210821124517.jpg
0 p+ x5 `: t1 z! q. N# f, i" z

! K8 q1 n' B) p" u9 U. j# j+ y! |+ p* y4 p& X! L
2 M7 s/ f& q# E9 a; s
到手,当然是拆拆拆。
+ Y# N7 `# D6 M' T IMG_20210820_134104.jpg
; }& z' j. |3 q, H6 x" B& {7 p3 _+ c
" w0 e7 W9 c& F# D
联想的做工,还是感觉不错的,光这个继电器应该也要个7-8块钱。
% R4 I9 i2 L% _, C1 U% I/ M IMG_20210820_160634.jpg , ]9 G9 u$ f; t$ X9 ~* A

9 A: b7 ~/ h2 q
, Z- I* t) K( p- X
继电器是两组常开,感觉要是接电灯双控开关是不是有点麻烦的,不过用于插座是很安全,要断二条线都断开。
# _0 h' I' o2 e QQ截图20210821133707.jpg $ A: ^3 _8 d% p# k; W

  h  [9 m: ~! h2 n2 C5 r IMG_20210820_134114.jpg ; F1 z, s% h/ x) p1 t) ], K
: z, F* l4 z( [- c6 a
电源芯片8 O3 ?# C+ s# U9 z- j

* x! _0 V, x" g# c" P$ F4 {/ O) Z/ Q9 o' k- }, [3 a- {7 P$ Y# b
- }2 }* v  ~7 @) F1 G
有一个按钮,按钮有二个蓝色LED灯
& e/ ]8 g* \& O* d IMG_20210820_134157.jpg + Z# |4 b9 |& j% Y/ w3 w

1 p6 [/ ?/ L1 b9 H) R) L
2 Y  t8 W+ [4 q! z
8266
; x# V, x! O. N' P  { IMG_20210820_141913.jpg
  U/ N' k% ^0 l0 m& J
( D" y8 j- E; d& B- Z  x

+ ~7 r% e! q! a3 Z$ z) W
, ?# X" I: v8 m, _

) Y7 @4 d! p/ Q  z) ~& v$ w9 l( ?接下来就是刷机了,版子上面都预留测试点。# ~7 w) R: V0 W9 ^1 N2 w
接线比较容易,上面都有标示,GND,3.3V,TXD-RX,RXD-TX,还有一个就是IO0接地后刷机。/ X; w0 Y1 U& Q7 [
未标题-1.jpg
+ ^- n+ \/ ~$ d9 v. w" ]& }- e( m! R: B
注意RX这个点,就是3.3V边上的这个点,焊盘设计的就点问题,电烙铁热一点或是焊的刷机线过粗的话,容易掉焊盘。
; f5 I; H6 Z9 g  \! h1 w& O: Y; C要是掉了就只有一个过孔了,要是焊不上,只能再拆开接在另一面,所以为了避免不必要的麻烦,请注意一下。
. ^+ y5 ?- T/ d- C" A

1 t$ o1 g4 B: C; b( M- u6 |5 I& ^) Z; h- M4 D5 L* T

& g! q3 V, i% H$ V# E4 l" t* u; D
% V4 k0 n3 U/ m( G& |8 u( O
    5号脚位是继电器输出- j2 o! X& E1 k  k4 U# d# e/ E0 Y; H
    12号脚位是灯输出9 ~+ N* Y0 ?7 A4 J' b2 G0 D
    4号脚位是按键
! S+ p/ r( j! b* U* g" M% w  Y

7 ^& A, n( {. `1 h' ^" \' {

; `( [5 _4 I2 h  b( c0 C" g' x0 e) U$ a0 ~; E/ E7 B
, B  A' H0 `( k( n+ x4 Y
卖家有发一个源码,如下
  1. #define BLINKER_WIFI                    //官方wifi协议库
    ! F( D" g5 @4 Q6 o) j2 ~  x: H: Z: E- }
  2. #define BLINKER_MIOT_LIGHT              // 设置小爱灯类库2 X$ E4 U# ?8 X" l: f
  3. #define BLINKER_ALIGENIE_LIGHT          // 设置天猫灯类库
    4 n4 B& o. |$ g# V' ^1 L
  4. #define BLINKER_PRINT Serial            //串口协议库
    * c7 U9 X# ?* l. S; I4 K
  5. #include <Blinker.h>                    //官方库
    ! P4 s! z6 z$ `1 D% t3 J5 a
  6. #include <ESP8266WiFi.h>                //官方库
    / N0 B1 c* u5 i7 k
  7. WiFiServer server(80);                  // 服务器端口号
    4 N3 V9 I! e/ ^4 r8 q

  8. & `+ o7 @2 n5 M' N3 P: A
  9. char auth[] = "c4942fb1d5e4";     //设备key
    9 s' t3 J! T' {
  10. char ssid[] = "wanboshi";     //路由器wifi ssid: X7 u3 ^8 S* {4 i: ~
  11. char pswd[] = "1365662999813586348220";     //路由器wifi 密码" i* g  @" C: c( W

  12. ( J8 o- c/ b7 K+ o
  13. bool oState = false;: u+ B* i- @  u4 E
  14. 5 m: l8 x3 D# b. T4 A: ?! j
  15. int kg=5;//继电器输出4 ?7 N( L( n# w9 S
  16. int de=12;//灯输出$ j! d) h6 ~' V# G' ]
  17. int key=4 ;//按键* I; U# g# F$ V
  18. //*******新建组件对象& I4 I1 c( H1 }* E

  19. 4 X& v* Z* \2 P9 w+ a) r; Z6 v- r0 O
  20. BlinkerButton Button1("btn-abc");              //设置app按键的键名
    " r. I5 @; S7 u; y1 i
  21. //*******app上按下按键即会执行该函数app里按键
    + |9 V. B5 T5 I/ T! q3 Q
  22. void button1_callback(const String & state)# j9 r- p7 [, }- e8 t
  23. {3 U1 _" _0 b2 E( ~. _2 E
  24.    if (digitalRead(kg)==LOW)+ m, j2 z2 e* t: n+ J
  25.    {6 L- F) s; b+ c* s: C% W
  26.         BLINKER_LOG("get button state: ", state);
    ( ]( {* k1 C+ e6 f! Y  L
  27.         digitalWrite(kg, HIGH);. L/ [' \6 c2 T# v4 z! S4 u+ {
  28.         digitalWrite(de, LOW);
    " X- {( l  y) ?( C
  29.         Button1.print("on");( u5 v8 B6 Q3 w' Z' b9 @; O. g( `
  30.         Button1.color("#0000FF");              //设置app按键是浅蓝色8 D9 ^  x! M6 u9 W
  31.         Button1.text("开启中");
    : v; h0 S! K; O7 y) J3 j  b( @* k
  32.    }
    " Q: @; w7 m! a( w/ {7 r
  33.    else if (digitalRead(kg)==HIGH)& ?* P0 c! u. A& s
  34.    {
    : @+ Z+ e* L' h4 _
  35.         BLINKER_LOG("get button state: ", state);! ~$ B+ U' d) ~/ g+ e3 X* W
  36.         digitalWrite(kg, LOW);& B/ m0 Y( C. u, a5 Y  s
  37.         digitalWrite(de, HIGH);
    . H' T% k5 R: q8 {2 g/ R
  38.         Button1.print("off");# ?+ d1 X3 F: J# |4 H/ E
  39.         Button1.color("#00FFFF");              //设置app按键是深蓝色5 W; J# B& I) M
  40.         Button1.text("关闭中");
    6 d3 C8 j% `$ s! X+ ~. _% O
  41.    }( a( ^  {6 _# ~! y3 W
  42. }
    0 T9 }3 ~& M  A# w* c* l

  43. ; V: @5 u) c! F: X* R# F3 f/ w
  44. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    # h( v  m4 j; }4 C* G! r; y

  45. / E/ {0 g( O* C2 `
  46. //*******如果小爱有对设备进行操作就执行下面8 Q  B, j. I1 V6 f, n/ \& [# D
  47. void miotPowerState(const String & state)
    ' h9 M8 ^+ E, [- e
  48. {
    9 Y: B/ w' d* e9 W# W3 u: A
  49.     BLINKER_LOG("小爱语音操作!");              //串口打印
    ; e. ~6 u' s; W; D. `1 n
  50.     if (state == BLINKER_CMD_ON){2 k" _" S% w" Y* x( U
  51.         + P& N0 G7 r2 ^/ r. H
  52.         digitalWrite(kg, HIGH);, C0 g( o8 V7 S- ]& p
  53.         digitalWrite(de, LOW);
    5 d0 b, E! [% C' M
  54.         Button1.print("on");
    7 ?# d8 [, i# e* D
  55.         Button1.color("#0000FF");              //设置app按键是浅蓝色
    : j- f9 K, f# E4 u/ h' }0 w6 M
  56.         Button1.text("开启中");
    5 o% H4 @$ T! O8 r" I) ]& z
  57.         BlinkerMIOT.powerState("on");% |/ ^4 X$ y( }* N: {2 ], l; I
  58.         BlinkerMIOT.print();
    2 X: e  P/ Y7 \* U: `/ m" H/ p+ V$ f9 E
  59.    }
    0 x9 s4 k* R5 z' ~7 ?8 E! {
  60.    else if (state == BLINKER_CMD_OFF)
    . ?9 J( M. C- V2 i! u' {( ?+ x
  61.    {9 b! Z$ ?$ L+ C  M- e- e
  62.         
      K! C) L  v$ D2 H% u$ ~
  63.         digitalWrite(kg, LOW);
    0 E8 h$ }, ~( f4 ~
  64.         digitalWrite(de, HIGH);* U. b, J! v+ v# \$ f
  65.         Button1.print("off");( S0 Q* q( P; M1 l5 R
  66.         Button1.color("#00FFFF");              //设置app按键是深蓝色3 t7 C$ r! ~2 h, b- ^3 N
  67.         Button1.text("关闭中");
    " h# a) l1 z/ H* w( T& s9 x
  68.         BlinkerMIOT.powerState("off");
    . _, w% \9 j/ O- o4 \, X
  69.         BlinkerMIOT.print();/ Q" B2 t$ [) S- B  t. c- l
  70.    }
    ; |6 A9 S/ z/ l
  71.        & B' a+ D6 y; P% P# r0 _

  72. 8 _  ]/ k# I3 J2 ?  m
  73. }8 O; Q6 {" Y3 w$ o* ^( ~2 ?# I
  74. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    ( ~- w( S" ^& p( z  A
  75. //*******如果天猫精灵有对设备进行操作就执行下面' d. e6 I, K. a1 ]" `
  76. void aligeniePowerState(const String & state)
    - n  B# s+ [* ]7 e/ n
  77. {5 c; M/ T' N- E  W" o
  78.     BLINKER_LOG("need set power state: ", state);
    + U' Q2 \* V( N9 `0 J7 z
  79.     if (state == BLINKER_CMD_ON)# h$ }; M/ \% l
  80.     {+ J0 O2 v/ N/ Q( i* n* g0 v
  81.         # ^  y- D) \1 q5 U  o$ {
  82.         digitalWrite(kg, HIGH);
    # f) T7 J' v' E4 I2 Q8 z$ S# Q
  83.         digitalWrite(de, LOW);
    7 t' R- m( [" w
  84.         Button1.print("on");/ U# S: Z& L, e2 `+ r' {
  85.         Button1.color("#0000FF");              //设置app按键是浅蓝色
    7 t' D+ B. d1 ^* A
  86.         Button1.text("开启中");  l& q; W4 r' M0 }$ }
  87.         BlinkerAliGenie.powerState("on");
    * Y' X  M0 k/ S
  88.         BlinkerAliGenie.print();
    ) ?5 o) h6 T8 U+ q
  89.     }% z& y' {1 C; D3 ]# Z' N3 h, K
  90.     else if (state == BLINKER_CMD_OFF)- N- ^7 l# S6 |! C0 C
  91.     {; P- A, [9 I& r/ }5 |
  92.         ; T- o7 T3 L! N1 m  z# ]
  93.         digitalWrite(kg, LOW);
    # z/ f! F3 U; k$ J( v
  94.         digitalWrite(de, HIGH);  I9 @1 T1 @) Q9 W1 Y, `
  95.         Button1.print("off");
    , Q/ x8 a5 z" k
  96.         Button1.color("#00FFFF");              //设置app按键是深蓝色, T4 Z+ m% O# S& Y7 `* x" F1 C
  97.         Button1.text("关闭中");
    5 E/ _0 v3 A! C5 H2 g! x) o0 f9 O) [
  98.         BlinkerAliGenie.powerState("off");% P% H& C0 z2 u
  99.         BlinkerAliGenie.print();0 L( e% f; o2 q0 F
  100.     }
    4 P8 w6 o; m: ]5 a! l
  101.         
    " K/ _, U9 V$ |4 ]! e

  102. ) H- ?3 t1 w% F1 A5 z
  103. }9 s* Y+ j6 E6 M! \) Y9 p" s
  104.   //*******app定时向设备发送心跳包, 设备收到心跳包后会返回设备当前状态30s~60s一次0 Q* F; s5 d) K2 {3 c7 {
  105. void heartbeat()1 V. Z. u0 o- s8 `  l" d. ~1 h9 q* y9 _
  106. {/ Z$ J: v1 o1 f9 U9 f
  107.   BLINKER_LOG("状态同步!");
    6 P) }. C% x6 n. C. r; p! s# i9 q
  108.    if (digitalRead(kg)==HIGH) ; R4 ~7 i& `( j% f! Q% h. ^
  109.     { , _' M; L/ ^' U0 u
  110.       Button1.print("on");
    ( [# I+ g! l/ U1 `
  111.       Button1.color("#0000FF");              //设置app按键是浅蓝色+ t( I8 q. a1 O7 d9 }( U* k0 _
  112.       Button1.text("开启中");# f; ~9 r  R7 _* ~
  113.     }
    4 c3 b  [- E5 d4 A) P# q
  114.     else
    9 Y5 a1 D3 w9 F9 u7 \5 }. Y
  115.     {
    2 }! k8 r/ T2 j1 P2 z
  116.       Button1.print("off");5 Z. ?4 T. T  ?. t& v
  117.       Button1.color("#00FFFF");              //设置app按键是深蓝色
    . x! q' E$ F1 Z8 A- j
  118.       Button1.text("关闭中");! ^5 V; C% D- a; ~% X
  119.     . O1 ^! N3 w" Z% I4 V+ M  ~" `: ]
  120.     }8 |( i" {* k, p$ D  ^1 g
  121. }+ r& U. m& |. l$ z( p
  122. //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++: U" v5 ?) A9 X
  123. void setup()
    5 W- a2 W  O# p7 |9 \, K- }
  124. {. s+ [$ X& q! L$ I; j/ M
  125.   // 初始化串口, u1 O' U' G; i5 z. g* {
  126.   Serial.begin(115200);
    0 e& n- u7 S+ F4 ^0 |
  127.   delay(10);
    ) p4 L' T. k' [
  128.   BLINKER_DEBUG.stream(Serial);0 t; x9 q+ Z4 I" d/ \- D$ g( [
  129.   // 初始化有LED的IO
    5 l/ T3 I8 p: c: Q
  130.   pinMode(kg, OUTPUT);                 
    . s' }6 i& Y* |' b  s  @; X
  131.   digitalWrite(kg, LOW);//初始化继电器上电状态 9 m! M) p  z0 O$ T$ D8 O" Z; p
  132.   pinMode(de, OUTPUT);2 r* ^9 k; K  L* H1 F' l
  133.   digitalWrite(de, HIGH);
    ) v/ i/ Q# j7 \) g; U8 Y% O
  134.   pinMode(key, INPUT);            
    / L+ ?& C) _- h5 }8 _4 e! e8 L
  135.   Serial.println();9 o. |+ q2 I" f& ^6 b1 o, s3 o4 G
  136.   Serial.print("Connecting to ");
    ( e" Q6 t1 Y( \4 [4 ^+ M( Q4 [$ n
  137.   Serial.println(ssid);
    1 X; E* P7 q# k, o1 F6 ?4 D+ L+ @3 F
  138.   WiFi.begin(ssid, pswd);
    ; V+ n+ {! p0 [% X% ~: N# A! y
  139.   while (WiFi.status() != WL_CONNECTED) {$ z$ y2 A4 Q5 {
  140.     delay(500);
    6 c6 H# ]& o" k7 X2 e, }3 k) Y7 q
  141.     Serial.print(".");
    - a* I- X3 u! e1 o$ v- n/ W
  142.   }. {, L: r+ r9 l! T
  143.   Serial.println("");
    ; }3 a( ]7 x( E+ W; m
  144.   Serial.println("WiFi connected");
    , P0 v' A1 L5 x% K( r$ E  G
  145.   server.begin();
    : R* f% x& Y6 M1 b" P
  146.   Serial.println("Server started @ ");' v2 m* t. z! G5 s
  147.   Serial.println(WiFi.localIP());
    7 J$ y- q! q8 B5 R) [
  148.   //打印出IP地址,后期可以制作显示器来外部硬件显示ip# Q5 g7 j  w9 u. H
  149.   Serial.println("To control GPIO, open your web browser.");
    ; B6 B1 u6 R6 [
  150.   Serial.println("To set GPIO 0 high, type:");
    ! s) v: J* @3 K7 r
  151.   Serial.print(WiFi.localIP());: G5 Z9 F9 Y+ e9 b
  152.   Serial.println("/gpio/1");
    $ d  y8 w1 C7 Q/ W! f1 Z
  153.   Serial.println("To set GPIO 0 low, type:");: h' b* t/ H* G# j4 e) C3 a0 f1 g
  154.   Serial.print(WiFi.localIP());  p( {4 x" c- y/ {: i% L
  155.   Serial.println("/gpio/0");6 |6 y, h' M- M, ~3 j/ v$ d
  156.   Serial.println("To toggle GPIO 0, type:");* K5 y0 M7 u2 r' ]; P2 b
  157.   Serial.print(WiFi.localIP());  r& w' R0 K' _* Y: z
  158.   Serial.println("/gpio/4");
    - f- S: ?8 n$ z6 @, h
  159. - M2 F0 B& {6 W4 P( w$ i# S
  160.   // 初始化blinker
    + f1 d) l# K- @, @" O5 }  @% [
  161.   Blinker.begin(auth, ssid, pswd);
    ) ^) L' s4 b3 m3 t
  162.   BlinkerMIOT.attachPowerState(miotPowerState);              //小爱语音操作注册函数
    9 [, w4 ^& @  Z4 @& A' P5 B/ g
  163.   BlinkerAliGenie.attachPowerState(aligeniePowerState);      //天猫语音操作注册函数2 T& Y2 V0 [4 {* g
  164.   Blinker.attachHeartbeat(heartbeat);              //app定时向设备发送心跳包, 设备收到心跳包后会返回设备当前状态进行语音操作和app操作同步。
    ; D0 o8 A' t# h# x7 Q* `
  165. / i* U0 G% D7 E$ z: \. F- F
  166.   Button1.attach(button1_callback);             //app上操作必须的注册回调函数关联按键名“Button1”和判断程序“button1_callback% a  V3 d1 F: w" c" h
  167. }
    ! \5 i1 @! q( i, X
  168. void dataRead(const String & data)
    ) {" T2 }5 ]/ a
  169. {0 `# }0 t7 V- c; u: p' d
  170.     BLINKER_LOG("Blinker readString: ", data);
    ) s! {5 N* n7 Z+ \$ W8 f! m2 e
  171. ' h% K( r$ N" y! y) G) o& N( O
  172.     Blinker.vibrate();
    4 X1 _" j" n' E% F0 v8 i
  173.    
    7 w' k4 p) a) d) o; E
  174.     uint32_t BlinkerTime = millis();
    . r6 |4 i( U! h  N# D8 v
  175.    
    7 @7 ~2 [9 K6 @2 w7 A* s/ x
  176.     Blinker.print("millis", BlinkerTime);
    , T) Y; G" u: x& Q$ Y1 K7 R
  177. }
    7 K3 L7 \8 \, P! D) S0 k
  178. void loop()
    ! u% z7 m* j0 N% s& R
  179. {
    ) h4 [4 r% z7 q
  180.   Blinker.run();% G1 \' g- ^6 n9 n% j  w
  181.   if (digitalRead(key)==LOW)2 E/ a* y& V& R
  182.   {& D( O  q2 _/ d7 w' F+ E) f
  183.     Blinker.delay(200);+ j8 p. p2 d7 W5 C; p! e1 E+ ~
  184.     if (digitalRead(key)==LOW)' U0 g; v, y( R3 a! l  n
  185.     {3 V& H: a# s$ o; P' W0 a
  186.           if (digitalRead(kg)==LOW)4 j4 x* Q% c- @# I( P# M0 N
  187.        {
    4 A2 d( a: a. V' k5 j& Y
  188.             9 O  l( r- r2 R0 t- w, c
  189.             digitalWrite(kg, HIGH);* _8 ?9 e6 S0 p5 N+ `0 J
  190.             digitalWrite(de, LOW);
    $ V  _$ e- ]% F% a; I2 q
  191.             Button1.print("on");6 t+ a1 s! z$ W4 ^$ d
  192.             Button1.color("#0000FF");              //设置app按键是浅蓝色4 C" L# @8 }! [! B4 n* t
  193.             Button1.text("开启中");& w, E: E$ \. {" d
  194.        }( p0 l3 z4 Y5 K
  195.        else if (digitalRead(kg)==HIGH)+ X5 |' y* i8 }: p: @" Q3 i8 S
  196.        {
    & s& `9 x  h9 o  C" ^  @  ~% W
  197.             digitalWrite(kg, LOW);
    ' p5 P1 h% I$ k8 v( t
  198.             digitalWrite(de, HIGH);3 B8 ^: r/ f& N: G& x8 }5 [
  199.             Button1.print("off");: i6 O4 V% O: t- Y( E, X- c% P
  200.             Button1.color("#00FFFF");              //设置app按键是深蓝色( Q. Y1 A+ u& ]5 Z" W( S
  201.             Button1.text("关闭中");
    & X& B. s# I' Z$ X3 P
  202.        }
    2 x0 _  `( C" v; N; G
  203.       }9 ~9 V0 n7 A- O5 z- s
  204.     }2 d3 _6 q" l, j
  205. }
复制代码

. s- O/ b+ G9 W  k2 ]7 V) A' z' m( ~& C5 k2 S& G
我没有用卖家给的码,我自己写了一个,参考我前面的文章最简单的8266天猫精灵控制开关,点灯、Mixly可视模块化编程 https://bbs.nasdiyer.com/thread-18755-1-1.html
& S& e5 O- }: h' g! n$ a9 C' }9 E6 v: k1 w3 F- n  J8 I7 u
把上面的2改成5,把高低电平对调一下就可以使用天猫精灵来控制你的这个插座了。我是把我的第一个插座放在了我的落地电风扇中了,当我慵懒的在沙发上刷着手机时候感觉有一点点热,我只要呼唤“天猫精灵,打开风扇”,就可以了。* w3 C% x' Y  o* ]1 C

% ^- D5 N: a! A, [" S) Q
: f4 f# d- A6 L" m: E

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:537 ~% t3 B$ z- ]3 K* x- n
买了几个   做工挺扎实的,但是外壳怎么拆啊  拿斜口钳拨了一个,   四个圆角的卡口根本没法正常拆 ...

1 ^4 [& ^9 r& M! h* D; B大力出奇迹呀

1

主题

8

回帖

256

积分

中级渣柚V1

积分
256
发表于 2021-8-29 08:14:58 | 显示全部楼层
a467913252 发表于 2021-8-24 15:530 |  Y* z: d/ W; ]5 d8 U. L  x2 v
买了几个   做工挺扎实的,但是外壳怎么拆啊  拿斜口钳拨了一个,   四个圆角的卡口根本没法正常拆 ...
! N# H. }& ]- t/ z8 Y: V/ X
昨晚拆了一个,废了老大劲,想和卖家说的无损拆下来,不拆个三五个积攒经验,基本不可能

2

主题

11

回帖

62

积分

初级渣柚V2

积分
62
QQ
发表于 2021-9-4 23:05:22 | 显示全部楼层
sevenup0719 发表于 2021-8-29 08:14: U# l0 k' k* L- f  o
昨晚拆了一个,废了老大劲,想和卖家说的无损拆下来,不拆个三五个积攒经验,基本不可能 ...
: W% A8 j( V: e- d' Z! s# F
你的搞定没  为什么我的根本没法烧录   连接不上,,用esp01s还没问题的
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-5-30 12:33 , Processed in 0.303153 second(s), 3 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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