1. 项目概述与Flea-Scope初体验
如果你和我一样,是个喜欢捣鼓电路、但又不想在昂贵的专业仪器上投入太多的电子爱好者,那么Flea-Scope USB示波器绝对是一个会让你眼前一亮的玩具。它本质上是一个基于PIC32MK微控制器的多功能USB设备,集成了18Msps采样率的示波器、逻辑分析仪和波形发生器。最妙的是,它不需要安装任何驱动或软件,只需要一个支持WebUSB的浏览器(比如Chrome、Edge)就能直接控制,这种极简的接入方式让硬件调试的门槛降低了不少。我拿到这个来自HackerBoxes订阅盒的小家伙后,第一感觉就是它把实验室里那个笨重、复杂的“大家伙”浓缩进了一个比名片盒大不了多少的PCB板里,还附带了面包板和一堆基础元件,摆明了就是要让你立刻动手,而不是先读上两百页的说明书。
这次实践的核心,就是利用Flea-Scope这个一体化平台,完成从最基础的电压分压器到频率选择性滤波器,再到嵌入式系统编程的完整链路。这不仅仅是按图索骥地连接几个元件,更是理解模拟电路行为、验证理论公式、并最终让硬件“活”起来的过程。无论你是刚接触电路的新手,想直观地看看欧姆定律和容抗感抗到底是怎么回事,还是有一定经验的开发者,想找一个轻量级的信号发生与采集工具来快速验证想法,这套组合都能提供相当直接的反馈。整个流程下来,你会对“信号”如何在电路中行走、如何被改变有一个非常具象的认识,这种认识是光看教科书波形图无法替代的。
2. 硬件准备与快速上手指南
2.1 开箱与硬件连接
打开HackerBox 0102,你会看到Flea-Scope主板、一块中号面包板、若干杜邦线、电阻、电容、电感、电位器、按键、LED和蜂鸣器等元件。第一步不是急着接线,而是先给Flea-Scope“装上手脚”——也就是焊接或安装排针。板子边缘预留了两排12针和两排3针的焊盘。我的建议是,如果你打算长期使用并可能频繁插拔到面包板上,花几分钟把排针焊上是非常值得的,这能保证连接的稳固性。如果只是临时体验,也可以直接将排针插入(注意孔位是错开的,可以卡住),但稍微晃动就可能接触不良,影响实验。
焊接或安装好排针后,用附带的Micro-USB线将其连接到电脑。你会看到板载的红、绿、蓝三色LED亮起,蓝色LED处于闪烁状态,这表明设备已上电并进入待连接模式。这时,打开你的Chrome或Edge浏览器,访问Flea-Scope官方GUI界面。页面加载后,点击“Start Connect”按钮,浏览器会弹出设备选择窗口,列表中应该会出现“Flea-Scope”,选中并连接。如果没看到设备,请检查浏览器是否支持WebUSB(通常Chrome 61以上版本均支持),并确保没有其他程序独占USB端口。
连接成功后,界面应该会显示示波器的实时画面。为了快速验证设备工作,我们可以使用其内置的“自环”测试。找到板子上那个小小的BNC接口,将附带的P6100探头连接到BNC口上,并把探头上的衰减开关拨到“1X”档(这个档位对信号的衰减最小,适合测量低电压)。然后,将探头的钩子夹到板子上那个三针波形输出头(标有WAVE OUT)的最外侧引脚上。这个操作相当于把波形发生器的输出直接送到了示波器的输入通道。此时,你应该立即在GUI界面上看到一个清晰的正弦波。你可以尝试在GUI的波形发生器区域,将波形切换为方波、三角波,或者改变输出频率(默认1KHz),屏幕上波形应随之实时变化。这个简单的测试确认了示波器、探头、波形发生器三大核心功能全部工作正常。
注意:探头上的“1X”和“10X”档位至关重要。1X档意味着探头直接传输信号,输入阻抗约为1MΩ并联少量电容;10X档则在探头内部串联了一个9MΩ电阻,使总输入阻抗变为10MΩ,同时降低了输入电容,但信号幅度会衰减为原来的1/10。在测量Flea-Scope自身产生的3.3V左右信号时,使用1X档即可。如果测量更高电压或高频信号,应使用10X档以防止过载并提高测量带宽。GUI上有一个“探头衰减”设置选项,务必使其与探头硬件档位匹配,否则电压读数会是错误的。
2.2 面包板布局与基础连接理解
接下来,我们要把实验从“设备自环”转移到面包板上。面包板是原型设计的核心,理解其内部连接结构是避免接线错误的关键。板子通常有两组平行的“电源轨”(通常标有+和-或红蓝线),每一条电源轨在水平方向上是全部连通的。中间是大量的“元件插孔区”,它们以垂直的五孔为一组相互连通,但组与组之间、上下两部分之间是绝缘的。中间的一条凹槽正好用于放置双列直插(DIP)封装的芯片。
我们用两根母对公杜邦线,将Flea-Scope的“WAVE OUT”和“SCOPE IN”引脚,连接到面包板上同一个五孔组中的两个孔里。这样,这两个引脚就在面包板上被短接在一起了,相当于用面包板和杜邦线替代了刚才的探头,完成了一个“软自环”。此时示波器上应该再次出现波形。这个步骤虽然简单,但它建立了我们所有后续实验的基本信号流模型:波形发生器输出(WAVE OUT) -> 外部电路 -> 示波器输入(SCOPE IN)。请务必在脑子里固化这个流向,后续所有电路的输入和输出都将围绕它展开。
3. 从理论到实践:电压分压器深度解析
3.1 分压原理与搭建验证
电压分压器可能是模拟电路中最经典、应用最广泛的拓扑之一了。其核心公式Vout = Vin * (R2 / (R1 + R2))看似简单,但亲手搭建并测量能带来最直观的理解。我们从材料包中取出两个1kΩ的电阻(色环通常是棕黑黑棕棕,或棕黑红金,用万用表确认一下最稳妥),以及三根杜邦线。
在面包板上,我们这样搭建:第一根线从Flea-Scope的“WAVE OUT”接到面包板某列的一个孔(记为点A)。将一个1kΩ电阻的一端插入点A所在列,另一端插入同一行但不同列的另一个孔(记为点B,点A与点B通过这个电阻连接)。然后,将第二个1kΩ电阻的一端插入点B,另一端通过第三根线连接到Flea-Scope的“GND”引脚。最后,用一根线从点B引出,连接到Flea-Scope的“SCOPE IN”引脚。这就构成了一个标准的R1-R2串联分压电路,其中点B(即两个电阻的连接点)就是我们的输出点Vout。
根据公式,当R1 = R2 = 1kΩ时,分压比是1/2。Flea-Scope的波形发生器输出峰值约为3.3V的正弦波,因此我们预期在“SCOPE IN”测得的Vout峰值约为1.65V。接通后观察示波器界面,将垂直档位调整到合适的范围(例如500mV/div或1V/div),你会看到正弦波的幅度确实大约减半了。你可以尝试改变波形发生器的频率,从100Hz调到10kHz,会发现波形的幅度基本保持不变。这印证了电阻的一个关键特性:其阻值在一定的频率范围内(远低于其寄生效应起作用的频率)是与频率无关的。纯电阻分压器是一个无频率选择性的衰减器。
3.2 电位器:可变分压的实践
理解了固定分压后,我们引入电位器(可变电阻)。电位器有三个引脚,两侧是固定端,中间是滑动端。旋转旋钮,滑动端与两侧固定端之间的电阻比值会改变。我们将电位器接入电路:两侧的固定端分别接“WAVE OUT”和“GND”,滑动端接“SCOPE IN”。这实际上构成了一个分压比可调的分压器。
上电后,缓慢旋转电位器的旋钮,观察示波器上的波形幅度变化。你应该能看到幅度从接近0V(滑动端接近GND端)平滑地变化到接近3.3V(滑动端接近WAVE OUT端)。这个实验生动地展示了如何通过一个简单的机械操作,连续地控制信号幅度。它在实际中的应用场景非常多,例如音响的音量调节、LCD背光亮度调节等。
实操心得:在面包板上使用电位器时,由于其引脚较粗,插入和拔出要小心,避免弄松面包板内部的簧片。测量时,如果发现波形在某个位置有跳变或噪声,可能是电位器滑动触点接触不良,轻微来回旋转几下通常能解决。这也是为什么在要求高可靠性的产品中,会使用数字电位器或编程DAC来替代机械电位器的原因。
4. 频率的魔术:RC/RL滤波器设计与特性验证
当电路中的元件不再是纯电阻,而是加入了电容或电感时,故事就变得有趣了。这些元件的阻抗会随着信号频率的变化而变化,从而使电路具备了“频率选择性”,也就是滤波功能。
4.1 电容高通滤波器(RC High-Pass Filter)
让我们先搭建一个RC高通滤波器。回到最初的两个1kΩ电阻分压电路。现在,将靠近“WAVE OUT”(即R1位置)的1kΩ电阻替换为那个100nF(0.1μF)的瓷片电容。电路变成了:WAVE OUT -> 电容 -> 节点B -> 1kΩ电阻 -> GND。节点B连接至SCOPE IN。
在开始测试前,需要在示波器GUI上做一个小但重要的设置:将输入耦合从“DC”改为“AC”。DC耦合会显示信号的直流分量和交流分量总和,而AC耦合会通过一个内部电容隔断直流,只显示交流分量。对于滤波器分析,我们更关心交流信号的变化,使用AC耦合可以让我们更清晰地观察波形幅度的变化,不受任何直流偏置的影响。
搭建好后,将波形发生器设置回1kHz正弦波。观察波形,你应该能看到一个幅度比之前纯电阻分压时小一些的正弦波。现在,开始改变频率:切换到500Hz,观察幅度;再切换到5kHz,观察幅度。对比非常明显:5kHz信号的幅度远大于500Hz信号的幅度。这就是“高通”的含义:高频成分更容易通过,低频成分被衰减。
原理解析:电容的容抗公式是Xc = 1 / (2πfC)。其中f是频率,C是电容值。从容抗公式可以看出,频率f越高,容抗Xc越小。在我们的分压器模型中,电容占据了R1的位置。对于高频信号(如5kHz),电容的容抗很小,相当于一个小电阻,因此大部分电压降在了后面的1kΩ电阻(R2)上,输出幅度就大。对于低频信号(如500Hz),电容的容抗很大,相当于一个大电阻,因此大部分电压降在了电容本身,输出到R2上的电压就小,幅度就小。
我们可以用DigiKey的在线滤波器计算器(或其他任何RC滤波器计算工具)来验证。选择高通滤波器(High Pass),RC结构,输入R=1000Ω,C=100nF(即0.0000001F)。计算器会给出截止频率(-3dB频率)fc ≈ 1592 Hz。这意味着频率为1592 Hz的信号通过此滤波器后,幅度会衰减到输入幅度的约70.7%(即-3dB)。我们的实验频率500Hz远低于截止频率,因此被严重衰减;5kHz远高于截止频率,因此几乎无衰减地通过。这与我们的观察完全吻合。
4.2 电容低通滤波器(RC Low-Pass Filter)
现在我们来搭建低通滤波器。将电路恢复为两个1kΩ电阻分压。这次,将靠近“GND”(即R2位置)的1kΩ电阻替换为同一个100nF电容。电路变为:WAVE OUT -> 1kΩ电阻 -> 节点B -> 电容 -> GND。节点B连接至SCOPE IN。
同样使用AC耦合。在1kHz下观察波形。然后切换频率:500Hz和5kHz。这次现象与高通滤波器相反:500Hz信号的幅度大于5kHz信号的幅度。低频通过,高频被阻挡,这就是低通滤波器。
原理解析:此时电容在R2的位置。对于低频信号,电容容抗大,分得的电压小,因此输出点(节点B)的电压更接近输入电压(因为电压主要降在R1上)。对于高频信号,电容容抗小,近乎短路到地,因此输出点的电压就被拉低了。再用计算器验证,选择低通滤波器(Low Pass),RC结构,输入相同的R和C,得到的截止频率同样是1592Hz。500Hz低于截止频率,通过;5kHz高于截止频率,被衰减。
4.3 电感滤波器的探索(RL Filter)
材料包中还提供了一个100mH的电感。电感的感抗公式是Xl = 2πfL,其特性与电容正好相反:频率越高,感抗越大。我们可以用电感替代电阻,构建RL型高通和低通滤波器,其逻辑与RC型完全对偶。
- RL高通滤波器:在分压器中,将R2(靠近GND端)替换为100mH电感。此时,电感在下方。高频时感抗大,分压多,输出幅度大;低频时感抗小,输出幅度小。实验验证,5kHz信号幅度大于500Hz。
- RL低通滤波器:在分压器中,将R1(靠近WAVE OUT端)替换为100mH电感。此时,电感在上方。高频时感抗大,输入电压大部分降在电感上,输出幅度小;低频时感抗小,输出幅度大。实验验证,500Hz信号幅度大于5kHz。
在DigiKey计算器中,选择RL滤波器配置,输入R=1000Ω,L=0.1H(即100mH),可以计算出RL滤波器的截止频率约为1592 Hz,与RC滤波器在相同R值和1/(2πRC)或R/(2πL)计算下的结果一致,这体现了滤波器设计的对称美。
注意事项与深入思考:
- 元件非理想性:我们使用的电容和电感并非理想元件。瓷片电容在高频下会有等效串联电阻(ESR)和寄生电感;绕线电感则存在线圈电阻和匝间电容。这些非理想性会在很高或很低的频率下影响滤波器的实际特性。对于本次实验的音频范围,影响很小,但这是进行精密射频设计时必须考虑的。
- 负载效应:我们的示波器探头或SCOPE IN输入本身有一个输入阻抗(通常是1MΩ并联一些电容)。这个阻抗并联在我们的输出端(R2或电容/电感两端),构成了滤波器的负载。当负载阻抗与滤波器阻抗可比拟时,会显著改变分压比和截止频率。Flea-Scope的输入阻抗较高,对本次实验影响不大,但在设计需要驱动特定负载的滤波器时,必须将负载纳入计算。
- 波形发生器输出阻抗:Flea-Scope的“WAVE OUT”引脚输出阻抗很低,可以近似为理想电压源。但旁边还有一个“WAVE OUT with series 4K”引脚,它内部串联了一个4kΩ电阻。如果使用这个引脚,相当于信号源内阻增加了4kΩ,这会影响分压计算和滤波器特性。在本次实验中,我们始终使用中心的无串阻引脚,以简化分析。
5. 进阶玩法:将Flea-Scope变为嵌入式BASIC计算机
Flea-Scope的潜力远不止于一个测量仪器。其核心的PIC32MK单片机可以通过刷入StickOS固件,变身为一台可以通过浏览器编程的微型计算机。这为我们打开了一扇通往嵌入式世界的大门。
5.1 进入StickOS模式
要进入这个模式,你需要访问一个特定的URL(通常会在Flea-Scope的文档或相关页面提供)。连接后,浏览器界面会变成一个简单的集成开发环境(IDE),包含代码编辑区、命令行和I/O状态显示。这个环境运行一种名为StickOS BASIC的解释型语言,语法类似于经典的BASIC,但增加了直接操作硬件引脚的能力。
5.2 实现“西蒙说”游戏
项目指南提供了一个经典的“西蒙说”记忆游戏的实现。这个项目完美地融合了数字输入(按钮)、数字输出(LED)、模拟输出(蜂鸣器)和程序逻辑。
硬件连接是一个关键步骤,需要耐心:你需要用杜邦线将Flea-Scope的多个GPIO引脚连接到面包板上的四个按钮、四个LED和一个蜂鸣器。具体连接关系如下表所示(引脚编号以实际PDF或界面说明为准,以下为示例):
| 杜邦线颜色(仅示意) | Flea-Scope 引脚 | 连接至面包板元件 |
|---|---|---|
| 棕色 | B1 (数字输入) | 按钮1左侧引脚 |
| 红色 | A1 (数字输出) | LED1阳极(长脚) |
| 橙色 | B3 (数字输入) | 按钮2左侧引脚 |
| 黄色 | A3 (数字输出) | LED2阳极 |
| 绿色 | B6 (数字输入) | 按钮3左侧引脚 |
| 蓝色 | A5 (数字输出) | LED3阳极 |
| 紫色 | B8 (数字输入) | 按钮4左侧引脚 |
| 灰色 | A7 (数字输出) | LED4阳极 |
| 白色 | A4 (PWM/频率输出) | 蜂鸣器正极 |
| 黑色 | 3V3 (电源) | 蜂鸣器负极(或通过电阻) |
| 另一根棕色线 | GND (地) | 面包板顶部电源地轨 |
电路要点:
- LED:所有LED的阴极(短脚)需要通过一个220Ω-1kΩ的限流电阻连接到地(GND)。也可以共用一个电阻,但独立电阻可以保证亮度一致且更安全。
- 按钮:每个按钮的一侧接GPIO输入引脚(如B1),另一侧需要连接到地(GND)。同时,输入引脚需要通过一个上拉电阻(例如10kΩ)连接到3.3V,以确保按钮未按下时引脚处于确定的高电平状态。有些单片机内部可配置上拉电阻,需查阅StickOS文档确认。
- 蜂鸣器:无源蜂鸣器需要频率信号驱动。将正极接PWM输出引脚(A4),负极接地。有的蜂鸣器有极性,接反了不响。
软件逻辑:将提供的BASIC代码粘贴到编辑器中并运行。游戏逻辑通常是:系统随机点亮一个LED并发出对应音调,玩家按下对应按钮;然后系统会顺序增加序列长度,玩家需要重复整个不断增长的序列。代码中会利用数组存储序列,用循环和条件判断来处理输入和验证。
通过这个项目,你实践了嵌入式系统开发的完整流程:硬件接口定义、电路搭建、软件编程、调试。你能亲眼看到、亲手按到、亲耳听到你的代码如何控制物理世界,这种成就感是纯软件编程无法比拟的。
5.3 摩尔斯电码练习器
另一个有趣的示例是摩尔斯电码生成器。代码逻辑是定义一个字符到摩尔斯码点划序列的映射表(通常用二进制位表示,如0x9代表.-即A)。主循环等待用户输入字符串,然后遍历每个字符,根据映射表控制蜂鸣器发出长短不同的声音(点短、划长),并用适当的间隔分隔。
这个项目虽然代码量不大,但涉及了数据结构(数组、数据表)、子程序调用和硬件定时控制。你可以尝试修改freq变量改变音调,修改ms变量改变发报速度,甚至添加一个LED,让它在发报时同步闪烁。
6. 常见问题排查与调试心得
在实际动手过程中,遇到问题是常态。这里记录一些我踩过的坑和解决方法。
问题1:浏览器无法识别Flea-Scope设备。
- 检查步骤:
- 确保使用Chrome、Edge或Opera等基于Chromium并支持WebUSB的浏览器。
- 检查USB线是否完好,尝试更换线缆或电脑USB端口。
- 在浏览器中,进入
chrome://flags(或edge://flags),搜索“WebUSB”,确保其处于“Enabled”状态(新版本浏览器通常默认开启)。 - 尝试在无痕模式下打开GUI页面,排除浏览器扩展干扰。
- 如果之前连接过,在浏览器设置中清除“USB设备”的授权记录,然后重新连接。
问题2:示波器无信号或波形异常。
- 排查清单:
现象 可能原因 解决方案 完全无波形 1. 探头或杜邦线连接错误或断路。
2. 示波器输入通道未开启或设置错误。
3. 波形发生器未开启或输出引脚选错。1. 用万用表通断档检查线路。
2. 确认GUI中对应通道(如CH1)已激活,垂直档位设置合理。
3. 确认波形发生器已启用,并输出到正确的引脚(如WAVE OUT)。波形幅度太小 1. 探头衰减设置不匹配(如探头在10X,软件设为1X)。
2. 垂直档位(V/div)设置过大。
3. 电路分压比过大或负载过重。1. 核对并统一硬件探头档位与软件设置。
2. 调小垂直档位。
3. 检查电路参数,测量关键点电压。波形失真(如正弦波变方波) 1. 信号频率过高,超出示波器或探头带宽。
2. 输入信号幅度过大,导致放大器饱和削顶。
3. 耦合方式错误(应使用AC耦合观察交流信号)。1. 降低信号频率,Flea-Scope带宽有限,高频方波边沿会变圆。
2. 降低波形发生器输出幅度(如果可调),或使用10X探头。
3. 将输入耦合从DC切换到AC。波形有严重噪声 1. 面包板接触不良,存在虚接。
2. 电源噪声或接地不良。
3. 附近有强干扰源(如手机、开关电源)。1. 按压元件和导线,确保接触牢固。
2. 检查所有GND连接是否可靠共地。
3. 远离干扰源,尝试使用较短的连接线。
问题3:滤波器实验现象与理论不符。
- 可能原因与对策:
- 元件值误差:电阻、电容、电感都有公差。用万用表测量一下实际值,尤其是电容和电感,业余条件下测量精度有限,可能导致截止频率偏移。
- 测量点错误:确保示波器探头或SCOPE IN线是连接在滤波器的输出节点上,而不是输入节点或其他地方。
- 输入/输出阻抗影响:如前所述,信号源输出阻抗和示波器输入阻抗会形成负载。对于高阻抗的Flea-Scope输入,影响较小,但若电路中使用了大电阻(如几百kΩ),影响就会显现。在设计时,应尽量让滤波器的输出阻抗远小于负载阻抗。
- 非正弦波测试:滤波器特性通常针对正弦波定义。如果用方波测试,你会看到波形形状的改变(如边沿变缓),这是滤波器对不同频率谐波衰减不同造成的正常现象,并非故障。
问题4:StickOS BASIC程序无法运行或硬件无反应。
- 调试思路:
- 语法错误:BASIC解释器通常会提示行号和错误类型。仔细检查拼写、标点(如引号、冒号)、变量名和保留字。
- 引脚定义错误:确认
DIM ... AS PIN ... FOR ...语句中的引脚编号与你的实际硬件连接完全一致。StickOS的引脚编号可能与PCB丝印不同,务必查阅对应文档。 - 硬件连接复查:这是最常见的问题。用万用表蜂鸣档,逐条检查从Flea-Scope引脚到面包板元件脚的连接是否导通。特别检查LED方向、按钮上拉/下拉电阻、蜂鸣器极性。
- 电源问题:确保所有元件(特别是LED、蜂鸣器)的电源(3V3)和地(GND)连接正确且电压正常。
- 分步调试:不要一次性运行整个复杂程序。可以先写一个最简单的测试程序,比如让一个LED闪烁,确认基本的数字输出功能正常。再测试按钮输入,最后集成逻辑。
折腾电子项目,一半是科学,一半是手艺。理论计算给你预期,动手实践给你真相,而两者之间的差异,正是学习和精进的空间。Flea-Scope这套工具的价值,就在于它极大地缩短了从理论到实践、从想法到验证的回路,让你能快速试错、直观观察,把抽象的公式变成屏幕上跳动的波形和面包板上闪烁的灯光。这种即时反馈的学习过程,对于理解电子学的精髓,比读十本书都管用。