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

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

[复制链接]

11

主题

51

回帖

209

积分

中级渣柚V1

积分
209
QQ
 楼主| 发表于 2021-8-21 13:57:54 | 显示全部楼层 |阅读模式
本帖最后由 易记 于 2021-8-21 14:05 编辑 * L; y2 q( q9 H7 D

$ Q2 |! A- `) }3 e4 I5 t8 P  B最近玩ESP8266,想做个天猫控制开关。
* W3 D0 n3 \+ Z5 j但是我很懒,一个个配元件嫌麻烦,于是想着能不能淘到便宜的带电源板的模块,多倒是蛮多,一般都要20多块钱。* t! ?; V4 n" _, w: e6 Q; }
还是闲钱上逛一下看,找到一个联想的国外版8266智能插座,价格才8.5元一个。有一点不足,就是只有三孔,要是五孔的就好了。老板说五孔杂牌价格一样也有货,晚两天发布。8 s3 N' n. F& s0 x4 ~
QQ截图20210821125037.jpg
- w5 h" D7 x( i) f4 e- g
8 P. |! X4 q& Z( S" Y

8 P" H0 Z- R, u9 f9 o& g问了一下店主,买20个一盒才包邮,想着20个还是有点多,买了5个,连运费47.5元。
2 N5 O3 G. D. B8 o' y, Y! L  i
, t; G* }, z: u# B- D3 G QQ图片20210821124517.jpg $ ?. ]& D) l& ?- N0 m0 c; P- |6 J0 A  _* }
9 N4 M* l1 u4 a

, a- f) L+ k  n
" g: F. A1 \" V/ j* [1 p) |2 p
到手,当然是拆拆拆。
; ~2 Q( b" S* Y# J/ W! D+ i6 q, B( i IMG_20210820_134104.jpg 1 a/ X$ j. w1 U& h# ]4 s
7 g5 S. L; B4 y. i  D9 M, N4 @8 H
- G. ~- ~, H% y& k5 x
联想的做工,还是感觉不错的,光这个继电器应该也要个7-8块钱。
$ e4 y3 f, y% d/ ^ IMG_20210820_160634.jpg ' _1 }, ]1 z* h( a. ]% ?& r
3 U" ?% m5 x7 T# U' }
. |( ^' w# R9 f# r) F: p% F- m
继电器是两组常开,感觉要是接电灯双控开关是不是有点麻烦的,不过用于插座是很安全,要断二条线都断开。9 D3 Q( |1 v( s5 n+ k7 T( o% {
QQ截图20210821133707.jpg
9 T" ~- N- ~% a. @
' k# U) O5 V& k' s, l/ e
IMG_20210820_134114.jpg   J2 k, N4 {( s

! K+ @0 M/ @6 z: p' c8 `% \电源芯片
, I/ B. ]( Q$ S1 r' @
( Z; y4 S6 D# [. i. `$ T& M
6 e7 w$ N; b/ A/ \6 R4 N1 Q
/ ?3 A* E. }$ D$ o' ~( m& p0 S/ d
有一个按钮,按钮有二个蓝色LED灯0 q$ c# i7 {: T4 [
IMG_20210820_134157.jpg
* q/ ?# J1 f! r9 K9 X& d/ ~6 n1 ]. K" L, @+ v) Z
' S+ ~1 ^  b) L& ?
82669 S6 O) O; }4 O+ T; x  J2 T
IMG_20210820_141913.jpg % G3 x. |) a5 u) @9 s8 a( g

: Y7 [6 O3 {' o# n( \9 d& j

" W; y8 [+ h" h' S$ D5 t$ f, T
4 Y7 t5 q7 K: v! ~# s
* e" N# {- Y1 A
接下来就是刷机了,版子上面都预留测试点。
) r1 R$ k0 h& i$ q0 A接线比较容易,上面都有标示,GND,3.3V,TXD-RX,RXD-TX,还有一个就是IO0接地后刷机。
5 o8 _3 r; t/ o/ A: a2 ~! O  \ 未标题-1.jpg , b/ e( A  T$ |1 y1 t# g& F
注意RX这个点,就是3.3V边上的这个点,焊盘设计的就点问题,电烙铁热一点或是焊的刷机线过粗的话,容易掉焊盘。
9 ^5 S: V( P% a! G- V! u要是掉了就只有一个过孔了,要是焊不上,只能再拆开接在另一面,所以为了避免不必要的麻烦,请注意一下。
6 I" V5 W# [. o3 j3 Z9 f

" a3 d, G5 o3 q; E( \6 E& p/ ]2 V) L/ e; R4 S6 G  g/ W2 N
7 A6 Z( \7 }6 f. A; _' g

7 F) f$ n2 ^* {: u" D: e; E  B3 g( x

# u2 w! ^! A: g1 E5 q    5号脚位是继电器输出. q& w+ W( e7 b$ h5 F
    12号脚位是灯输出
: u1 W% x  [0 _" U* Q) p    4号脚位是按键
8 A  W- i  h6 @7 O; _1 o

" P& b8 o. k3 m
7 q, S7 m9 F" ]1 `' K

5 l% f" p$ e8 d  v3 E5 \
' H8 G( T" ^, D4 c9 |! i
卖家有发一个源码,如下
  1. #define BLINKER_WIFI                    //官方wifi协议库
    ' {/ U! A6 Z! d4 K2 r
  2. #define BLINKER_MIOT_LIGHT              // 设置小爱灯类库; n& ~4 C  i, N- o; D% l5 T
  3. #define BLINKER_ALIGENIE_LIGHT          // 设置天猫灯类库; {0 d$ ]$ j8 k; E4 q" U$ k
  4. #define BLINKER_PRINT Serial            //串口协议库! T* N2 B+ A' l8 P; R6 g6 \9 ?
  5. #include <Blinker.h>                    //官方库
    ) L! J0 s- c5 H' j9 L) O
  6. #include <ESP8266WiFi.h>                //官方库8 h$ x) Q! P1 T' m
  7. WiFiServer server(80);                  // 服务器端口号
    4 _, G% o/ o( }+ q+ [
  8. - a3 D  @: K: Y" [& j, O
  9. char auth[] = "c4942fb1d5e4";     //设备key# w# ~4 {& d8 ?
  10. char ssid[] = "wanboshi";     //路由器wifi ssid' N5 V4 N  u1 H; ?8 W, v# U; g1 h
  11. char pswd[] = "1365662999813586348220";     //路由器wifi 密码4 W, @8 V- d: ^7 f: ]: m9 ^! n
  12. 4 d  z& g! {2 Q( I3 Z+ X
  13. bool oState = false;+ S4 v5 A1 R8 H+ e$ n
  14. " U$ }6 x# r8 o: M* [9 C
  15. int kg=5;//继电器输出
    - ?6 S( Z' Z( A9 v, O" I- ?
  16. int de=12;//灯输出% l% M  T$ g! P! j$ X' c
  17. int key=4 ;//按键8 V% y) ~. C4 h1 j. {6 K0 `
  18. //*******新建组件对象7 x8 o$ E+ ^/ p9 x  J
  19. 7 {5 A3 l+ k" w, N
  20. BlinkerButton Button1("btn-abc");              //设置app按键的键名
    . D) L- e+ `( `& x9 V: F
  21. //*******app上按下按键即会执行该函数app里按键1 W: T7 s, F  W
  22. void button1_callback(const String & state)
    6 o6 x8 ^/ K: S. f9 [- b
  23. {% ?0 o% B* A0 y) ?2 n$ E
  24.    if (digitalRead(kg)==LOW)! W2 x! Q; X2 P+ L: `
  25.    {4 O. ?/ v* d( {$ a0 h( N6 L
  26.         BLINKER_LOG("get button state: ", state);
    / x) a3 ^" C: w5 A/ Q$ s! B
  27.         digitalWrite(kg, HIGH);
    5 @# E. h6 a& R$ D/ z; z
  28.         digitalWrite(de, LOW);2 I- A( k$ A5 i7 }8 R* \$ r7 U2 M- j
  29.         Button1.print("on");
    % m0 H  T+ j0 T/ h$ [, b7 r
  30.         Button1.color("#0000FF");              //设置app按键是浅蓝色
    * h& B, [; u: s
  31.         Button1.text("开启中");
    / P" o6 p; O  q9 W6 z
  32.    }
    + T4 s- [1 k+ k! L! I
  33.    else if (digitalRead(kg)==HIGH)
      z$ ?* U4 s: K' h, F6 _
  34.    {
    9 x$ ]2 J8 ^% E: i
  35.         BLINKER_LOG("get button state: ", state);- E/ g" H. W0 Q! H) w7 P4 m
  36.         digitalWrite(kg, LOW);! m5 t5 K* S6 {& Z8 J! [7 {0 _
  37.         digitalWrite(de, HIGH);. A7 ^+ L1 q4 k( y
  38.         Button1.print("off");
    0 v0 ]3 m6 [* k. w
  39.         Button1.color("#00FFFF");              //设置app按键是深蓝色( `2 [1 O/ H2 U
  40.         Button1.text("关闭中");4 G* s8 d3 R$ ~% v- N) d; H$ ?+ [  l
  41.    }5 ]4 I7 h4 z8 o+ ^
  42. }
    ( ~# I0 X( {4 m0 p7 e; l
  43. , \& b7 @# w" {" L1 b$ O$ n" Y
  44. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++/ C' }8 b% F2 E5 `

  45. ! L0 M; q6 K2 Q+ [
  46. //*******如果小爱有对设备进行操作就执行下面' `- E$ V! A5 g, g
  47. void miotPowerState(const String & state)
    0 _# I( t3 Z. W, W" t
  48. {
      Z) v  y7 {) J# h" e
  49.     BLINKER_LOG("小爱语音操作!");              //串口打印
    2 g) q8 ?  I6 W
  50.     if (state == BLINKER_CMD_ON){2 J, @! y( ~9 F- V7 ~( t8 z1 |6 R, [
  51.         
    % g, q: {, w) M) J# o: O
  52.         digitalWrite(kg, HIGH);/ Y: ?7 _$ c$ n6 l- G6 n: D
  53.         digitalWrite(de, LOW);% @, G, L0 D5 ^4 m0 }
  54.         Button1.print("on");
    7 b: \+ z; {8 ^$ H4 Q2 ?+ L
  55.         Button1.color("#0000FF");              //设置app按键是浅蓝色7 c# }0 D& _' Q& e& k4 _* u3 _
  56.         Button1.text("开启中");
    6 U8 A2 V' R) m) B% a; d+ M
  57.         BlinkerMIOT.powerState("on");* _% D$ }  p& t* |$ O
  58.         BlinkerMIOT.print();
    9 B- W/ d/ M7 `. \
  59.    }
      g9 D% [  E7 p$ @1 X
  60.    else if (state == BLINKER_CMD_OFF)5 n/ G8 ^0 L: c2 L0 b
  61.    {
      N- r  T, }1 F, @' e" h
  62.         
    5 X$ n+ \$ `2 V4 F1 ]+ Z
  63.         digitalWrite(kg, LOW);
    : \; a: L: K, u
  64.         digitalWrite(de, HIGH);7 ?7 J. v! E7 x, i2 G) N$ R
  65.         Button1.print("off");
    & r$ b6 ]+ n) w0 Y" a
  66.         Button1.color("#00FFFF");              //设置app按键是深蓝色
    # R+ b9 \# @" I6 g: P8 t3 y* u
  67.         Button1.text("关闭中");4 D& @- y5 j" L6 J  z: S
  68.         BlinkerMIOT.powerState("off");
    / K$ m  C+ n+ c
  69.         BlinkerMIOT.print();, |0 S. u+ Y5 r+ A: V: @" X
  70.    }
    , d" e+ v/ J4 X' i1 P+ K+ x
  71.        : B' R7 ?# t% Z& i" y6 q2 |
  72. ) x' m  U- w3 r
  73. }
    + K4 r: A' [2 t
  74. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    , W$ b2 w$ o, R( E, t- `" N4 `8 c5 r
  75. //*******如果天猫精灵有对设备进行操作就执行下面7 o% s0 F- F& }8 m
  76. void aligeniePowerState(const String & state)$ s* m, \1 {' l+ O* ?3 I
  77. {
    : J& S1 J; m1 c; h# x. q  D
  78.     BLINKER_LOG("need set power state: ", state);3 |6 ?1 i5 c8 Z( O/ h+ F: W1 k+ N
  79.     if (state == BLINKER_CMD_ON)& G  y  z4 m0 Y
  80.     {6 Q4 Z% \8 w7 \' c
  81.         4 M4 Y( c5 i  b  D+ Q
  82.         digitalWrite(kg, HIGH);
    6 \* ]; w2 o) F2 t) E7 p% S1 Y
  83.         digitalWrite(de, LOW);, L9 e% q7 r1 q0 `2 j# I& y
  84.         Button1.print("on");
    / f: p1 g9 h" P9 T  ~% `
  85.         Button1.color("#0000FF");              //设置app按键是浅蓝色
    ! e0 [( S: E8 G
  86.         Button1.text("开启中");4 N6 |5 D0 Z3 c. [4 u* }9 G) J
  87.         BlinkerAliGenie.powerState("on");0 Q( V/ s5 j0 v& l+ }. d! |1 g
  88.         BlinkerAliGenie.print();' |- |( z/ a; X$ a4 C. ]
  89.     }* T# f8 o0 U- M
  90.     else if (state == BLINKER_CMD_OFF)
    ) A) H" d4 S+ m! z9 \$ ?% U* a
  91.     {0 m* v- O# D# m
  92.         , p8 {" q2 y# M
  93.         digitalWrite(kg, LOW);; Z5 c% s4 q; L3 {
  94.         digitalWrite(de, HIGH);
    ) y5 b# M  M: W
  95.         Button1.print("off");# a$ e/ _% j" I( |+ Q+ _
  96.         Button1.color("#00FFFF");              //设置app按键是深蓝色$ c1 `- w1 a6 t, p
  97.         Button1.text("关闭中");1 C: ~5 D$ M& _8 R9 l
  98.         BlinkerAliGenie.powerState("off");
    + A5 B# S$ C+ n
  99.         BlinkerAliGenie.print();
    ( z2 q/ o! d6 C; d; \: S; E
  100.     }- s, U. v! u  d  q
  101.         
    . t" e3 }: z  E  O8 u  k" m

  102. ( P4 @% W. l" x4 }
  103. }
    8 B( b+ ?8 O4 `1 \! t; M1 F# ]
  104.   //*******app定时向设备发送心跳包, 设备收到心跳包后会返回设备当前状态30s~60s一次. Y% ]' N% l7 u8 B, f% n( T* E
  105. void heartbeat()
    , {7 t+ c; c6 C; c) f) v, ^
  106. {
    . L  Z. C2 A& X6 \2 W# N
  107.   BLINKER_LOG("状态同步!"); 8 Y0 u6 s' {- S* f7 D* s
  108.    if (digitalRead(kg)==HIGH)
    + g" J3 B# e& s- ?* E( a
  109.     {
    * P. F  h6 [& |" e0 G; v8 ?
  110.       Button1.print("on");6 ?: m+ L3 `9 v' o
  111.       Button1.color("#0000FF");              //设置app按键是浅蓝色
    1 x8 Z# Y" ^8 ?
  112.       Button1.text("开启中");. q- q7 F8 u  r; n4 [& T3 a
  113.     }) P# @, ?* g: }/ w2 ~
  114.     else
    + W" C: n5 m  d. M" a
  115.     {
    / l- r& C% n& `6 E: [" O( P
  116.       Button1.print("off");: C( w! Q$ c4 f1 r
  117.       Button1.color("#00FFFF");              //设置app按键是深蓝色/ b6 V# x! N- x' z9 S+ K# k% q! |$ B, @
  118.       Button1.text("关闭中");$ y* b) E: E  W) p" s
  119.    
    " h3 d  L) ]' `1 `2 U
  120.     }
    ; E, x6 k, i: b& S- q: F7 `& V
  121. }
      k: e# q. k" n
  122. //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
      t) j% H$ a' V& A8 s- b
  123. void setup()
    3 C7 K2 p" _5 _" M' Q( N
  124. {' V4 |" y3 r, f6 }$ F
  125.   // 初始化串口) O& S# l/ n$ F
  126.   Serial.begin(115200);/ Y+ W. d9 }! Q1 `  p/ N
  127.   delay(10);7 ?. M1 A2 ~' S) E+ z0 }7 k2 f1 n
  128.   BLINKER_DEBUG.stream(Serial);
    1 W0 f) |, Q4 O* [" G( t
  129.   // 初始化有LED的IO
    - e% J6 D, E* h: U% d! X
  130.   pinMode(kg, OUTPUT);                 
    : a% n! j  I7 \0 j% U
  131.   digitalWrite(kg, LOW);//初始化继电器上电状态 - r  i$ X7 K3 R* c1 p5 {5 _
  132.   pinMode(de, OUTPUT);
    ! F4 L1 g9 W( P" l' f  [8 R4 j! a
  133.   digitalWrite(de, HIGH);
    & {* O! j0 K$ }) J2 M
  134.   pinMode(key, INPUT);            
    6 }9 ], }& K* \* _3 e
  135.   Serial.println();4 K0 d( X: u+ h* H7 N
  136.   Serial.print("Connecting to ");
    * ]  P/ [' r" E/ g- g& K& p
  137.   Serial.println(ssid);. e4 l% N# @7 q! P0 E
  138.   WiFi.begin(ssid, pswd);
    + I- ^3 l4 {0 ~% }7 D
  139.   while (WiFi.status() != WL_CONNECTED) {
    3 n  L( z/ t* \* c2 d0 M8 K
  140.     delay(500);. U, \9 N- D: a) F
  141.     Serial.print(".");" A7 Z, l. ~1 H" w
  142.   }5 n% M# y/ J8 d+ E5 V. m( A
  143.   Serial.println("");
    / r# L/ I7 n+ n# [. V# i( N
  144.   Serial.println("WiFi connected");
    + l, `( \* U: f9 u! b
  145.   server.begin();
    ' D1 r+ \8 |2 J2 A+ ]8 ^" d) s' y
  146.   Serial.println("Server started @ ");6 h, @& K( y; ]% O( J! t
  147.   Serial.println(WiFi.localIP());
    3 Y. H/ P, |5 A* u) S7 ]1 Z: W$ c
  148.   //打印出IP地址,后期可以制作显示器来外部硬件显示ip, d/ N0 V. g1 o. M
  149.   Serial.println("To control GPIO, open your web browser.");
    7 z; h$ j4 k1 w+ w
  150.   Serial.println("To set GPIO 0 high, type:");  p) O- O2 n# }, f" U- G" s; d
  151.   Serial.print(WiFi.localIP());' n! x7 F4 n( I; ?' `- c* G
  152.   Serial.println("/gpio/1");
    0 S  F" ?+ _$ r/ u* q
  153.   Serial.println("To set GPIO 0 low, type:");
    7 r8 T# e% g5 z0 ^# F2 v' F
  154.   Serial.print(WiFi.localIP());; B& j' Z0 y( D0 d; a) G, V( Q
  155.   Serial.println("/gpio/0");
    0 f" |7 z+ `2 z4 A
  156.   Serial.println("To toggle GPIO 0, type:");8 O0 a5 y( U6 e, c4 U
  157.   Serial.print(WiFi.localIP());
    5 M( w$ i  c9 [; j: O2 i2 i9 a
  158.   Serial.println("/gpio/4");
    : z; o& M- B6 s- f( s& {; v$ d- d

  159. % g- _" [( K3 G# Y* H
  160.   // 初始化blinker
    # q1 {0 X5 L# [
  161.   Blinker.begin(auth, ssid, pswd);
    6 [. q. U; J7 ?
  162.   BlinkerMIOT.attachPowerState(miotPowerState);              //小爱语音操作注册函数6 ~7 e6 p0 r4 X+ w6 C
  163.   BlinkerAliGenie.attachPowerState(aligeniePowerState);      //天猫语音操作注册函数
    , e- [6 r$ \) o; P4 ]  J- ?: g& h" V
  164.   Blinker.attachHeartbeat(heartbeat);              //app定时向设备发送心跳包, 设备收到心跳包后会返回设备当前状态进行语音操作和app操作同步。+ f2 H2 ~! m: S  r. d5 r

  165. ; J. Y# L. w, W9 ?8 O& a) S
  166.   Button1.attach(button1_callback);             //app上操作必须的注册回调函数关联按键名“Button1”和判断程序“button1_callback- ~1 e* {0 y6 {0 L
  167. }, W' S. r# }5 `- a2 y
  168. void dataRead(const String & data)3 R2 }: r3 ~8 i( u# c, d: x5 Z0 j
  169. {! o2 h1 v+ V) {- G
  170.     BLINKER_LOG("Blinker readString: ", data);
    - `- g& g# W1 Z4 `

  171. / _( \# T- |2 z' }3 F
  172.     Blinker.vibrate();
    9 u, n0 h! W% ?8 n7 T5 @: u
  173.     6 `; Q! l7 q& k8 D6 U1 B6 q
  174.     uint32_t BlinkerTime = millis();+ D$ q$ |9 Q( R( b& R' }( C8 R
  175.     ' e& `7 Y, t3 V4 x4 f1 m
  176.     Blinker.print("millis", BlinkerTime);2 o; L6 b+ n% r4 T0 E
  177. }
    ( K' z  O: Q# ]
  178. void loop()
    7 L1 X7 O6 P$ K# ]9 K, ?0 J
  179. {+ ]0 |1 l1 ?/ |
  180.   Blinker.run();1 ~1 D& h4 \) p4 q) D5 d0 K, q) Y
  181.   if (digitalRead(key)==LOW)* [8 e0 v6 |% L. l' C' n7 j9 f6 y0 o& I1 N
  182.   {
    - `, c/ k5 H; ^( L/ t
  183.     Blinker.delay(200);1 P2 q# O4 z( q
  184.     if (digitalRead(key)==LOW)6 ?% ~8 S" v/ o5 z* W, W% v
  185.     {
    5 @; z  [# N/ p! G0 H" b
  186.           if (digitalRead(kg)==LOW)
    7 i/ e) I0 }: ~' j2 s( t
  187.        {5 D7 m& T2 @; C2 }5 }% Y  H- ^
  188.             8 R* A# E' g0 M( Y; I
  189.             digitalWrite(kg, HIGH);  X) _! D) Q0 Z
  190.             digitalWrite(de, LOW);8 R$ h5 K* v3 g. X, e
  191.             Button1.print("on");: T$ z# g7 V8 Y/ Q
  192.             Button1.color("#0000FF");              //设置app按键是浅蓝色
    ) ?2 U$ R( t3 p, P
  193.             Button1.text("开启中");
    % L, e; W) r4 Q4 N
  194.        }$ r; C; Q" \; `) v3 X: F; o. @7 }
  195.        else if (digitalRead(kg)==HIGH)
    3 P$ s% r" e6 s# q! N
  196.        {$ N, `* s: o! q% Y  Z( M/ m
  197.             digitalWrite(kg, LOW);
    ( \9 }, N0 R; J1 T) t( d, L3 x
  198.             digitalWrite(de, HIGH);& ~0 ~3 Y" T6 b6 F2 h- Y! _/ ]
  199.             Button1.print("off");; _3 O. X% W* N
  200.             Button1.color("#00FFFF");              //设置app按键是深蓝色' r4 k. G: c7 C9 q2 D' G
  201.             Button1.text("关闭中");
    5 G  f) o# A2 J
  202.        }
    - L! t+ V0 N' M( c( h1 W
  203.       }
    / o$ s+ [$ W" C9 H
  204.     }
    5 Z; y& H0 p2 a* J3 g
  205. }
复制代码
" y0 n6 ?1 S, I5 V2 X4 U

: e8 x0 J* ?* M5 Y& g' y( }我没有用卖家给的码,我自己写了一个,参考我前面的文章最简单的8266天猫精灵控制开关,点灯、Mixly可视模块化编程 https://bbs.nasdiyer.com/thread-18755-1-1.html
$ ?6 r& A+ i, I% E' g
/ H) q& n0 J1 N0 |$ b! A把上面的2改成5,把高低电平对调一下就可以使用天猫精灵来控制你的这个插座了。我是把我的第一个插座放在了我的落地电风扇中了,当我慵懒的在沙发上刷着手机时候感觉有一点点热,我只要呼唤“天猫精灵,打开风扇”,就可以了。
% Q/ j; r. B0 f( f) e
+ j: G7 m% |: n4 z6 L
7 c/ P3 W  k! ^6 _. |

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. n7 `! A! h0 \
买了几个   做工挺扎实的,但是外壳怎么拆啊  拿斜口钳拨了一个,   四个圆角的卡口根本没法正常拆 ...
. W; P- V2 y2 R! @8 W$ Z# k- B
大力出奇迹呀

1

主题

8

回帖

256

积分

中级渣柚V1

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

' ^* o) d9 L# _$ X昨晚拆了一个,废了老大劲,想和卖家说的无损拆下来,不拆个三五个积攒经验,基本不可能

2

主题

11

回帖

62

积分

初级渣柚V2

积分
62
QQ
发表于 2021-9-4 23:05:22 | 显示全部楼层
sevenup0719 发表于 2021-8-29 08:14
, s0 K- i+ @  r# S' k; w. R昨晚拆了一个,废了老大劲,想和卖家说的无损拆下来,不拆个三五个积攒经验,基本不可能 ...
7 L" Z: z& T9 D. H1 r
你的搞定没  为什么我的根本没法烧录   连接不上,,用esp01s还没问题的
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-7-22 00:29 , Processed in 0.060002 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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