Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ Π°ΡΠ΄ΠΈΠΎΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° Π½Π° Arduino β ΡΡΠΎ ΡΠ²Π»Π΅ΠΊΠ°ΡΠ΅Π»ΡΠ½ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΡΠ΅ΡΠ°Π΅Ρ Π² ΡΠ΅Π±Π΅ ΡΠ»Π΅ΠΊΡΡΠΎΠ½ΠΈΠΊΡ, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ Π°ΠΊΡΡΡΠΈΠΊΡ. Π’Π°ΠΊΠΎΠΉ Π΄Π΅Π²Π°ΠΉΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ Π·Π²ΡΠΊΠΎΠ²ΠΎΠΉ ΡΠΈΠ³Π½Π°Π» Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ: ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ ΡΠΊΠ²Π°Π»Π°ΠΉΠ·Π΅ΡΡ, Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΡΡΡΠ΅ΠΊΡΡ ΡΠ΅Π²Π΅ΡΠ±Π΅ΡΠ°ΡΠΈΠΈ ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠΏΡΠ΅ΡΡΠΈΠΈ, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎΠΊΠ°Π½Π°Π»ΡΠ½ΡΠΌΠΈ ΡΠΈΡΡΠ΅ΠΌΠ°ΠΌΠΈ. Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ Π³ΠΎΡΠΎΠ²ΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠΉ, ΡΠ°ΠΌΠΎΠ΄Π΅Π»ΡΠ½ΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ Π΄Π°ΡΡ ΠΏΠΎΠ»Π½ΡΠΉ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π½Π°Π΄ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°ΠΌΠΈ ΠΈ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π°Π΄Π°ΠΏΡΠΈΡΠΎΠ²Π°Π½ ΠΏΠΎΠ΄ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠ΅ Π·Π°Π΄Π°ΡΠΈ β ΠΎΡ ΡΠ»ΡΡΡΠ΅Π½ΠΈΡ Π·Π²ΡΠΊΠ° Π² Π°Π²ΡΠΎΠΌΠΎΠ±ΠΈΠ»Π΅ Π΄ΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΡΡΠ΄ΠΈΠΉΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΡ.
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΡΠ°Π·Π±Π΅ΡΡΠΌΡΡ, ΠΊΠ°ΠΊ ΡΠΎΠ±ΡΠ°ΡΡ Π°ΡΠ΄ΠΈΠΎΠΏΡΠΎΡΠ΅ΡΡΠΎΡ Π½Π° Π±Π°Π·Π΅ Arduino Nano, Arduino Due ΠΈΠ»ΠΈ ESP32, ΠΊΠ°ΠΊΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΠΏΠΎΡΡΠ΅Π±ΡΡΡΡΡ Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π°Π½Π°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΈ ΡΠΈΡΡΠΎΠ²ΠΎΠ³ΠΎ Π·Π²ΡΠΊΠ°, ΠΈ ΠΊΠ°ΠΊ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΊΠΎΠ΄ Π΄Π»Ρ Π±Π°Π·ΠΎΠ²ΡΡ Π°ΡΠ΄ΠΈΠΎΡΡΡΠ΅ΠΊΡΠΎΠ². ΠΡΠΎΠ±ΠΎΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡΠ΄Π΅Π»ΠΈΠΌ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ΅ Π·Π°Π΄Π΅ΡΠΆΠ΅ΠΊ ΠΏΡΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ΅ ΡΠΈΠ³Π½Π°Π»Π° Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ β ΡΡΠΎ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°ΡΡΠΎ ΡΠΏΡΡΠΊΠ°ΡΡ Π½ΠΎΠ²ΠΈΡΠΊΠΈ. Π’Π°ΠΊΠΆΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π³ΠΎΡΠΎΠ²ΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΡΠΏΡΠΎΡΠ°ΡΡΠΈΠ΅ ΡΠ°Π±ΠΎΡΡ ΡΠΎ Π·Π²ΡΠΊΠΎΠΌ, ΠΈ Π΄Π°Π΄ΠΈΠΌ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΈ ΠΏΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠΎΠ΄Π° Π΄Π»Ρ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠΎΠ² Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΡΠΌΠΈ ΡΠ΅ΡΡΡΡΠ°ΠΌΠΈ.
ΠΠ°ΠΊΠΈΠ΅ Π·Π°Π΄Π°ΡΠΈ ΡΠ΅ΡΠ°Π΅Ρ Π°ΡΠ΄ΠΈΠΎΠΏΡΠΎΡΠ΅ΡΡΠΎΡ Π½Π° Arduino
ΠΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΏΡΠΈΡΡΡΠΏΠ°ΡΡ ΠΊ ΡΠ±ΠΎΡΠΊΠ΅, Π²Π°ΠΆΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡΡΡ, Π΄Π»Ρ ΡΠ΅Π³ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ Π²Π°ΠΌ Π½ΡΠΆΠ΅Π½ Π°ΡΠ΄ΠΈΠΎΠΏΡΠΎΡΠ΅ΡΡΠΎΡ. ΠΡ ΡΡΠΎΠ³ΠΎ Π·Π°Π²ΠΈΡΠΈΡ Π²ΡΠ±ΠΎΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ², ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ ΡΡ Π΅ΠΌΡ ΠΈ Π΄Π°ΠΆΠ΅ ΡΠ·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠΎΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΡΡΠ΅Π½Π°ΡΠΈΠΈ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ:
- π΅ ΠΠΎΡΡΠ΅ΠΊΡΠΈΡ Π·Π²ΡΠΊΠ° Π² Π°Π²ΡΠΎΠΌΠΎΠ±ΠΈΠ»Π΅: ΠΊΠΎΠΌΠΏΠ΅Π½ΡΠ°ΡΠΈΡ Π°ΠΊΡΡΡΠΈΡΠ΅ΡΠΊΠΈΡ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΎΠ² ΡΠ°Π»ΠΎΠ½Π°, Π½Π°ΡΡΡΠΎΠΉΠΊΠ° ΡΠΊΠ²Π°Π»Π°ΠΉΠ·Π΅ΡΠ° ΠΏΠΎΠ΄ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠ΅ Π΄ΠΈΠ½Π°ΠΌΠΈΠΊΠΈ ΠΈΠ»ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ°Π±Π²ΡΡΠ΅ΡΠ°.
- π§ ΠΠ΅ΡΡΠΎΠ½Π°Π»ΡΠ½ΡΠΉ Hi-Fi ΡΡΠΈΠ»ΠΈΡΠ΅Π»Ρ: ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΡΡΠΈΠ»ΠΈΡΠ΅Π»Ρ Ρ ΡΠ΅Π³ΡΠ»ΠΈΡΡΠ΅ΠΌΡΠΌΠΈ ΡΠ°ΡΡΠΎΡΠ°ΠΌΠΈ Π΄Π»Ρ Π½Π°ΡΡΠ½ΠΈΠΊΠΎΠ² ΠΈΠ»ΠΈ ΠΊΠΎΠ»ΠΎΠ½ΠΎΠΊ.
- π€ ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π³ΠΎΠ»ΠΎΡΠ°: Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡΡΡΠ΅ΠΊΡΠΎΠ² (ΡΠ΅Π²Π΅ΡΠ±, Π΄ΠΈΠ»Π΅ΠΉ, Π°Π²ΡΠΎΡΡΠ½) Π΄Π»Ρ ΠΊΠ°ΡΠ°ΠΎΠΊΠ΅-ΡΠΈΡΡΠ΅ΠΌ ΠΈΠ»ΠΈ ΡΡΡΠΈΠΌΠΈΠ½Π³Π°.
- ποΈ ΠΠΎΠ΄ΡΠ»ΡΠ½ΡΠΉ ΡΠΈΠ½ΡΠ΅Π·Π°ΡΠΎΡ: Π³Π΅Π½Π΅ΡΠ°ΡΠΈΡ Π·Π²ΡΠΊΠΎΠ² ΠΈ ΠΈΡ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Arduino Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΌΠΎΠ·Π³Π° ΡΠΈΡΡΠ΅ΠΌΡ.
- π ΠΠΊΡΠΈΠ²Π½ΡΠ΅ Π°ΠΊΡΡΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ: ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠΈΠ³Π½Π°Π»Π° Π½Π° ΡΠ°ΡΡΠΎΡΠ½ΡΠ΅ ΠΏΠΎΠ»ΠΎΡΡ Π΄Π»Ρ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΠ»ΠΎΡΠ½ΡΡ ΠΊΠΎΠ»ΠΎΠ½ΠΎΠΊ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, 2- ΠΈΠ»ΠΈ 3-ΠΏΠΎΠ»ΠΎΡΠ½ΡΡ ).
ΠΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· ΡΡΠΈΡ
Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² ΠΏΡΠ΅Π΄ΡΡΠ²Π»ΡΠ΅Ρ ΡΠ²ΠΎΠΈ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ ΠΊ Π°ΠΏΠΏΠ°ΡΠ°ΡΡΡΠ΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ Π°Π²ΡΠΎΠ·Π²ΡΠΊΠ° ΠΊΡΠΈΡΠΈΡΠ½Π° ΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡΡ ΠΊ ΠΏΠΎΠΌΠ΅Ρ
Π°ΠΌ ΠΈ ΡΠΈΡΠΎΠΊΠΈΠΉ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠΉ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½, Π° Π΄Π»Ρ Π³ΠΎΠ»ΠΎΡΠΎΠ²ΡΡ
ΡΡΡΠ΅ΠΊΡΠΎΠ² Π²Π°ΠΆΠ½Π° ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½Π°Ρ Π·Π°Π΄Π΅ΡΠΆΠΊΠ° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ (Π»Π°ΡΠ΅Π½ΡΠ½ΠΎΡΡΡ). ΠΡΠ»ΠΈ Π²Ρ ΠΏΠ»Π°Π½ΠΈΡΡΠ΅ΡΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΡΠΈΡΡΠΎΠ²ΡΠΌ Π·Π²ΡΠΊΠΎΠΌ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ΅ΡΠ΅Π· I2S ΠΈΠ»ΠΈ SPDIF), ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ Ρ Π²ΡΡΠΎΠΊΠΎΠΉ ΡΠ°ΠΊΡΠΎΠ²ΠΎΠΉ ΡΠ°ΡΡΠΎΡΠΎΠΉ β Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ESP32 ΠΈΠ»ΠΈ Teensy 4.0.
β οΈ ΠΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅: Arduino Uno ΠΈ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ Ρ 8-Π±ΠΈΡΠ½ΡΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠΌ Π½Π΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡ Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π·Π²ΡΠΊΠ° Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΈΠ·-Π·Π° Π½ΠΈΠ·ΠΊΠΎΠΉ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ. ΠΠ»Ρ Π±Π°Π·ΠΎΠ²ΡΡ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΎΠ² ΡΠ³ΠΎΠ΄ΠΈΡΡΡ, Π½ΠΎ Π΄Π»Ρ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ Π²ΡΠ±Π΅ΡΠΈΡΠ΅ Arduino Due (84 MHz), ESP32 (Π΄ΠΎ 240 MHz) ΠΈΠ»ΠΈ Teensy (600 MHz).
- Arduino Uno (ATmega328P)
- Arduino Due (SAM3X8E)
- ESP32
- Teensy 4.0
- ΠΡΡΠ³ΠΎΠΉ
ΠΠΎΠΌΠΏΠ»Π΅ΠΊΡΡΡΡΠΈΠ΅ Π΄Π»Ρ ΡΠ±ΠΎΡΠΊΠΈ Π°ΡΠ΄ΠΈΠΎΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°
ΠΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ Π½Π°Π±ΠΎΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΠΈΠΏΠ° ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ ΡΠΈΠ³Π½Π°Π»Π° (Π°Π½Π°Π»ΠΎΠ³ΠΎΠ²ΡΠΉ ΠΈΠ»ΠΈ ΡΠΈΡΡΠΎΠ²ΠΎΠΉ) ΠΈ ΡΡΠ΅Π±ΡΠ΅ΠΌΡΡ ΡΡΡΠ΅ΠΊΡΠΎΠ². ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π° ΡΠ°Π±Π»ΠΈΡΠ° Ρ Π±Π°Π·ΠΎΠ²ΡΠΌΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΠΈ ΠΈΡ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ:
| ΠΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ | ΠΠ°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ | Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌΡΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ | ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΡ |
|---|---|---|---|
| ΠΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ | ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΡΠΈΠ³Π½Π°Π»Π° ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ | ESP32, Teensy 4.0, Arduino Due | Arduino Uno ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΠ΅ΡΡΠΎΠ² |
| ΠΠ¦Π/Π¦ΠΠ | ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π°Π½Π°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ Π·Π²ΡΠΊΠ° Π² ΡΠΈΡΡΠΎΠ²ΠΎΠΉ ΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ | PCM5102A (Π¦ΠΠ), ADS1115 (ΠΠ¦Π), WM8731 (ΠΊΠΎΠ΄Π΅ΠΊ) | ΠΠ»Ρ Hi-Fi Π»ΡΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²Π½Π΅ΡΠ½ΠΈΠ΅ ΠΊΠΎΠ΄Π΅ΠΊ |
| ΠΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΠΉ ΡΡΠΈΠ»ΠΈΡΠ΅Π»Ρ | Π£ΡΠΈΠ»Π΅Π½ΠΈΠ΅ ΡΠΈΠ³Π½Π°Π»Π°, Π±ΡΡΠ΅ΡΠΈΠ·Π°ΡΠΈΡ | NE5532, TL072, OPA2134 | ΠΠ°ΠΆΠ΅Π½ Π½ΠΈΠ·ΠΊΠΈΠΉ ΡΡΠΎΠ²Π΅Π½Ρ ΡΡΠΌΠΎΠ² |
| ΠΠ°ΡΡΠΈΠ²Π½ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ | Π€ΠΈΠ»ΡΡΡΠ°ΡΠΈΡ, ΡΡΠ°Π±ΠΈΠ»ΠΈΠ·Π°ΡΠΈΡ | Π Π΅Π·ΠΈΡΡΠΎΡΡ, ΠΊΠΎΠ½Π΄Π΅Π½ΡΠ°ΡΠΎΡΡ, ΠΊΠ°ΡΡΡΠΊΠΈ ΠΈΠ½Π΄ΡΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ | ΠΠ»Ρ ΡΠΈΠ»ΡΡΡΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΏΠ»Π΅Π½ΠΎΡΠ½ΡΠ΅ ΠΊΠΎΠ½Π΄Π΅Π½ΡΠ°ΡΠΎΡΡ |
| ΠΡΡΠΎΡΠ½ΠΈΠΊ ΠΏΠΈΡΠ°Π½ΠΈΡ | Π‘ΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΠ΅ ΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΡ Π΅ΠΌΡ | ΠΠΈΠ½Π΅ΠΉΠ½ΡΠΉ ΡΡΠ°Π±ΠΈΠ»ΠΈΠ·Π°ΡΠΎΡ LM7805, ΠΈΠΌΠΏΡΠ»ΡΡΠ½ΡΠΉ XL4015 | ΠΠ»Ρ Π°ΡΠ΄ΠΈΠΎ Π»ΡΡΡΠ΅ Π»ΠΈΠ½Π΅ΠΉΠ½ΡΠ΅ ΡΡΠ°Π±ΠΈΠ»ΠΈΠ·Π°ΡΠΎΡΡ |
ΠΡΠ»ΠΈ Π²Ρ ΡΠ°Π±ΠΎΡΠ°Π΅ΡΠ΅ Ρ ΡΠΈΡΡΠΎΠ²ΡΠΌ Π·Π²ΡΠΊΠΎΠΌ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ΅ΡΠ΅Π· I2S), ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΠΎΠΉΡΠΈΡΡ Π±Π΅Π· Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ ΠΠ¦Π/Π¦ΠΠ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ ESP32 ΠΈΠ»ΠΈ Teensy. ΠΠ΄Π½Π°ΠΊΠΎ Π΄Π»Ρ Π°Π½Π°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΡΠΈΠ³Π½Π°Π»Π° ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π²ΡΡΠΎΠΊΠΎΠΊΠ°ΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠΉ Π²Π½Π΅ΡΠ½ΠΈΠΉ ΠΊΠΎΠ΄Π΅ΠΊ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, WM8731 ΠΈΠ»ΠΈ PCM1808. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠ°Π·ΡΡΠ΄Π½ΠΎΡΡΡ: 16 Π±ΠΈΡ Ρ
Π²Π°ΡΠΈΡ Π΄Π»Ρ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π° Π·Π°Π΄Π°Ρ, Π½ΠΎ Π΄Π»Ρ ΠΏΡΠΎΡΠ΅ΡΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ Π·Π²ΡΠΊΠ° Π»ΡΡΡΠ΅ 24 Π±ΠΈΡΠ°.
ΠΠ»Ρ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΎΠ² Ρ ΡΡΡΠ΅ΠΊΡΠ°ΠΌΠΈ (ΡΠ΅Π²Π΅ΡΠ±, Ρ ΠΎΡΡΡ) ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π³ΠΎΡΠΎΠ²ΡΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ MSGEQ7 (7-ΠΏΠΎΠ»ΠΎΡΠ½ΡΠΉ ΡΠΊΠ²Π°Π»Π°ΠΉΠ·Π΅Ρ) ΠΈΠ»ΠΈ PT2313 (ΡΠΈΡΡΠΎΠ²ΠΎΠΉ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ ΡΡΡΠ΅ΠΊΡΠΎΠ²). ΠΠ½ΠΈ ΡΠΏΡΠΎΡΠ°ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ, Π½ΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ²Π°ΡΡ Π³ΠΈΠ±ΠΊΠΎΡΡΡ Π½Π°ΡΡΡΠΎΠ΅ΠΊ.
ΠΡΠΈ ΠΏΠ°ΠΉΠΊΠ΅ Π°ΡΠ΄ΠΈΠΎΡΡ Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π±Π΅ΡΡΠ²ΠΈΠ½ΡΠΎΠ²ΡΠΉ ΠΏΡΠΈΠΏΠΎΠΉ Ρ ΡΠ»ΡΡΠΎΠΌ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΊΠ°Π½ΠΈΡΠΎΠ»ΠΈ β ΡΡΠΎ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡΡΠ΅Ρ ΡΠΈΡΠΊ ΠΊΠΎΡΡΠΎΠ·ΠΈΠΈ ΠΈ ΡΡΠΌΠΎΠ² Π² ΡΠ΅ΠΏΡΡ .
Π‘Ρ Π΅ΠΌΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ: ΠΎΡ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ ΠΊ ΡΠ»ΠΎΠΆΠ½ΠΎΠΌΡ
ΠΠ°ΡΠ½ΡΠΌ Ρ ΡΠ°ΠΌΠΎΠΉ ΠΏΡΠΎΡΡΠΎΠΉ ΡΡ Π΅ΠΌΡ β Π°Π½Π°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠΈΠ½Π³Π° Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Arduino ΠΈ Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ ΠΠ¦Π/Π¦ΠΠ. ΠΡΠ° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΠΏΠΎΠ΄ΠΎΠΉΠ΄ΡΡ Π΄Π»Ρ Π±Π°Π·ΠΎΠ²ΡΡ ΡΡΡΠ΅ΠΊΡΠΎΠ², ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ ΡΠΊΠ²Π°Π»Π°ΠΉΠ·Π΅Ρ ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠΏΡΠ΅ΡΡΠΎΡ.
ΠΠ°Π·ΠΎΠ²Π°Ρ ΡΡ Π΅ΠΌΠ° Π²ΠΊΠ»ΡΡΠ°Π΅Ρ:
- ΠΡ ΠΎΠ΄Π½ΠΎΠΉ ΡΠΈΠ³Π½Π°Π» β ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΡΡΠΈΠ»ΠΈΡΠ΅Π»Ρ (Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΌ ΡΡΠΈΠ»ΠΈΡΠ΅Π»Π΅).
- Π£ΡΠΈΠ»Π΅Π½Π½ΡΠΉ ΡΠΈΠ³Π½Π°Π» β ΠΠ¦Π (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ADS1115).
- Π¦ΠΈΡΡΠΎΠ²Π°Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Arduino.
- ΠΡΡ ΠΎΠ΄ ΡΠ΅ΡΠ΅Π· Π¦ΠΠ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, PCM5102A) β ΡΡΠΈΠ»ΠΈΡΠ΅Π»Ρ ΠΌΠΎΡΠ½ΠΎΡΡΠΈ.
ΠΠ»Ρ ΡΠΈΡΡΠΎΠ²ΠΎΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ΅ΡΠ΅Π· I2S) ΡΡ
Π΅ΠΌΠ° ΡΠΏΡΠΎΡΠ°Π΅ΡΡΡ:
[ΠΡΡΠΎΡΠ½ΠΈΠΊ I2S] β ESP32 (ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°) β [Π£ΡΠΈΠ»ΠΈΡΠ΅Π»Ρ ΠΈΠ»ΠΈ Π¦ΠΠ]
ΠΡΠΈΠΌΠ΅Ρ ΡΡ Π΅ΠΌΡ Π΄Π»Ρ ESP32 Ρ ΠΊΠΎΠ΄Π΅ΠΊΠΎΠΌ WM8731:
- π
BCLK,LRCLK,DIN/DOUTΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°ΡΡΡΡ ΠΊ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌ Π²ΡΠ²ΠΎΠ΄Π°ΠΌ ESP32. - π ΠΠ½Π°Π»ΠΎΠ³ΠΎΠ²ΡΠΉ Π²Ρ
ΠΎΠ΄/Π²ΡΡ
ΠΎΠ΄ β ΡΠ΅ΡΠ΅Π· ΡΠ°Π·ΡΡΠΌΡ
RCAΠΈΠ»ΠΈ3.5mm jack. - β‘ ΠΠΈΡΠ°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π΅ΠΊ β ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΡΡΠ°Π±ΠΈΠ»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΈΡΡΠΎΡΠ½ΠΈΠΊ
5VΠΈΠ»ΠΈ3.3V.
β οΈ ΠΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ ΡI2SΠ½Π° ESP32 ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π²ΡΠ²ΠΎΠ΄ΡGPIO 25-27, 32-33β ΠΎΠ½ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Ρ Π΄Π»Ρ Π²ΡΡΠΎΠΊΠΎΡΠΊΠΎΡΠΎΡΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π΄Π°Π½Π½ΡΡ . ΠΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΊ Π΄ΡΡΠ³ΠΈΠΌ ΠΏΠΈΠ½Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΠΈΡΠΊΠ°ΠΆΠ΅Π½ΠΈΡΠΌ Π·Π²ΡΠΊΠ°.
ΠΠ°ΠΊ ΡΠΌΠ΅Π½ΡΡΠΈΡΡ ΡΡΠΌΡ Π² Π°Π½Π°Π»ΠΎΠ³ΠΎΠ²ΠΎΠΉ ΡΡ Π΅ΠΌΠ΅?
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠΊΡΠ°Π½Π½ΡΠ΅ ΠΊΠ°Π±Π΅Π»ΠΈ Π΄Π»Ρ Π°ΡΠ΄ΠΈΠΎΡΠΈΠ³Π½Π°Π»Π°, ΡΠ°Π·Π΄Π΅Π»ΡΠΉΡΠ΅ Π°Π½Π°Π»ΠΎΠ³ΠΎΠ²ΡΡ ΠΈ ΡΠΈΡΡΠΎΠ²ΡΡ Π·Π΅ΠΌΠ»ΠΈ ΡΠ΅ΡΠ΅Π· ΡΠ΅ΡΡΠΈΡΠΎΠ²ΡΠ΅ Π±ΡΡΡ, Π° ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΎΠ±Π°Π²Π»ΡΠΉΡΠ΅ RC-ΡΠΈΠ»ΡΡΡΡ Π½Π° Π»ΠΈΠ½ΠΈΠΈ ΠΏΠΈΡΠ°Π½ΠΈΡ. ΠΠ»Ρ ΠΊΡΠΈΡΠΈΡΠ½ΡΡ ΡΡ Π΅ΠΌ ΠΏΡΠΈΠΌΠ΅Π½ΡΠΉΡΠ΅ ΡΠΈΠΌΠΌΠ΅ΡΡΠΈΡΠ½ΡΠ΅ Π²Ρ ΠΎΠ΄Ρ/Π²ΡΡ ΠΎΠ΄Ρ (Π±Π°Π»Π°Π½ΡΠ½ΡΠ΅ Π»ΠΈΠ½ΠΈΠΈ).
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π°ΡΠ΄ΠΈΠΎΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°: Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ
ΠΠ»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π·Π²ΡΠΊΠ° Π½Π° Arduino ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ, ΡΠΏΡΠΎΡΠ°ΡΡΠΈΡ ΡΠ°Π±ΠΎΡΡ:
- π ArduinoFFT β Π΄Π»Ρ Π°Π½Π°Π»ΠΈΠ·Π° ΡΠΏΠ΅ΠΊΡΡΠ° (Π±ΡΡΡΡΠΎΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π€ΡΡΡΠ΅).
- ποΈ Mozzi β ΡΠΈΠ½ΡΠ΅Π· ΠΈ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΡ Π·Π²ΡΠΊΠ° Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ.
- π I2S Π΄Π»Ρ ESP32 β ΡΠ°Π±ΠΎΡΠ° Ρ ΡΠΈΡΡΠΎΠ²ΡΠΌ Π°ΡΠ΄ΠΈΠΎ.
- π FilterLib β ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠΈΠ»ΡΡΡΠΎΠ² (Π€ΠΠ§, Π€ΠΠ§, ΠΏΠΎΠ»ΠΎΡΠΎΠ²ΡΡ ).
ΠΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ΄Π° Π΄Π»Ρ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ 3-ΠΏΠΎΠ»ΠΎΡΠ½ΠΎΠ³ΠΎ ΡΠΊΠ²Π°Π»Π°ΠΉΠ·Π΅ΡΠ° Π½Π° ESP32 Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ I2S:
#include <driver/i2s.h>
// ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈ I2S
#define I2S_BCLK 26
#define I2S_LRCLK 25
#define I2S_DIN 33
#define I2S_DOUT 27
void setup() {
i2s_config_t i2s_config = {
.mode = (i2s_mode_t)(I2S_MODE_MASTER | I2S_MODE_TX | I2S_MODE_RX),
.sample_rate = 44100,
.bits_per_sample = I2S_BITS_PER_SAMPLE_16BIT,
// ... Π΄ΡΡΠ³ΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ
};
i2s_driver_install(I2S_NUM_0, &i2s_config, 0, NULL);
}
void loop() {
int16_t sample[2];
size_t bytes_read;
// Π§ΡΠ΅Π½ΠΈΠ΅ Π²Ρ
ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΈΠ³Π½Π°Π»Π°
i2s_read(I2S_NUM_0, sample, sizeof(sample), &bytes_read, portMAX_DELAY);
// ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΈΠ»Π΅Π½ΠΈΠ΅ Π½ΠΈΠ·ΠΊΠΈΡ
ΡΠ°ΡΡΠΎΡ)
sample[0] = sample[0] * 1.5; // Π£Π²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠ΅ Π³ΡΠΎΠΌΠΊΠΎΡΡΠΈ Π½Π° 50%
// ΠΡΠ²ΠΎΠ΄ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠ³Π½Π°Π»Π°
i2s_write(I2S_NUM_0, sample, sizeof(sample), &bytes_read, portMAX_DELAY);
}
ΠΠ»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΡΡΠ΅ΠΊΡΠΎΠ² (ΡΠ΅Π²Π΅ΡΠ±, Π΄ΠΈΠ»Π΅ΠΉ) ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΊΠΎΠ»ΡΡΠ΅Π²ΡΠ΅ Π±ΡΡΠ΅ΡΡ (circular buffers). ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΎΡΡΠΎΠΉ Π΄ΠΈΠ»Π΅ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ°ΠΊ:
#define DELAY_SIZE 44100 // 1 ΡΠ΅ΠΊΡΠ½Π΄Π° Π·Π°Π΄Π΅ΡΠΆΠΊΠΈ ΠΏΡΠΈ 44.1 ΠΊΠΡ
int16_t delay_buffer[DELAY_SIZE];
uint16_t delay_index = 0;
// Π ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΡΠΈΠΊΠ»Π΅:
int16_t input = read_sample(); // Π§ΡΠ΅Π½ΠΈΠ΅ Π²Ρ
ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΈΠ³Π½Π°Π»Π°
int16_t delayed = delay_buffer[delay_index]; // Π§ΡΠ΅Π½ΠΈΠ΅ Π·Π°Π΄Π΅ΡΠΆΠ°Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠ³Π½Π°Π»Π°
delay_buffer[delay_index] = input; // Π‘ΠΎΡ
ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΡΠΈΠ³Π½Π°Π»Π°
delay_index = (delay_index + 1) % DELAY_SIZE;
int16_t output = input + (delayed * 0.5); // Π‘ΠΌΠ΅ΡΠΈΠ²Π°Π½ΠΈΠ΅ Ρ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΠΎΠΌ
ΠΠ»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π·Π²ΡΠΊΠ° Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΊΡΠΈΡΠΈΡΠ½Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΠΊΠΎΠ΄Π°: ΠΈΠ·Π±Π΅Π³Π°ΠΉΡΠ΅ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΠΊΡ (fixed-point) Π²ΠΌΠ΅ΡΡΠΎ float, ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡΡΠΉΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π΄Π΅Π»Π΅Π½ΠΈΡ.
ΠΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ: ΠΊΠ°ΠΊ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ Π·Π°Π΄Π΅ΡΠΆΠ΅ΠΊ
ΠΠ»Π°Π²Π½Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΡΠ°ΠΌΠΎΠ΄Π΅Π»ΡΠ½ΡΡ Π°ΡΠ΄ΠΈΠΎΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠ² β Π»Π°ΡΠ΅Π½ΡΠ½ΠΎΡΡΡ (Π·Π°Π΄Π΅ΡΠΆΠΊΠ° ΠΌΠ΅ΠΆΠ΄Ρ Π²Ρ ΠΎΠ΄ΠΎΠΌ ΠΈ Π²ΡΡ ΠΎΠ΄ΠΎΠΌ). ΠΠ»Ρ ΠΌΡΠ·ΡΠΊΠΈ Π΄ΠΎΠΏΡΡΡΠΈΠΌΠ° Π·Π°Π΄Π΅ΡΠΆΠΊΠ° Π΄ΠΎ 10 ΠΌΡ, Π½ΠΎ Π΄Π»Ρ Π³ΠΎΠ»ΠΎΡΠ° ΠΈΠ»ΠΈ ΠΆΠΈΠ²ΡΡ Π²ΡΡΡΡΠΏΠ»Π΅Π½ΠΈΠΉ ΠΎΠ½Π° Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΠΌΠ΅Π½Π΅Π΅ 5 ΠΌΡ. ΠΠΎΡ ΠΊΠ°ΠΊ Π΅Ρ ΡΠΌΠ΅Π½ΡΡΠΈΡΡ:
- β‘ Π£Π²Π΅Π»ΠΈΡΡΡΠ΅ ΡΠ°ΠΊΡΠΎΠ²ΡΡ ΡΠ°ΡΡΠΎΡΡ: ESP32 Π½Π° 240 MHz ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠΈΠ³Π½Π°Π» Π±ΡΡΡΡΠ΅Π΅, ΡΠ΅ΠΌ Arduino Uno Π½Π° 16 MHz.
- ποΈ ΠΡΠΊΠ»ΡΡΠΈΡΠ΅ Π½Π΅Π½ΡΠΆΠ½ΡΠ΅ ΠΏΠ΅ΡΠΈΡΠ΅ΡΠΈΠΉΠ½ΡΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²Π°: Wi-Fi, Bluetooth ΠΈ Π΄Π°ΠΆΠ΅
Serial.printΡΠΎΡΠΌΠΎΠ·ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ. - π ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ DMA (ΠΏΡΡΠΌΠΎΠΉ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΏΠ°ΠΌΡΡΠΈ) Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π΄Π°Π½Π½ΡΡ Π±Π΅Π· ΡΡΠ°ΡΡΠΈΡ CPU.
- π Π Π°Π·Π±Π΅ΠΉΡΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ Π½Π° Π±Π»ΠΎΠΊΠΈ: Π²ΠΌΠ΅ΡΡΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΡΠΌΠΏΠ»Π° ΠΏΠΎ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΡΡΠΈ ΡΠ°Π±ΠΎΡΠ°ΠΉΡΠ΅ Ρ Π±ΡΡΠ΅ΡΠ°ΠΌΠΈ ΠΏΠΎ 64β256 ΡΡΠΌΠΏΠ»ΠΎΠ².
ΠΡΠΈΠΌΠ΅Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π΄Π»Ρ ESP32 Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ DMA:
#include <driver/i2s.h>
#define BUFFER_SIZE 256
int16_t audio_buffer[BUFFER_SIZE];
void setup() {
i2s_config_t i2s_config = {
.mode = (i2s_mode_t)(I2S_MODE_MASTER | I2S_MODE_TX | I2S_MODE_RX | I2S_MODE_DAC_BUILT_IN),
.sample_rate = 44100,
.bits_per_sample = I2S_BITS_PER_SAMPLE_16BIT,
.communication_format = I2S_COMM_FORMAT_STAND_I2S,
.intr_alloc_flags = ESP_INTR_FLAG_LEVEL1, // ΠΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ΠΏΡΠΈΠΎΡΠΈΡΠ΅Ρ
.dma_buf_count = 8,
.dma_buf_len = BUFFER_SIZE,
};
i2s_driver_install(I2S_NUM_0, &i2s_config, 0, NULL);
}
void loop() {
size_t bytes_read;
i2s_read(I2S_NUM_0, audio_buffer, sizeof(audio_buffer), &bytes_read, portMAX_DELAY);
// ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π±ΡΡΠ΅ΡΠ° (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠΈΠ»ΡΡΡΠ°)
for (int i = 0; i < BUFFER_SIZE; i++) {
audio_buffer[i] = apply_effect(audio_buffer[i]); // ΠΠ°ΡΠ° ΡΡΠ½ΠΊΡΠΈΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ
}
i2s_write(I2S_NUM_0, audio_buffer, sizeof(audio_buffer), &bytes_read, portMAX_DELAY);
}
ΠΠ»Ρ ΠΊΡΠΈΡΠΈΡΠ½ΡΡ ΠΊ Π·Π°Π΄Π΅ΡΠΆΠΊΠ°ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π³ΠΈΡΠ°ΡΠ½ΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΡ) ΡΠ°ΡΡΠΌΠΎΡΡΠΈΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Teensy Audio Library β ΠΎΠ½Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π° Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΌΠ½ΠΎΠ³ΠΎΠΊΠ°Π½Π°Π»ΡΠ½ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ.
ΠΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ: ΡΠΊΠ²Π°Π»Π°ΠΉΠ·Π΅Ρ ΠΈ ΠΊΠΎΠΌΠΏΡΠ΅ΡΡΠΎΡ
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ Π΄Π²Π° ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ ΡΡΡΠ΅ΠΊΡΠ°, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ Π½Π° Arduino: ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠΊΠ²Π°Π»Π°ΠΉΠ·Π΅Ρ ΠΈ ΠΊΠΎΠΌΠΏΡΠ΅ΡΡΠΎΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°.
1. 3-ΠΏΠΎΠ»ΠΎΡΠ½ΡΠΉ ΡΠΊΠ²Π°Π»Π°ΠΉΠ·Π΅Ρ
ΠΠ»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠΊΠ²Π°Π»Π°ΠΉΠ·Π΅ΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π±ΠΈΠΊΠ²Π°Π΄ΡΠ°ΡΠ½ΡΠ΅ ΡΠΈΠ»ΡΡΡΡ (Π±ΠΈΠΊΠ²Π°Π΄Ρ). ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠΈΠ»ΡΡΡ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΡΡΡ Π½Π° ΡΠ²ΠΎΡ ΡΠ°ΡΡΠΎΡΡ:
- ποΈ ΠΠΈΠ·ΠΊΠΈΠ΅ ΡΠ°ΡΡΠΎΡΡ: 100 ΠΡ (Π€ΠΠ§).
- ποΈ Π‘ΡΠ΅Π΄Π½ΠΈΠ΅ ΡΠ°ΡΡΠΎΡΡ: 1 ΠΊΠΡ (ΠΏΠΎΠ»ΠΎΡΠΎΠ²ΠΎΠΉ).
- ποΈ ΠΡΡΠΎΠΊΠΈΠ΅ ΡΠ°ΡΡΠΎΡΡ: 10 ΠΊΠΡ (Π€ΠΠ§).
ΠΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ΄Π° Π΄Π»Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΈΠ»ΡΡΡΠ° (Π€ΠΠ§ Π½Π° 100 ΠΡ):
// ΠΠΎΡΡΡΠΈΡΠΈΠ΅Π½ΡΡ Π΄Π»Ρ Π€ΠΠ§ 100 ΠΡ (ΡΠ°ΡΡΡΠΈΡΠ°Π½Ρ ΡΠ΅ΡΠ΅Π· ΠΎΠ½Π»Π°ΠΉΠ½-ΠΊΠ°Π»ΡΠΊΡΠ»ΡΡΠΎΡ)
float b0 = 0.0004;
float b1 = 0.0008;
float b2 = 0.0004;
float a1 = -1.9556;
float a2 = 0.9565;
// ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΡΠΈΠ»ΡΡΡΠ°
float x1 = 0, x2 = 0, y1 = 0, y2 = 0;
float apply_lowpass(float input) {
float output = b0 * input + b1 * x1 + b2 * x2 - a1 * y1 - a2 * y2;
x2 = x1;
x1 = input;
y2 = y1;
y1 = output;
return output;
}
2. ΠΠΎΠΌΠΏΡΠ΅ΡΡΠΎΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°
ΠΠΎΠΌΠΏΡΠ΅ΡΡΠΎΡ ΡΠΌΠ΅Π½ΡΡΠ°Π΅Ρ ΡΠ°Π·Π½ΠΈΡΡ ΠΌΠ΅ΠΆΠ΄Ρ Π³ΡΠΎΠΌΠΊΠΈΠΌΠΈ ΠΈ ΡΠΈΡ ΠΈΠΌΠΈ Π·Π²ΡΠΊΠ°ΠΌΠΈ. ΠΠ»Π³ΠΎΡΠΈΡΠΌ:
- ΠΡΡΠΈΡΠ»ΠΈΡΠ΅ RMS (ΡΡΠ΅Π΄Π½Π΅ΠΊΠ²Π°Π΄ΡΠ°ΡΠΈΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅) ΡΠΈΠ³Π½Π°Π»Π° Π·Π° ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ N ΡΡΠΌΠΏΠ»ΠΎΠ².
- Π‘ΡΠ°Π²Π½ΠΈΡΠ΅ Ρ ΠΏΠΎΡΠΎΠ³ΠΎΠΌ (
threshold). - ΠΡΠ»ΠΈ ΡΠΈΠ³Π½Π°Π» Π²ΡΡΠ΅ ΠΏΠΎΡΠΎΠ³Π°, ΡΠΌΠ΅Π½ΡΡΠΈΡΠ΅ Π΅Π³ΠΎ Π³ΡΠΎΠΌΠΊΠΎΡΡΡ Ρ Π·Π°Π΄Π°Π½Π½ΡΠΌ ΡΠΎΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ΠΌ (
ratio).
ΠΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ΄Π°:
#define RMS_WINDOW 100 // ΠΠΊΠ½ΠΎ Π΄Π»Ρ ΡΠ°ΡΡΡΡΠ° RMS
float rms_sum = 0;
float rms_buffer[RMS_WINDOW];
int rms_index = 0;
float apply_compressor(float input, float threshold, float ratio) {
// ΠΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π±ΡΡΠ΅ΡΠ° RMS
rms_sum -= rms_buffer[rms_index];
rms_sum += input * input;
rms_buffer[rms_index] = input * input;
rms_index = (rms_index + 1) % RMS_WINDOW;
float rms = sqrt(rms_sum / RMS_WINDOW);
// ΠΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΡΠ΅ΡΡΠΈΠΈ
if (rms > threshold) {
float over_db = 20 * log10(rms / threshold);
float reduction_db = over_db * (1 - 1/ratio);
float gain = pow(10, -reduction_db / 20);
return input * gain;
}
return input;
}
ΠΠ°Π³ΡΡΠΆΠ΅Π½ Π»ΠΈ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ ΠΊΠΎΠ΄ Π² ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ?|ΠΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½Ρ Π»ΠΈ Π²ΡΠ΅ Π°ΡΠ΄ΠΈΠΎΠΊΠ°Π±Π΅Π»ΠΈ Π±Π΅Π· ΠΊΠΎΡΠΎΡΠΊΠΈΡ Π·Π°ΠΌΡΠΊΠ°Π½ΠΈΠΉ?|ΠΡΠΎΠ²Π΅ΡΠ΅Π½ΠΎ Π»ΠΈ ΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΌΡΠ»ΡΡΠΈΠΌΠ΅ΡΡΠΎΠΌ (Π½Π΅Ρ Π»ΠΈ ΠΏΡΠΎΡΠ°Π΄ΠΎΠΊ)?|Π£ΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Ρ Π»ΠΈ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠ΅ ΡΡΠΎΠ²Π½ΠΈ Π³ΡΠΎΠΌΠΊΠΎΡΡΠΈ Π½Π° Π²Ρ ΠΎΠ΄Π΅/Π²ΡΡ ΠΎΠ΄Π΅?|ΠΡΠΊΠ»ΡΡΠ΅Π½Ρ Π»ΠΈ Π²ΡΠ΅ Π½Π΅Π½ΡΠΆΠ½ΡΠ΅ ΠΏΠ΅ΡΠΈΡΠ΅ΡΠΈΠΉΠ½ΡΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²Π° (Wi-Fi, Bluetooth)?-->
Π’ΠΈΠΏΠΈΡΠ½ΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΈ ΠΈΡ ΡΠ΅ΡΠ΅Π½ΠΈΡ
ΠΡΠΈ ΡΠ±ΠΎΡΠΊΠ΅ Π°ΡΠ΄ΠΈΠΎΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° Π½Π° Arduino Π½ΠΎΠ²ΠΈΡΠΊΠΈ ΡΠ°ΡΡΠΎ ΡΡΠ°Π»ΠΊΠΈΠ²Π°ΡΡΡΡ Ρ ΡΠΈΠΏΠΈΡΠ½ΡΠΌΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ. ΠΠΎΡ ΡΠ°ΠΌΡΠ΅ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ½Π½ΡΠ΅ ΠΈ ΡΠΏΠΎΡΠΎΠ±Ρ ΠΈΡ ΡΡΡΡΠ°Π½Π΅Π½ΠΈΡ:
| ΠΡΠΎΠ±Π»Π΅ΠΌΠ° | ΠΠΎΠ·ΠΌΠΎΠΆΠ½Π°Ρ ΠΏΡΠΈΡΠΈΠ½Π° | Π Π΅ΡΠ΅Π½ΠΈΠ΅ |
|---|---|---|
| Π¨ΡΠΌΡ ΠΈ ΡΠΎΠ½ Π² Π·Π²ΡΠΊΠ΅ | ΠΠ»ΠΎΡ ΠΎΠ΅ Π·Π°Π·Π΅ΠΌΠ»Π΅Π½ΠΈΠ΅, Π΄Π»ΠΈΠ½Π½ΡΠ΅ ΠΏΡΠΎΠ²ΠΎΠ΄Π°, Π½Π΅ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΠΏΠΈΡΠ°Π½ΠΈΠ΅ | ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠΊΡΠ°Π½Π½ΡΠ΅ ΠΊΠ°Π±Π΅Π»ΠΈ, ΡΠ°Π·Π΄Π΅Π»ΡΠΉΡΠ΅ Π°Π½Π°Π»ΠΎΠ³ΠΎΠ²ΡΡ ΠΈ ΡΠΈΡΡΠΎΠ²ΡΡ Π·Π΅ΠΌΠ»ΠΈ, Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΡΠ΅ΡΡΠΈΡΠΎΠ²ΡΠ΅ Π±ΡΡΡ |
| ΠΡΠΊΠ°ΠΆΠ΅Π½ΠΈΡ ΠΏΡΠΈ Π²ΡΡΠΎΠΊΠΎΠΉ Π³ΡΠΎΠΌΠΊΠΎΡΡΠΈ | ΠΠ΅ΡΠ΅Π³ΡΡΠ·ΠΊΠ° ΠΠ¦Π/Π¦ΠΠ ΠΈΠ»ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ ΡΡΠΈΠ»ΠΈΡΠ΅Π»Ρ | Π£ΠΌΠ΅Π½ΡΡΠΈΡΠ΅ ΡΡΠΎΠ²Π΅Π½Ρ Π²Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΈΠ³Π½Π°Π»Π°, Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΡΠ΅Π»Ρ (clipper) Π² ΠΊΠΎΠ΄Π΅ |
| ΠΠ°Π΄Π΅ΡΠΆΠΊΠ° Π·Π²ΡΠΊΠ° (Π»Π°ΡΠ΅Π½ΡΠ½ΠΎΡΡΡ) | ΠΠ΅Π΄Π»Π΅Π½Π½Π°Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΡΠ»Π°Π±ΠΎΠΌ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ΅ | ΠΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΡΠΉΡΠ΅ ΠΊΠΎΠ΄, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ DMA, ΠΏΠ΅ΡΠ΅ΠΉΠ΄ΠΈΡΠ΅ Π½Π° ESP32 ΠΈΠ»ΠΈ Teensy |
| ΠΠ΅ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΠΉ I2S | ΠΠ΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΈΠ»ΠΈ ΠΏΠΈΠ½Ρ | ΠΡΠΎΠ²Π΅ΡΡΡΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ Π²ΡΠ²ΠΎΠ΄ΠΎΠ² BCLK, LRCLK, DIN/DOUT Π΄Π°ΡΠ°ΡΠΈΡΡ |
| ΠΡΠ΄ΡΠΈΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠΆΠ°Π΅ΡΡΡ | ΠΠ΅Ρ Π²Π°ΡΠΊΠ° ΠΏΠ°ΠΌΡΡΠΈ ΠΈΠ»ΠΈ ΠΏΠΈΡΠ°Π½ΠΈΡ | Π£ΠΌΠ΅Π½ΡΡΠΈΡΠ΅ ΡΠ°Π·ΠΌΠ΅Ρ Π±ΡΡΠ΅ΡΠΎΠ², Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΠΊΠΎΠ½Π΄Π΅Π½ΡΠ°ΡΠΎΡΡ Π½Π° Π»ΠΈΠ½ΠΈΠΈ ΠΏΠΈΡΠ°Π½ΠΈΡ |
ΠΡΠ»ΠΈ Π²Π°Ρ Π°ΡΠ΄ΠΈΠΎΠΏΡΠΎΡΠ΅ΡΡΠΎΡ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π΅ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎ, Π½Π°ΡΠ½ΠΈΡΠ΅ Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΏΠΈΡΠ°Π½ΠΈΡ: ΠΏΡΠΎΡΠ°Π΄ΠΊΠΈ Π½Π°ΠΏΡΡΠΆΠ΅Π½ΠΈΡ β ΠΎΠ΄Π½Π° ΠΈΠ· ΡΠ°ΠΌΡΡ ΡΠ°ΡΡΡΡ ΠΏΡΠΈΡΠΈΠ½ ΡΠ±ΠΎΠ΅Π². ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΎΡΡΠΈΠ»Π»ΠΎΠ³ΡΠ°Ρ ΠΈΠ»ΠΈ Ρ ΠΎΡΡ Π±Ρ ΠΌΡΠ»ΡΡΠΈΠΌΠ΅ΡΡ, ΡΡΠΎΠ±Ρ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ Π½Π°ΠΏΡΡΠΆΠ΅Π½ΠΈΠ΅ Π½Π° ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ΅ ΠΈ ΠΊΠΎΠ΄Π΅ΠΊΠ΅ Π½Π΅ ΠΏΠ°Π΄Π°Π΅Ρ Π½ΠΈΠΆΠ΅ Π½ΠΎΠΌΠΈΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ.
β οΈ ΠΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ ESP32 ΠΈI2SΠ½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π²ΡΠ²ΠΎΠ΄ΡGPIO 34-39β ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠ°ΠΊ Π²Ρ ΠΎΠ΄Ρ. Π’Π°ΠΊΠΆΠ΅ ΠΈΠ·Π±Π΅Π³Π°ΠΉΡΠ΅GPIO 6-11, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½Ρ ΠΊ ΡΠ»Π΅Ρ-ΠΏΠ°ΠΌΡΡΠΈ ΠΈ ΠΌΠΎΠ³ΡΡ Π²ΡΠ·ΡΠ²Π°ΡΡ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΡ.
FAQ: Π§Π°ΡΡΠΎ Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡΠ΅ Π²ΠΎΠΏΡΠΎΡΡ
ΠΠΎΠΆΠ½ΠΎ Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Arduino Uno Π΄Π»Ρ Π°ΡΠ΄ΠΈΠΎΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°?
Π’Π΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈ Π΄Π°, Π½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΠΏΡΠΎΡΡΠ΅ΠΉΡΠΈΡ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΎΠ² (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΡΠΈΠ½ΡΡΠΎΠΈΠ΄Ρ ΠΈΠ»ΠΈ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΡΠΊΠ²Π°Π»Π°ΠΉΠ·Π΅ΡΠ° Ρ Π½ΠΈΠ·ΠΊΠΎΠΉ ΡΠ°ΡΡΠΎΡΠΎΠΉ Π΄ΠΈΡΠΊΡΠ΅ΡΠΈΠ·Π°ΡΠΈΠΈ). ΠΠ»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π·Π²ΡΠΊΠ° Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Arduino Uno ΡΠ»ΠΈΡΠΊΠΎΠΌ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π°Ρ β Π΅Ρ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ ATmega328P Π½Π΅ ΡΠΏΡΠ°Π²ΠΈΡΡΡ Ρ ΡΠ°ΡΡΠΎΡΠΎΠΉ Π΄ΠΈΡΠΊΡΠ΅ΡΠΈΠ·Π°ΡΠΈΠΈ Π²ΡΡΠ΅ 8β16 ΠΊΠΡ. ΠΠ»Ρ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ Π²ΡΠ±ΠΈΡΠ°ΠΉΡΠ΅ ESP32, Teensy ΠΈΠ»ΠΈ Arduino Due.
ΠΠ°ΠΊΠΎΠΉ ΠΊΠΎΠ΄Π΅ΠΊ Π»ΡΡΡΠ΅ Π²ΡΠ±ΡΠ°ΡΡ Π΄Π»Ρ Hi-Fi Π·Π²ΡΠΊΠ°?
ΠΠ»Ρ Π²ΡΡΠΎΠΊΠΎΠΊΠ°ΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ Π·Π²ΡΠΊΠ° ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡΡΡΡ:
- WM8731 β Π½Π΅Π΄ΠΎΡΠΎΠ³ΠΎΠΉ, 24-Π±ΠΈΡΠ½ΡΠΉ, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ
I2S. - PCM5102A β ΠΎΡΠ»ΠΈΡΠ½ΡΠΉ Π¦ΠΠ Π΄Π»Ρ Π²ΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΡΠ°ΠΊΡΠ°.
- AK4490 β ΠΏΡΠΎΡΠ΅ΡΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΉ ΡΡΠΎΠ²Π΅Π½Ρ, Π½ΠΎ Π΄ΠΎΡΠΎΠ³ΠΎΠΉ ΠΈ ΡΠ»ΠΎΠΆΠ½ΡΠΉ Π² ΠΏΠ°ΠΉΠΊΠ΅.
ΠΠ»Ρ Π±ΡΠ΄ΠΆΠ΅ΡΠ½ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² ΠΏΠΎΠ΄ΠΎΠΉΠ΄ΡΡ MAX98357A (Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΉ ΡΡΠΈΠ»ΠΈΡΠ΅Π»Ρ + Π¦ΠΠ), Π½ΠΎ ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎ Π·Π²ΡΠΊΠ° Π±ΡΠ΄Π΅Ρ Π½ΠΈΠΆΠ΅.
ΠΠ°ΠΊ ΡΠΌΠ΅Π½ΡΡΠΈΡΡ ΡΡΠΌΡ Π² ΡΡ Π΅ΠΌΠ΅?
ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΈ ΡΡΠΌΠΎΠ² ΠΈ ΡΠΏΠΎΡΠΎΠ±Ρ ΠΈΡ ΡΡΡΡΠ°Π½Π΅Π½ΠΈΡ:
- ΠΠΈΡΠ°Π½ΠΈΠ΅: ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π»ΠΈΠ½Π΅ΠΉΠ½ΡΠ΅ ΡΡΠ°Π±ΠΈΠ»ΠΈΠ·Π°ΡΠΎΡΡ (LM7805) Π²ΠΌΠ΅ΡΡΠΎ ΠΈΠΌΠΏΡΠ»ΡΡΠ½ΡΡ .
- ΠΠ΅ΠΌΠ»ΡΠ½ΡΠ΅ ΠΏΠ΅ΡΠ»ΠΈ: Π Π°Π·Π΄Π΅Π»ΡΠΉΡΠ΅ Π°Π½Π°Π»ΠΎΠ³ΠΎΠ²ΡΡ ΠΈ ΡΠΈΡΡΠΎΠ²ΡΡ Π·Π΅ΠΌΠ»ΠΈ, ΡΠΎΠ΅Π΄ΠΈΠ½ΡΡ ΠΈΡ Π² ΠΎΠ΄Π½ΠΎΠΉ ΡΠΎΡΠΊΠ΅ ("Π·Π²Π΅Π·Π΄Π°").
- ΠΠ°ΡΠ°Π·ΠΈΡΠ½ΡΠ΅ Π½Π°Π²ΠΎΠ΄ΠΊΠΈ: ΠΠΊΡΠ°Π½ΠΈΡΡΠΉΡΠ΅ Π°ΡΠ΄ΠΈΠΎΠΊΠ°Π±Π΅Π»ΠΈ ΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠ°ΠΉΡΠ΅ ΠΈΡ ΠΏΠΎΠ΄Π°Π»ΡΡΠ΅ ΠΎΡ ΡΠΈΡΡΠΎΠ²ΡΡ ΡΠΈΠ³Π½Π°Π»ΠΎΠ².
- ΠΠ°ΡΠ΅ΡΡΠ²ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ²: ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΏΠ»Π΅Π½ΠΎΡΠ½ΡΠ΅ ΠΊΠΎΠ½Π΄Π΅Π½ΡΠ°ΡΠΎΡΡ ΠΈ ΠΏΡΠ΅ΡΠΈΠ·ΠΈΠΎΠ½Π½ΡΠ΅ ΡΠ΅Π·ΠΈΡΡΠΎΡΡ (1% ΡΠΎΡΠ½ΠΎΡΡΡ).
ΠΠΎΠΆΠ½ΠΎ Π»ΠΈ ΡΠ΄Π΅Π»Π°ΡΡ ΠΌΠ½ΠΎΠ³ΠΎΠΊΠ°Π½Π°Π»ΡΠ½ΡΠΉ Π°ΡΠ΄ΠΈΠΎΠΏΡΠΎΡΠ΅ΡΡΠΎΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, 5.1) Π½Π° Arduino?
ΠΠ°, Π½ΠΎ ΡΡΠΎ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅Ρ:
- ΠΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ Ρ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΡΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ Π²ΡΠ²ΠΎΠ΄ΠΎΠ² (ESP32 ΠΈΠ»ΠΈ Teensy 4.0).
- ΠΠ½ΠΎΠ³ΠΎΠΊΠ°Π½Π°Π»ΡΠ½ΡΠΉ ΠΊΠΎΠ΄Π΅ΠΊ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, WM8731 ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠ΅ΡΠ΅ΠΎ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΈΠΏΠΎΠ²).
- ΠΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΊΠΎΠ΄ Π΄Π»Ρ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΊΠ°Π½Π°Π»ΠΎΠ².
ΠΠ»Ρ 5.1 ΡΠΈΡΡΠ΅ΠΌΡ ΠΏΡΠΎΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠΈΠΏΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, CS42448), Π½ΠΎ ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ»ΠΎΠΆΠ½Π΅Π΅, ΡΠ΅ΠΌ Arduino.
ΠΠ΄Π΅ Π²Π·ΡΡΡ Π³ΠΎΡΠΎΠ²ΡΠ΅ ΡΡ Π΅ΠΌΡ ΠΈ ΠΏΡΠΎΡΠΈΠ²ΠΊΠΈ Π΄Π»Ρ Π°ΡΠ΄ΠΈΠΎΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°?
ΠΡΡΠΎΡΠ½ΠΈΠΊΠΈ:
- GitHub: ΠΡΠΈΡΠ΅ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ ΠΏΠΎ Π·Π°ΠΏΡΠΎΡΠ°ΠΌ "
ESP32 audio processor", "Teensy audio effects". - Π€ΠΎΡΡΠΌΡ: DIYAudio, Arduino Forum, ESP32.com.
- ΠΠΎΡΠΎΠ²ΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΡ:
- Teensy Audio Library (ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² ΡΡΡΠ΅ΠΊΡΠΎΠ²).
- Arduino Audio Tools (ΡΠ°Π±ΠΎΡΠ° Ρ
I2SΠΈMP3).