mcore1976/antispy-jammer
GitHub: mcore1976/antispy-jammer
基于ATTINY/Arduino/RP2040微控制器驱动压电超声波换能器阵列的硬件设备,通过发射频率调制的超声波信号来干扰麦克风录音,防止未经授权的语音采集。
Stars: 399 | Forks: 69
# antispy-jammer
基于 ATTINY13 / ATTINY85 / ATTINY45 / ATTINY25 的简易超声波反间谍录音干扰器,采用 PAM8403 / TPA3116D2 音频放大器模块驱动压电超声波换能器,并配合 AD9833 可编程信号发生器。它通过隐藏麦克风和语音助手来防止未经授权的人类语音录制。
你也可以使用不同的 Arduino 开发板,例如 Raspberry Pi Pico RP2040-Zero、ESP8266/ESP32、Arduino Mini/Nano,但根据你所使用的开发板,你可能需要更改 SPI 连接的引脚号。
本项目基于此处展示的概念: ,
此处
以及此处 ,不过我的设计经历了演化,使用 AD9833 和 25kHZ 换能器是它与原项目仅存的相似之处。
干扰器共有以下版本:
- 已废弃:仅包含 ATTINY85/Digispark 和音频放大器 TPA3116D2 + 20 个换能器的版本 A。此版本会产生轻微的可听噪音,可能不被部分人接受。噪音较小的替代方案是使用 TC4420 / IXDN614PI(非反相 MOSFET 驱动芯片)+ MOSFET IRFB4115 + 换能器 + 电感。
- 不再进一步开发:版本 B,采用 ATTINY85/Digispark(或 RP2040/ESP8266/ESP32)+ AD9833 信号发生器 + 音频放大器 TPA3116D2 (XH-M542) / 或 MOSFET 驱动芯片 + 20 个换能器 + 附加组件(如电感和 Mosfet)。此版本几乎听不到声音,并且对 iPhone 等最新款手机具有出色的干扰能力。
- 版本 C,采用 RP2040 + MOSFET 驱动芯片 + MOSFET + 20-80 个换能器 + 电感。这是最新的修订版,几乎听不到声音,并且对 iPhone 等最新款手机具有出色的干扰能力。此版本有两个修订分支——单 MOSFET + 驱动的版本,以及带有全 H 桥和 4 个 MOSFET + 2 个 MOSFET 桥驱动的版本。信号完全由 RP2040 芯片内部的 PWM 生成。
请注意,某些音频放大器(如 TPA3110)无法与超声波换能器正常配合工作(只会发出一些“咔哒”声,没有超声波)。到目前为止,我发现只有 PAM8403 和 TPA3116D2 模块能正常工作。不管怎样,由于其音频功率优势,我最终建议只使用原装 TPA3116D2(小心假冒的 XH-M542 电路板!)。
除了 PAM8403 模块,我还尝试使用自耦变压器电感(3 引脚电感——我使用了 12uH/440 uH 的“蜂鸣器电感放大器”)+ MOSFET 晶体管 IRF4115,但效果依然不如使用 TPA3116D2 音频放大器板或 IRF4115+TC4420 的组合。不过自耦变压器确实可以将换能器上的电压提高 5-10 倍,并产生干扰效果。自耦变压器电感可在此处购买:
如果使用 TPA3116 模块以获得更好的效果,请添加谐振大功率电感作为组件搭配:每 4 个换能器搭配一个 3.3 毫亨电感,或者每 5 个换能器搭配一个 4.7 毫亨电感,或者每 6 个换能器搭配一个 6.8 毫亨电感。此外,我建议加入带有两个 10K 电阻分压器的 MOSFET IRF4115。这种配置的优势在于对 iPhone 具有极佳的干扰性能。
由于市面上存在许多假冒的 XH-M542 音频放大器板,我现在只使用以下配置:TC4420(mosfet 驱动芯片)+ MOSFET IRF4115 + 换能器 + 电感。
你可以使用 20kHz-24mm 直径的超声波换能器(很难买到且非常昂贵,但对某些 iPhone 的干扰效果有时更好)、25kHz-16mm 直径换能器(默认型号)或 40kHz(干扰效果最差),但请记住,只有 25KHz 能对所有类型的麦克风/设备有效工作。40KHz 的干扰能力非常有限,不应被使用,不过该频率的源代码仍可在代码库中找到。
干扰器版本 A 的历史:
在本项目初期("main.c" 和 "main2.c" 源文件),我使用了一组电阻来构建 5 位 DAC(R-2R 电阻梯形 DAC:详见 )以生成正弦声波,并使用双极型晶体管(NPN+PNP 桥接——B类放大器)作为音频放大级来驱动压电超声波换能器: (它们会引入交越失真且功率极小)。正弦波参数是使用 Libreoffice Calc / Microsoft Excel 计算的,如有必要可更改为任何其他波形。C 语言代码利用了 ATTINY PORTB (PB0-PB4) 的所有可用引脚,根据源代码版本的不同,为 DAC 创建正弦波或脉冲波。我在此上传这些代码仅供参考,也许有人出于音频干扰之外的不同目的想要对其进行研究。
然而,在测试了第一个原型后,我发现干扰功率太低,因为必须以某种方式对 25kHz 的中心频率进行 FM 调制。最终,我不得不使用 PAM8403 放大器模块(参见带有 "enhanced" 字样的增强版图表)以获得 6 瓦的输出功率,并修改查找表和代码,构建出带有伪白噪声偏置的方波,以此来调制超声波换能器的中心频率。在这个版本中,25kHz 频率会在 23-27 kHz 范围内随机进行 0.4 kHz 偏移,这带来了极佳的干扰效果(干扰范围可达 4-5 米)。请注意,即使是 6 瓦的音频功率也不足以在更远的距离上成功实施干扰,因此我最终改用了 TPA3116D2 模块——这是一款 100 瓦音频功率放大器,毕竟它似乎是最适合压电换能器的。
文件 "main4.c"/"main5.c" 仅使用 DAC 进行 25kHz FM 信号调制,而文件 "main7.c"/"main8.c" 则使用随机 PWM 和幅度调制来生成噪声(在测试中,main7.c/main8.c 的表现优于 main4.c/main5.c)。
如果使用带有 AM 调制的文件,请使用电位器调节信号增益,避免信号失真。
微控制器 ATTINY13 的熔丝位被设置为使用 9.6MHz 内部时钟运行,而 ATTINY85 的熔丝位被设置为像 Digispark 模块那样使用 16MHz 时钟运行。
文件 "main6.c" 及其变体更接近于干扰器的版本 B(用于实现设备的小型化),但它们需要使用 AVRGCC 环境 + USBASP 编程器来烧录 ATTINY 芯片。ATTINY85 芯片连接到 AD9833 信号发生器,再进一步连接到 TPA 3116 音频放大器以及一组换能器和电感。ATTINY85 和 AD9833 通过 LM7805 由 5V 供电,而 TPA3116 则直接由 12V 或更高电压供电。我强烈推荐此方案,因为它在干扰 iPhone 时具有更好的表现。
干扰器版本 B 的历史:
20.02.2022 - 我成功仅使用以下组件重现了最初的设计:ATTINY85 芯片 + AD9833 信号发生器 + PAM8403 音频放大器以及一组换能器。
为此目的准备了代码 "main6.c" 和脚本 "compileattiny6",电路图文件为 "arduino-mic-supresor-ultrasonic-v2-ATTINY85.png"。
此外,支持 SPI 串行总线连接的其他 Arduino 开发板也有相关的 INO 脚本和重现设计的原理图。对于 ARDUINO 版本,请使用图表 "arduino-mic-supresor-ultrasonic-v2.png" 和 "arduino-mic-supresor-ultrasonic-v2-pro-mini.png"。
27.01.2023 - 更新了原有程序——除了随机 FREQUENCY(频率)偏移外,我还加入了随机 PHASE(相位)偏移,这使得尽管信号稍微有些可闻噪音,但对高端手机的干扰效果更佳。这仅适用于使用 AD9833 信号发生器的版本。
12.04.2023 - 针对于 Digispark/ATTINY85 + AD9833 + TPA3116/PAM8403 的代码已更改为支持在 25KHz ULTRASOUND(超声波)载波上进行 5-25Hz 随机 FM 调制的 INFRASOUND(次声波)。这为干扰 iPhone 和高端手机提供了最佳效果,并且当信号在障碍物上解调时,人耳几乎听不到。然而,由于 ATTINY85 芯片的速度限制,这种方法无法引入到不使用 AD9833 的设计中。如果你想干扰 iPhone,我建议使用以下设计组合:Digispark + AD9833 + TPA3116 + 至少 12 个换能器。
代码使用 SQUARE PULSE(方波脉冲)来生成波形(代码中的 AD_SQUARE 选项),这能提供最佳的整体干扰效果,但你也可以轻松将其更改为噪音更小的 SINUSOIDAL WAVE(正弦波,AD_SINE)或 TRIANGLE WAVE(三角波,AD_TRIANGLE)。正弦信号的干扰能力较弱,但几乎完全听不到声音。
24.08.2023 - 针对于 Digispark/ATTINY85 + AD9833 + TPA3116/PAM8403 的代码已更改为使用伪随机数发生器(rand() 函数)生成 7Hz-15Hz 的次声波,并在 AD9833 上使用 AD_SINE 选项。现在音频信号几乎听不见,但设备仍保持良好的干扰效率。
17.09.2023 - 针对于 Digispark/ATTINY85 + AD9833 + TPA3116/PAM8403 的代码已更改,不仅对 5Hz-25Hz 的次声波使用伪随机数发生器,还对频率摆动 24000-26000 Hz 使用该发生器,并应用 AD9833 上的 AD_SINE 选项。此代码结合了次声波和白噪声两种干扰类型。但请注意,随机次声波仅对 Android 手机有效;对于 iPhone,最佳方案是使用静态 45-50Hz 的超声波 FM 调制(经验总结)。
05.2024 - 针对 ATTINY85 + AD9833 的代码使用 FM 类型调制,并在 24-26 kHz 之间摆动。频率以锯齿状(SAW)步进增加,CAP 随机设置在 20-50Hz 之间。此外还有一些硬件差异——使用 COILS(线圈)和 MOSFET IRF4115 来隔离线圈。请注意,使用线圈、二极管和 IRF MOSFET 是可选的,但可能会提高 iPhone 的干扰能力。
08.2025 - 由于市场上 Digispark 板短缺,添加了 Raspberry Pi Pico RP2040-ZERO、ESP8266 WEMOS D1 MINI、ESP32C3 SUPER MINI + AD9833 模块的版本。添加了这些模块的接线图。
11.2025 - 增加了 MOSFET DRIVER + MOSFET + COILS(电感)的组合,替代了 TPA3116D2 板的使用,并为较新的 ESP8266 WEMOS D1 MINI、ESP32C3 SUPER MINI、RP2040-ZERO 开发板添加了该配置的接线图。
03.2026 - 在 MOSFET IRFB4115 的栅极(Gate)和源极(Source)之间添加了 18V 稳压二极管 1N5355B。MOSFET IRFB4115 的最大允许电压 Ugs 仅为 20V。现在它应该不会那么容易损坏了。
04.2026 - 添加了无 AD9833 模块的 Raspberry RP2040 / RP2035 干扰器版本。该板利用 RP2040 芯片内置的完美 PWM 来生成与先前版本中 AD9833 相同的信号。这降低了成本并提高了设备的可靠性(我发现许多中国制造的 AD9833 模块质量很差)。添加了 PCB 的 KICAD DESIGN(设计)文件 + GERBER 文件(适用于 PCBWAY / JLCPCB)。
06.2026 - 增加了带有 H 桥的 Raspberry RP2040 版本。该板使用 RP2040 中的 PWM 信号发生器,配备 4 个 MOSFET + 2 个 MOSFET 驱动器。其优势在于对 iPhone 的干扰效果。线圈必须根据换能器的数量进行调整,并与并联的换能器组串联连接。对于 20 个 20KHz 换能器,初始线圈值设定为 47 MICROHENR(微亨)。添加了 PCB 的 KICAD DESIGN(设计)文件 + GERBER 文件(适用于 PCBWAY / JLCPCB)。
如果你想提高干扰能力,必须使用配备原装 TPA3116D2 芯片(模块 XH-M542,提供 50 瓦音频功率)的 AUDIO AMPLIFIER(音频放大器),或者最好使用 MOSFET DRIVER TC4420/IXDN614PI + MOSFET IRFB4115 + COILS(线圈)以及更多的换能器,例如每个音频通道配备 40 个!
所用组件:
- 1 x 微控制器 ATTINY13 / ATTINY13A(不推荐)或 ATTINY 85/45/25(最佳),可使用 DIGISPARK 板或任何其他支持 SPI 接口的 Arduino 代替微控制器(如 RP2040-ZERO 或 WEMOS 8266 D1 MINI 开发板)。注意 - 如果使用 RP2040 开发板和 PWM 选项,则无需构建 AD9833。
- 1 x 47 微法电解电容(可使用 1 - 470uF - 用于阻断电源线上的干扰)。
- 1 x 100 纳法电容(可使用 47nf - 680nF - 用于阻断电源线上的干扰)。
- 一组 25kHZ(谐振频率非常重要!)超声波压电换能器,例如 NU25C16T-1, 25kHz 或同等型号。
- 某种电源 3 - 5.5 伏(可为 LiPol 电池或 3xAA 电池组),或根据所选音频放大器板使用 12-24 伏电压。
- 音频放大器:1 x PAM4803:2 x 3 瓦放大器模块(代替 2 个双极型晶体管),但我推荐使用 TPA3116D2 单声道模块(XH-M542)以获得 100 瓦的音频功率。注意!出于某种原因,TPA3110 和 TPA3118 模块无法与换能器正常工作。只有 TPA3116D2 是适用的。
- LM7805 - 在使用以下开发板时用作 5V 稳压器:RP2040、ESP32、ESP8266 或独立的 ATTINY85 芯片。
- 1 x 10K 欧姆电位器(或电阻分压器)可接在 ATTINY85/ARDUINO/AD9833 音频输出引脚和音频放大器板输入引脚之间(请注意,像 XH-M542 之类的某些音频放大器板已带有电位器,因此可能不需要) <可选>。
- 版本 B 干扰器所用的 AD9833 信号发生器板,注意!只有 RP2040 版本没有 AD9833 选项,完全依赖内部 PWM。
- MOSFET IRF 4115 <可选> + MOSFET DRIVER TC4420/IXDN614PI + 18V 稳压二极管 - 如果未使用音频放大器 TPA3116D2/PAM4803 时则必须使用。
- 2 安培或以上的二极管(1N400X 系列) <可选>。
- 2 x 10K 电阻 0.25 瓦 <可选>。
- 使用 MOSFET+DRIVER 时必须额外使用大电流电感(根据实际情况:每 4 个换能器配一个 3.3 毫亨电感,或者每 5 个换能器配一个 4.7 毫亨电感,或者每 6 个换能器配一个 6.8 毫亨电感) - <可选>。
- 切记使用 18V 稳压二极管来保护 MOSFET IRF4115 免受静电放电(ESD)和栅极(Gate)引脚过压的影响。
换能器组可以直接连接到 TPA3116D2 的输出端,或者通过二极管和 IRF MOSFET 连接。
可用的源代码版本:
AVR-GCC 版本
你只需要 ATTINY13 或 ATTINY85 芯片,而不需要完整的 Arduino 模块,因此设备可以做得更小。在 ATTINY85 版本中,内部时钟必须重新配置为 PLL 时钟,不使用 DIV8 并设为 16MHz 频率(AVRDUDE 熔丝位:-U lfuse:w:0xf1:m -U hfuse:w:0xdd:m -U efuse:w:0xfe:m ),就像 Digispark 设备一样。源代码中的 NOP 指令数量也经过了微调,以精确匹配约 25kHZ 的频率。必须使用 USBASP 和 AVRDUDE 对 ATTINY 芯片进行编程。这不是 Arduino 代码,不过也可以使用一些更大的芯片,例如 ATMEGA 328P(即 ARDUINO 中使用的那款)。
版本 A:请使用原理图 "antispy-jammer-enhanced-schematic.png" 以及以下源代码和编译脚本的组合:
- 适用于 ATTINY85:main4.c + compileattiny85v2 , main7.c + compileattiny85v3
- 适用于 ATTINY13:main5.c + compileattinyv2 , main8.c + compileattinyv3
版本 B:此版本使用 AD9833 信号发生器和 ATTINY85(ATTINY13 容量太小),因此
- 请使用 "main6.c" + "compileattiny6" 的组合,以及原理图 "arduino-mic-supresor-ultrasonic-v2-ATTINY85.png",或者带有 TPA3116D2 的那张:"arduino-mic-supresor-ultrasonic-v2-ATTINY85-TPA3116.png" 。
ARDUINO 版本:
请先按照此处的说明为 DIGISPARK 开发板配置你的 Arduino IDE:
版本 A:ARDUINO DIGISPARK 版本 - 包含一个独立的 "mic-jammer.ino" 版本,由 ARDUINO DIGISPARK (ATTINY85) 连接到 PAM8403 模块和 20 个换能器组成。它同样能提供大范围的干扰能力。
- 适用于 DIGISPARK 版本,请使用原理图 "arduino-mic-supresor-ultrasonic.png" 或 "mic-jammer-TPA3116D2.png" 以及 Arduino 脚本 "mic-jammer.ino"。
- 在 ARDUINO IDE 中,转到 文件/首选项/附加开发板管理器 URL 并输入此 URL: ,然后转到 菜单 工具/开发板 并选择 Digistump AVR Boards / Digispark default 16.5 MHZ。
版本 B:
- 带有 AD9833 信号发生器的 Digispark - 请使用原理图 "arduino-mic-supresor-ultrasonic-v2.png" 或 "mic-jammer-AD9833-TPA3116D2.png" 以及 INO 脚本 "mic-jammer-ad9833-digispark.ino"。
- 对于 Digispark 以外的开发板,如带有 AD9833 信号发生器的 Arduino Nano/Mini/Pro - 请使用原理图 "arduino-mic-supresor-ultrasonic-v2-pro-mini.png" 和 INO 脚本 "mic-jammer-ad9833.ino"。
- 对于 RP2040/ESP32C3/ESP8266 等开发板,请使用相应的带有该板名称的图表和源代码。
切记要使用 TPA3116D2 代替 PAM8403 以获得更好的干扰能力,并使用线圈(COILS)和 IRF 4115 MOSFET 晶体管 + TC4420 MOSFET 驱动芯片。
如果你想使用除所提供的配置以外的开发板也是可以的,只要你的开发板有可用的 SPI 库,但你将需要更改 SPI 通信引脚以匹配你的板子。
对于板载没有 5V 稳压器的 Arduino 开发板,你还必须使用电压调节器 LM7805 来为特定开发板(如 RP2040-Zero 开发板、ESP32、ESP8266)和 AD9833 模块供电。TPA3116D2 板需要由更高的电压供电 - 在连接 LM7805 之前引入 12V。如果使用 TC4420 MOSFET 驱动器和 IRF 4115 MOSFET,它们同样需要由更高的电压供电(最大 18V !!!)。
版本 C:
仅适用于 RP2040 芯片,利用其完美的 PWM 功能完全接管信号生成任务。它提高了解决方案的稳定性并进一步降低了制造成本。此版本仅适用于 MOSFET 驱动器和 MOSFET,在此没有使用音频放大器板的选项。使用免费软件 KICAD 查看原理图和 PCB。只需将 UF2 文件拖拽到 RP2040 的 USB 磁盘驱动器中即可刷新软件(通过 USB 连接到 PC 时,必须按住 RP2040 模块的 BOOT 键)。你甚至不需要 Arduino 环境即可刷新此软件。
AVR-GCC 编译信息和芯片烧录说明:
"mainXX.c" 源代码是使用 AVR-GCC 编写的,必须通过 AVRDUDE 上传到 ATTINY85/ATTINY13 芯片中。
如果你使用的是基于 Linux 的机器,则需要通过安装以下软件包来设置环境:"gcc-avr"、"binutils-avr"(有时直接叫 "binutils")、"avr-libc"、"avrdude"。对于 Ubuntu / Linux Mint,你可以使用以下命令:"sudo apt-get install gcc-avr binutils-avr binutils avr-libc gdb-avr avrdude"
如果你使用的是 Windows 机器,请按照此教程安装必要的软件包:
如果你不知道如何连接 ATMEL ATTINY 芯片进行编程的线缆,请在此处查看我的教程:
编译
项目的第一版:
- 针对于 ATTINY13/ATTINY13A 芯片(内部 9.6 MHz 时钟)的 "compileattiny" 和 "main.c" 文件 - 初始版本,请不要再使用了!
- 针对于 ATTINY85 芯片(内部 16MHz PLL 时钟)的 "compileattiny85" 和 "main2.c" 文件 - 初始版本,请不要再使用了!
版本 A:
- 针对于 ATTINY13/ATTINY13A 芯片使用 "compileattinyv2" 和 "main5.c" 文件 - 仅限 FM 调制(内部 9.6 MHz 时钟)。
- 针对于 ATTINY13/ATTINY13A 芯片使用 "compileattinyv3" 和 "main8.c" 文件 - AM/PWM 信号调制(内部 9.6 MHz 时钟)。
- 针对于 ATTINY85 芯片使用 "compileattiny85v2" 和 "main4.c" 文件 - 仅限 FM 调制(内部 16MHz PLL 时钟)。
- 针对于 ATTINY85 芯片使用 "compileattiny85v3" 和 "main7.c" 文件 - AM/FM 信号调制(内部 16MHz PLL 时钟)。
版本 B(带有 AD9833 板):
- 针对于 ATTINY85 芯片(内部 16MHz PLL 时钟)+ AD9833 信号发生器,请使用 "compileattiny6" 和 "main6.c" 文件。
要编译 ATTINY 的代码,请使用相应的 "compileattinyXXX" 脚本(例如:在 linux 下 "chmod +rx compileattiny && ./compileattiny "),在 AVR-GCC 环境下进行编译,并使用 AVRDUDE 和 USBASP 线缆进行烧录。
观看展示该设备工作原理的视频:
- 旧版本: (请勿使用,干扰能力较低)。
- 适用于 Arduino 的新版本(以及适用于 ATTINY 的 main4.c / main5.c):
- 为 Digispark 重现的原始版本:
- 配备 TPA3116D2 音频放大器板的最新版麦克风干扰利器——连 iPhone 都能干扰:
- 支持干扰 iPhone 的版本可在此处获取:
- 带有 TC4420/IXDN614PI MOSFET 驱动芯片、IRF4115 MOSFET 晶体管和一组 4.7 毫亨电感的版本:
- 2 种无 AD9833 的版本 - 单 MOSFET + 驱动器(在旧款手机上有效),全 H 桥 4 个 MOSFET + 2 个驱动器(在较新的 iPhone 上有效):
标签:反窃听, 嵌入式硬件, 物理安全, 物联网, 硬件安全, 超声波干扰器, 音频处理