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

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

[复制链接]

11

主题

51

回帖

209

积分

中级渣柚V1

积分
209
QQ
 楼主| 发表于 2021-8-21 13:57:54 | 显示全部楼层 |阅读模式
本帖最后由 易记 于 2021-8-21 14:05 编辑
9 F$ Z+ h! W5 T
# }: K  B, y- x* S) y+ Q' o最近玩ESP8266,想做个天猫控制开关。& `/ B0 i# }4 B; V
但是我很懒,一个个配元件嫌麻烦,于是想着能不能淘到便宜的带电源板的模块,多倒是蛮多,一般都要20多块钱。
5 x4 d3 x# _9 y, t" c0 M) W还是闲钱上逛一下看,找到一个联想的国外版8266智能插座,价格才8.5元一个。有一点不足,就是只有三孔,要是五孔的就好了。老板说五孔杂牌价格一样也有货,晚两天发布。
) c1 R# h* p( E5 Q QQ截图20210821125037.jpg # M5 Z( F$ Q5 t  b5 a
# }# S  z; T+ h' u* M
. ?  r+ s  M0 k
问了一下店主,买20个一盒才包邮,想着20个还是有点多,买了5个,连运费47.5元。: l2 s0 b3 h; S; `8 i

3 `3 T' a+ a5 R3 D  B; O QQ图片20210821124517.jpg " ^9 K! n- s" s' j& Z1 x5 s0 }

  Y* ^2 _5 Z$ }
( c( w5 W! b7 x! f& J

1 _+ t1 M' z& T/ a5 z到手,当然是拆拆拆。
/ t) G( l; N8 I IMG_20210820_134104.jpg $ ^& k  _2 |5 p  X
7 j! B0 e+ M* y' p
& C) W0 f$ ?$ y5 }" B  e! u! k1 B
联想的做工,还是感觉不错的,光这个继电器应该也要个7-8块钱。
8 O5 }  @; e% M IMG_20210820_160634.jpg : ^; N1 G! m: v5 h/ q1 [4 b# [" R

; S4 n/ Z- l# g2 w! R2 ^: W0 Q, I2 h

+ f2 P* b3 {$ i; a- Q' _继电器是两组常开,感觉要是接电灯双控开关是不是有点麻烦的,不过用于插座是很安全,要断二条线都断开。
; q* G% l7 l$ s QQ截图20210821133707.jpg
2 p3 ~% D) d4 N. X! t
7 G) C$ b3 Q6 q/ k% P4 t
IMG_20210820_134114.jpg
. A$ g  l4 D! d, P
. L- ]/ }, F% v- y9 W
电源芯片1 v( M3 s1 i* L

9 L$ V4 L& M" @2 I9 S
9 g* a9 R1 C1 y5 ]9 q) S
8 X( v8 E/ t) T# R/ I
有一个按钮,按钮有二个蓝色LED灯
' }% |' s% |9 J" ~+ N/ v IMG_20210820_134157.jpg
$ w+ e, U" i: O) {; n5 P* ^. N% Z/ l6 i  v2 s! o8 X' S; I
9 l+ N3 U  n9 R6 D
8266
/ u' U, n" X2 e IMG_20210820_141913.jpg
2 V! i8 @) r  a
0 ?3 q. C5 x! e  }$ L- p

! l+ g6 R' z6 K5 i; w
3 Y; i1 K, @- V' S

$ `; R# y1 M+ e1 d$ }( m, W接下来就是刷机了,版子上面都预留测试点。
7 o  R+ ?9 J5 ]& p# J接线比较容易,上面都有标示,GND,3.3V,TXD-RX,RXD-TX,还有一个就是IO0接地后刷机。9 k7 Q( U0 R! W* r4 D( v
未标题-1.jpg
* n& x* h# ]# h
注意RX这个点,就是3.3V边上的这个点,焊盘设计的就点问题,电烙铁热一点或是焊的刷机线过粗的话,容易掉焊盘。' \- L8 Y! M( a6 q3 g& Q6 D8 D
要是掉了就只有一个过孔了,要是焊不上,只能再拆开接在另一面,所以为了避免不必要的麻烦,请注意一下。
+ X8 ]  B; W- @! Y+ g! o/ t* \

. H6 p! q  D) o, _% S) g; Q3 r$ t! p; w# H. b- K
3 _$ h& G; W: L4 d7 h7 C& H/ l5 z

  O- M2 \) O5 v
) W4 v9 R2 c9 j* n
    5号脚位是继电器输出8 U# J1 N5 L7 I& }( n6 Y
    12号脚位是灯输出: z# p. b! e" k
    4号脚位是按键
: j# h# ^0 d# W* u% Y- d/ ?

: R& k" a$ A0 i9 H: a, O) {+ p
# Q# Z0 A' i6 u6 [
1 M+ L  W; z& a
2 A9 r$ Q0 H% i! Q1 F: q
卖家有发一个源码,如下
  1. #define BLINKER_WIFI                    //官方wifi协议库% \( C- c+ s) R
  2. #define BLINKER_MIOT_LIGHT              // 设置小爱灯类库5 x( {/ V8 O- X
  3. #define BLINKER_ALIGENIE_LIGHT          // 设置天猫灯类库
      p: I: s2 ?, X  k
  4. #define BLINKER_PRINT Serial            //串口协议库/ B3 f/ j4 ~  w2 l& U9 J  N
  5. #include <Blinker.h>                    //官方库; r/ r+ }* K8 U3 }2 i9 t* i. P% }
  6. #include <ESP8266WiFi.h>                //官方库
    & d9 ?" e, z9 s2 Y; Z+ R, c- m' A
  7. WiFiServer server(80);                  // 服务器端口号
    ' ?, O+ u2 q  {7 M' N
  8. - g+ F8 x/ F5 e6 a4 @( V
  9. char auth[] = "c4942fb1d5e4";     //设备key
    ! E( p! c4 a# P( g
  10. char ssid[] = "wanboshi";     //路由器wifi ssid0 w7 Q: i% G3 I) }* [: p" g  b! r
  11. char pswd[] = "1365662999813586348220";     //路由器wifi 密码
      ~; e$ T# n/ r$ Y6 k

  12. / W! `3 @! O+ o7 c: L
  13. bool oState = false;% R" [. Q8 V3 y1 S& ^; W8 y' j6 b: T' r

  14. % x9 O, V7 o. a, c/ Q6 [
  15. int kg=5;//继电器输出
    % a7 y: T* O* W
  16. int de=12;//灯输出$ [3 D# g; ~$ {
  17. int key=4 ;//按键- h6 w' ?% V0 h" Y
  18. //*******新建组件对象. d% O0 J4 v+ |& y
  19. ( ^! E6 S& K1 _; b
  20. BlinkerButton Button1("btn-abc");              //设置app按键的键名8 z" C! h3 \8 k9 _
  21. //*******app上按下按键即会执行该函数app里按键
    # V* _$ I! e# M  g- M
  22. void button1_callback(const String & state)* O- z# U  ?4 r( f7 O
  23. {
    4 n) s% |0 M$ X9 R
  24.    if (digitalRead(kg)==LOW)
    4 C. ?3 u- \' p% @+ f# r; t
  25.    {7 Y! p5 b: j. D) t
  26.         BLINKER_LOG("get button state: ", state);
    4 i8 \+ s. P) Y, f* T+ b
  27.         digitalWrite(kg, HIGH);2 Y1 f$ B6 a+ Z
  28.         digitalWrite(de, LOW);
    # @0 |2 {3 W3 h+ p. Q$ i" x
  29.         Button1.print("on");7 O1 y' T* t* D5 I' M4 t7 z9 N# [
  30.         Button1.color("#0000FF");              //设置app按键是浅蓝色
    ) j3 i; f9 Z# I2 N% n
  31.         Button1.text("开启中");4 y% p8 X( _" B( ^( o6 W0 t# G" D
  32.    }
    # |4 Z0 h" Z" ]& v2 s& X
  33.    else if (digitalRead(kg)==HIGH)$ u" I# h+ w: k7 k8 t8 ?
  34.    {
    9 Q, J1 T6 G2 z
  35.         BLINKER_LOG("get button state: ", state);" n5 F# q9 e' T" V8 |: `' p
  36.         digitalWrite(kg, LOW);
    * s4 V7 k( M/ r- N" J' z
  37.         digitalWrite(de, HIGH);
    8 B% J& J" c( z7 h5 V. q5 @2 B1 z; ^
  38.         Button1.print("off");  A4 ?/ {0 M9 y. s
  39.         Button1.color("#00FFFF");              //设置app按键是深蓝色) ^8 v( K; r# l* b# G
  40.         Button1.text("关闭中");
    ; k; V0 M; V* |( c- c3 `' f8 d
  41.    }  w: R/ i' z1 r3 ?0 H+ N+ B
  42. }
    * c) A# S* V% F9 Z% o( x( {$ O9 [

  43. ( H8 i, q/ F4 z
  44. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    / P4 l- U# Z+ e1 ]4 {  s4 J

  45. 2 J, h: K8 u6 w
  46. //*******如果小爱有对设备进行操作就执行下面# B5 E) Z9 w4 \) b4 `$ g
  47. void miotPowerState(const String & state)# I9 M0 \/ {+ `8 a$ K' V( m
  48. {2 m5 i9 |4 x) y
  49.     BLINKER_LOG("小爱语音操作!");              //串口打印
    . ?  `1 k. B$ Z- B4 k. J; k! H
  50.     if (state == BLINKER_CMD_ON){
    ) ~( G( Z& s& e/ e! D; r
  51.         3 F/ T6 }  N2 L1 F/ X0 `
  52.         digitalWrite(kg, HIGH);+ i* n4 \* U# B
  53.         digitalWrite(de, LOW);
    ; b3 k, Z7 ~* X3 F
  54.         Button1.print("on");9 y- U) r7 }( U! f9 U! a3 K
  55.         Button1.color("#0000FF");              //设置app按键是浅蓝色' X/ Q$ H) ~/ ]: f" A' P
  56.         Button1.text("开启中");
    . }& v" ~) \6 S
  57.         BlinkerMIOT.powerState("on");, x! j! w" V, n- {4 M# w/ u2 w+ O
  58.         BlinkerMIOT.print();+ B- L3 ?0 J( e0 \
  59.    }. t' E" z1 J: ~# N
  60.    else if (state == BLINKER_CMD_OFF)" I; Z6 K, t# L% a1 T* `5 Q! ]
  61.    {
    ) ]* @6 e: [8 f& T# C
  62.         6 m5 q$ `7 _+ c8 I5 O- S1 `8 ?* w' l
  63.         digitalWrite(kg, LOW);9 H% S1 K/ k6 r8 Z6 |0 S8 Z
  64.         digitalWrite(de, HIGH);
    / ?9 J4 q8 y: O* E: s4 X
  65.         Button1.print("off");& w: c, i0 w& k
  66.         Button1.color("#00FFFF");              //设置app按键是深蓝色
    7 `6 d5 M) h. \) \3 Y6 [/ ?! N9 L
  67.         Button1.text("关闭中");5 y- d+ l4 ?: M
  68.         BlinkerMIOT.powerState("off");
    0 g6 ?; a' |( Y$ F
  69.         BlinkerMIOT.print();
    8 I/ ~* g, F% G" [+ a2 k/ P, M$ @0 U
  70.    }& }! }/ c$ _  d6 M- e$ r2 ^+ ]
  71.        0 y6 ^( s+ @- {7 ~2 O' ^% y: I% C
  72.   o( b$ J8 G# p3 G6 g; \
  73. }3 I) ]. y% P# s5 V+ ]! t
  74. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++5 F, a6 H# v2 j3 L8 [
  75. //*******如果天猫精灵有对设备进行操作就执行下面
    4 q3 H( I7 W' V9 z
  76. void aligeniePowerState(const String & state)7 n6 J+ w. H2 P! p3 g
  77. {; z7 U: x5 [- k8 }( o4 b) i0 `( _
  78.     BLINKER_LOG("need set power state: ", state);0 S/ O! B1 _% f. n) j3 b
  79.     if (state == BLINKER_CMD_ON)
      a/ R$ z& {' c; a( y
  80.     {7 x# k: a7 n2 [* z
  81.         ; }0 w% g8 ^9 ]0 o
  82.         digitalWrite(kg, HIGH);$ ]. M# [8 r+ \. ^% {
  83.         digitalWrite(de, LOW);' q5 }( p+ u" C2 m( Q' t
  84.         Button1.print("on");5 z9 K7 W: S! L, G& U4 a, N" D9 t. L
  85.         Button1.color("#0000FF");              //设置app按键是浅蓝色( `' Z! r8 X- p
  86.         Button1.text("开启中");
    / s0 F( ^4 I2 T" R, V/ j- U8 u
  87.         BlinkerAliGenie.powerState("on");
    ' z' K% x* J* |$ S8 S1 T$ A
  88.         BlinkerAliGenie.print();* I- F' p1 }7 w8 h" N& J1 L
  89.     }/ o) {9 y, D2 b! C$ a% i& E% M
  90.     else if (state == BLINKER_CMD_OFF)3 C& b' W# ]0 y. Q+ Y, \) W
  91.     {
    , ^& d+ j4 e- q. j
  92.         
    1 }$ l/ S4 U0 U
  93.         digitalWrite(kg, LOW);  G* @8 Z5 {+ T* I
  94.         digitalWrite(de, HIGH);
    * n1 ~' ?+ C$ H4 `3 U
  95.         Button1.print("off");
    & X9 j  c3 M! q( V- v8 ~
  96.         Button1.color("#00FFFF");              //设置app按键是深蓝色# g. V+ B- u: P* b, d% v4 k) P4 ]
  97.         Button1.text("关闭中");2 ]7 J; C/ _: N2 V+ l* _
  98.         BlinkerAliGenie.powerState("off");
    1 b3 u) S$ O) p+ t% g6 |
  99.         BlinkerAliGenie.print();: G, M+ Y' a9 F0 ~" R
  100.     }
    - b/ f9 {* ^6 k, q
  101.         ( F* K' R- `, \) w8 q. s
  102. - {/ v' B8 \9 g& J2 @' E/ T/ S
  103. }3 S$ g/ y8 r/ Y$ _/ z" z3 _
  104.   //*******app定时向设备发送心跳包, 设备收到心跳包后会返回设备当前状态30s~60s一次6 _( C# f8 N4 e  t
  105. void heartbeat()
    * _  y* ]$ K( t2 D) V$ U7 R
  106. {9 t( h% n) g. q4 Y2 m8 b
  107.   BLINKER_LOG("状态同步!"); 8 Z! a5 J' w6 Z7 c
  108.    if (digitalRead(kg)==HIGH) 5 x. u) O6 D  T) [. C, |6 X
  109.     {
    " q9 p; W, j" Z: o* t8 H9 N
  110.       Button1.print("on");
    : C8 l0 K5 \+ q% w$ \& d; f
  111.       Button1.color("#0000FF");              //设置app按键是浅蓝色$ E& M& X8 i0 g; f7 B* Z/ t5 G
  112.       Button1.text("开启中");
    4 \" b% U: S# p% U/ ^& m
  113.     }. g, ]+ C8 i/ j
  114.     else
    2 z7 {0 q7 O) a
  115.     {6 g( Z; ]3 x' l' s6 N# n
  116.       Button1.print("off");
    5 ]* F+ w; \/ O1 F. V
  117.       Button1.color("#00FFFF");              //设置app按键是深蓝色9 R5 |' [- Q% }! ~& B9 e
  118.       Button1.text("关闭中");( N% _( X9 N0 ~# D& P! B/ e
  119.    
    % C! w- q, T/ e0 F' Z7 X" @. \
  120.     }# C1 |' `$ D* d3 B8 f# |! R
  121. }3 r! W! K' ^: @7 d0 z/ i3 ^% R
  122. //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    8 Q; }. f( o' u  G
  123. void setup()
    # T) [5 d% V! H2 H" Y, }* U
  124. {: r/ i3 Y2 u3 T; t; X7 I9 J. m
  125.   // 初始化串口) u% N' ]1 C) H3 ]
  126.   Serial.begin(115200);" M( F$ o7 |! ?; [( ~
  127.   delay(10);& t) [  P, a: |4 }3 Q7 d
  128.   BLINKER_DEBUG.stream(Serial);0 \$ D+ `. {- Q; W
  129.   // 初始化有LED的IO' A* s$ x! x4 c
  130.   pinMode(kg, OUTPUT);                 6 O3 W. n0 I0 i0 [. _
  131.   digitalWrite(kg, LOW);//初始化继电器上电状态
    5 h- r6 b  \4 E9 N
  132.   pinMode(de, OUTPUT);
    ( ]; _3 P1 @, c
  133.   digitalWrite(de, HIGH);
    * {) n# E  R, ~) Q# M2 M
  134.   pinMode(key, INPUT);            
      ?* v7 w9 p9 {$ h: p
  135.   Serial.println();
    ! _2 x1 o$ D- T5 b0 v
  136.   Serial.print("Connecting to ");
    8 D2 k$ `5 f* D( w2 z+ O
  137.   Serial.println(ssid);
    " s) O  \# h/ c, D' ^" i  k+ b
  138.   WiFi.begin(ssid, pswd);
    . W$ i4 @! V2 r) x6 ?' ]
  139.   while (WiFi.status() != WL_CONNECTED) {  t- {, b/ h7 q7 [7 J1 c6 t! y: H1 T
  140.     delay(500);
    2 I/ C- a" M* d9 l3 h' y( C
  141.     Serial.print(".");
    ( L$ H, k' k, o9 g6 L
  142.   }, o( a' w; P! ]. ?5 Z7 u
  143.   Serial.println("");
    . e* f  `& r0 t5 v
  144.   Serial.println("WiFi connected");
    5 M* J# i  t* j- I$ `
  145.   server.begin();" D$ d; B3 a$ Q8 z: ~3 ^
  146.   Serial.println("Server started @ ");
    * P4 \/ u! I: [; W7 \9 W
  147.   Serial.println(WiFi.localIP());) h# Q2 H5 f- O/ U
  148.   //打印出IP地址,后期可以制作显示器来外部硬件显示ip" p, P0 ]1 Z9 \. }9 j" \
  149.   Serial.println("To control GPIO, open your web browser.");3 Y; h7 W7 Y7 o2 R$ Q% _$ r
  150.   Serial.println("To set GPIO 0 high, type:");
    # q( |# x1 s1 h8 \$ c2 ~
  151.   Serial.print(WiFi.localIP());
    : n, [5 h9 H' s  ~1 ?- u- Y5 l
  152.   Serial.println("/gpio/1");
    " l3 q( R  U$ ~# S& m* w
  153.   Serial.println("To set GPIO 0 low, type:");: ], r6 B1 H; ^! ]# W( {
  154.   Serial.print(WiFi.localIP());- @) b5 D, y& @/ u
  155.   Serial.println("/gpio/0");, x+ i+ f/ o" E2 l: h
  156.   Serial.println("To toggle GPIO 0, type:");
    ( h. \2 O9 y+ n% r5 _
  157.   Serial.print(WiFi.localIP());+ I8 Q5 j2 H4 D& p. O2 A) Y
  158.   Serial.println("/gpio/4");3 d% w  E0 M) a, M8 E. z

  159. ) l/ {' m+ c; h0 {- Q
  160.   // 初始化blinker
    ! |/ C) I: ^' ~* {6 f0 R# v' z/ O) }
  161.   Blinker.begin(auth, ssid, pswd);% A! u# [$ E# Q# y3 v
  162.   BlinkerMIOT.attachPowerState(miotPowerState);              //小爱语音操作注册函数
    . m1 V  ?( |) C- b9 J" K" O9 m
  163.   BlinkerAliGenie.attachPowerState(aligeniePowerState);      //天猫语音操作注册函数! x3 [1 f% K: U6 W. `8 i0 R) @$ i
  164.   Blinker.attachHeartbeat(heartbeat);              //app定时向设备发送心跳包, 设备收到心跳包后会返回设备当前状态进行语音操作和app操作同步。; e( i% g, B4 _

  165. 7 J7 L, n% p' I  }
  166.   Button1.attach(button1_callback);             //app上操作必须的注册回调函数关联按键名“Button1”和判断程序“button1_callback4 l, G: f3 e* q- {
  167. }
    ' W# c; z% T9 L+ C; u8 |, Q5 U0 W
  168. void dataRead(const String & data)
    " C4 G6 x- q$ c/ r
  169. {
    . x6 W/ n/ K5 x; m( n) R
  170.     BLINKER_LOG("Blinker readString: ", data);, K$ [! K* e5 |& `8 t" Q* J
  171. 8 j( ^5 }5 E, s
  172.     Blinker.vibrate();
    ! x5 b" p" n9 _* l( R# q
  173.     : O2 C" z, _/ R; y1 R- F
  174.     uint32_t BlinkerTime = millis();
    4 ~  p# M8 E) S; F& w# @, P
  175.     ' d( v2 v! R! ?0 n
  176.     Blinker.print("millis", BlinkerTime);" e5 a  h! l5 g) ]$ j( y
  177. }
    5 N" ~/ u( D  \9 M+ y5 C0 u0 Q
  178. void loop()
    * k% ^# X0 M6 J# V
  179. {
    3 V( A8 U; m  [- ^5 z
  180.   Blinker.run();$ w! z. o7 q" q0 P. S% Q
  181.   if (digitalRead(key)==LOW)0 J; g9 a! U9 s8 B  F. ~) ?
  182.   {
    " ?3 z4 M+ K* Y# j
  183.     Blinker.delay(200);% B/ t  j# b/ H6 |" r. A
  184.     if (digitalRead(key)==LOW)' ]* \$ t: _8 B; [- E
  185.     {( j3 o# K5 @, J/ u+ {: `
  186.           if (digitalRead(kg)==LOW)1 x6 B5 t4 ?/ g5 S- |
  187.        {
    ) ]) T7 Y* D1 i; @7 Y- V) w
  188.             5 m& Y2 M. T1 q, `" e+ L
  189.             digitalWrite(kg, HIGH);
    - y) ^! S* H% s
  190.             digitalWrite(de, LOW);
    3 u8 h  \8 P7 U) K
  191.             Button1.print("on");" M1 g% N9 m6 ~2 g+ S2 F- ~
  192.             Button1.color("#0000FF");              //设置app按键是浅蓝色
    7 ]6 @8 ^$ ?: c2 H
  193.             Button1.text("开启中");- G$ i9 O) j0 M
  194.        }
    ; W& M7 }, Q: v2 `
  195.        else if (digitalRead(kg)==HIGH)2 m1 I5 Q' ~1 ]4 s# _
  196.        {
      M7 O9 W- h9 a9 w9 S$ c
  197.             digitalWrite(kg, LOW);
    ! C) W2 K/ [9 J  K& G7 `9 O
  198.             digitalWrite(de, HIGH);4 k; e* ~8 V) p/ X& t: _
  199.             Button1.print("off");8 u+ i0 L( N. a7 M  i# P  Q6 U# i
  200.             Button1.color("#00FFFF");              //设置app按键是深蓝色
    * ]" F: M- i4 }9 ~4 T
  201.             Button1.text("关闭中");
    : S! v# W" e; u7 n. C+ O
  202.        }) I! P4 ?5 `6 A3 X3 N
  203.       }; |3 L3 |7 U9 Q8 N5 W
  204.     }
    ' q- V- V/ A0 }$ x! j) b! Q
  205. }
复制代码
; f/ r8 h( P$ g5 H& B$ u* ^2 A& i
* k+ s1 o' G* H$ C3 {0 t
我没有用卖家给的码,我自己写了一个,参考我前面的文章最简单的8266天猫精灵控制开关,点灯、Mixly可视模块化编程 https://bbs.nasdiyer.com/thread-18755-1-1.html
9 ~, t. Y: T% X& x0 I0 J3 H1 x' F# N' f( a  d! @
把上面的2改成5,把高低电平对调一下就可以使用天猫精灵来控制你的这个插座了。我是把我的第一个插座放在了我的落地电风扇中了,当我慵懒的在沙发上刷着手机时候感觉有一点点热,我只要呼唤“天猫精灵,打开风扇”,就可以了。
1 ], C9 K/ n3 G
' `/ G" ?' l0 j  @
  G2 g8 O; C. u% ^! A. v

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
" Q% G" |2 w: i7 `% _2 E+ V买了几个   做工挺扎实的,但是外壳怎么拆啊  拿斜口钳拨了一个,   四个圆角的卡口根本没法正常拆 ...

0 L4 Y0 w$ R9 ]; \; y* Z大力出奇迹呀

1

主题

8

回帖

256

积分

中级渣柚V1

积分
256
发表于 2021-8-29 08:14:58 | 显示全部楼层
a467913252 发表于 2021-8-24 15:53
3 a4 z/ C+ t4 L4 A: A! R  Z9 v% c买了几个   做工挺扎实的,但是外壳怎么拆啊  拿斜口钳拨了一个,   四个圆角的卡口根本没法正常拆 ...

0 r; ~5 m7 r, a9 s6 Z$ Z3 j! `昨晚拆了一个,废了老大劲,想和卖家说的无损拆下来,不拆个三五个积攒经验,基本不可能

2

主题

11

回帖

62

积分

初级渣柚V2

积分
62
QQ
发表于 2021-9-4 23:05:22 | 显示全部楼层
sevenup0719 发表于 2021-8-29 08:14( K, n+ [) D' ]0 F
昨晚拆了一个,废了老大劲,想和卖家说的无损拆下来,不拆个三五个积攒经验,基本不可能 ...

) L9 q/ e, |7 B* C- P你的搞定没  为什么我的根本没法烧录   连接不上,,用esp01s还没问题的
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-7-15 16:58 , Processed in 0.102041 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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