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

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

[复制链接]

11

主题

51

回帖

209

积分

中级渣柚V1

积分
209
QQ
 楼主| 易记 发表于 2021-8-21 13:57:54 | 显示全部楼层 |阅读模式 IP:–浙江–嘉兴 电信
本帖最后由 易记 于 2021-8-21 14:05 编辑 ) Q" X3 x2 g2 ?7 S5 w7 f( x

4 p0 }; r. j/ ]" }6 M( ~' k最近玩ESP8266,想做个天猫控制开关。6 m- G! o6 x$ r) y4 [5 s% ~8 {. j
但是我很懒,一个个配元件嫌麻烦,于是想着能不能淘到便宜的带电源板的模块,多倒是蛮多,一般都要20多块钱。
- V/ h' ?0 O% A2 q还是闲钱上逛一下看,找到一个联想的国外版8266智能插座,价格才8.5元一个。有一点不足,就是只有三孔,要是五孔的就好了。老板说五孔杂牌价格一样也有货,晚两天发布。. N1 H3 Y2 ]$ y% l7 l3 W+ o
QQ截图20210821125037.jpg
3 H% }, h' y; C! n9 ^5 j/ m7 J7 B+ C* N4 y6 E2 ?

" |) ?6 T  j; h  J- O. E问了一下店主,买20个一盒才包邮,想着20个还是有点多,买了5个,连运费47.5元。
; w- K# a* r2 }2 F
( X0 g- @) D7 A7 x QQ图片20210821124517.jpg ' c. z9 L6 m2 S, N0 Z& a( a, B
( m  O" _- d" J' i  L* u
$ N4 {% X! Z$ x9 m- H, X
7 A7 E4 J4 Y7 @
到手,当然是拆拆拆。
, R4 r% N/ s  S) C$ O, S IMG_20210820_134104.jpg
" S. B; d! y) t: }: \5 T# f
2 v* t$ P1 G7 `: W  s  n, x/ R
8 n8 S2 J: G" x/ l5 u% @1 V7 ]  h+ G
联想的做工,还是感觉不错的,光这个继电器应该也要个7-8块钱。4 r) D: S+ @/ U4 ^% Z
IMG_20210820_160634.jpg 4 H9 d0 [4 Y6 j7 w! k1 x

, s' p6 @) R! o7 O2 s+ t3 a
0 v* ?; J0 k4 B% ?: y- n1 x
继电器是两组常开,感觉要是接电灯双控开关是不是有点麻烦的,不过用于插座是很安全,要断二条线都断开。
6 F7 {& l  i' } QQ截图20210821133707.jpg
0 i8 Q5 h1 Y1 J' g3 p* _
2 h) ~& P9 L" x' W1 C
IMG_20210820_134114.jpg ! g$ Y! Z' T; F1 n
# d# F1 l$ {' C# m. v' b
电源芯片5 }0 C5 E6 e% r) B# K3 X
* e9 z8 G( I' ?4 f' P/ J3 T$ ^  Y

  E& f, o1 h1 I( f
" P1 {5 o% }1 G4 E5 |
有一个按钮,按钮有二个蓝色LED灯. B/ c6 A: l6 x: m: ]7 F& W& I; x7 V
IMG_20210820_134157.jpg 2 i: o- l6 ~( R1 l7 j! }
( {7 x  H( M4 p" ?

" y/ c& P# S4 {0 D+ r8 [8266
* u+ O+ R9 F5 {# \ IMG_20210820_141913.jpg " k( B2 D: t& b9 U7 U: C( V

" o# {, E3 [8 \0 ^2 `' O& t' ?

7 Q( Z% Y2 Y4 h$ \7 W" P- e& A% T; C5 Y# L' ]

- @$ _3 Q9 x$ q- v1 ]: H/ e接下来就是刷机了,版子上面都预留测试点。1 S: X# A, I5 S' q$ n0 _: y
接线比较容易,上面都有标示,GND,3.3V,TXD-RX,RXD-TX,还有一个就是IO0接地后刷机。1 Q3 l5 d# i0 N' R
未标题-1.jpg / D3 U8 `8 k' F1 q# ~- @' x) n* O
注意RX这个点,就是3.3V边上的这个点,焊盘设计的就点问题,电烙铁热一点或是焊的刷机线过粗的话,容易掉焊盘。/ y* A1 B3 j( ^0 y, ~2 X
要是掉了就只有一个过孔了,要是焊不上,只能再拆开接在另一面,所以为了避免不必要的麻烦,请注意一下。

8 J: _+ ^3 p' O4 K  [. N' c
' k# I' F2 q: A# R7 s- H6 k7 A! f& C- q% C' O# f( K- ~
8 I) {9 G7 V* X

( I" w$ N$ \; \% L  y3 B0 V

; m/ ^& S' U' s- I    5号脚位是继电器输出+ ^4 B/ n- G0 g9 o" ~
    12号脚位是灯输出
0 X  \. x1 c/ F5 l    4号脚位是按键
2 e0 O/ O' \& |  i, V. a* \
, U$ q# B  x5 q. l; |0 ~

9 [) {+ b, f9 i. @) b' G8 B/ d0 }4 v1 j- B3 x
- u6 ]) F$ \/ I* e" `. n% O% P: M
卖家有发一个源码,如下
  1. #define BLINKER_WIFI                    //官方wifi协议库- U* ^8 I4 i5 N
  2. #define BLINKER_MIOT_LIGHT              // 设置小爱灯类库6 g) [( n6 B  d2 t# ~
  3. #define BLINKER_ALIGENIE_LIGHT          // 设置天猫灯类库
    # y, b. I3 u3 u, k# b! X7 U
  4. #define BLINKER_PRINT Serial            //串口协议库' F" m- _* j3 N8 s
  5. #include <Blinker.h>                    //官方库
    7 I- C0 w* c( X4 G$ q- b
  6. #include <ESP8266WiFi.h>                //官方库
    5 D2 {3 v8 R( k) m
  7. WiFiServer server(80);                  // 服务器端口号
    / p+ }3 Y9 n7 H! Q9 v

  8. . o5 t. H% \( P& a$ P
  9. char auth[] = "c4942fb1d5e4";     //设备key5 D  O9 _* d  d8 z- M2 P+ J
  10. char ssid[] = "wanboshi";     //路由器wifi ssid
    7 G1 S) F  k% p$ q; z
  11. char pswd[] = "1365662999813586348220";     //路由器wifi 密码. [; H+ t* m2 Q
  12. 5 L/ S7 p" X& D1 {
  13. bool oState = false;+ h7 ?8 V. O" ~8 |5 ~
  14. 9 u/ j0 S# d/ z6 B8 e
  15. int kg=5;//继电器输出
    : |& o  l4 G) E( t
  16. int de=12;//灯输出
    6 N9 K, P) S7 r- }/ `! u- t7 t
  17. int key=4 ;//按键# s7 C& Z6 O1 t0 `0 {( h
  18. //*******新建组件对象2 m3 J5 d, h+ L7 n" V2 l$ @
  19. # Q% j& n! r" u$ _* d3 b
  20. BlinkerButton Button1("btn-abc");              //设置app按键的键名
    * s; S' e$ w) b* R6 {0 v" W
  21. //*******app上按下按键即会执行该函数app里按键
    6 e- ^1 D- ?% i% y
  22. void button1_callback(const String & state); h. _; p1 [+ P3 X0 f3 s$ H6 ~) [
  23. {
    & I/ g0 y) Y0 b* c5 p
  24.    if (digitalRead(kg)==LOW)/ c& k; R* i4 g+ j; P4 o
  25.    {3 C& h! q: ]9 Q5 H7 U
  26.         BLINKER_LOG("get button state: ", state);1 t! b' g! V/ B# T9 Q/ e
  27.         digitalWrite(kg, HIGH);
    : ]% z$ j5 m; S7 I( Q
  28.         digitalWrite(de, LOW);; J, a; q( J: s. e
  29.         Button1.print("on");; x0 L7 P. y2 w+ W
  30.         Button1.color("#0000FF");              //设置app按键是浅蓝色& T/ b5 ?. S5 d0 N) y( U- B8 g
  31.         Button1.text("开启中");3 T% H6 B: M) z& R. W' V( o
  32.    }8 e& @9 C& B- U5 V( [
  33.    else if (digitalRead(kg)==HIGH)( E1 S5 w/ ]9 H/ H6 z
  34.    {9 N! u# T3 n+ l& E; m: D1 p8 |7 s
  35.         BLINKER_LOG("get button state: ", state);; I, g* L1 a5 f" ~; R! z8 t
  36.         digitalWrite(kg, LOW);
    $ M, Q7 Q( c9 F$ o* |% R. K
  37.         digitalWrite(de, HIGH);( A) p0 L6 H. M3 \; F' J3 M" m
  38.         Button1.print("off");" Q- c: C" ?0 H, N6 z5 L, A4 u
  39.         Button1.color("#00FFFF");              //设置app按键是深蓝色8 n; j" ?0 M8 I$ i) R
  40.         Button1.text("关闭中");% M6 n7 @: k- g7 V, W
  41.    }* h! c! y, Y7 C) l9 n4 R
  42. }
    3 x+ ?3 g. J8 G7 n

  43. 9 u" W/ F9 v  \5 ~
  44. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++3 B7 D/ ]0 }- \% R4 A

  45. ' Y& V5 y1 u% a0 Y# H. @* D
  46. //*******如果小爱有对设备进行操作就执行下面
    6 p. D* R: ?6 D5 `& x
  47. void miotPowerState(const String & state)5 J  G" F/ S) x# v6 T& ?5 H: Q; O
  48. {! T, B, X6 h; q" {. s0 w0 G3 t4 L
  49.     BLINKER_LOG("小爱语音操作!");              //串口打印% a$ ~  L7 H  `/ J: y) @8 H# ^
  50.     if (state == BLINKER_CMD_ON){, g! r$ m" s. m$ E6 n) L( ~
  51.           c* x8 P+ w/ q! x) J( E
  52.         digitalWrite(kg, HIGH);
    4 y/ O1 M9 S( O7 s$ R; l
  53.         digitalWrite(de, LOW);
    5 G9 `- d( n" L/ Y$ N8 @
  54.         Button1.print("on");
    / W* E4 ^' R* J  E2 `% d
  55.         Button1.color("#0000FF");              //设置app按键是浅蓝色
    0 r9 l$ a- Q1 l, W; z
  56.         Button1.text("开启中");5 t: z7 T8 |' \- b! s" V8 q+ K
  57.         BlinkerMIOT.powerState("on");7 B; g4 G% P; E3 L$ s9 w/ ^& [
  58.         BlinkerMIOT.print();( h- q. ~5 {& i% T
  59.    }
    4 l1 j. R7 R" R! O5 x( \
  60.    else if (state == BLINKER_CMD_OFF)$ W; i! Y% d7 u2 \
  61.    {8 C! `( {) v% {0 @2 Z0 T; T0 P
  62.         
    " d# z7 m! p1 c# ]
  63.         digitalWrite(kg, LOW);
    0 B( M! H9 p5 N- r! y# T1 M
  64.         digitalWrite(de, HIGH);# f6 S* l% c: A: M  B& J
  65.         Button1.print("off");
    0 J, V! P6 p; V3 ]7 a0 i, e
  66.         Button1.color("#00FFFF");              //设置app按键是深蓝色
    8 E/ L4 z8 ]6 L
  67.         Button1.text("关闭中");# m; ^6 y2 ^# Y% E
  68.         BlinkerMIOT.powerState("off");
    & c: Q) g7 |; n
  69.         BlinkerMIOT.print();
    1 Z  G1 T2 G, I! b) |
  70.    }
    9 V. n; g. g- W8 j! @% W8 T+ g, }
  71.       
    5 I& c- R- B+ h* Y" M6 P

  72. ) |7 d( _5 H7 J* R
  73. }# M# i! k0 O* P4 i) Z, e
  74. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++! [8 J/ A! f: k* k0 Q! H
  75. //*******如果天猫精灵有对设备进行操作就执行下面& w( a3 k( B$ D( y, N2 y
  76. void aligeniePowerState(const String & state)! n, k0 u3 [7 V2 [) {( v) z+ M
  77. {6 B) [# H. c( o% B
  78.     BLINKER_LOG("need set power state: ", state);
    ( I  I& Y6 ^$ Q6 P/ Y: P
  79.     if (state == BLINKER_CMD_ON)
    ' N+ E/ ^4 t& O0 _. Q- @) L
  80.     {
    . V. O& O: J) f* a7 @
  81.         7 R; ^( X  `7 X7 T
  82.         digitalWrite(kg, HIGH);
    2 }0 r) a& B! V
  83.         digitalWrite(de, LOW);0 t  X: s5 P0 j6 T4 j' \! Q
  84.         Button1.print("on");- {- G, t- _3 [9 T
  85.         Button1.color("#0000FF");              //设置app按键是浅蓝色
    * }$ Y) A1 i# Z+ f; Z, P# g
  86.         Button1.text("开启中");( S2 @+ M* z2 v  T8 C- |" H: A
  87.         BlinkerAliGenie.powerState("on");
    # }5 \0 A% w8 B, H# Z* r2 ?4 N
  88.         BlinkerAliGenie.print();5 _# s6 w0 P% t* Q
  89.     }; n+ a* E8 m0 M3 U' l; w
  90.     else if (state == BLINKER_CMD_OFF)
    % W. _& r0 Z: {, Y8 t; Z, s
  91.     {
    4 }# O5 C1 y, x  R" j4 f. e
  92.         
    , n2 V- r: T" ~) T9 l
  93.         digitalWrite(kg, LOW);3 _" z( D7 d6 e7 G+ o
  94.         digitalWrite(de, HIGH);
    3 O) X% O$ E8 j8 x
  95.         Button1.print("off");) t0 }" Z6 P! K4 ^+ {' ~1 j
  96.         Button1.color("#00FFFF");              //设置app按键是深蓝色
    ; ~* `2 N; U; l* ?
  97.         Button1.text("关闭中");2 Z7 J- @) O& w  {) K* S1 }
  98.         BlinkerAliGenie.powerState("off");- ]: I: Z- b/ Q: D$ {1 F7 L) b! I" \
  99.         BlinkerAliGenie.print();$ k- i- h$ j' v  Y! z! A2 U
  100.     }
    5 [* R, K5 b  |' c1 m
  101.         , F3 }5 X" t+ r+ x5 Q7 ?9 n: c$ t) o

  102. : |" A( x& l5 E1 w: C6 S" N0 |
  103. }$ \$ B% U& R& K/ P% Y
  104.   //*******app定时向设备发送心跳包, 设备收到心跳包后会返回设备当前状态30s~60s一次9 V+ |' w9 o. k7 D
  105. void heartbeat()! \) V* H. f* f% U$ Q! ~' n
  106. {
    & z* `/ P& _  d4 g5 f
  107.   BLINKER_LOG("状态同步!"); $ }/ Q2 Y% o$ q# t5 c. K
  108.    if (digitalRead(kg)==HIGH)
    6 z3 Q# s- [" i# G. a1 V
  109.     { ( g7 J! j9 Z+ X$ D) k* ?
  110.       Button1.print("on");
    - ~4 l& F) Q7 j4 Z
  111.       Button1.color("#0000FF");              //设置app按键是浅蓝色( t& E) f  L& T3 m' i
  112.       Button1.text("开启中");
    ) W3 ]  I/ \3 C0 f6 m% E; r
  113.     }
    * _- u. x7 Y+ q+ m/ e
  114.     else ' `8 V) T" z2 Z% H( ~+ X
  115.     {2 T3 \% t  W, G7 k
  116.       Button1.print("off");+ _$ G1 }6 ?9 r# z
  117.       Button1.color("#00FFFF");              //设置app按键是深蓝色: S6 _5 v. G' s+ ]2 ]
  118.       Button1.text("关闭中");
    6 Q6 y7 K0 K* o* g# x' P2 \8 g
  119.    
    9 b+ S2 V8 {7 i! E7 A. F0 h% [
  120.     }
    8 _% m/ b1 h7 H! N9 I" }# M
  121. }
    / a- z' v5 _- K1 Q! d+ N+ k
  122. //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    " T% Q9 S1 P2 ^( B
  123. void setup()) [/ X1 ?( L, n3 L( S5 e( N
  124. {0 m1 \0 p' k* A' f4 P
  125.   // 初始化串口# E* j- D; @0 A3 ?4 p9 ]
  126.   Serial.begin(115200);" A0 G$ l/ X! K& K
  127.   delay(10);1 W6 p0 C; n8 u7 C$ P4 ^1 {
  128.   BLINKER_DEBUG.stream(Serial);. x# ^& T* T8 l6 P1 p- G, R/ e
  129.   // 初始化有LED的IO
    9 P) R1 w% \7 T$ i2 l
  130.   pinMode(kg, OUTPUT);                 ! \7 E8 C% q+ U" r( V1 {. v( q
  131.   digitalWrite(kg, LOW);//初始化继电器上电状态
    0 W6 j1 E8 q) S) n6 Q
  132.   pinMode(de, OUTPUT);  y! U2 g5 s" f  b1 t7 M
  133.   digitalWrite(de, HIGH);8 ~/ W0 V3 A/ U' E3 p* Q
  134.   pinMode(key, INPUT);            $ U! H/ U  v# B
  135.   Serial.println();+ ~  S: w7 I# ^4 b0 ?9 r
  136.   Serial.print("Connecting to ");
    ' F0 x8 N- e( g  \. D
  137.   Serial.println(ssid);
    5 n6 _) J: i. W" D; d
  138.   WiFi.begin(ssid, pswd);, w( ]+ O  {: [( p5 e7 ?1 `/ h
  139.   while (WiFi.status() != WL_CONNECTED) {
    9 T7 J. ?/ R% j; Z1 k4 ^
  140.     delay(500);
    " N: M# H8 I2 t- [
  141.     Serial.print(".");" i. R7 d- A% ]: _
  142.   }) n( l$ W! b& F
  143.   Serial.println("");: g7 `- O2 i/ v$ e
  144.   Serial.println("WiFi connected");
    9 `0 B$ J, V5 _( L1 L( e
  145.   server.begin();
    . G6 d' a9 O+ E$ w7 e
  146.   Serial.println("Server started @ ");
    4 Y# }, O: ]8 ~* Q
  147.   Serial.println(WiFi.localIP());
    # h/ [; J! E. v* A/ E9 s
  148.   //打印出IP地址,后期可以制作显示器来外部硬件显示ip
    - ?. B; t7 ~- U! t
  149.   Serial.println("To control GPIO, open your web browser.");. I3 z4 t+ Q. E3 {4 b5 K) ]% g
  150.   Serial.println("To set GPIO 0 high, type:");& b  U: E2 }0 s, Q
  151.   Serial.print(WiFi.localIP());
    4 I  w  k, o4 x+ q
  152.   Serial.println("/gpio/1");1 O2 A' C+ M3 o
  153.   Serial.println("To set GPIO 0 low, type:");  x% a: W  h. K/ C) W4 q4 Z/ Q
  154.   Serial.print(WiFi.localIP());
    + @; N$ B( o' u/ a+ X# k7 [
  155.   Serial.println("/gpio/0");
    * m" v/ V: }- ]; V
  156.   Serial.println("To toggle GPIO 0, type:");1 O  S" Q6 d4 Y9 K! U5 V
  157.   Serial.print(WiFi.localIP());
    9 u* @* p4 B, w
  158.   Serial.println("/gpio/4");
    * S. d- v5 m# Z6 h
  159. & N% c6 M1 g2 E+ p0 {
  160.   // 初始化blinker5 f) l; w3 T8 a; r) R1 g
  161.   Blinker.begin(auth, ssid, pswd);
    9 S  z  X0 C7 K1 g# w6 q2 h
  162.   BlinkerMIOT.attachPowerState(miotPowerState);              //小爱语音操作注册函数
    " U. z( v/ ~) P
  163.   BlinkerAliGenie.attachPowerState(aligeniePowerState);      //天猫语音操作注册函数
    2 y8 x0 l! T3 t3 c$ q
  164.   Blinker.attachHeartbeat(heartbeat);              //app定时向设备发送心跳包, 设备收到心跳包后会返回设备当前状态进行语音操作和app操作同步。2 J7 k5 ]8 @& V8 c- {( u2 m
  165. 4 ^. K# c7 _! X% q3 o6 V
  166.   Button1.attach(button1_callback);             //app上操作必须的注册回调函数关联按键名“Button1”和判断程序“button1_callback
    / y5 b; G( P- B8 g5 Q! J& H
  167. }
    . B# E+ c- S/ Q7 ~' x
  168. void dataRead(const String & data)
    ( {) \: h2 S+ s2 j
  169. {
    ! a8 b% l' H6 W  c( q8 f+ R4 S
  170.     BLINKER_LOG("Blinker readString: ", data);$ Y! s4 k, ?1 t! p) P
  171. * u( D: b8 W" U. M  b
  172.     Blinker.vibrate();+ p& i5 C6 D: _. c0 `% w3 z
  173.     % E- E: u9 Z5 ^5 Z8 l! x0 |
  174.     uint32_t BlinkerTime = millis();
    / u1 p: ?) B; m, Z
  175.     " h2 `' B; ~( U* U! s0 [
  176.     Blinker.print("millis", BlinkerTime);
    , D% R8 r+ m% U6 R' {3 h  {
  177. }! z# `5 P* ?8 O% b8 @; `
  178. void loop()- y" b' A# D8 N8 m' J9 `
  179. {
    * ?- }" S! s1 B! G; p1 n8 I
  180.   Blinker.run();$ U+ Y5 _: }/ n+ x
  181.   if (digitalRead(key)==LOW)
    * ]5 E: t+ h: O$ Q
  182.   {" S% Y, \2 F: k4 f, V
  183.     Blinker.delay(200);
    ' K6 T3 I0 F# y6 S, D3 d0 ]" U
  184.     if (digitalRead(key)==LOW)- o6 ^; s0 ]) q$ q& i, m
  185.     {+ `# z; l6 r3 P7 e! `0 E
  186.           if (digitalRead(kg)==LOW)4 }+ f* g8 M: v6 C7 `5 z8 h
  187.        {
    ( [+ C0 [6 `7 J* i. Y" {  U
  188.             1 ~0 u( R  {: W1 W
  189.             digitalWrite(kg, HIGH);
    . s# S/ I9 f( G) X8 M1 B  W! W
  190.             digitalWrite(de, LOW);
    ; I0 T# T0 N1 `; r6 A* }0 E# z
  191.             Button1.print("on");1 o3 Y/ H) Y, K! {3 ?
  192.             Button1.color("#0000FF");              //设置app按键是浅蓝色0 i) \7 R  U; d  Q" Z* m/ a
  193.             Button1.text("开启中");
    ! r# I* b- L! _! A6 ^2 ~, W" u: R9 J
  194.        }: B) k: T1 u, j
  195.        else if (digitalRead(kg)==HIGH)
    " g+ N! t; \( t+ d4 c' D; |& N
  196.        {
    # x. m! u9 }' S# _& W
  197.             digitalWrite(kg, LOW);0 b- }3 ^' `; w7 X
  198.             digitalWrite(de, HIGH);$ ?+ g# r8 {4 `* [" H' |& F% C5 }- R( A
  199.             Button1.print("off");2 D. G" N* u4 Z* u
  200.             Button1.color("#00FFFF");              //设置app按键是深蓝色: |$ t/ k- W9 K" d
  201.             Button1.text("关闭中");
    . }+ r3 U" i9 j$ R
  202.        }6 w; p+ j2 @* t/ o) m  v- `" F
  203.       }3 n6 y! l( W6 i- v$ C2 N
  204.     }
    & S# ?* O4 H1 P5 ]4 f6 D
  205. }
复制代码

' f8 I, Y8 e! ?- \7 h: i, H
, V5 d& r# F9 x6 {, g我没有用卖家给的码,我自己写了一个,参考我前面的文章最简单的8266天猫精灵控制开关,点灯、Mixly可视模块化编程 https://bbs.nasdiyer.com/thread-18755-1-1.html
( `0 i4 u7 Q( o8 Z* q8 B5 T3 N( s
把上面的2改成5,把高低电平对调一下就可以使用天猫精灵来控制你的这个插座了。我是把我的第一个插座放在了我的落地电风扇中了,当我慵懒的在沙发上刷着手机时候感觉有一点点热,我只要呼唤“天猫精灵,打开风扇”,就可以了。
: ]# J" y: I! v$ Z7 c
3 z% m; g6 h) Q" d% X% B; t
! R+ Z2 x4 U, K5 H1 d5 j( F; A

0

主题

18

回帖

85

积分

初级渣柚V2

积分
85
QQ
lucky999777 发表于 2021-8-23 13:06:07 | 显示全部楼层 IP:–浙江–台州 电信
高手,没玩过!达人

2

主题

11

回帖

63

积分

初级渣柚V2

积分
63
QQ
a467913252 发表于 2021-8-24 15:53:16 | 显示全部楼层 IP:–湖北–武汉–江夏区 电信
买了几个   做工挺扎实的,但是外壳怎么拆啊  拿斜口钳拨了一个,   四个圆角的卡口根本没法正常拆

11

主题

51

回帖

209

积分

中级渣柚V1

积分
209
QQ
 楼主| 易记 发表于 2021-8-24 17:20:24 | 显示全部楼层 IP:–浙江–嘉兴–桐乡市 电信
a467913252 发表于 2021-8-24 15:53
' E' V' U! I# [4 \# K, \买了几个   做工挺扎实的,但是外壳怎么拆啊  拿斜口钳拨了一个,   四个圆角的卡口根本没法正常拆 ...

+ X) q+ r; K* i$ g9 E+ X大力出奇迹呀

1

主题

8

回帖

257

积分

中级渣柚V1

积分
257
sevenup0719 发表于 2021-8-29 08:14:58 | 显示全部楼层 IP:–江苏–连云港 联通
a467913252 发表于 2021-8-24 15:53
. \* D* M, t, g* Q9 o买了几个   做工挺扎实的,但是外壳怎么拆啊  拿斜口钳拨了一个,   四个圆角的卡口根本没法正常拆 ...
% A5 O* B9 S8 X* I
昨晚拆了一个,废了老大劲,想和卖家说的无损拆下来,不拆个三五个积攒经验,基本不可能

2

主题

11

回帖

63

积分

初级渣柚V2

积分
63
QQ
a467913252 发表于 2021-9-4 23:05:22 | 显示全部楼层 IP:–湖北–武汉–江夏区 电信
sevenup0719 发表于 2021-8-29 08:14
5 Q/ k2 n* ^* ~  z昨晚拆了一个,废了老大劲,想和卖家说的无损拆下来,不拆个三五个积攒经验,基本不可能 ...
( H" M0 L( N5 B2 V
你的搞定没  为什么我的根本没法烧录   连接不上,,用esp01s还没问题的
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-9-8 10:18 , Processed in 0.060845 second(s), 23 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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