はじめに
皆さんご存知のダイソー300円スピーカーに、スペクトラム表示機能を付けようという企画です。
ハード
主な部品は以下のようなもの。
スピーカー
ダイソーで売ってる 300円。USBスピーカーといっても、給電をUSBからするだけでオーディオ入力はステレオミニプラグ。

ディスプレイ
- 0.91 インチ
- I2C
- OLED液晶
- 解像度 128x32
私のは以下で購入。AmazonPrimeで2個 863円。同じものが沢山出品されているので安いものを買いましょう!
MCU
今回は ATtiny85。Arduino化して使います。
ATtiny85の使い方は、ht-dekoさんのページを参考にしました。

購入は秋月にて 1個 ¥140。
その他部品
- 抵抗 220Ω x2、10KΩ x2
- コンデンサ 1uF x1
- トランジスタ NPN(2SC1815GR) x1
- ワイヤー、ユニバーサル基板など
回路図
ソフト(環境)
ArduinoIDE 1.8.13
Windows10(開発作業用)
ライブラリ
以下、先人たちの功績に感謝し使用させて頂きました。
上記コードはそのまま使用できなかったので、少し改変しました。
ソース
メインロジックは attiny85-spectrum
を使用しました。
描画ロジックは attiny85-spectrum
では遅延が大きかったため、SASAPEA
さんの SSD1306 Library
を使用しましたが、それも一部改変しました。
FFT処理は Fix_fft
を使用しました。
ソースは以下に置いておきます。
おわりに
今回は ATtiny85 にこだわって作りました。もっと上位のMCUの方が簡単に作れます。スピーカー内部にももう少し余裕があるのでATmega328Pでも可能だと思います。何よりライブラリ探しに苦労せずにできます。ATtiny85はプログラム用メモリが小さいのでFFTとディスプレイ描画はかなり厳しいです。実際に動いている所を載せておきます。
Audio visualizer using an ATTiny85 and an SSD1306 OLED display and tiny speaker.
— nori.dev.akg (@nori_dev_akg) June 29, 2021
ダイソー300円スピーカーにスペクトラム表示を付けてみた。https://t.co/AQsUuQbhVfhttps://t.co/kiIHKoZMHo#Arduino #ダイソー pic.twitter.com/oDCIBNJ1i0