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

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

[复制链接]

11

主题

51

回帖

209

积分

中级渣柚V1

积分
209
QQ
 楼主| 易记 发表于 2021-8-21 13:57:54 | 显示全部楼层 |阅读模式 IP:–浙江–嘉兴 电信
本帖最后由 易记 于 2021-8-21 14:05 编辑 ' A1 y$ E7 p# ^" n6 r
0 A) M- C/ ?/ W8 K: L! |) \& n
最近玩ESP8266,想做个天猫控制开关。
1 A7 b8 M5 {9 t4 _$ j; J但是我很懒,一个个配元件嫌麻烦,于是想着能不能淘到便宜的带电源板的模块,多倒是蛮多,一般都要20多块钱。
# A. J- T) n; m$ w" @5 G; W还是闲钱上逛一下看,找到一个联想的国外版8266智能插座,价格才8.5元一个。有一点不足,就是只有三孔,要是五孔的就好了。老板说五孔杂牌价格一样也有货,晚两天发布。
1 l$ k; U6 W& ^8 Y$ G- { QQ截图20210821125037.jpg # N/ i9 a3 b0 k- Y) b

/ i) X2 o: F, d

' d8 T+ s; n9 V2 R8 A" G问了一下店主,买20个一盒才包邮,想着20个还是有点多,买了5个,连运费47.5元。
+ [! L5 o9 i$ s! x/ y: N
- t3 r8 T6 {: P  Y: b QQ图片20210821124517.jpg ; @8 ?$ Y0 L2 `

0 ]  n. I/ H7 X' @
( e+ }$ c1 G, w/ q- ]
3 C$ |7 e  R' G; @0 d1 s) m
到手,当然是拆拆拆。
8 A+ U- v% @9 G, Q; C% t0 b IMG_20210820_134104.jpg + D' f% G9 S1 t& B; h, j* p  Z4 U

& }# e3 T9 S9 W7 N! ~/ M: I5 e

/ `/ Q) h0 Q7 i$ i/ R联想的做工,还是感觉不错的,光这个继电器应该也要个7-8块钱。; Z# x0 u4 j5 @% V3 z7 m- ?
IMG_20210820_160634.jpg
# l* F  ^1 y* R4 d
: v/ n0 D, q& p1 y
7 ]. L- B+ F' R  K& C: r
继电器是两组常开,感觉要是接电灯双控开关是不是有点麻烦的,不过用于插座是很安全,要断二条线都断开。
' G8 \, n# R7 L  s) @1 Q& } QQ截图20210821133707.jpg
  {1 Q+ z3 j  a6 ~9 X
) V; D' A  Y2 f
IMG_20210820_134114.jpg : E* N6 Z$ r- r9 p

( W+ O8 B5 F. R: Q* f' v- Q电源芯片% w1 n6 ]" V% C7 [9 X( Z) {; m) i
( W0 s% H* I* _+ f* ]0 [

: K7 d# }4 b" a. ^. X+ {. U
  k7 X1 }( C: S" ]$ |% X
有一个按钮,按钮有二个蓝色LED灯
( y1 p/ c  h/ t& X% S$ L IMG_20210820_134157.jpg & i6 z% S; i1 C
9 X$ P# z9 T5 I$ o$ |! h; C, S- T

8 H4 J! x2 b- n. Q/ K. \8266" s9 B) S1 y2 p3 y. W2 A5 M
IMG_20210820_141913.jpg
' M+ Y# f* z3 J/ s. w* x2 R
& L8 x  p- y; H
- n: u! f/ J5 W1 Q) j' |& F* q
# y' f- i& A: J' @
( o3 u( x5 V* m/ X9 U
接下来就是刷机了,版子上面都预留测试点。
0 h- Z. ~3 N8 g, e% l: ^接线比较容易,上面都有标示,GND,3.3V,TXD-RX,RXD-TX,还有一个就是IO0接地后刷机。
4 {" |0 L- Q% t4 j$ z 未标题-1.jpg ( X; j- q3 [# ]$ x& _2 K
注意RX这个点,就是3.3V边上的这个点,焊盘设计的就点问题,电烙铁热一点或是焊的刷机线过粗的话,容易掉焊盘。+ x+ j- @: n2 _2 Q* A; t
要是掉了就只有一个过孔了,要是焊不上,只能再拆开接在另一面,所以为了避免不必要的麻烦,请注意一下。

3 a' W: R4 b# @% c7 B$ m# z4 a+ V% `/ W- x+ E4 u, d
$ s6 w" X, X# `! F: N  O) U

4 E0 E: @4 N- ]3 E
5 H' V1 i5 j& h
( |) e* D" j: a9 B
    5号脚位是继电器输出
) w# q& w" b' L    12号脚位是灯输出! W; \) B  i$ a' b) K
    4号脚位是按键

' V  g9 R/ A" \, H$ [# D6 W0 k! i7 [6 v

) a! T# q% A) T+ \4 n& V
1 ]# B$ b* S1 o1 x. i, V% ]
3 y% M$ E2 E9 j9 F: i( z: F* S3 K
卖家有发一个源码,如下
  1. #define BLINKER_WIFI                    //官方wifi协议库8 s, L! W+ m# J. t
  2. #define BLINKER_MIOT_LIGHT              // 设置小爱灯类库
    6 E9 p5 @0 M' q* N% v
  3. #define BLINKER_ALIGENIE_LIGHT          // 设置天猫灯类库7 J' H: _+ R. @* G
  4. #define BLINKER_PRINT Serial            //串口协议库
    # }% v9 f+ }, j, K
  5. #include <Blinker.h>                    //官方库
    0 X, j  H, H6 n' T7 H3 t  o$ _
  6. #include <ESP8266WiFi.h>                //官方库" S* R2 o. q. y! d$ P- x
  7. WiFiServer server(80);                  // 服务器端口号
      a5 Y: K# L0 G- |5 c

  8. : F- d" M0 e4 b( C; g# \% E
  9. char auth[] = "c4942fb1d5e4";     //设备key
    $ w6 J% r& @9 J* K0 D( K
  10. char ssid[] = "wanboshi";     //路由器wifi ssid) o5 d3 a- _. Q  j
  11. char pswd[] = "1365662999813586348220";     //路由器wifi 密码$ y4 L! Z. o4 r4 f' e, C
  12. 7 s' m8 M$ ?& }3 ~# P6 q  b% \- a
  13. bool oState = false;
    : s( ]' f" K" [( y
  14. 8 R- c) v1 u  w
  15. int kg=5;//继电器输出; `! @; s' f" i" ?2 c0 k0 q, }
  16. int de=12;//灯输出
    0 ~* W/ X& o. P9 O5 ?; [
  17. int key=4 ;//按键+ Z/ C$ e$ w; N9 |. K9 b' T2 Q
  18. //*******新建组件对象3 u  j; H  o+ p5 n* k1 o: m3 @6 H
  19. 8 Q) P- j4 J$ K$ O0 z# x
  20. BlinkerButton Button1("btn-abc");              //设置app按键的键名( P% K* P  O8 u. w3 ^7 _3 L
  21. //*******app上按下按键即会执行该函数app里按键
    , g: j; z4 S4 v
  22. void button1_callback(const String & state)
    * s- L# I8 R; q8 j7 }0 Q  x
  23. {
    ) H& E+ Y6 K1 [" p* b
  24.    if (digitalRead(kg)==LOW)
    8 N4 ?* Z  I1 d: c2 r: E
  25.    {" N) J7 \* G0 L0 _' s! E8 {
  26.         BLINKER_LOG("get button state: ", state);
    : n( l7 b. Q4 r% _
  27.         digitalWrite(kg, HIGH);' j5 K. q8 v" z! P" P8 }
  28.         digitalWrite(de, LOW);5 `$ ]% a$ A, N$ z6 D- d& |
  29.         Button1.print("on");
    1 \1 e, o; Y$ v" g1 r* Z
  30.         Button1.color("#0000FF");              //设置app按键是浅蓝色+ Z0 {' E9 A' K) i* Z
  31.         Button1.text("开启中");* H& L# U, N: V9 S" A. V
  32.    }& [9 k% B. P; X& s& o$ W  J
  33.    else if (digitalRead(kg)==HIGH)
    0 L8 s6 P4 A  J  y1 H9 \% ~. S5 K' @
  34.    {+ ^) x2 n3 d) M  P8 S) N# ?
  35.         BLINKER_LOG("get button state: ", state);
    * M/ D7 G+ d- r/ D; U
  36.         digitalWrite(kg, LOW);
    : E( J0 Q6 P. B) ?! S  F
  37.         digitalWrite(de, HIGH);
    / \& i8 N7 }. f2 O1 I8 _: |2 s
  38.         Button1.print("off");
    1 Q& ~) W- v- `, L7 t
  39.         Button1.color("#00FFFF");              //设置app按键是深蓝色) {- T2 h3 m1 G4 S4 D+ p- e' e
  40.         Button1.text("关闭中");
    ! ~6 x, s/ [( J/ Q. J
  41.    }
    ' R" U1 k& h2 w  U
  42. }
    7 w- V- R, O6 T$ [* L

  43. 0 c7 V- C+ q2 E: n; q
  44. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    + b9 h, l, {- o. O+ v
  45. 8 Y$ l0 L) e* v7 H4 E
  46. //*******如果小爱有对设备进行操作就执行下面
    - A, d. e; O3 V2 c/ x: N1 h& r4 }
  47. void miotPowerState(const String & state)8 f) u4 ?+ ^3 S% @
  48. {$ S. k2 o! \: y6 u! d5 |
  49.     BLINKER_LOG("小爱语音操作!");              //串口打印
    $ j3 z; y  Q! ~/ T' j6 ]7 }( y6 T
  50.     if (state == BLINKER_CMD_ON){8 J6 B6 `1 {$ r2 y* [' c& v
  51.         6 F, F, H2 L0 c& C- P
  52.         digitalWrite(kg, HIGH);
    6 z0 n% Q# ?" q0 U! |
  53.         digitalWrite(de, LOW);
    0 ~! ], M  Y* u
  54.         Button1.print("on");: v4 ?. i4 B* G* \6 I7 z; |
  55.         Button1.color("#0000FF");              //设置app按键是浅蓝色' y& C! h5 I$ W7 x
  56.         Button1.text("开启中");% i5 E# U# L, |5 m7 B
  57.         BlinkerMIOT.powerState("on");
    1 P5 S' o% L( `# g
  58.         BlinkerMIOT.print();
    9 u9 d# @8 @: E4 I# z; n% n
  59.    }
    0 Y0 }3 O- E' R% K$ n
  60.    else if (state == BLINKER_CMD_OFF)
    4 R. o: e; e( \5 Q  C
  61.    {
    : H* J/ s6 y* `+ q& T9 y
  62.         ( ~2 S. G8 Z* ]( Z! g& U0 z
  63.         digitalWrite(kg, LOW);2 _( N3 w2 T  y- l8 x
  64.         digitalWrite(de, HIGH);
    . ?1 H+ u* Y' D" B& X3 C% G
  65.         Button1.print("off");
    : m+ i" t/ v. H& L4 [
  66.         Button1.color("#00FFFF");              //设置app按键是深蓝色# G& K$ g+ l5 `% [
  67.         Button1.text("关闭中");
    % M- ?$ n" [. k
  68.         BlinkerMIOT.powerState("off");. u4 P& u6 s, D, w& q, T& [- X
  69.         BlinkerMIOT.print();4 ]% q2 b( r+ k. [/ n0 K4 E; A
  70.    }
    & K0 ?) s% X' B" F+ z& X$ Q, L
  71.       
    4 A0 r% X  z2 Q9 k
  72. 2 t7 k3 {2 r, o" P2 v7 U2 P: }
  73. }4 }& H& O* g' q
  74. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++9 s$ E* J  h; {2 h% o
  75. //*******如果天猫精灵有对设备进行操作就执行下面
    " `  M3 I1 [" i! H$ v
  76. void aligeniePowerState(const String & state)1 j) N( z+ R$ g+ f! O4 i
  77. {9 y  Z8 C0 H) v) t' |
  78.     BLINKER_LOG("need set power state: ", state);. x  ]; R2 S: x+ X* X6 H0 X' r8 j
  79.     if (state == BLINKER_CMD_ON)
    % [# [0 f. k8 k8 P7 I4 N
  80.     {
    " T2 h, Q, B; G. _: n) M' E* g9 X
  81.         & V. v" i: W; R" f7 \* V% Y
  82.         digitalWrite(kg, HIGH);1 H* x$ h  ~: O" q7 q5 _
  83.         digitalWrite(de, LOW);8 B; U3 n: ?1 _6 m2 X3 g
  84.         Button1.print("on");
    % S+ @; f  g, ?
  85.         Button1.color("#0000FF");              //设置app按键是浅蓝色
    5 `6 r4 [1 Y: ?' v& F
  86.         Button1.text("开启中");' c- P5 _1 N0 b! P- F. P
  87.         BlinkerAliGenie.powerState("on");. d3 X: \3 H; w* w% T- ?
  88.         BlinkerAliGenie.print();1 r  g( X# ?2 H- M
  89.     }
    9 j6 V0 N7 x# i" d7 y% v
  90.     else if (state == BLINKER_CMD_OFF)5 O, f' l1 \8 _' V/ X* ^/ {2 S9 ^
  91.     {5 S- k( j* X6 L) E7 v( @5 }4 ^# [5 z
  92.         * ?& ?) A- `8 V
  93.         digitalWrite(kg, LOW);6 X+ ^) x; k' T3 Z6 P* B) u- T$ h- I
  94.         digitalWrite(de, HIGH);
    4 T4 Z6 \9 N# w
  95.         Button1.print("off");' S/ Z  v/ w$ z! r, b1 ~4 }
  96.         Button1.color("#00FFFF");              //设置app按键是深蓝色3 G: @! s7 V4 Y; ^% B, _" F
  97.         Button1.text("关闭中");# e3 [5 }6 o! c; V
  98.         BlinkerAliGenie.powerState("off");  H, w; b* s) A! W
  99.         BlinkerAliGenie.print();
    : W% D* N! d+ @2 B+ O
  100.     }* L8 ^, `; g5 F
  101.         
    5 i8 n. C* [" X* r/ u/ e8 m& Q, X
  102. 1 Z1 [3 n. q$ ^( t' [: q9 x
  103. }
    * P2 [# f. u7 K5 n
  104.   //*******app定时向设备发送心跳包, 设备收到心跳包后会返回设备当前状态30s~60s一次3 Z" `5 \9 l; {* G
  105. void heartbeat()! P* L) ]/ H) b; B/ X$ q$ ~
  106. {) |2 k' y* {# I4 X. [
  107.   BLINKER_LOG("状态同步!");
    + F6 C% s+ q: F9 V+ u+ \  C! O
  108.    if (digitalRead(kg)==HIGH)
    : H! _5 O& B6 c0 W0 [0 ]( z$ `
  109.     { 3 L* s' {4 t/ g& l
  110.       Button1.print("on");# s4 Y9 T' o$ K# @. `
  111.       Button1.color("#0000FF");              //设置app按键是浅蓝色8 S+ a, L+ Q* Q! Z5 S  {0 X
  112.       Button1.text("开启中");# T8 _4 _  {3 D+ m, c& J" `5 i
  113.     }
    % c6 f" F+ J5 W
  114.     else 5 X% d6 `% x+ D/ d& c
  115.     {# E+ D3 b& O* H: v
  116.       Button1.print("off");- |) B5 E6 s$ U8 p& U
  117.       Button1.color("#00FFFF");              //设置app按键是深蓝色
    9 A7 R' Y/ Z( S4 D7 Q% [
  118.       Button1.text("关闭中");9 I* f1 y+ v2 y- W7 k5 \6 ~( ?0 c1 y1 R
  119.     " i9 B; z: ~1 W$ D; v8 p- d6 D# o
  120.     }% m6 b1 I, F- h: \
  121. }: ^, \; D. b2 ^8 k1 u; [
  122. //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++5 f0 l+ O- y$ A: b$ s4 Z& q
  123. void setup()( w. x$ O7 G% ?8 Z1 c8 N
  124. {4 [6 t0 j  ~8 b1 s4 s! Z
  125.   // 初始化串口
    4 E( G4 L+ N( Q" q
  126.   Serial.begin(115200);5 T# k$ u  z' ]! F: `8 L8 i! \
  127.   delay(10);
    # k# F) l" ^$ V  R6 o/ K6 U: ~
  128.   BLINKER_DEBUG.stream(Serial);. A$ t. b+ j: \8 A9 q
  129.   // 初始化有LED的IO7 t. ~9 r* k6 \: z; J4 A$ q7 H
  130.   pinMode(kg, OUTPUT);                 + o/ V; `1 R4 d1 o( N9 {
  131.   digitalWrite(kg, LOW);//初始化继电器上电状态 # \+ k0 Y1 @0 M7 Y4 N9 N. f% z% U4 D6 O
  132.   pinMode(de, OUTPUT);, |" ]+ p: h9 s
  133.   digitalWrite(de, HIGH);
    " Y; V8 X3 i# b  E  M8 k0 ^* z" w
  134.   pinMode(key, INPUT);            , b* E! w0 u& K- h
  135.   Serial.println();4 u# u  L8 r$ _! T$ C: G& a; N4 l
  136.   Serial.print("Connecting to ");  D. |0 J4 o  @+ n& ]5 P8 F
  137.   Serial.println(ssid);
    9 A6 V) I6 y: s4 G1 t
  138.   WiFi.begin(ssid, pswd);
    / x) Z: l7 I$ v; `0 O! `
  139.   while (WiFi.status() != WL_CONNECTED) {" c7 |- e. q- X5 O, \
  140.     delay(500);
    8 e+ n( m. h! V- f# k7 H' ^: g# v6 p
  141.     Serial.print(".");
    . [( l8 I6 T: |
  142.   }
    / X& i* g& M9 m7 ?
  143.   Serial.println("");) j0 A0 o9 \+ y9 l7 `8 N
  144.   Serial.println("WiFi connected");
    2 B( \* y  N0 q" K: d
  145.   server.begin();
    ) B; I$ p8 ?2 q# [* Z$ v2 A
  146.   Serial.println("Server started @ ");2 @5 a4 I7 \2 _( r" y+ T+ M
  147.   Serial.println(WiFi.localIP());+ E% b! Y- T( N( y
  148.   //打印出IP地址,后期可以制作显示器来外部硬件显示ip' d& E1 |! ~0 w5 n& H! I
  149.   Serial.println("To control GPIO, open your web browser.");
    5 c5 ^$ c5 j' A+ u. N" f
  150.   Serial.println("To set GPIO 0 high, type:");" @% H/ @! K; D# b0 B! Z' [# u# f1 A. i
  151.   Serial.print(WiFi.localIP());
    , Z5 q' F+ B5 n$ d$ k
  152.   Serial.println("/gpio/1");
    . p3 h6 Q# B* @6 T7 w+ s0 D
  153.   Serial.println("To set GPIO 0 low, type:");
    ( u6 x5 k6 Y, _* o- ~, e2 Z
  154.   Serial.print(WiFi.localIP());! {, a5 _0 s. x( Y" @. T
  155.   Serial.println("/gpio/0");
    . ]9 t+ b$ J0 U9 R( \
  156.   Serial.println("To toggle GPIO 0, type:");; q2 }" }( X. }  G* F+ F
  157.   Serial.print(WiFi.localIP());
    ! Y  g. K1 t2 j, a% Z# j5 r
  158.   Serial.println("/gpio/4");
    - V; x! r1 |, i' M1 s( `
  159.   X: r/ W" o+ O' r+ A! U% b6 S
  160.   // 初始化blinker( x1 e3 \9 w  j* g
  161.   Blinker.begin(auth, ssid, pswd);8 `# [+ d' Y9 i: G) _; R2 h
  162.   BlinkerMIOT.attachPowerState(miotPowerState);              //小爱语音操作注册函数; s0 {5 ^9 O2 {0 h% s/ f* e
  163.   BlinkerAliGenie.attachPowerState(aligeniePowerState);      //天猫语音操作注册函数
    . m. ]  x" j: O& N; a) ?
  164.   Blinker.attachHeartbeat(heartbeat);              //app定时向设备发送心跳包, 设备收到心跳包后会返回设备当前状态进行语音操作和app操作同步。4 w) o8 z* k5 Z2 H5 c" [* w1 q

  165. $ v* X) r" F( R7 n
  166.   Button1.attach(button1_callback);             //app上操作必须的注册回调函数关联按键名“Button1”和判断程序“button1_callback" X6 I/ Y. k: i
  167. }: m2 I- s. x# H. [- B; v; o
  168. void dataRead(const String & data)9 g0 Q1 Q, J+ B2 m! _2 `; ?- D! [. N
  169. {
    ! z9 R9 C) N$ N. t# E7 T
  170.     BLINKER_LOG("Blinker readString: ", data);! [/ {* l# \' N4 N- \. N

  171. 3 E+ Y0 r* {# G1 e. k' |; K. a) x
  172.     Blinker.vibrate();; t: V% }3 t7 [) I! S
  173.    
    6 v/ @; w' @9 r4 g
  174.     uint32_t BlinkerTime = millis();3 T7 i* I: Q/ p% e$ e
  175.    
    + w" D. Q) w$ K: C
  176.     Blinker.print("millis", BlinkerTime);" y8 e" P2 |$ Z/ Z0 k
  177. }& h$ O9 Q1 y6 j
  178. void loop(); {& y# ?% S0 F2 q4 S4 ]# O( R1 H
  179. {0 v( x7 d3 t" D# }  L8 _
  180.   Blinker.run();
    " \8 M0 m9 ^6 e7 ?& P5 I
  181.   if (digitalRead(key)==LOW)
    # j2 C% ^4 `7 j# n
  182.   {7 n7 d) U# `: Y  d" B1 r, z
  183.     Blinker.delay(200);+ o  [% K4 l4 M" d8 u8 \2 N
  184.     if (digitalRead(key)==LOW)
    9 ~# J9 N% n. y! c
  185.     {5 ^  N" [- C5 U, R" D- N
  186.           if (digitalRead(kg)==LOW)) t) c" V1 F* K) K
  187.        {
    ) A+ ?0 s, n  f7 t5 }
  188.             + U) I9 L- m' I! s$ h% c5 [
  189.             digitalWrite(kg, HIGH);
    $ V  G  E! |) t$ ]- R9 g! H
  190.             digitalWrite(de, LOW);; U7 I  i8 X5 e+ I8 z) g
  191.             Button1.print("on");5 W! z8 Q. g: S& C- h0 H
  192.             Button1.color("#0000FF");              //设置app按键是浅蓝色1 J& u( Z4 m# d8 ]8 M; y
  193.             Button1.text("开启中");
    4 _) Z* V; T+ Q: O7 L7 u, w
  194.        }
    5 k: c% R$ T1 {# ]; \4 z+ R
  195.        else if (digitalRead(kg)==HIGH)
    + R6 S" U: Z6 k. {4 {
  196.        {# S1 l: t$ Q( b, D1 O
  197.             digitalWrite(kg, LOW);
    ) _0 c; c* g( d; k* E$ h7 m4 C, z* k
  198.             digitalWrite(de, HIGH);' m! n  b8 f! k% b# G" v7 ]1 o0 {
  199.             Button1.print("off");$ t. |& |( r- W' P  i, Q# e
  200.             Button1.color("#00FFFF");              //设置app按键是深蓝色
    # ]  J; [! R3 I4 M1 z
  201.             Button1.text("关闭中");
    6 |+ J2 m, b( e
  202.        }
      N, u: I5 J5 e  x! w! z
  203.       }9 J% O8 E2 |* ]: n% {
  204.     }$ V- A1 Q7 b9 I: P
  205. }
复制代码

8 L5 o, Z& J  o0 \' l/ X2 B. |
' @, l  \' x2 w. ^' ?  y我没有用卖家给的码,我自己写了一个,参考我前面的文章最简单的8266天猫精灵控制开关,点灯、Mixly可视模块化编程 https://bbs.nasdiyer.com/thread-18755-1-1.html
# E5 [$ q) U/ x2 f* q. Q
# X3 _9 F! c( r- O把上面的2改成5,把高低电平对调一下就可以使用天猫精灵来控制你的这个插座了。我是把我的第一个插座放在了我的落地电风扇中了,当我慵懒的在沙发上刷着手机时候感觉有一点点热,我只要呼唤“天猫精灵,打开风扇”,就可以了。
! @- v% a# Y' ?6 r6 H
* i( H/ A9 d( d& \( _% U; O! R, v0 V' ^; `$ o. ~

0

主题

18

回帖

85

积分

初级渣柚V2

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

2

主题

11

回帖

62

积分

初级渣柚V2

积分
62
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:536 L/ x7 C5 b7 Z1 R% N  S- w. c
买了几个   做工挺扎实的,但是外壳怎么拆啊  拿斜口钳拨了一个,   四个圆角的卡口根本没法正常拆 ...

; e# m5 R! @  I( {大力出奇迹呀

1

主题

8

回帖

257

积分

中级渣柚V1

积分
257
sevenup0719 发表于 2021-8-29 08:14:58 | 显示全部楼层 IP:–江苏–连云港 联通
a467913252 发表于 2021-8-24 15:53
4 y* k# e7 H+ u买了几个   做工挺扎实的,但是外壳怎么拆啊  拿斜口钳拨了一个,   四个圆角的卡口根本没法正常拆 ...

. J' A6 n! X: E5 ~$ G9 }% q昨晚拆了一个,废了老大劲,想和卖家说的无损拆下来,不拆个三五个积攒经验,基本不可能

2

主题

11

回帖

62

积分

初级渣柚V2

积分
62
QQ
a467913252 发表于 2021-9-4 23:05:22 | 显示全部楼层 IP:–湖北–武汉–江夏区 电信
sevenup0719 发表于 2021-8-29 08:14' Y' F, c2 Z) ^2 G0 L
昨晚拆了一个,废了老大劲,想和卖家说的无损拆下来,不拆个三五个积攒经验,基本不可能 ...

. f0 @: t" r7 y$ Y- O5 v1 C" X你的搞定没  为什么我的根本没法烧录   连接不上,,用esp01s还没问题的
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-7-10 01:18 , Processed in 0.115597 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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