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

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

[复制链接]

11

主题

51

回帖

209

积分

中级渣柚V1

积分
209
QQ
 楼主| 发表于 2021-8-21 13:57:54 | 显示全部楼层 |阅读模式
本帖最后由 易记 于 2021-8-21 14:05 编辑 $ Q' d; p" P% A$ }' V2 \& G/ g

- [! a2 k' C: E2 E最近玩ESP8266,想做个天猫控制开关。
8 y0 q1 m- y0 `8 \1 U+ \但是我很懒,一个个配元件嫌麻烦,于是想着能不能淘到便宜的带电源板的模块,多倒是蛮多,一般都要20多块钱。  w) o# [' W) x% u, ?+ v/ U
还是闲钱上逛一下看,找到一个联想的国外版8266智能插座,价格才8.5元一个。有一点不足,就是只有三孔,要是五孔的就好了。老板说五孔杂牌价格一样也有货,晚两天发布。
' W4 }+ F) k. r8 N QQ截图20210821125037.jpg 7 D) t$ Q* c' Q8 [

$ a0 s/ [+ B4 W* F' e+ ]& B0 r1 m) Q
" E1 g" k* Q1 H3 S( h
问了一下店主,买20个一盒才包邮,想着20个还是有点多,买了5个,连运费47.5元。9 f6 J: ?) ?$ m. W8 M9 I& k. z

0 F9 ]1 i+ z0 x' q. H$ p  | QQ图片20210821124517.jpg
; i# y) P2 p, ?7 Q( d6 W
* A  [  N8 d1 k8 ]2 B$ w5 D' _

, _# Y0 z- J4 X3 t7 e. z" I

  D" W6 t- s% E/ e1 S2 g到手,当然是拆拆拆。
9 [# d8 ~! x' g4 m3 N  _) r IMG_20210820_134104.jpg 5 d2 z+ V" _. W6 Y4 b( c
  o( z8 y" r. Z

9 a+ G6 F, f' Y, k- U+ s联想的做工,还是感觉不错的,光这个继电器应该也要个7-8块钱。
. s/ N2 q, P+ S, Y IMG_20210820_160634.jpg
5 G( h7 a/ I( H5 \* b
" f. o( m* c* k3 y  D
- e2 k$ s& i9 H
继电器是两组常开,感觉要是接电灯双控开关是不是有点麻烦的,不过用于插座是很安全,要断二条线都断开。1 d8 \6 i4 w& T- D8 G: ^
QQ截图20210821133707.jpg
4 ~) B! Z7 Z+ A
+ A# C0 r; h# X, u' b# O; ^/ H
IMG_20210820_134114.jpg 4 [9 R7 L. I$ w
. n. E) O% x: b; j
电源芯片3 D# z* l' T& ^( A
6 R" H' ~( h; n% F$ ~/ t
4 v- S% N- j* q5 Z9 n

. R1 b% `# v9 P) D! {有一个按钮,按钮有二个蓝色LED灯
6 d9 t0 Q- n! L IMG_20210820_134157.jpg
7 o( f0 s$ t2 P* U9 D" x! }5 \: Z1 n

1 x3 [1 l) u7 _82660 A9 l' N2 H1 l
IMG_20210820_141913.jpg / r$ A( H2 C0 X
( m) Q/ ~7 f9 l
' j9 t! d% I4 J  x) i
- o; P  l4 Y. c1 y: s% \
  C6 m9 A1 D3 v  D! \9 |: O, u+ {
接下来就是刷机了,版子上面都预留测试点。
5 u) o# y4 \7 o  K, b) u& F接线比较容易,上面都有标示,GND,3.3V,TXD-RX,RXD-TX,还有一个就是IO0接地后刷机。
  a0 h7 D9 D$ w8 r: G- J6 j 未标题-1.jpg
5 B5 k0 Y" t+ x. c% O
注意RX这个点,就是3.3V边上的这个点,焊盘设计的就点问题,电烙铁热一点或是焊的刷机线过粗的话,容易掉焊盘。
1 ?. C) x4 d( G- Y  m0 f3 C) }要是掉了就只有一个过孔了,要是焊不上,只能再拆开接在另一面,所以为了避免不必要的麻烦,请注意一下。
  ?3 W3 b' C. r9 J

! z0 e- e  J0 Y  D( r+ ?. T+ z# A9 |/ s% l
7 v1 \* y* W  ?2 C6 I" m
' Y! o5 l, \" y3 y2 ?, e

6 C& q6 Q- u6 s    5号脚位是继电器输出
' Z2 a, g7 N" x. |7 [/ {    12号脚位是灯输出
2 ?# L: h4 b, h8 y4 J    4号脚位是按键
, `& M8 X/ r4 X0 X
" m5 ?9 q: A5 O. a  Q+ l
1 z) F2 ^. j6 s0 q

+ ~2 w2 Z8 B& s: O. ?0 z3 ^
: f+ a  d6 i% G* ?* [+ S
卖家有发一个源码,如下
  1. #define BLINKER_WIFI                    //官方wifi协议库* F; R: g" I# d% v# w
  2. #define BLINKER_MIOT_LIGHT              // 设置小爱灯类库, ?2 ^2 l" U$ c$ D1 e
  3. #define BLINKER_ALIGENIE_LIGHT          // 设置天猫灯类库* o: a: p* q+ z) O9 E7 C' S
  4. #define BLINKER_PRINT Serial            //串口协议库
    9 p1 a* h2 m+ f/ Y1 N
  5. #include <Blinker.h>                    //官方库1 O$ \8 Z  T$ d1 a4 R* r
  6. #include <ESP8266WiFi.h>                //官方库
    2 n, s, j( q4 w
  7. WiFiServer server(80);                  // 服务器端口号
    ; {. E$ T" m, ^3 i$ S- f
  8. # d+ @( d; D' |: N4 i, F
  9. char auth[] = "c4942fb1d5e4";     //设备key. n2 P" T; g' G. j* y& k
  10. char ssid[] = "wanboshi";     //路由器wifi ssid6 m! J) A$ x+ h* q
  11. char pswd[] = "1365662999813586348220";     //路由器wifi 密码
    1 V7 X  q! V: u# r- }& T" z% V

  12. 4 V, T3 {$ B' E: ]6 i% m" Y
  13. bool oState = false;( [6 Y9 ^0 e- Q6 s! S

  14. * [) u2 s0 d6 S; q4 E) S
  15. int kg=5;//继电器输出
    & i, T4 {1 k; O+ C5 C& l- u
  16. int de=12;//灯输出
    ( _2 k3 L* Y" g" X: U+ X9 y# c
  17. int key=4 ;//按键- z) G# X8 W+ G$ j: J5 S
  18. //*******新建组件对象: C" B5 @2 _+ Y( A2 p+ ~4 p

  19. # w; g; N: q; @0 J
  20. BlinkerButton Button1("btn-abc");              //设置app按键的键名, r5 _( c: k: x/ d) }+ w2 ~
  21. //*******app上按下按键即会执行该函数app里按键7 v1 h# p; \/ Z5 @
  22. void button1_callback(const String & state)
      ]8 w6 T" v1 E
  23. {
    " L$ Y' E, r: }0 Y" |
  24.    if (digitalRead(kg)==LOW)
    ! Y- t# s: a" W9 w5 k) O! _3 f
  25.    {
    1 {# _& V( t. j- v4 o8 q( @5 Q
  26.         BLINKER_LOG("get button state: ", state);+ t. f) Y; o6 S9 x' P2 |
  27.         digitalWrite(kg, HIGH);& r4 R) @! g& N6 B
  28.         digitalWrite(de, LOW);8 K& D% o9 h: ^
  29.         Button1.print("on");+ o  j/ x0 N. A% B# |7 C/ R" G2 T
  30.         Button1.color("#0000FF");              //设置app按键是浅蓝色; O+ V3 `  L/ `5 \
  31.         Button1.text("开启中");
    ) F$ I) I# b5 @, i1 F+ i7 K
  32.    }
    . Y: B" i2 L9 t9 c3 R# u$ L
  33.    else if (digitalRead(kg)==HIGH)( T! [8 n: B6 h; @' G6 J* x8 ^
  34.    {, M$ x, t- P1 i1 @/ y: H
  35.         BLINKER_LOG("get button state: ", state);
    5 z9 r4 j/ i! [3 K
  36.         digitalWrite(kg, LOW);
    ! m0 _# Y! R5 a. O& c
  37.         digitalWrite(de, HIGH);' T5 Z. Y1 J( k
  38.         Button1.print("off");
    5 _! X: R! b& d6 |" A
  39.         Button1.color("#00FFFF");              //设置app按键是深蓝色
    8 F/ L6 b" K1 k7 w# a' U
  40.         Button1.text("关闭中");6 a( d) P' q3 d6 @1 n* B# d- ^
  41.    }0 |- q$ o# T/ m4 f+ s; T
  42. }
    ; L) ^, l: K; Q: ?6 t8 `2 b* f
  43. 5 G4 O! P$ s# U8 i8 @& y
  44. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    & F& V* P0 C' }& v9 _
  45. # h9 a  J* A- x  |3 |
  46. //*******如果小爱有对设备进行操作就执行下面
    ( p8 S1 p' H6 E$ {- S
  47. void miotPowerState(const String & state)
    , I  P* ?2 `2 |0 I# Z. ?2 S0 J/ ?8 t
  48. {) I  ~. U: s4 ?; U$ O6 b. O9 x. {
  49.     BLINKER_LOG("小爱语音操作!");              //串口打印5 Y& L. u$ |, j  w6 U
  50.     if (state == BLINKER_CMD_ON){
    ( W* U& d  T9 \) }+ g
  51.         
    / f% G( O( a7 L
  52.         digitalWrite(kg, HIGH);3 b1 R, F8 d4 y+ y8 u
  53.         digitalWrite(de, LOW);
    ! d: G3 Q2 z* K$ W
  54.         Button1.print("on");- R, d% k" g3 z* C& |7 L# g
  55.         Button1.color("#0000FF");              //设置app按键是浅蓝色: e( ?4 L# a2 n2 O1 c- X
  56.         Button1.text("开启中");
    " V3 i! g2 t. _+ T) b
  57.         BlinkerMIOT.powerState("on");9 o4 @2 z9 v8 h! q& }1 N
  58.         BlinkerMIOT.print();) d8 [+ Z, z% h" C: {
  59.    }: N* r5 w) `+ G& @
  60.    else if (state == BLINKER_CMD_OFF)& t2 x$ U, X6 `* K
  61.    {
    ! @) m  D0 Z/ m2 P8 B7 F  I0 V$ Z8 |
  62.         3 _0 o* s1 ?) r/ {! x: g
  63.         digitalWrite(kg, LOW);- b' h; z( l; i4 U- `- D8 s. F
  64.         digitalWrite(de, HIGH);5 t2 I& G# ?& H; {0 V2 X
  65.         Button1.print("off");1 c% ?- {& Q% ?2 n
  66.         Button1.color("#00FFFF");              //设置app按键是深蓝色4 V0 a& L+ w( u% d9 n9 c
  67.         Button1.text("关闭中");
    " l0 M, x' p, J3 V& o: Y3 q
  68.         BlinkerMIOT.powerState("off");' C; h3 G, C+ ]0 F0 ^
  69.         BlinkerMIOT.print();7 q! w' z- ^% t
  70.    }# P% u- @% h+ |
  71.          h! M3 u6 @! P( t/ v

  72.   F4 x: a4 l6 L
  73. }" u0 k2 u1 \8 u& F7 b
  74. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- i" {4 W1 M4 W7 i; C" [
  75. //*******如果天猫精灵有对设备进行操作就执行下面" s. s+ Z: T% }( Q2 ^
  76. void aligeniePowerState(const String & state)# b; Q- V! t) y! k' P: B' c
  77. {
    8 F4 [$ N  \8 d7 I2 @) P: f% ]
  78.     BLINKER_LOG("need set power state: ", state);+ i0 M+ @& h+ Z
  79.     if (state == BLINKER_CMD_ON)8 U3 ~! H7 p# a$ Y) X' c. z
  80.     {3 e: Z7 l; v; ^' i; f8 o
  81.         
    , F. Q. d& m& O. J9 S2 W
  82.         digitalWrite(kg, HIGH);# F2 [7 o7 J$ A# l
  83.         digitalWrite(de, LOW);
    ' q! i3 d$ S* {' u! n" ]8 ^
  84.         Button1.print("on");# P% w5 v! N# i2 y9 _) o0 Z: ?4 p% r
  85.         Button1.color("#0000FF");              //设置app按键是浅蓝色
    0 i; N! U) f! F0 l* b
  86.         Button1.text("开启中");
    * c0 K  R) D! M3 |% V+ w1 L
  87.         BlinkerAliGenie.powerState("on");* `. ^! i/ Z9 w0 q
  88.         BlinkerAliGenie.print();. e% q$ k5 z  R; I- I7 K
  89.     }
    7 {# y4 h7 e' k
  90.     else if (state == BLINKER_CMD_OFF)
    6 L: u6 M# Q+ [
  91.     {
    * i" `) Z! @/ f. E. C% O- C
  92.         3 n! P  @! o4 R7 G) k( v
  93.         digitalWrite(kg, LOW);
      Z; ~7 S# I( h$ Y7 [9 M
  94.         digitalWrite(de, HIGH);
    ) g0 F  ^: Z& J$ f& U
  95.         Button1.print("off");7 M$ h: a8 F# x
  96.         Button1.color("#00FFFF");              //设置app按键是深蓝色
    ( G) y  I1 [5 T; I/ p/ E9 Q! c. m
  97.         Button1.text("关闭中");
    0 d9 n8 i, r. h4 Z6 J
  98.         BlinkerAliGenie.powerState("off");
    - |) Z# h" S- b' A( L
  99.         BlinkerAliGenie.print();
    ; H5 U, }6 M3 ^  f( i
  100.     }: [8 \/ T! E: R! A, `9 M# N
  101.         
    ) E2 q; C% e# k$ S! J6 l
  102. $ A$ x1 r& l" ^( r. t  M6 A
  103. }% }0 g" Q: J% \* [' o3 T" ?
  104.   //*******app定时向设备发送心跳包, 设备收到心跳包后会返回设备当前状态30s~60s一次
    + h* u) q/ }9 Z; {" r
  105. void heartbeat()
    6 M0 G0 l/ R" K6 x- Q6 [0 ~: ~/ F* T
  106. {; r" J9 N1 E+ [9 L6 e: H; H0 [
  107.   BLINKER_LOG("状态同步!");
    0 s  @/ w0 g* m1 e! B! k: y- a4 L
  108.    if (digitalRead(kg)==HIGH)
    2 }" k" ]- S, w4 p- O8 y5 A: L; z
  109.     { 9 J) t9 W7 d% I) V! u
  110.       Button1.print("on");
    0 B6 ~7 I7 y0 b/ j. Z1 M& c
  111.       Button1.color("#0000FF");              //设置app按键是浅蓝色
    1 @+ \3 _; x& Y
  112.       Button1.text("开启中");
    6 D% W* x; \: ~( T* ~4 V8 p
  113.     }
    & G5 u% \. I" F5 Z# }
  114.     else ; n0 ^) m. Z' Y: s
  115.     {
    5 h! R. ~6 E+ J1 T9 E' L
  116.       Button1.print("off");1 ?$ u$ L) v& \0 V/ C1 E
  117.       Button1.color("#00FFFF");              //设置app按键是深蓝色8 g9 `, I/ E9 m9 V' \5 r( P
  118.       Button1.text("关闭中");* ^4 _1 ^) u2 f% r2 {3 K, G( J8 m
  119.    
    : S6 B9 P* x) H) L4 z. P. }) M
  120.     }+ h3 y, Y; D& U1 g- J9 o2 x
  121. }, d5 A# T. g$ W
  122. //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    : ]3 _* _8 R6 c9 \, ~9 v" {
  123. void setup()
    ' z& t) T2 i5 o4 ?0 F+ }
  124. {
    ( O; j" z9 W; ^" A
  125.   // 初始化串口
    " T; T8 L4 K9 c6 X6 K: R$ m
  126.   Serial.begin(115200);
    # h/ Q- m2 S* G) a5 W
  127.   delay(10);
    6 e. ], n4 j0 F) D. H0 j( ?
  128.   BLINKER_DEBUG.stream(Serial);
    2 f) X4 K4 [) V1 a4 h+ H
  129.   // 初始化有LED的IO% o5 C, v) Y9 s, B3 K" ^, s
  130.   pinMode(kg, OUTPUT);                 
    + l, Z  {, v5 I$ @, M2 b2 X
  131.   digitalWrite(kg, LOW);//初始化继电器上电状态 # g: w1 N9 r4 D- v: C$ V; r# p6 h
  132.   pinMode(de, OUTPUT);/ `/ X# m$ @8 r9 @( r
  133.   digitalWrite(de, HIGH);+ z2 w& \; O! U/ Y) w3 j
  134.   pinMode(key, INPUT);            , z$ ?, o# J# x! R* O# H2 J
  135.   Serial.println();
    ; K, p  L0 t3 b5 D5 d) v
  136.   Serial.print("Connecting to ");8 |# C2 u" p: X4 v* V( [- W
  137.   Serial.println(ssid);! \4 P) r  T7 G8 y' D) B" t2 t
  138.   WiFi.begin(ssid, pswd);
    : k- B# M5 W; P% F" g' v' N
  139.   while (WiFi.status() != WL_CONNECTED) {2 Z" B- B! E0 e( q/ {0 u: ]
  140.     delay(500);) f% j7 o1 [- K7 _2 l1 k
  141.     Serial.print(".");
    ) z8 S8 G1 x3 o, J! [
  142.   }9 q, T6 ~. ?' A! b6 b" O
  143.   Serial.println("");3 H9 M. @6 x. V4 H4 f* v; H3 {: [
  144.   Serial.println("WiFi connected");
    * d3 {0 s% e' A, j
  145.   server.begin();
    ' X& r6 f4 K/ w6 @+ N9 i) m, H8 h2 ^: m
  146.   Serial.println("Server started @ ");2 F& [  C' C( R! F0 w; l. C0 i
  147.   Serial.println(WiFi.localIP());
    0 p' k5 r* b8 d3 Z
  148.   //打印出IP地址,后期可以制作显示器来外部硬件显示ip' c/ I/ e6 s% ~. n' W( D
  149.   Serial.println("To control GPIO, open your web browser.");
    ( C3 G7 b$ k$ ^5 Z
  150.   Serial.println("To set GPIO 0 high, type:");- F9 y/ O: B: ]4 `, ~7 n. Q
  151.   Serial.print(WiFi.localIP());
    ) J! }7 J- a, Z2 T8 k' R9 r
  152.   Serial.println("/gpio/1");" m; ]7 u* R8 a* ~/ [$ o7 l
  153.   Serial.println("To set GPIO 0 low, type:");6 N% n6 G8 s7 }& v4 f
  154.   Serial.print(WiFi.localIP());
    3 {+ G' N0 I+ l
  155.   Serial.println("/gpio/0");8 ~1 t" j& ~& q) q
  156.   Serial.println("To toggle GPIO 0, type:");& V: s5 T8 b; o0 b$ I9 E) I8 f
  157.   Serial.print(WiFi.localIP());  f/ z3 N  i0 d  G$ `' j% u& M
  158.   Serial.println("/gpio/4");' B2 B- n1 B% a  H3 c/ W2 d
  159. ; g& e3 H- e$ ~/ N) b
  160.   // 初始化blinker
    6 g" V! F6 H% U
  161.   Blinker.begin(auth, ssid, pswd);) e+ `7 A2 F' i8 t, u
  162.   BlinkerMIOT.attachPowerState(miotPowerState);              //小爱语音操作注册函数- c0 Q; f% l: a6 H, D
  163.   BlinkerAliGenie.attachPowerState(aligeniePowerState);      //天猫语音操作注册函数' M; e9 n. n! c: H3 G7 j
  164.   Blinker.attachHeartbeat(heartbeat);              //app定时向设备发送心跳包, 设备收到心跳包后会返回设备当前状态进行语音操作和app操作同步。
    2 h4 I: f0 n  f) v; M
  165. : v% r, X- E0 K  ~
  166.   Button1.attach(button1_callback);             //app上操作必须的注册回调函数关联按键名“Button1”和判断程序“button1_callback  @; O- t' F" w' h: U5 v  T; K7 i
  167. }
    * J( R9 `$ y: B1 a- b. Q5 M
  168. void dataRead(const String & data)1 {3 F% Z8 r7 i  A- ~( i
  169. {/ S, D! @; X8 s% @+ z
  170.     BLINKER_LOG("Blinker readString: ", data);* z7 L" C8 G0 f

  171. - x$ U+ L* v1 Q! i- [7 {% x% d
  172.     Blinker.vibrate();
    6 U/ }8 b3 z+ F) |! d4 a
  173.    
    " Y- {0 t, A6 ^0 A* F6 B2 ]$ {8 b
  174.     uint32_t BlinkerTime = millis();
    9 ^; J% Q7 H5 S0 A, _
  175.    
    9 X- Z. o& J* P/ d4 ?( q7 z% e
  176.     Blinker.print("millis", BlinkerTime);0 E% ~& q! Z9 l( q$ Z# T% {6 B4 e  M- c, V
  177. }
    ! ?: t3 u1 K& A4 j
  178. void loop()4 c' s9 i0 r; a! T" n/ s2 P$ U( q( U
  179. {
    7 G- b2 o  p/ ~7 c9 y" A
  180.   Blinker.run();, H% f2 u0 ~' K& a4 g( F
  181.   if (digitalRead(key)==LOW)
    ' o* t+ G9 l' J6 x& q7 A0 ~" q; l1 Y
  182.   {
    7 O2 K; {2 ~+ {$ \
  183.     Blinker.delay(200);
    3 T+ M: g7 D% T" ]' X6 C" [
  184.     if (digitalRead(key)==LOW)0 ~9 d! e$ b& R0 L0 l. h* s4 W: C
  185.     {0 L) }( _# }( F+ F: b" C
  186.           if (digitalRead(kg)==LOW)) P$ I0 |- C0 B1 }
  187.        {
      l  ?9 F% B  K0 v; C3 I* u
  188.             - P6 k+ a2 f2 f% ]1 E4 b
  189.             digitalWrite(kg, HIGH);
    & j9 t5 j7 t- ~) B9 `+ W
  190.             digitalWrite(de, LOW);
    3 t: q# X  w) X' i4 Z
  191.             Button1.print("on");
    8 q3 z7 }; r4 b, _+ i
  192.             Button1.color("#0000FF");              //设置app按键是浅蓝色
    : e+ D# G' n2 \/ x
  193.             Button1.text("开启中");6 c8 E: C- _9 ], `, b
  194.        }4 l2 ]. l* q4 _6 Z8 T" ~4 [: F
  195.        else if (digitalRead(kg)==HIGH)
    : ^4 s% z+ d# A8 l- d
  196.        {
    6 m8 ^3 M8 [1 Y1 Y7 n" m
  197.             digitalWrite(kg, LOW);1 v$ v) F4 J2 E% H' x7 c* I
  198.             digitalWrite(de, HIGH);$ m5 `! d$ @+ h4 |/ s" ~
  199.             Button1.print("off");$ f. }4 D' D- r' t8 \" w# x; ^0 C. Q
  200.             Button1.color("#00FFFF");              //设置app按键是深蓝色& }* K& C4 Z; ^; F0 V
  201.             Button1.text("关闭中");3 ~* h, \& X* h: m
  202.        }
    3 c1 ]3 g1 O+ @, ^& t1 C
  203.       }
    6 V& y' a9 t9 e1 e/ `# U7 T% K
  204.     }
    ! G2 R& ~6 f- l5 m6 ?
  205. }
复制代码
/ K1 k: W3 o0 G" N: J. C1 w  \
; x& R& V8 I% U; Y  @
我没有用卖家给的码,我自己写了一个,参考我前面的文章最简单的8266天猫精灵控制开关,点灯、Mixly可视模块化编程 https://bbs.nasdiyer.com/thread-18755-1-1.html
8 ?2 H7 s) O+ v
+ C& Q% `& q" {把上面的2改成5,把高低电平对调一下就可以使用天猫精灵来控制你的这个插座了。我是把我的第一个插座放在了我的落地电风扇中了,当我慵懒的在沙发上刷着手机时候感觉有一点点热,我只要呼唤“天猫精灵,打开风扇”,就可以了。
, z0 o4 l; A2 g. I+ Y6 ^/ D9 p% c6 U, g# J5 J* N4 b5 n/ M- n+ Q, O9 n

6 `* p  q* j' b6 o: s

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
3 m" N+ u( N& d买了几个   做工挺扎实的,但是外壳怎么拆啊  拿斜口钳拨了一个,   四个圆角的卡口根本没法正常拆 ...
4 j, Q9 e6 n. f  E
大力出奇迹呀

1

主题

8

回帖

256

积分

中级渣柚V1

积分
256
发表于 2021-8-29 08:14:58 | 显示全部楼层
a467913252 发表于 2021-8-24 15:538 H( ^. k: o4 P# c0 n3 k8 a' w+ G
买了几个   做工挺扎实的,但是外壳怎么拆啊  拿斜口钳拨了一个,   四个圆角的卡口根本没法正常拆 ...

- h$ F. J1 ~$ \5 j昨晚拆了一个,废了老大劲,想和卖家说的无损拆下来,不拆个三五个积攒经验,基本不可能

2

主题

11

回帖

62

积分

初级渣柚V2

积分
62
QQ
发表于 2021-9-4 23:05:22 | 显示全部楼层
sevenup0719 发表于 2021-8-29 08:143 q. Y( t: c# M% O1 |# p/ D$ e
昨晚拆了一个,废了老大劲,想和卖家说的无损拆下来,不拆个三五个积攒经验,基本不可能 ...
* v! M& c% v+ t5 ]. {
你的搞定没  为什么我的根本没法烧录   连接不上,,用esp01s还没问题的
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-1-18 13:03 , Processed in 0.131426 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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