-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.html
More file actions
1706 lines (1248 loc) · 79.2 KB
/
Copy pathindex.html
File metadata and controls
1706 lines (1248 loc) · 79.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=2">
<meta name="theme-color" content="#222">
<meta name="generator" content="Hexo 6.3.0">
<meta name="baidu-site-verification" content="code-BKQ11PUFAK" />
<meta name="msvalidate.01" content="4E36CDD054E3AC2D3B7FBC477D77ABFC" />
<link rel="apple-touch-icon" sizes="180x180" href="/images/apple-touch-icon-next.png">
<link rel="icon" type="image/png" sizes="32x32" href="/images/favicon-32x32-next.png">
<link rel="icon" type="image/png" sizes="16x16" href="/images/favicon-16x16-next.png">
<link rel="mask-icon" href="/images/logo.svg" color="#222">
<link rel="stylesheet" href="/css/main.css">
<link rel="stylesheet" href="/lib/font-awesome/css/all.min.css">
<link rel="stylesheet" href="/lib/pace/pace-theme-bounce.min.css">
<script src="/lib/pace/pace.min.js"></script>
<script id="hexo-configurations">
var NexT = window.NexT || {};
var CONFIG = {"hostname":"jackie-li-0228.github.io","root":"/","scheme":"Muse","version":"7.8.0","exturl":false,"sidebar":{"position":"left","display":"post","padding":25,"offset":12,"onmobile":true},"copycode":{"enable":true,"show_result":true,"style":"mac"},"back2top":{"enable":true,"sidebar":"falsed","scrollpercent":true},"bookmark":{"enable":false,"color":"#222","save":"auto"},"fancybox":false,"mediumzoom":false,"lazyload":false,"pangu":false,"comments":{"style":"tabs","active":null,"storage":true,"lazyload":false,"nav":null},"algolia":{"hits":{"per_page":10},"labels":{"input_placeholder":"Search for Posts","hits_empty":"We didn't find any results for the search: ${query}","hits_stats":"${hits} results found in ${time} ms"}},"localsearch":{"enable":true,"trigger":"auto","top_n_per_article":1,"unescape":false,"preload":false},"motion":{"enable":true,"async":false,"transition":{"post_block":"fadeIn","post_header":"slideDownIn","post_body":"slideDownIn","coll_header":"slideLeftIn","sidebar":"slideUpIn"}},"path":"search.xml"};
</script>
<script>
(function(){
if(''){
if (prompt('请输入密码') !== ''){
alert('密码错误');
history.back();
}
}
})();
</script>
<meta property="og:type" content="website">
<meta property="og:title" content="JackieLi的小屋">
<meta property="og:url" content="http://jackie-li-0228.github.io/index.html">
<meta property="og:site_name" content="JackieLi的小屋">
<meta property="og:locale" content="zh_CN">
<meta property="article:author" content="JackieLi">
<meta property="article:tag" content="Programming Math Others">
<meta name="twitter:card" content="summary">
<link rel="canonical" href="http://jackie-li-0228.github.io/">
<script id="page-configurations">
// https://hexo.io/docs/variables.html
CONFIG.page = {
sidebar: "",
isHome : true,
isPost : false,
lang : 'zh-CN'
};
</script>
<title>JackieLi的小屋</title>
<noscript>
<style>
.use-motion .brand,
.use-motion .menu-item,
.sidebar-inner,
.use-motion .post-block,
.use-motion .pagination,
.use-motion .comments,
.use-motion .post-header,
.use-motion .post-body,
.use-motion .collection-header { opacity: initial; }
.use-motion .site-title,
.use-motion .site-subtitle {
opacity: initial;
top: initial;
}
.use-motion .logo-line-before i { left: initial; }
.use-motion .logo-line-after i { right: initial; }
</style>
</noscript>
</head>
<body itemscope itemtype="http://schema.org/WebPage">
<div class="container use-motion">
<div class="headband"></div>
<header class="header" itemscope itemtype="http://schema.org/WPHeader">
<div class="header-inner"><div class="site-brand-container">
<div class="site-nav-toggle">
<div class="toggle" aria-label="切换导航栏">
<span class="toggle-line toggle-line-first"></span>
<span class="toggle-line toggle-line-middle"></span>
<span class="toggle-line toggle-line-last"></span>
</div>
</div>
<div class="site-meta">
<a href="/" class="brand" rel="start">
<span class="logo-line-before"><i></i></span>
<h1 class="site-title">JackieLi的小屋</h1>
<span class="logo-line-after"><i></i></span>
</a>
<p class="site-subtitle" itemprop="description">进来看看!</p>
</div>
<div class="site-nav-right">
<div class="toggle popup-trigger">
<i class="fa fa-search fa-fw fa-lg"></i>
</div>
</div>
</div>
<nav class="site-nav">
<ul id="menu" class="main-menu menu">
<li class="menu-item menu-item-home">
<a href="/" rel="section"><i class="fa fa-home fa-fw"></i>首页</a>
</li>
<li class="menu-item menu-item-about">
<a href="/about/" rel="section"><i class="fa fa-user fa-fw"></i>关于</a>
</li>
<li class="menu-item menu-item-tags">
<a href="/tags/" rel="section"><i class="fa fa-tags fa-fw"></i>标签</a>
</li>
<li class="menu-item menu-item-categories">
<a href="/categories/" rel="section"><i class="fa fa-th fa-fw"></i>分类</a>
</li>
<li class="menu-item menu-item-archives">
<a href="/archives/" rel="section"><i class="fa fa-archive fa-fw"></i>归档</a>
</li>
<li class="menu-item menu-item-schedule">
<a href="/schedule/" rel="section"><i class="fa fa-calendar fa-fw"></i>日程表</a>
</li>
<li class="menu-item menu-item-sitemap">
<a href="/sitemap.xml" rel="section"><i class="fa fa-sitemap fa-fw"></i>站点地图</a>
</li>
<li class="menu-item menu-item-commonweal">
<a href="/404/" rel="section"><i class="fa fa-heartbeat fa-fw"></i>公益 404</a>
</li>
<li class="menu-item menu-item-search">
<a role="button" class="popup-trigger"><i class="fa fa-search fa-fw"></i>搜索
</a>
</li>
</ul>
</nav>
<div class="search-pop-overlay">
<div class="popup search-popup">
<div class="search-header">
<span class="search-icon">
<i class="fa fa-search"></i>
</span>
<div class="search-input-container">
<input autocomplete="off" autocapitalize="off"
placeholder="搜索..." spellcheck="false"
type="search" class="search-input">
</div>
<span class="popup-btn-close">
<i class="fa fa-times-circle"></i>
</span>
</div>
<div id="search-result">
<div id="no-result">
<i class="fa fa-spinner fa-pulse fa-5x fa-fw"></i>
</div>
</div>
</div>
</div>
</div>
</header>
<div class="reading-progress-bar"></div>
<main class="main">
<div class="main-inner">
<div class="content-wrap">
<div class="content index posts-expand">
<article itemscope itemtype="http://schema.org/Article" class="post-block" lang="zh-CN">
<link itemprop="mainEntityOfPage" href="http://jackie-li-0228.github.io/2025/04/20/%E5%AE%BF%E8%88%8D%E6%99%BA%E8%83%BD%E5%BC%80%E5%85%B3%E6%8E%A7%E5%88%B6%E7%B3%BB%E7%BB%9F%E5%BC%80%E5%8F%91%E6%97%A5%E8%AE%B0%EF%BC%9A%E4%BB%8ESG90%E5%88%B0MG996%E7%9A%84%E5%8D%87%E7%BA%A7%E4%B9%8B%E8%B7%AF/">
<span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
<meta itemprop="image" content="/images/avatar.gif">
<meta itemprop="name" content="JackieLi">
<meta itemprop="description" content="">
</span>
<span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
<meta itemprop="name" content="JackieLi的小屋">
</span>
<header class="post-header">
<h2 class="post-title" itemprop="name headline">
<a href="/2025/04/20/%E5%AE%BF%E8%88%8D%E6%99%BA%E8%83%BD%E5%BC%80%E5%85%B3%E6%8E%A7%E5%88%B6%E7%B3%BB%E7%BB%9F%E5%BC%80%E5%8F%91%E6%97%A5%E8%AE%B0%EF%BC%9A%E4%BB%8ESG90%E5%88%B0MG996%E7%9A%84%E5%8D%87%E7%BA%A7%E4%B9%8B%E8%B7%AF/" class="post-title-link" itemprop="url">宿舍智能开关控制系统开发日记</a>
</h2>
<div class="post-meta">
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="far fa-calendar"></i>
</span>
<span class="post-meta-item-text">发表于</span>
<time title="创建时间:2025-04-20 01:07:28" itemprop="dateCreated datePublished" datetime="2025-04-20T01:07:28+08:00">2025-04-20</time>
</span>
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="far fa-calendar-check"></i>
</span>
<span class="post-meta-item-text">更新于</span>
<time title="修改时间:2025-06-30 15:41:30" itemprop="dateModified" datetime="2025-06-30T15:41:30+08:00">2025-06-30</time>
</span>
<span id="/2025/04/20/%E5%AE%BF%E8%88%8D%E6%99%BA%E8%83%BD%E5%BC%80%E5%85%B3%E6%8E%A7%E5%88%B6%E7%B3%BB%E7%BB%9F%E5%BC%80%E5%8F%91%E6%97%A5%E8%AE%B0%EF%BC%9A%E4%BB%8ESG90%E5%88%B0MG996%E7%9A%84%E5%8D%87%E7%BA%A7%E4%B9%8B%E8%B7%AF/" class="post-meta-item leancloud_visitors" data-flag-title="宿舍智能开关控制系统开发日记" title="阅读次数">
<span class="post-meta-item-icon">
<i class="fa fa-eye"></i>
</span>
<span class="post-meta-item-text">阅读次数:</span>
<span class="leancloud-visitors-count"></span>
</span>
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="far fa-comment"></i>
</span>
<span class="post-meta-item-text">Valine:</span>
<a title="valine" href="/2025/04/20/%E5%AE%BF%E8%88%8D%E6%99%BA%E8%83%BD%E5%BC%80%E5%85%B3%E6%8E%A7%E5%88%B6%E7%B3%BB%E7%BB%9F%E5%BC%80%E5%8F%91%E6%97%A5%E8%AE%B0%EF%BC%9A%E4%BB%8ESG90%E5%88%B0MG996%E7%9A%84%E5%8D%87%E7%BA%A7%E4%B9%8B%E8%B7%AF/#valine-comments" itemprop="discussionUrl">
<span class="post-comments-count valine-comment-count" data-xid="/2025/04/20/%E5%AE%BF%E8%88%8D%E6%99%BA%E8%83%BD%E5%BC%80%E5%85%B3%E6%8E%A7%E5%88%B6%E7%B3%BB%E7%BB%9F%E5%BC%80%E5%8F%91%E6%97%A5%E8%AE%B0%EF%BC%9A%E4%BB%8ESG90%E5%88%B0MG996%E7%9A%84%E5%8D%87%E7%BA%A7%E4%B9%8B%E8%B7%AF/" itemprop="commentCount"></span>
</a>
</span>
<br>
<span class="post-meta-item" title="本文字数">
<span class="post-meta-item-icon">
<i class="far fa-file-word"></i>
</span>
<span class="post-meta-item-text">本文字数:</span>
<span>4k</span>
</span>
<span class="post-meta-item" title="阅读时长">
<span class="post-meta-item-icon">
<i class="far fa-clock"></i>
</span>
<span class="post-meta-item-text">阅读时长 ≈</span>
<span>4 分钟</span>
</span>
</div>
</header>
<div class="post-body" itemprop="articleBody">
<h1 id="宿舍智能开关控制系统开发日记"><a href="#宿舍智能开关控制系统开发日记" class="headerlink" title="宿舍智能开关控制系统开发日记"></a>宿舍智能开关控制系统开发日记</h1><blockquote>
<p>一盏灯,一个想法,一套我亲手搭起来的系统。</p>
</blockquote>
<!--
*AI提示:本文章使用了AI辅助润色,但是作者可以保证情节的真实性(作者只是懒得自己手写所有字所以把我的历程告诉了AI,做好了审阅和修改后便有了现在的版本,请放心观看。* -->
<hr>
<h2 id="起因:一盏灯与一个念头"><a href="#起因:一盏灯与一个念头" class="headerlink" title="起因:一盏灯与一个念头"></a>起因:一盏灯与一个念头</h2><p>一切的起点其实很简单:<strong>我只是想要一个可以远程控制宿舍灯的方式。</strong>在习惯了智能手机和智能家居的便利之后,每次伸手去够那个开关的瞬间,我总觉得“这事应该可以自动化”。很多个晚上,我们上了床之后才发现灯还没关,于是还得吭哧吭哧下来关灯,这样的次数久了,我突然有一天忍不了了,觉得我应该有能力自己搞一套只能开关灯系统来造福宿舍。(果然懒才是人类进步的最大动力lol)</p>
<p>这个想法一冒出来,我立刻跑到B站上搜了一圈类似的视频,看别人的实现有没有什么可参考的思路。B站上不少人都用舵机去按墙壁开关,大多是用小巧的SG90,配合面包板、树莓派或者其他开发板。那一刻我突然就下定决心:这事我也能试试!</p>
<center>
<img style="width: 33%;
border-radius: 0.3125em;
box-shadow: 0 2px 4px 0 rgba(34,36,38,.12),
0 2px 10px 0 rgba(34,36,38,.08);" src="https://raw.githubusercontent.com/Jackie-Li-0228/FigureBed/main/20250630153217.png">
<br>
<div style="color:orange;
border-bottom: 1px solid #d9d9d9;
display: inline-block;
color: #999;
padding: 2px;">
梦开始的地方
</div>
</center>
<hr>
<h2 id="初代方案:SG90、面包板,还有一堆电线"><a href="#初代方案:SG90、面包板,还有一堆电线" class="headerlink" title="初代方案:SG90、面包板,还有一堆电线"></a>初代方案:SG90、面包板,还有一堆电线</h2><p>我并不是一上来就把所有零件买齐的。事实上,在最初构想的阶段,我花了很长时间去查资料、对比模块参数,思考兼容性和电源设计,因为我想要做一个自己想要的系统,而不是直接照抄别人视频里面的架构。等到确定初代方案各模块基本能协同工作之后,我才集中把所有元件一起买下。</p>
<p>初代方案其实是基于一个很朴素但清晰的目标搭建的:只用常见的模块,在不改造开关原有结构的前提下,实现无线控制宿舍灯的开与关。</p>
<p>我的整体架构思路大致如下:</p>
<p>核心控制单元:ESP8266</p>
<p>负责所有指令的接收、处理和执行。</p>
<p>支持 Wi-Fi 模块,日后方便通过网页控制。</p>
<p>交互模块:HC-06 蓝牙模块</p>
<p>提供手机蓝牙端口交互,用于初期调试,也做为 Wi-Fi 失联时的备用控制通道。</p>
<p>执行单元:两个 SG90 舵机</p>
<p>每个舵机分别负责按动一个开关,实现物理上的“手动开关灯”动作。</p>
<p>供电方案:面包板电源模块统一供电</p>
<p>提供 5V/3.3V 选择,直接供给 ESP8266、HC06 以及 SG90。</p>
<center>
<img style="width: 33%;
border-radius: 0.3125em;
box-shadow: 0 2px 4px 0 rgba(34,36,38,.12),
0 2px 10px 0 rgba(34,36,38,.08);" src="https://raw.githubusercontent.com/Jackie-Li-0228/FigureBed/main/05f8b5045437e97900be46ee45a05af.jpg">
<br>
<div style="color:orange;
border-bottom: 1px solid #d9d9d9;
display: inline-block;
color: #999;
padding: 2px;">
一开始的部分采买记录
</div>
</center>
<p>我当时设想这个系统只需要一个小小的面包板就能搭建完毕。舵机动作不复杂,单次只需拨动开关一次;控制逻辑写在 ESP8266 上,通过串口接收蓝牙指令或网页指令,然后发出 PWM 信号控制 SG90。理论上简单、可行,而且网上很多类似例子也都是这么做的。</p>
<p>那时我真心以为,只要模块间能连起来,这套系统就能跑起来。</p>
<p>于是,我信心满满地下单了两颗 SG90,还想着一左一右配合控制两个灯,既美观又不影响我手动操作。</p>
<p>最初选用的是两颗 SG90 舵机,因为我查资料时发现一个 SG90 的扭矩可能不足以推动宿舍的两个实体开关。我一开始没有意识到,直到后来才想到如果一左一右搞两个舵机的话,我正常用手关灯反而变得很麻烦了。</p>
<p>而且我们宿舍的墙壁开关<strong>真的很硬</strong>,稍微还是需要多使一些劲才可以拨动的那种。后来调试的时候发现别人B站视频里的SG90可以轻松拨动开关,我这边甚至还会出现拨不动的情况。</p>
<p>于是我开始意识到,SG90 或许并不是我的最终答案。</p>
<hr>
<h2 id="升级:MG996-的暴力美学与电源噩梦"><a href="#升级:MG996-的暴力美学与电源噩梦" class="headerlink" title="升级:MG996 的暴力美学与电源噩梦"></a>升级:MG996 的暴力美学与电源噩梦</h2><p>转机来自于对 SG90 的绝望 —— 于是我果断转向更大扭矩的 MG996 舵机。MG996 扭矩达到了惊人的 9.4kg·cm(相比 SG90 的 1.6kg·cm 简直是碾压),但代价就是:它的<strong>电压和电流要求也高得多(5V/2.5A 以上)</strong>。</p>
<p>我刚开始抱着试一下能不能凑活用的态度用面包板电源模块直接给 MG996 供电,结果果然出问题了。舵机一通电就抖,转不动,ESP8266 开始花式重启,连带着蓝牙模块 HC06 也时断时连。我就觉得,可能是舵机启动时拉动电流太大,电压瞬间跌落,其他模块的电压稳不住了。</p>
<p>于是不得已,我又去买了一个 USB 供电模块,准备单独给 MG996 供电。这样一来,舵机高电流不会干扰核心逻辑部分,系统终于稳定了下来。</p>
<p>当然,稳定之前还烧坏过一个 MG996。当时我调试时电压接反,舵机莫名开始高频异响,发热严重,然后直接废了——这也是我人生中<strong>第一个烧掉的电机</strong>,纪念意义相当深远(但是主要是浪费了很多时间等物流啊!!)。</p>
<hr>
<h2 id="安装:从墙皮掉落到热熔胶登场"><a href="#安装:从墙皮掉落到热熔胶登场" class="headerlink" title="安装:从墙皮掉落到热熔胶登场"></a>安装:从墙皮掉落到热熔胶登场</h2><p>解决完供电问题,我把所有模块装在一个面包板上,用双面胶贴在墙上,通电、运行,一切正常!</p>
<p>然而 MG996 的扭矩太大了……当它旋转时,面包板直接带着模块把墙皮掀了下来。</p>
<p>舵机与面包板之间的固定也是一筹莫展。一开始我尝试用AB胶固定,但粘合效果不佳,一使劲就会脱落;又试了双面胶,效果也不够强力。最后,<strong>我搜索到了热熔胶枪</strong> —— 我到现在还放着这个东西因为真香。它一步到位,同时解决了面包板和开关之间的固定问题,还解决了舵机和面包板之间的固定问题,十分带劲。</p>
<p>我直接把 MG996 粘到了开关外壳上,整个模块与开关一体化固定,安装牢固且不影响人手操作。这一步解决了所有机械结构问题,至此,整个硬件系统就基本定型了。</p>
<hr>
<h2 id="控制核心:ESP8266-的主页、蓝牙双通道控制"><a href="#控制核心:ESP8266-的主页、蓝牙双通道控制" class="headerlink" title="控制核心:ESP8266 的主页、蓝牙双通道控制"></a>控制核心:ESP8266 的主页、蓝牙双通道控制</h2><p>项目的中枢是 ESP8266。我通过 Arduino 平台编程,写好逻辑并烧录到芯片上。</p>
<p>这个过程对我来说其实是<strong>一次回忆与重启</strong>。我上一次接触嵌入式开发,还是在电子实习课上,用 C++ 写了个简单的流水灯程序,烧录后观察灯一闪一闪的成就感依然记忆犹新,这也是我当时冒出“我也可以搞定这一套系统”的决心所在。</p>
<p>这一次,我用的是 Arduino 平台,搭配 ESP8266,整个编写和烧录过程更加集成化、易操作。我在网上查了大量资料、逛了无数经验帖,还认真翻了几遍 ESP8266 和 HC06 的手册,最终配置好了烧录环境,调好了串口通信,写好了整个逻辑流程。</p>
<p>控制端我也没闲着,我写了一个<strong>小型网页主页</strong>,部署在 ESP8266 上。我又将这个服务端口通过路由器中转了一下,这样,只要在校园网下输入 IP 地址和端口,就可以打开控制界面。网页上有按钮可以控制灯的开与关,后续我还预留了更多功能扩展。</p>
<p>另外,考虑到 Wi-Fi 可能不稳定,我也引入了 HC06 蓝牙模块。通过蓝牙连接手机蓝牙串口助手,也可以发送控制指令,ESP8266 会接收到并解析指令执行对应动作。虽然我当时选择在系统中加一个蓝牙模块是考虑到蓝牙模块的待机耗电量很低,而ESP8266的耗电量相比要高很多。</p>
<p>虽然ESP8266提供了深睡眠模式,能够将待机电流减到微安级别——这已经很够了,但是缺点是我们必须需要外界信号对RST引脚进行触发才可以唤醒系统。另外一种通过代码进入睡眠模式的浅睡眠状态只能将电流降到15-20mA的级别。于是我就萌生了使用耗电量更小的蓝牙模块来自动对RST引脚进行触发,从而在例如放假或者系统不需要开启的时候可以通过进入深睡眠,然后使用蓝牙从深睡眠中唤醒(但是后来我发现这样好蠢hhh不如直接把电断了,反正蓝牙的连接范围也就是那附近一段距离之内)。至于平常白天那种不需要用到这套系统的时候(因为当时这套系统只有开关灯这一个作用),就可以通过代码进入浅睡眠状态,这样就算是最大化地进行省电了。</p>
<p>但是后来我拿到HC06才发现我的HC06并没有引出那个引脚,要想要实现蓝牙对8266的RST触发有一些困难。再加之后来意识到了这个想法的愚蠢,于是HC06就单纯地变成了一个备用信息通道。对系统功能进行调试的时候还是很有用的。</p>
<hr>
<h2 id="供电优化:从桌面供电到“背着走”的终极形态"><a href="#供电优化:从桌面供电到“背着走”的终极形态" class="headerlink" title="供电优化:从桌面供电到“背着走”的终极形态"></a>供电优化:从桌面供电到“背着走”的终极形态</h2><p>我最初调试时用的是传统的 5V/2A 电源适配器,插在插线板上,非常不便。因为我一开始就设想这个系统最终是要贴在墙上运行的,<strong>如果还拖个插头出来,整套系统就不再“智能”了,只剩下“杂乱”。</strong></p>
<p>所以我考虑用充电宝作为供电来源。然而新问题又来了:<strong>大多数主流充电宝都有低电流断电保护机制。</strong>这种微电流设备(如 ESP8266 空闲状态)很容易被识别为“漏电”,导致充电宝自动断电,系统随即失效。</p>
<p>好在我手上刚好有一个“三无”充电宝,没有这种机制,完美适配这套低功耗系统,也终于让我完成了理想中“<strong>无插线、移动供电、自主运行</strong>”的版本。</p>
<hr>
<h2 id="舵机对比:SG90-vs-MG996R(实战总结)-(这部分参数是AI生成的我懒得审阅了,在这篇文章中不是很重要,感兴趣的朋友们可以再上网搜索一下,很容易搜索到)"><a href="#舵机对比:SG90-vs-MG996R(实战总结)-(这部分参数是AI生成的我懒得审阅了,在这篇文章中不是很重要,感兴趣的朋友们可以再上网搜索一下,很容易搜索到)" class="headerlink" title="舵机对比:SG90 vs MG996R(实战总结) (这部分参数是AI生成的我懒得审阅了,在这篇文章中不是很重要,感兴趣的朋友们可以再上网搜索一下,很容易搜索到)"></a>舵机对比:SG90 vs MG996R(实战总结) (这部分参数是AI生成的我懒得审阅了,在这篇文章中不是很重要,感兴趣的朋友们可以再上网搜索一下,很容易搜索到)</h2><p>| 参数 | SG90 | MG996R |</p>
<p>|————–|——————-|————————–|</p>
<p>| 扭矩 | 1.6 kg·cm | 9.4 kg·cm |</p>
<p>| 工作电压 | 4.8V–6V | 4.8V–7.2V |</p>
<p>| 空载电流 | 100mA | 500mA |</p>
<p>| 启动电流 | 250mA(短时) | 2.5A(瞬时最大) |</p>
<p>| 优点 | 轻便、易调试 | 力量大、响应强 |</p>
<p>| 缺点 | 力量不足 | 功耗高、电源难匹配 |</p>
<p><strong>MG996 真牛逼</strong></p>
<hr>
<h2 id="HC-06-vs-HC-05:为什么我选了-HC-06?"><a href="#HC-06-vs-HC-05:为什么我选了-HC-06?" class="headerlink" title="HC-06 vs HC-05:为什么我选了 HC-06?"></a>HC-06 vs HC-05:为什么我选了 HC-06?</h2><p>| 参数 | HC-05 | HC-06 |</p>
<p>|————–|—————-|—————|</p>
<p>| 主从一体 | ✅ 支持 | ❌ 仅从模式 |</p>
<p>| 配置灵活性 | ✅ 可设置角色 | ❌ 固定为从机 |</p>
<p>| 调试命令 | AT指令齐全 | 功能较少 |</p>
<p>| 价格 | 稍贵 | 稍便宜 |</p>
<p>没啥大的原因,只是因为觉得不需要主从一体,只需要做信号接收端就可以了。</p>
<hr>
<h2 id="项目成果与展望"><a href="#项目成果与展望" class="headerlink" title="项目成果与展望"></a>项目成果与展望</h2><p>现在,这个系统已经可以稳定地控制宿舍的两个灯开关,支持网页和蓝牙双通道操作,供电来自小型充电宝,安装方式也稳固美观。</p>
<center>
<img style="width: 33%;
border-radius: 0.3125em;
box-shadow: 0 2px 4px 0 rgba(34,36,38,.12),
0 2px 10px 0 rgba(34,36,38,.08);" src="https://raw.githubusercontent.com/Jackie-Li-0228/FigureBed/main/fb0123ac46e5d964f98bae4db87ba4b.jpg">
<br>
<div style="color:orange;
border-bottom: 1px solid #d9d9d9;
display: inline-block;
color: #999;
padding: 2px;">
这套系统的图片,此为未插电状态,供电使用两个5V2A电源适配器或者直接使用一个充电宝即可
</div>
</center>
<p>但这还只是开始,我还打算加上温湿度检测、语音识别控制,甚至接入微信小程序做通知联动(倒是可以很简单地搞一个语音识别)。写到这里我都已经开始期待后续版本的迭代了。(但是目前学业繁忙,已经好久没有机会继续扩展这个小系统了,权当是一次计算机学生勇闯嵌入式的冒险之旅吧hhh)</p>
<hr>
<h2 id="代码仓库"><a href="#代码仓库" class="headerlink" title="代码仓库"></a>代码仓库</h2><p>本项目的全部源码、原理图和网页控制页面我正在整理并准备开源,欢迎大家参考:</p>
<p>👉 <a target="_blank" rel="noopener" href="https://github.com/Jackie-Li-0228/Togglify">点击查看完整代码</a></p>
<hr>
<h2 id="写在最后"><a href="#写在最后" class="headerlink" title="写在最后"></a>写在最后</h2><p>这套系统远远称不上“工业级”,但它有一种很真实的满足感:<strong>是我一步步搭出来、烧坏过、推翻过、重新优化过的东西。</strong></p>
<p>它不是“最好”的方案,但是“最属于我的”那个版本。</p>
<p>如果你也对动手做点什么感兴趣,不妨从一盏灯开始。</p>
</div>
<footer class="post-footer">
<div class="post-eof"></div>
</footer>
</article>
<article itemscope itemtype="http://schema.org/Article" class="post-block" lang="zh-CN">
<link itemprop="mainEntityOfPage" href="http://jackie-li-0228.github.io/2025/04/06/%E4%B8%AA%E4%BA%BA%E7%AE%80%E4%BB%8B%E6%8C%87%E8%B7%AF/">
<span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
<meta itemprop="image" content="/images/avatar.gif">
<meta itemprop="name" content="JackieLi">
<meta itemprop="description" content="">
</span>
<span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
<meta itemprop="name" content="JackieLi的小屋">
</span>
<header class="post-header">
<h2 class="post-title" itemprop="name headline">
<a href="/2025/04/06/%E4%B8%AA%E4%BA%BA%E7%AE%80%E4%BB%8B%E6%8C%87%E8%B7%AF/" class="post-title-link" itemprop="url">个人简介指路</a>
</h2>
<div class="post-meta">
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="far fa-calendar"></i>
</span>
<span class="post-meta-item-text">发表于</span>
<time title="创建时间:2025-04-06 00:00:00 / 修改时间:22:47:04" itemprop="dateCreated datePublished" datetime="2025-04-06T00:00:00+08:00">2025-04-06</time>
</span>
<span id="/2025/04/06/%E4%B8%AA%E4%BA%BA%E7%AE%80%E4%BB%8B%E6%8C%87%E8%B7%AF/" class="post-meta-item leancloud_visitors" data-flag-title="个人简介指路" title="阅读次数">
<span class="post-meta-item-icon">
<i class="fa fa-eye"></i>
</span>
<span class="post-meta-item-text">阅读次数:</span>
<span class="leancloud-visitors-count"></span>
</span>
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="far fa-comment"></i>
</span>
<span class="post-meta-item-text">Valine:</span>
<a title="valine" href="/2025/04/06/%E4%B8%AA%E4%BA%BA%E7%AE%80%E4%BB%8B%E6%8C%87%E8%B7%AF/#valine-comments" itemprop="discussionUrl">
<span class="post-comments-count valine-comment-count" data-xid="/2025/04/06/%E4%B8%AA%E4%BA%BA%E7%AE%80%E4%BB%8B%E6%8C%87%E8%B7%AF/" itemprop="commentCount"></span>
</a>
</span>
<br>
<span class="post-meta-item" title="本文字数">
<span class="post-meta-item-icon">
<i class="far fa-file-word"></i>
</span>
<span class="post-meta-item-text">本文字数:</span>
<span>14</span>
</span>
<span class="post-meta-item" title="阅读时长">
<span class="post-meta-item-icon">
<i class="far fa-clock"></i>
</span>
<span class="post-meta-item-text">阅读时长 ≈</span>
<span>1 分钟</span>
</span>
</div>
</header>
<div class="post-body" itemprop="articleBody">
<div align="center">
个人简介请点击“<strong>关于</strong>”按钮!
</div>
</div>
<footer class="post-footer">
<div class="post-eof"></div>
</footer>
</article>
<article itemscope itemtype="http://schema.org/Article" class="post-block" lang="zh-CN">
<link itemprop="mainEntityOfPage" href="http://jackie-li-0228.github.io/2024/09/18/%E8%A7%A3%E5%86%B3Selenium%E4%BD%BF%E7%94%A8%E6%97%B6%E6%8A%A5%E9%94%99Chrome%20not%20reachable%E9%97%AE%E9%A2%98/">
<span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
<meta itemprop="image" content="/images/avatar.gif">
<meta itemprop="name" content="JackieLi">
<meta itemprop="description" content="">
</span>
<span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
<meta itemprop="name" content="JackieLi的小屋">
</span>
<header class="post-header">
<h2 class="post-title" itemprop="name headline">
<a href="/2024/09/18/%E8%A7%A3%E5%86%B3Selenium%E4%BD%BF%E7%94%A8%E6%97%B6%E6%8A%A5%E9%94%99Chrome%20not%20reachable%E9%97%AE%E9%A2%98/" class="post-title-link" itemprop="url">解决Selenium使用时报错Chrome not reachable问题</a>
</h2>
<div class="post-meta">
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="far fa-calendar"></i>
</span>
<span class="post-meta-item-text">发表于</span>
<time title="创建时间:2024-09-18 15:59:00 / 修改时间:16:37:11" itemprop="dateCreated datePublished" datetime="2024-09-18T15:59:00+08:00">2024-09-18</time>
</span>
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="far fa-folder"></i>
</span>
<span class="post-meta-item-text">分类于</span>
<span itemprop="about" itemscope itemtype="http://schema.org/Thing">
<a href="/categories/%E7%96%91%E9%9A%BE%E6%9D%82%E7%97%87/" itemprop="url" rel="index"><span itemprop="name">疑难杂症</span></a>
</span>
</span>
<span id="/2024/09/18/%E8%A7%A3%E5%86%B3Selenium%E4%BD%BF%E7%94%A8%E6%97%B6%E6%8A%A5%E9%94%99Chrome%20not%20reachable%E9%97%AE%E9%A2%98/" class="post-meta-item leancloud_visitors" data-flag-title="解决Selenium使用时报错Chrome not reachable问题" title="阅读次数">
<span class="post-meta-item-icon">
<i class="fa fa-eye"></i>
</span>
<span class="post-meta-item-text">阅读次数:</span>
<span class="leancloud-visitors-count"></span>
</span>
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="far fa-comment"></i>
</span>
<span class="post-meta-item-text">Valine:</span>
<a title="valine" href="/2024/09/18/%E8%A7%A3%E5%86%B3Selenium%E4%BD%BF%E7%94%A8%E6%97%B6%E6%8A%A5%E9%94%99Chrome%20not%20reachable%E9%97%AE%E9%A2%98/#valine-comments" itemprop="discussionUrl">
<span class="post-comments-count valine-comment-count" data-xid="/2024/09/18/%E8%A7%A3%E5%86%B3Selenium%E4%BD%BF%E7%94%A8%E6%97%B6%E6%8A%A5%E9%94%99Chrome%20not%20reachable%E9%97%AE%E9%A2%98/" itemprop="commentCount"></span>
</a>
</span>
<br>
<span class="post-meta-item" title="本文字数">
<span class="post-meta-item-icon">
<i class="far fa-file-word"></i>
</span>
<span class="post-meta-item-text">本文字数:</span>
<span>3k</span>
</span>
<span class="post-meta-item" title="阅读时长">
<span class="post-meta-item-icon">
<i class="far fa-clock"></i>
</span>
<span class="post-meta-item-text">阅读时长 ≈</span>
<span>3 分钟</span>
</span>
</div>
</header>
<div class="post-body" itemprop="articleBody">
<p>最近在写一个爬虫小工具,但是在第一步就遇到了问题。</p>
<!--noindex-->
<div class="post-button">
<a class="btn" href="/2024/09/18/%E8%A7%A3%E5%86%B3Selenium%E4%BD%BF%E7%94%A8%E6%97%B6%E6%8A%A5%E9%94%99Chrome%20not%20reachable%E9%97%AE%E9%A2%98/#more" rel="contents">
阅读全文 »
</a>
</div>
<!--/noindex-->
</div>
<footer class="post-footer">
<div class="post-eof"></div>
</footer>
</article>
<article itemscope itemtype="http://schema.org/Article" class="post-block" lang="zh-CN">
<link itemprop="mainEntityOfPage" href="http://jackie-li-0228.github.io/2024/08/10/%E8%A7%A3%E5%86%B3Win10%E3%80%81Win11%E5%AD%97%E4%BD%93%E9%9D%99%E6%AD%A2%E6%97%B6%E6%A8%A1%E7%B3%8A%EF%BC%8C%E9%BC%A0%E6%A0%87%E7%A7%BB%E5%8A%A8%E5%88%B0%E5%AD%97%E4%BD%93%E4%B8%8A%E5%90%8E%E6%88%96%E8%80%85%E7%A7%BB%E5%8A%A8%E5%AD%97%E4%BD%93%E6%97%B6%E6%81%A2%E5%A4%8D%E6%AD%A3%E5%B8%B8%E7%9A%84%E9%97%AE%E9%A2%98/">
<span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
<meta itemprop="image" content="/images/avatar.gif">
<meta itemprop="name" content="JackieLi">
<meta itemprop="description" content="">
</span>
<span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
<meta itemprop="name" content="JackieLi的小屋">
</span>
<header class="post-header">
<h2 class="post-title" itemprop="name headline">
<a href="/2024/08/10/%E8%A7%A3%E5%86%B3Win10%E3%80%81Win11%E5%AD%97%E4%BD%93%E9%9D%99%E6%AD%A2%E6%97%B6%E6%A8%A1%E7%B3%8A%EF%BC%8C%E9%BC%A0%E6%A0%87%E7%A7%BB%E5%8A%A8%E5%88%B0%E5%AD%97%E4%BD%93%E4%B8%8A%E5%90%8E%E6%88%96%E8%80%85%E7%A7%BB%E5%8A%A8%E5%AD%97%E4%BD%93%E6%97%B6%E6%81%A2%E5%A4%8D%E6%AD%A3%E5%B8%B8%E7%9A%84%E9%97%AE%E9%A2%98/" class="post-title-link" itemprop="url">解决Win10/Win11字体静止时模糊,鼠标移动到字体上后或者移动字体时恢复正常的问题</a>
</h2>
<div class="post-meta">
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="far fa-calendar"></i>
</span>
<span class="post-meta-item-text">发表于</span>
<time title="创建时间:2024-08-10 12:44:25" itemprop="dateCreated datePublished" datetime="2024-08-10T12:44:25+08:00">2024-08-10</time>
</span>
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="far fa-calendar-check"></i>
</span>
<span class="post-meta-item-text">更新于</span>
<time title="修改时间:2024-09-03 11:26:32" itemprop="dateModified" datetime="2024-09-03T11:26:32+08:00">2024-09-03</time>
</span>
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="far fa-folder"></i>
</span>
<span class="post-meta-item-text">分类于</span>
<span itemprop="about" itemscope itemtype="http://schema.org/Thing">
<a href="/categories/%E7%96%91%E9%9A%BE%E6%9D%82%E7%97%87/" itemprop="url" rel="index"><span itemprop="name">疑难杂症</span></a>
</span>
</span>
<span id="/2024/08/10/%E8%A7%A3%E5%86%B3Win10%E3%80%81Win11%E5%AD%97%E4%BD%93%E9%9D%99%E6%AD%A2%E6%97%B6%E6%A8%A1%E7%B3%8A%EF%BC%8C%E9%BC%A0%E6%A0%87%E7%A7%BB%E5%8A%A8%E5%88%B0%E5%AD%97%E4%BD%93%E4%B8%8A%E5%90%8E%E6%88%96%E8%80%85%E7%A7%BB%E5%8A%A8%E5%AD%97%E4%BD%93%E6%97%B6%E6%81%A2%E5%A4%8D%E6%AD%A3%E5%B8%B8%E7%9A%84%E9%97%AE%E9%A2%98/" class="post-meta-item leancloud_visitors" data-flag-title="解决Win10/Win11字体静止时模糊,鼠标移动到字体上后或者移动字体时恢复正常的问题" title="阅读次数">
<span class="post-meta-item-icon">
<i class="fa fa-eye"></i>
</span>
<span class="post-meta-item-text">阅读次数:</span>
<span class="leancloud-visitors-count"></span>
</span>
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="far fa-comment"></i>
</span>
<span class="post-meta-item-text">Valine:</span>
<a title="valine" href="/2024/08/10/%E8%A7%A3%E5%86%B3Win10%E3%80%81Win11%E5%AD%97%E4%BD%93%E9%9D%99%E6%AD%A2%E6%97%B6%E6%A8%A1%E7%B3%8A%EF%BC%8C%E9%BC%A0%E6%A0%87%E7%A7%BB%E5%8A%A8%E5%88%B0%E5%AD%97%E4%BD%93%E4%B8%8A%E5%90%8E%E6%88%96%E8%80%85%E7%A7%BB%E5%8A%A8%E5%AD%97%E4%BD%93%E6%97%B6%E6%81%A2%E5%A4%8D%E6%AD%A3%E5%B8%B8%E7%9A%84%E9%97%AE%E9%A2%98/#valine-comments" itemprop="discussionUrl">
<span class="post-comments-count valine-comment-count" data-xid="/2024/08/10/%E8%A7%A3%E5%86%B3Win10%E3%80%81Win11%E5%AD%97%E4%BD%93%E9%9D%99%E6%AD%A2%E6%97%B6%E6%A8%A1%E7%B3%8A%EF%BC%8C%E9%BC%A0%E6%A0%87%E7%A7%BB%E5%8A%A8%E5%88%B0%E5%AD%97%E4%BD%93%E4%B8%8A%E5%90%8E%E6%88%96%E8%80%85%E7%A7%BB%E5%8A%A8%E5%AD%97%E4%BD%93%E6%97%B6%E6%81%A2%E5%A4%8D%E6%AD%A3%E5%B8%B8%E7%9A%84%E9%97%AE%E9%A2%98/" itemprop="commentCount"></span>
</a>
</span>
<br>
<span class="post-meta-item" title="本文字数">
<span class="post-meta-item-icon">
<i class="far fa-file-word"></i>
</span>
<span class="post-meta-item-text">本文字数:</span>
<span>628</span>
</span>
<span class="post-meta-item" title="阅读时长">
<span class="post-meta-item-icon">
<i class="far fa-clock"></i>
</span>
<span class="post-meta-item-text">阅读时长 ≈</span>
<span>1 分钟</span>
</span>
</div>
</header>
<div class="post-body" itemprop="articleBody">
<p>最近一段时间,在某些应用程序中会出现字体显示不正常,窗口内界面显示有残影等奇怪问题。虽然问题出现了很久,但是一直没有着手解决,直到今天实在无法忍受遂寻求解决方法。</p>
<!--noindex-->
<div class="post-button">
<a class="btn" href="/2024/08/10/%E8%A7%A3%E5%86%B3Win10%E3%80%81Win11%E5%AD%97%E4%BD%93%E9%9D%99%E6%AD%A2%E6%97%B6%E6%A8%A1%E7%B3%8A%EF%BC%8C%E9%BC%A0%E6%A0%87%E7%A7%BB%E5%8A%A8%E5%88%B0%E5%AD%97%E4%BD%93%E4%B8%8A%E5%90%8E%E6%88%96%E8%80%85%E7%A7%BB%E5%8A%A8%E5%AD%97%E4%BD%93%E6%97%B6%E6%81%A2%E5%A4%8D%E6%AD%A3%E5%B8%B8%E7%9A%84%E9%97%AE%E9%A2%98/#more" rel="contents">
阅读全文 »
</a>
</div>
<!--/noindex-->
</div>
<footer class="post-footer">
<div class="post-eof"></div>
</footer>
</article>
<article itemscope itemtype="http://schema.org/Article" class="post-block" lang="zh-CN">
<link itemprop="mainEntityOfPage" href="http://jackie-li-0228.github.io/2024/06/29/%E4%BD%BF%E7%94%A8Shim%E5%AE%9E%E7%8E%B0%E5%9C%A8%E5%91%BD%E4%BB%A4%E8%A1%8C%E4%B8%AD%E5%BF%AB%E6%8D%B7%E5%90%AF%E5%8A%A8%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F/">
<span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
<meta itemprop="image" content="/images/avatar.gif">
<meta itemprop="name" content="JackieLi">
<meta itemprop="description" content="">
</span>
<span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
<meta itemprop="name" content="JackieLi的小屋">
</span>
<header class="post-header">
<h2 class="post-title" itemprop="name headline">
<a href="/2024/06/29/%E4%BD%BF%E7%94%A8Shim%E5%AE%9E%E7%8E%B0%E5%9C%A8%E5%91%BD%E4%BB%A4%E8%A1%8C%E4%B8%AD%E5%BF%AB%E6%8D%B7%E5%90%AF%E5%8A%A8%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F/" class="post-title-link" itemprop="url">使用Shim实现在命令行中快捷启动应用程序</a>
</h2>
<div class="post-meta">
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="far fa-calendar"></i>
</span>
<span class="post-meta-item-text">发表于</span>
<time title="创建时间:2024-06-29 15:50:00" itemprop="dateCreated datePublished" datetime="2024-06-29T15:50:00+08:00">2024-06-29</time>
</span>
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="far fa-calendar-check"></i>
</span>
<span class="post-meta-item-text">更新于</span>
<time title="修改时间:2024-08-10 12:58:01" itemprop="dateModified" datetime="2024-08-10T12:58:01+08:00">2024-08-10</time>
</span>
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="far fa-folder"></i>
</span>
<span class="post-meta-item-text">分类于</span>
<span itemprop="about" itemscope itemtype="http://schema.org/Thing">
<a href="/categories/%E7%8E%A9%E6%9C%BA%E6%8A%80%E5%B7%A7/" itemprop="url" rel="index"><span itemprop="name">玩机技巧</span></a>
</span>
</span>
<span id="/2024/06/29/%E4%BD%BF%E7%94%A8Shim%E5%AE%9E%E7%8E%B0%E5%9C%A8%E5%91%BD%E4%BB%A4%E8%A1%8C%E4%B8%AD%E5%BF%AB%E6%8D%B7%E5%90%AF%E5%8A%A8%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F/" class="post-meta-item leancloud_visitors" data-flag-title="使用Shim实现在命令行中快捷启动应用程序" title="阅读次数">
<span class="post-meta-item-icon">
<i class="fa fa-eye"></i>
</span>
<span class="post-meta-item-text">阅读次数:</span>
<span class="leancloud-visitors-count"></span>
</span>
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="far fa-comment"></i>
</span>
<span class="post-meta-item-text">Valine:</span>
<a title="valine" href="/2024/06/29/%E4%BD%BF%E7%94%A8Shim%E5%AE%9E%E7%8E%B0%E5%9C%A8%E5%91%BD%E4%BB%A4%E8%A1%8C%E4%B8%AD%E5%BF%AB%E6%8D%B7%E5%90%AF%E5%8A%A8%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F/#valine-comments" itemprop="discussionUrl">
<span class="post-comments-count valine-comment-count" data-xid="/2024/06/29/%E4%BD%BF%E7%94%A8Shim%E5%AE%9E%E7%8E%B0%E5%9C%A8%E5%91%BD%E4%BB%A4%E8%A1%8C%E4%B8%AD%E5%BF%AB%E6%8D%B7%E5%90%AF%E5%8A%A8%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F/" itemprop="commentCount"></span>
</a>
</span>
<br>
<span class="post-meta-item" title="本文字数">
<span class="post-meta-item-icon">
<i class="far fa-file-word"></i>
</span>
<span class="post-meta-item-text">本文字数:</span>
<span>920</span>
</span>
<span class="post-meta-item" title="阅读时长">
<span class="post-meta-item-icon">
<i class="far fa-clock"></i>
</span>
<span class="post-meta-item-text">阅读时长 ≈</span>
<span>1 分钟</span>
</span>
</div>
</header>
<div class="post-body" itemprop="articleBody">
<h1 id="使用Shim工具快捷启动应用程序"><a href="#使用Shim工具快捷启动应用程序" class="headerlink" title="使用Shim工具快捷启动应用程序"></a>使用Shim工具快捷启动应用程序</h1><p>想要使用命令行来快捷启动应用程序?但是又不想一个一个把每个软件的安装目录添加进Path,并且还要记住程序原本的名称,非常麻烦。把程序的快捷方式都放到一个统一的Path中注册的文件夹的方法?确实可以使用命令行启动,也可以自定义名字,但每次启动还需要加上<code>.lnk</code>的后缀才可以识别,依然非常鸡肋。</p>
<p>今天要介绍的是一种更为简便的方法,只需要使用一款Scoop的配套小工具——<strong>Shim</strong>。</p>
<!--noindex-->
<div class="post-button">
<a class="btn" href="/2024/06/29/%E4%BD%BF%E7%94%A8Shim%E5%AE%9E%E7%8E%B0%E5%9C%A8%E5%91%BD%E4%BB%A4%E8%A1%8C%E4%B8%AD%E5%BF%AB%E6%8D%B7%E5%90%AF%E5%8A%A8%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F/#more" rel="contents">
阅读全文 »
</a>
</div>
<!--/noindex-->
</div>
<footer class="post-footer">
<div class="post-eof"></div>
</footer>
</article>
<article itemscope itemtype="http://schema.org/Article" class="post-block" lang="zh-CN">
<link itemprop="mainEntityOfPage" href="http://jackie-li-0228.github.io/2024/06/29/%E5%8E%8B%E7%BC%A9%E8%BF%91%E9%82%BB%E6%B3%95%E7%9A%84%E5%8F%AF%E8%A7%86%E5%8C%96Python%E5%AE%9E%E7%8E%B0/">
<span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
<meta itemprop="image" content="/images/avatar.gif">
<meta itemprop="name" content="JackieLi">
<meta itemprop="description" content="">
</span>
<span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
<meta itemprop="name" content="JackieLi的小屋">
</span>
<header class="post-header">
<h2 class="post-title" itemprop="name headline">
<a href="/2024/06/29/%E5%8E%8B%E7%BC%A9%E8%BF%91%E9%82%BB%E6%B3%95%E7%9A%84%E5%8F%AF%E8%A7%86%E5%8C%96Python%E5%AE%9E%E7%8E%B0/" class="post-title-link" itemprop="url">压缩近邻法的可视化Python实现</a>
</h2>
<div class="post-meta">
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="far fa-calendar"></i>
</span>
<span class="post-meta-item-text">发表于</span>
<time title="创建时间:2024-06-29 11:00:00" itemprop="dateCreated datePublished" datetime="2024-06-29T11:00:00+08:00">2024-06-29</time>
</span>
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="far fa-calendar-check"></i>
</span>
<span class="post-meta-item-text">更新于</span>
<time title="修改时间:2024-09-18 16:01:21" itemprop="dateModified" datetime="2024-09-18T16:01:21+08:00">2024-09-18</time>
</span>
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="far fa-folder"></i>
</span>
<span class="post-meta-item-text">分类于</span>
<span itemprop="about" itemscope itemtype="http://schema.org/Thing">
<a href="/categories/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/" itemprop="url" rel="index"><span itemprop="name">机器学习</span></a>
</span>
</span>
<span id="/2024/06/29/%E5%8E%8B%E7%BC%A9%E8%BF%91%E9%82%BB%E6%B3%95%E7%9A%84%E5%8F%AF%E8%A7%86%E5%8C%96Python%E5%AE%9E%E7%8E%B0/" class="post-meta-item leancloud_visitors" data-flag-title="压缩近邻法的可视化Python实现" title="阅读次数">
<span class="post-meta-item-icon">
<i class="fa fa-eye"></i>
</span>
<span class="post-meta-item-text">阅读次数:</span>
<span class="leancloud-visitors-count"></span>
</span>
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="far fa-comment"></i>
</span>
<span class="post-meta-item-text">Valine:</span>
<a title="valine" href="/2024/06/29/%E5%8E%8B%E7%BC%A9%E8%BF%91%E9%82%BB%E6%B3%95%E7%9A%84%E5%8F%AF%E8%A7%86%E5%8C%96Python%E5%AE%9E%E7%8E%B0/#valine-comments" itemprop="discussionUrl">
<span class="post-comments-count valine-comment-count" data-xid="/2024/06/29/%E5%8E%8B%E7%BC%A9%E8%BF%91%E9%82%BB%E6%B3%95%E7%9A%84%E5%8F%AF%E8%A7%86%E5%8C%96Python%E5%AE%9E%E7%8E%B0/" itemprop="commentCount"></span>
</a>
</span>
<br>
<span class="post-meta-item" title="本文字数">
<span class="post-meta-item-icon">
<i class="far fa-file-word"></i>
</span>
<span class="post-meta-item-text">本文字数:</span>
<span>5.3k</span>
</span>
<span class="post-meta-item" title="阅读时长">
<span class="post-meta-item-icon">
<i class="far fa-clock"></i>
</span>
<span class="post-meta-item-text">阅读时长 ≈</span>
<span>5 分钟</span>
</span>
</div>
</header>
<div class="post-body" itemprop="articleBody">
<p>最近学习模式识别的时候看到压缩近邻法,然后对其进行了Python实现。这里分享一下代码。</p>
<p>压缩近邻法是为了降低近邻法的计算复杂度,其通过将数据集进行压缩,然后再进行近邻法的计算。这样可以大大降低计算复杂度。</p>
<p>本程序功能:</p>
<ol>
<li>生成一个二维的数据集,以 $y=sinx$ 函数作非线性分割。</li>
<li>使用压缩近邻法构建比原数据集小的分类点集。并可视化了构建过程。</li>
<li>可以添加测试数据集并观察使用筛选后的分类点集在K-近邻法中对于不同K取值的分类效果。</li>
</ol>
<!--noindex-->
<div class="post-button">
<a class="btn" href="/2024/06/29/%E5%8E%8B%E7%BC%A9%E8%BF%91%E9%82%BB%E6%B3%95%E7%9A%84%E5%8F%AF%E8%A7%86%E5%8C%96Python%E5%AE%9E%E7%8E%B0/#more" rel="contents">
阅读全文 »
</a>
</div>
<!--/noindex-->
</div>
<footer class="post-footer">
<div class="post-eof"></div>
</footer>
</article>