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

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

[复制链接]

11

主题

51

回帖

209

积分

中级渣柚V1

积分
209
QQ
 楼主| 发表于 2021-8-21 13:57:54 | 显示全部楼层 |阅读模式
本帖最后由 易记 于 2021-8-21 14:05 编辑 - a  W3 s' t* T8 b; X) V% l+ E2 g6 U

$ ]: O9 @) p% u( b: X最近玩ESP8266,想做个天猫控制开关。
# O$ L5 P1 y2 Z3 m7 {( V但是我很懒,一个个配元件嫌麻烦,于是想着能不能淘到便宜的带电源板的模块,多倒是蛮多,一般都要20多块钱。7 i* ~/ P" _9 W4 Z; x7 |
还是闲钱上逛一下看,找到一个联想的国外版8266智能插座,价格才8.5元一个。有一点不足,就是只有三孔,要是五孔的就好了。老板说五孔杂牌价格一样也有货,晚两天发布。. u: x! W; w' K3 X
QQ截图20210821125037.jpg ) B% h& R8 H$ s+ P) d& \0 ?

3 W4 N* C7 P3 k3 U

2 l' q6 T% O5 G0 O7 [问了一下店主,买20个一盒才包邮,想着20个还是有点多,买了5个,连运费47.5元。
9 y4 ~- V7 P. x( ?0 @% ^: N
0 D9 G1 b" X, |+ K& {- m& C  ]6 f, d QQ图片20210821124517.jpg + U. ]6 Y9 ^/ J# W/ C

) X7 I6 w% o% D4 Z* t7 B
) J) w; b* q4 p0 t) H+ f) P" F; |

( H- r! r6 _: a到手,当然是拆拆拆。
5 ^+ K* x( `3 |: A: ?9 f IMG_20210820_134104.jpg ) J7 Q2 g  T3 ~) {+ \" A

" j/ ~" M6 B& x! P& l9 Y2 s' [

+ q* p6 m6 j( n4 {  z* x' V联想的做工,还是感觉不错的,光这个继电器应该也要个7-8块钱。. k% j! O+ t* M9 x* D
IMG_20210820_160634.jpg 3 S; D4 Y; s! t3 K' _% x
1 h0 [6 H7 r& r- _1 R8 w2 M

9 T2 l# f  u  z2 k/ h, X) j5 o继电器是两组常开,感觉要是接电灯双控开关是不是有点麻烦的,不过用于插座是很安全,要断二条线都断开。
! z( D5 B8 n: _ QQ截图20210821133707.jpg
) p, E/ q' `7 U
4 x. v; |1 E$ U0 |. f4 a
IMG_20210820_134114.jpg ( u' J+ S8 _4 a" }

3 V4 {3 ]6 @7 g7 P电源芯片3 r0 \+ j6 E: T2 p0 ^
& @# v7 @9 }0 S; R

+ N( \( g$ f9 g1 ~% Y) e

1 K; @, t& c4 W有一个按钮,按钮有二个蓝色LED灯! ?. C0 s  l9 _! o0 [9 P
IMG_20210820_134157.jpg " e$ M: V2 A- V/ i& b  A+ N7 [

; K# W) c+ z7 {7 K# D/ I
% {- ^: B' A) o8 r7 w
8266+ L$ c$ ~, n3 d. |0 I/ g5 k
IMG_20210820_141913.jpg
/ ]5 q) i; K7 |4 T& ^5 Z7 B/ R4 k/ k8 k
: y5 m! L, n% P0 m( \* Y  i/ T
! T' c- d7 K$ Q: E, C3 ~

: E' \& X0 f8 F" s接下来就是刷机了,版子上面都预留测试点。
) x- n4 d" [! k, @接线比较容易,上面都有标示,GND,3.3V,TXD-RX,RXD-TX,还有一个就是IO0接地后刷机。
/ L. E% \; R8 K. n1 I1 ~8 Z 未标题-1.jpg , m# b, f' `9 Z/ A9 ^
注意RX这个点,就是3.3V边上的这个点,焊盘设计的就点问题,电烙铁热一点或是焊的刷机线过粗的话,容易掉焊盘。: \& ?& X% ?2 h1 j; c+ g& Y4 ~
要是掉了就只有一个过孔了,要是焊不上,只能再拆开接在另一面,所以为了避免不必要的麻烦,请注意一下。

0 |9 N5 n+ l9 A
1 g5 Q. w& Z6 Z( Q1 F8 Q# H8 q# P, W' o9 p4 {( b
4 M, \0 l9 A6 D+ F6 Y% I

6 w, v) E$ g1 e7 W7 z4 t
9 x% M- k, k. ~- z  m/ U
    5号脚位是继电器输出
4 ]  S. F  _% S; b8 g- o9 x    12号脚位是灯输出7 M) k* C" N  F8 E5 p
    4号脚位是按键
, X& F/ F# X0 G# k) }

, d9 X, L  ^0 L+ p' ^9 R
  j# ^2 v0 P+ E! j; `- D

: U; ?7 h5 \4 [- Q/ {8 e8 D
3 P: Q& B) P4 C7 ?5 `- y
卖家有发一个源码,如下
  1. #define BLINKER_WIFI                    //官方wifi协议库
    ) f8 h/ o" ]9 m- K* t5 V
  2. #define BLINKER_MIOT_LIGHT              // 设置小爱灯类库
    3 t5 _! L  a) {# o* N1 l5 C
  3. #define BLINKER_ALIGENIE_LIGHT          // 设置天猫灯类库" V- s% n. `( a4 ~! b- R' ~: _
  4. #define BLINKER_PRINT Serial            //串口协议库* ]) x+ @3 [  j7 s% l# f
  5. #include <Blinker.h>                    //官方库
    6 k+ r& V8 @! q) R/ k! R( q, S
  6. #include <ESP8266WiFi.h>                //官方库$ G- X+ U. v6 Y) ]2 O/ |
  7. WiFiServer server(80);                  // 服务器端口号
    7 Z5 ^& T6 p; Z" |

  8. 1 h; n+ e( p6 D. w
  9. char auth[] = "c4942fb1d5e4";     //设备key0 l9 T* t( c6 w/ C/ E8 z7 Q8 Q6 Q
  10. char ssid[] = "wanboshi";     //路由器wifi ssid
    , f  y* L, g& M! g$ \( ~- k5 F
  11. char pswd[] = "1365662999813586348220";     //路由器wifi 密码1 e& M  `% y( K

  12. % Z; Y) m# K( U/ Y. x% F0 I, X
  13. bool oState = false;5 U1 @; E9 @' c: X. L. u1 ]: Z

  14.   N" b+ L: G! @( v/ ]  Q+ s6 m3 R1 _
  15. int kg=5;//继电器输出
    % j+ z& z# {( @0 \
  16. int de=12;//灯输出
    2 [! \  U3 _6 W7 E
  17. int key=4 ;//按键
    1 b) n$ x+ H  Z& n. \$ y. u8 O, S
  18. //*******新建组件对象$ ^" m7 a. h$ W7 ]4 c* A
  19. 8 ^% Q* ~3 @: M- J
  20. BlinkerButton Button1("btn-abc");              //设置app按键的键名* p% f0 d2 Q( c! ]7 U2 Y
  21. //*******app上按下按键即会执行该函数app里按键
    * l7 t5 p; s& \' ?: t$ l
  22. void button1_callback(const String & state)7 x% x9 j6 J% E2 ~4 y* A
  23. {0 A& ^0 ~' w. B+ y5 l+ T
  24.    if (digitalRead(kg)==LOW)% v; w* r! c4 Z2 K5 v
  25.    {. ~( M8 m( B+ e
  26.         BLINKER_LOG("get button state: ", state);, V, Y) C: u- N+ t. W- u
  27.         digitalWrite(kg, HIGH);
    % P1 v; N6 j( J, ^6 E" A
  28.         digitalWrite(de, LOW);$ c7 ^9 ]0 r" ?3 D6 v5 J$ `+ e
  29.         Button1.print("on");% w- @( f! h- [  x
  30.         Button1.color("#0000FF");              //设置app按键是浅蓝色
    1 d6 f7 r1 b  U; E
  31.         Button1.text("开启中");4 {/ [: C( k: J& v5 K
  32.    }; b5 r: N* K$ _- s/ a
  33.    else if (digitalRead(kg)==HIGH)
    3 G+ @/ c% a9 _+ p5 V4 n
  34.    {  ]& p0 n# o/ K, s8 F7 l
  35.         BLINKER_LOG("get button state: ", state);0 n/ f3 ]  n3 S; o9 p- a. D' y
  36.         digitalWrite(kg, LOW);
    8 T5 ^) p% h8 Q2 m
  37.         digitalWrite(de, HIGH);
    : X) r/ J: O4 f- ?- L5 P
  38.         Button1.print("off");
      ]/ a# N. m1 y8 w2 A0 t
  39.         Button1.color("#00FFFF");              //设置app按键是深蓝色$ N2 C6 B2 B7 n  R  V1 r
  40.         Button1.text("关闭中");
    , p6 [; F4 j8 H6 _
  41.    }5 P& ?5 L0 i4 D
  42. }
    ) Z3 C7 m/ d+ s# @9 p

  43. ( R3 F, H2 {6 [, |, v( @
  44. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++, [8 V* @" L9 j" w- T0 f

  45. 7 c, h4 J# D# \! t, z+ c3 e) _
  46. //*******如果小爱有对设备进行操作就执行下面
    # l1 u$ c% e7 J: g
  47. void miotPowerState(const String & state)
    ( @* J7 F5 O. l( c" u9 N" W/ ^
  48. {
    $ s* b! \7 |4 m" o
  49.     BLINKER_LOG("小爱语音操作!");              //串口打印8 j7 E5 V$ E: ~
  50.     if (state == BLINKER_CMD_ON){: M) B) V+ Y7 N- V
  51.         2 O) C6 `% q5 H" |: k
  52.         digitalWrite(kg, HIGH);6 w8 s7 X" E: M8 r/ _# _
  53.         digitalWrite(de, LOW);
    4 [/ o% Q$ U7 O: [; ]7 e
  54.         Button1.print("on");
    ' ~) L4 r. x" ?$ L* s3 |( V3 y' ^5 G
  55.         Button1.color("#0000FF");              //设置app按键是浅蓝色
    # |1 T( u9 `9 t' `" A/ b
  56.         Button1.text("开启中");8 M9 |9 ~2 T+ X1 y( G3 n
  57.         BlinkerMIOT.powerState("on");
    ( h4 @( g2 Z- x' e  A
  58.         BlinkerMIOT.print();9 Q% E- j+ F2 T& j' @+ _+ j5 p( f! a
  59.    }
    $ J5 r' k+ R. r/ K, r& h
  60.    else if (state == BLINKER_CMD_OFF)8 @/ Y2 N, U) w, M# o" e
  61.    {# T' V/ P' L; i$ C2 ^( m* p
  62.         
    / x- s% N" |4 K5 j3 y" t4 ]( k4 c
  63.         digitalWrite(kg, LOW);/ G3 J$ e1 j" t' C' U
  64.         digitalWrite(de, HIGH);$ |; ]0 g, `( H
  65.         Button1.print("off");
      J- J/ h  q8 _) a* k1 d- c9 M' X
  66.         Button1.color("#00FFFF");              //设置app按键是深蓝色
    $ G  p$ Z) S0 z% N
  67.         Button1.text("关闭中");
    , @3 @1 i6 R* u' k
  68.         BlinkerMIOT.powerState("off");
    - r$ P/ \1 R" u  ^# L
  69.         BlinkerMIOT.print();
    . \2 _/ ]# d. l, z! Y. Y' }
  70.    }# _+ W# G) v9 Y  q
  71.       
    . A; M' b) N6 P
  72. 7 L( l+ z! z) B" Z
  73. }
    , u. Y! j* _8 a8 t1 A; p0 \
  74. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++, Y- D/ e# o% t6 ^' l8 U) r+ U
  75. //*******如果天猫精灵有对设备进行操作就执行下面
    . g: m9 o; B# Z7 @9 c
  76. void aligeniePowerState(const String & state)
    0 c) v" C+ K/ d; D3 v
  77. {, [; X8 A% v/ t1 ]# g& W
  78.     BLINKER_LOG("need set power state: ", state);! \6 c6 x7 J* a9 P9 V& n
  79.     if (state == BLINKER_CMD_ON)7 X, t" A2 {) I& A/ g1 m) E
  80.     {: w' Z: l& J/ Z6 w, h9 m
  81.         2 y& G/ p" p3 `6 q# d( u# D
  82.         digitalWrite(kg, HIGH);
    4 o8 t* _" M% Q2 ?% g
  83.         digitalWrite(de, LOW);
    4 q% c0 T! o5 L, A6 b& V/ i$ ]
  84.         Button1.print("on");
    0 E" L1 e: m3 ~5 I- G
  85.         Button1.color("#0000FF");              //设置app按键是浅蓝色) ^; A2 W* m  |4 {
  86.         Button1.text("开启中");
    : _/ q- e& Y9 ^* n4 {+ p" R1 f
  87.         BlinkerAliGenie.powerState("on");
    . Z& p5 J! h0 D4 Z; [7 n# c
  88.         BlinkerAliGenie.print();5 y6 v8 ^) P0 T" q# B8 K" x( e( N
  89.     }
    ( q  F0 T; {- J, [1 e" H- O
  90.     else if (state == BLINKER_CMD_OFF)
    ' ~! y4 k( M( Y# K1 G* m' g! A: ^
  91.     {& O) }' b: a8 ~; H$ c, ^
  92.         
    , R& B2 m7 J; @
  93.         digitalWrite(kg, LOW);
    # S$ }9 s- z8 J% }! ~
  94.         digitalWrite(de, HIGH);
    + r: n( k3 \) @" }2 M: x4 ~* {
  95.         Button1.print("off");& R) i8 a# ~3 E# Q0 ~9 v- k1 P/ L% a
  96.         Button1.color("#00FFFF");              //设置app按键是深蓝色
    ' n0 R% A+ q1 L. H3 u
  97.         Button1.text("关闭中");3 U* k5 [8 f( U' C$ U# K, M
  98.         BlinkerAliGenie.powerState("off");$ ^1 E7 t2 X2 @$ V! v7 n
  99.         BlinkerAliGenie.print();
    7 r  N2 h0 M! T
  100.     }; Y  P8 z3 Q* j7 w% H, X8 ~( j
  101.         
    8 I% N1 Y! m. B; v
  102. ( O3 B2 d; N5 ^6 n8 |0 d
  103. }
    4 A; _+ D: c: h+ @" F
  104.   //*******app定时向设备发送心跳包, 设备收到心跳包后会返回设备当前状态30s~60s一次
    $ q) R6 E( m8 |: b8 |5 I
  105. void heartbeat()/ w+ n2 r& n/ r, e4 ]" J$ w/ i8 U7 q* O
  106. {
    " ?5 z. k' W# {1 a; f
  107.   BLINKER_LOG("状态同步!");
    . W- R! o' G" t4 F+ W0 q) V& a
  108.    if (digitalRead(kg)==HIGH)
    9 h0 r- q" j1 ~! j9 Y
  109.     {
    0 j) h' ~: u0 D& x" ^9 f
  110.       Button1.print("on");  `$ G3 \+ X  z+ P% E5 T
  111.       Button1.color("#0000FF");              //设置app按键是浅蓝色
    3 ]! w! \) P( e% s
  112.       Button1.text("开启中");1 v% ?9 \9 R: z+ \" {  N
  113.     }
    . B7 h! p6 X" g1 X
  114.     else
    ) m1 A3 r$ x, C, G
  115.     {6 g( Q! j$ b; b
  116.       Button1.print("off");8 ]4 q5 o$ z+ ^; ]9 O: j: r* l
  117.       Button1.color("#00FFFF");              //设置app按键是深蓝色
    ( z$ F) U, Y$ H4 l3 R$ c, Y
  118.       Button1.text("关闭中");% S8 W% Y& H2 I+ [% C5 ?, L: F
  119.       n" d* }( }$ O6 u: u& q% x+ H1 N
  120.     }( P) g; ^* U- X0 M6 Y) Z5 d
  121. }: f& m; t; ^- n
  122. //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    " f/ W' y. U( J# E5 T/ J
  123. void setup(), |3 V) A' N% l0 A, o4 @
  124. {; ^- k2 N( Y' h( U5 I
  125.   // 初始化串口
    / s- K. z8 N, {- S
  126.   Serial.begin(115200);
    9 s& t, M' ^" @& {' B
  127.   delay(10);
    2 O. b7 a& ?- e: H7 a
  128.   BLINKER_DEBUG.stream(Serial);
    4 J& x7 o. h) l% Y+ C9 V
  129.   // 初始化有LED的IO8 r3 z% q9 o" k6 k
  130.   pinMode(kg, OUTPUT);                 
    8 |' z4 V/ x8 J+ j+ N% G  }- P
  131.   digitalWrite(kg, LOW);//初始化继电器上电状态 5 v; c' k9 h2 O* A" s
  132.   pinMode(de, OUTPUT);6 J( f3 o( U: l- m1 Y9 i
  133.   digitalWrite(de, HIGH);
    / A, Z$ h( v$ O
  134.   pinMode(key, INPUT);            ( Z/ |. H5 Q/ Z0 h7 [1 c1 U7 h
  135.   Serial.println();
    2 c3 T5 D3 A, P, R6 q
  136.   Serial.print("Connecting to ");
    ) b9 K. R  m" f
  137.   Serial.println(ssid);* b# E- \  T" ]% @- J  O
  138.   WiFi.begin(ssid, pswd);4 {# G8 D0 x3 {/ ^& d
  139.   while (WiFi.status() != WL_CONNECTED) {
    - v9 ^  S  i- W6 @) \  z& Y  E- \) r2 g
  140.     delay(500);  ~* B; |$ ^3 C
  141.     Serial.print(".");0 Y$ T5 u" q& U( F
  142.   }
    8 D- G. |0 ^! R4 l0 g% A
  143.   Serial.println("");7 y7 J% Q- y" t  B  R
  144.   Serial.println("WiFi connected");
    ( o+ @7 U* \8 R5 B
  145.   server.begin();
    , i/ T( C; i! P/ O! A
  146.   Serial.println("Server started @ ");7 _5 B+ K. E- q3 I- o
  147.   Serial.println(WiFi.localIP());# \: b3 ]1 E  z5 v0 Q- {/ U# P
  148.   //打印出IP地址,后期可以制作显示器来外部硬件显示ip
    , `/ w$ m3 B5 E# g/ z- }" G3 Z
  149.   Serial.println("To control GPIO, open your web browser.");' T/ r9 _) T$ ?0 l' Z& @
  150.   Serial.println("To set GPIO 0 high, type:");
    % M( z; ]( }3 B4 K- N
  151.   Serial.print(WiFi.localIP());
    7 B( n$ z& A  \6 L) A( ^
  152.   Serial.println("/gpio/1");
    * T6 v3 U- R3 F. p! e5 u
  153.   Serial.println("To set GPIO 0 low, type:");
    4 i& u; y+ Z& }+ o+ e5 b
  154.   Serial.print(WiFi.localIP());
    % d$ r9 @7 a. y5 G/ m
  155.   Serial.println("/gpio/0");
    % ^- ~" ^' t& T: r2 L
  156.   Serial.println("To toggle GPIO 0, type:");
    / I# ^  o. u; I- o
  157.   Serial.print(WiFi.localIP());- z0 \; T+ N& r7 j) N
  158.   Serial.println("/gpio/4");
    ) O0 P) W* f5 s9 W" e2 d+ Q
  159. 6 W' n& C* C& X" B* G9 B- z# F
  160.   // 初始化blinker6 r/ \; S) g) H' [2 y9 j
  161.   Blinker.begin(auth, ssid, pswd);
    % \  Y( k+ j$ W( T5 q
  162.   BlinkerMIOT.attachPowerState(miotPowerState);              //小爱语音操作注册函数
    $ N# d0 b/ B/ Q$ ~' Z  m
  163.   BlinkerAliGenie.attachPowerState(aligeniePowerState);      //天猫语音操作注册函数
    # L' R% j+ ]; F/ H
  164.   Blinker.attachHeartbeat(heartbeat);              //app定时向设备发送心跳包, 设备收到心跳包后会返回设备当前状态进行语音操作和app操作同步。- @5 G8 a0 t/ `& j/ E8 R

  165. 6 |% q, v. c4 h& `6 ~' c
  166.   Button1.attach(button1_callback);             //app上操作必须的注册回调函数关联按键名“Button1”和判断程序“button1_callback
    + e1 J5 q* R9 T# S2 ^; N" }; u
  167. }
    8 k6 o8 F  A, l% }1 k2 h, g5 y9 I
  168. void dataRead(const String & data)
    ( r% \. r9 |2 j9 p* _
  169. {
    5 {+ }) c. H( j% z* R1 k3 ^5 T% V
  170.     BLINKER_LOG("Blinker readString: ", data);2 u7 ^) {! {$ `& J( Q9 m8 I: ?

  171. % B1 q) n# {) v3 |8 f
  172.     Blinker.vibrate();7 N0 i: ^2 b- |9 x. b
  173.     / P# [5 n$ A  j% l: }; g+ a
  174.     uint32_t BlinkerTime = millis();3 R/ N0 q* E7 @& [
  175.    
    + E- j6 m% k; e" P' a+ U4 G9 N
  176.     Blinker.print("millis", BlinkerTime);8 _& b+ @" J) P1 i3 I
  177. }
    ' o: S# r" }3 v6 \
  178. void loop(). ]$ k3 l, n, w6 Z# T
  179. {0 O+ \1 ?7 ~$ }  `
  180.   Blinker.run();, Q$ r. q  H$ i9 {
  181.   if (digitalRead(key)==LOW)* T) M: H  o9 ?; w
  182.   {% a/ X3 O' k/ [5 T$ H& n; T4 h
  183.     Blinker.delay(200);
    # e5 t: G- ]- c$ }  [$ t9 J
  184.     if (digitalRead(key)==LOW)
    % F- y- f" i# ?$ z# \
  185.     {
    5 y- w' t7 s  b$ q* n' m# E4 y
  186.           if (digitalRead(kg)==LOW)
    * f7 u9 l  {7 C: l
  187.        {' Y/ F& x7 G5 x# \1 d0 R  |
  188.             
    ) C- a8 b" |& G- [. _
  189.             digitalWrite(kg, HIGH);, w4 }8 O1 o) Q- x1 S2 l
  190.             digitalWrite(de, LOW);
    9 ^$ c2 H/ w0 ^
  191.             Button1.print("on");
    ( o7 \. {) z: \/ s
  192.             Button1.color("#0000FF");              //设置app按键是浅蓝色* x/ H4 w. y& }) u' S" `9 K7 q
  193.             Button1.text("开启中");
    & ^$ z/ {3 Y3 r- F1 [3 m
  194.        }; l( V+ x/ n/ Q7 j
  195.        else if (digitalRead(kg)==HIGH)
    , F  j, k, U1 G
  196.        {
    + |- Y9 u2 v% J6 S; U# |# a
  197.             digitalWrite(kg, LOW);) Q* j1 o' e& |" b7 a$ ]
  198.             digitalWrite(de, HIGH);
    6 Y9 X1 x; B; a1 e
  199.             Button1.print("off");
    / b& b4 q: ^1 [! P2 g
  200.             Button1.color("#00FFFF");              //设置app按键是深蓝色6 J  N# U2 f4 I7 K! p, T- D6 |
  201.             Button1.text("关闭中");8 ^& u0 m" P; H( m4 P3 ]
  202.        }
    # f; Y) T; H: n7 R' x; d: E2 l& V
  203.       }. E$ Q) H6 T" W# n  c2 q$ \
  204.     }9 s- F/ h! E6 ~
  205. }
复制代码
7 P! }( |$ @( J. r
2 C$ p; C% y  h  J
我没有用卖家给的码,我自己写了一个,参考我前面的文章最简单的8266天猫精灵控制开关,点灯、Mixly可视模块化编程 https://bbs.nasdiyer.com/thread-18755-1-1.html
) l6 t# U3 D. `  h" W- f/ p+ _: H6 h( n: p( E4 k
把上面的2改成5,把高低电平对调一下就可以使用天猫精灵来控制你的这个插座了。我是把我的第一个插座放在了我的落地电风扇中了,当我慵懒的在沙发上刷着手机时候感觉有一点点热,我只要呼唤“天猫精灵,打开风扇”,就可以了。
  V7 f# ]% T5 y3 D. s' e9 N
: V9 g0 b0 P$ x: O
, c8 l8 V  k) m4 X, Y; h

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
; {7 f( Z+ x- A, g+ b- R% i7 s买了几个   做工挺扎实的,但是外壳怎么拆啊  拿斜口钳拨了一个,   四个圆角的卡口根本没法正常拆 ...

+ O1 w! _: _) Q  |* r. M( Z大力出奇迹呀

1

主题

8

回帖

256

积分

中级渣柚V1

积分
256
发表于 2021-8-29 08:14:58 | 显示全部楼层
a467913252 发表于 2021-8-24 15:53
% T  r$ Y9 ^& N: g9 @# p买了几个   做工挺扎实的,但是外壳怎么拆啊  拿斜口钳拨了一个,   四个圆角的卡口根本没法正常拆 ...
; q2 q& O7 E; a$ H3 R$ S7 \
昨晚拆了一个,废了老大劲,想和卖家说的无损拆下来,不拆个三五个积攒经验,基本不可能

2

主题

11

回帖

62

积分

初级渣柚V2

积分
62
QQ
发表于 2021-9-4 23:05:22 | 显示全部楼层
sevenup0719 发表于 2021-8-29 08:14
' p+ b* I  `& ?! V昨晚拆了一个,废了老大劲,想和卖家说的无损拆下来,不拆个三五个积攒经验,基本不可能 ...
8 R4 G5 u/ P# a/ A
你的搞定没  为什么我的根本没法烧录   连接不上,,用esp01s还没问题的
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-8-11 18:51 , Processed in 0.068342 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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