電子趣味の部屋

電子系のガジェットやアプリ開発等の趣味の話題を書いてます

ArduinoでFM音源シールド作成2 (YM2151)

ArduinoでFM音源シールド作成 (YM2413)に続き、今度はX68000等に搭載されていたYM2151(OPM)でFM音源シールドを作成しました。

今回はYM2151Shield | Web::ooISHooを参考にさせて頂きました。
回路図はここのサイトにあるYM2151ShieldKitManual-0.1.pdfを拝借し、arduinoとYM2151とDACのYM3012の回路はそのままです。

アンプ部は面倒だったので、中国から仕入れたデジタルアンプ基板を使いました。
秋月電子通商にあるPAM8403 D級ステレオアンプモジュールや、AmazonにあるEasyWordMall PAM8403 5V 電力 オーディオ アンプ ボード PAM8403 5V 電力 オーディオ アンプ と同じものと思われます。
この基盤はどうもLRのGNDを別にそれぞれのGNDに接続しなければいけないようです。ミニピンジャックは秋月にある変換基板とのセットを使用しているのですが、この基板はLRのGNDが結線されているので、うまく動作しませんでした。いろいろ試行錯誤した結果、LRどちらかのみGNDに接続するだけで問題なく動作するようになりました。

テストとして、今回はArduino UNOを使用しています。YM2151Shield | Web::ooISHooにあるArduinoFileUploaderでMDXファイルを転送し、MDXプレイヤースケッチを動かしてみました。
最新版のarduinoの開発環境ではコンパイルに失敗するので、Arduino - OldSoftwareReleasesから1.0系をダウンロードしてコンパイルしました。

2つのFM音源シールド作成を通して、FM音源の扱い方もわかってきたので、SDカードからMDXを読んで演奏できるプレイヤーもそのうち作ってみたいと思います。


【永久保証付き】Arduino Uno

【永久保証付き】Arduino Uno

FM音源YM2413をmbed(NUCLEO-F446RE)で簡単に動かしてみる

NUCLEO-F446REで遊んでいたら、DAC出力で音を鳴らして遊んでるとヘッドホンでは十分なボリュームで出力できたのでちょっと実験してみました。

FM音源のYM2413の出力をそのままF446REのADCで読み取って、出力量を調整してからDACで出力する。
これをするとアンプ回路が省けると思い回路を組んでみました。

使った部品は、
NUCLEO-F446RE
YM2413
OSC 3.579545MHz
コンデンサ 22pF x2
ボリューム用可変抵抗1kΩ
ヘッドフォン端子
以上、これだけです。

結論として、満足のいく結果にはなりませんでした。
一定間隔毎の割り込み処理でADCから読み取った値を増幅してDACから出力したのですが、ADCが思ったより遅く、間隔を短くできませんでした。一応動くようにしたところ、音質は満足できないものでした。もうちょっと間隔を短くできたのですが、音質は向上した代わりに、変な高音ノイズが発生したりと調整が難しく、素直にアンプ回路を組んだほうが色々工夫するよりも結局プログラミングも楽になると思います。

今回実験したソースをアップします。
特にコメントもなく、内容も中途半端なものですが、参考にどうぞ。
SimpleYM2413Shield_zip_nucleo_f446re.zip 直


ST Nucleo Board STM32F446RET6

ST Nucleo Board STM32F446RET6

AgIC 導電性インクマーカー を試してみました

手軽に簡単な回路を試すために、導電性インクを使ったペンのAgIC 導電性インクマーカーを試してみました。

まずは、用意したもの

AgIC 導電性インクマーカー&A6専用紙5枚セット
AgIC 導電性接着剤
コイン型電池(CR2032C)
適当なLED
抵抗100Ω


これでLEDを光らすための回路を描いてみました

ここにLEDと抵抗と電池を置いて光らせてみました。

AgIC 導電性接着剤では上手く接着できずに結局テープで留めています。

インク自体の抵抗も多く、LEDが暗かったので抵抗を外して直結してみたところ、ちょうど良い明るさになりました。
実際の抵抗値を計測したところ、約2mmの太さで15cmの線を引くと250Ω程ありました。

実際に遊んでみるとブレッドボードより手軽だと思います。
配線を紙に描けるので、アイデア次第で面白い使い方ができそうです。


Intel Edison 初期セットアップメモ

Intel Edison に手を出したので、初期セットアップのコマンドをメモします。

購入の際は秋月電子かスイッチサイエンスがお得です。
私は秋月電子から購入しました。

Intel Edison Breakout Board Kit \8,480
Intel Edison Kit for Arduino \11,800

2つとも購入しましたが、Breakoutの方は純粋に小型サーバとして遊ぶため、Arduinoの方は電子工作で遊ぶためと使い分けてます。

以下、初期設定のメモです。
各コマンドの説明は省略します。

/boot拡張

初期状態ではboot領域が小さいため、拡張します。

mkdir /home/root/boot-backup
cp -rp /boot/* /home/root/boot-backup/
umount /boot
mkfs.vfat -v -nboot -F16 /dev/mmcblk0p7
mount /boot
cp -rp /home/root/boot-backup/* /boot

初期設定

rootパスワードとWifiの設定をします。

configure_edison --setup

タイムゾーンの設定

timedatectl set-timezone Asia/Tokyo

ログ最大サイズ設定

初期状態ではではシステムログが溜まってディスク領域がなくなってくるので、最大サイズを制限します。

echo SystemMaxUse=10M >> /etc/systemd/journald.conf
systemctl restart systemd-journald

opkgでsysstatインストール

sarコマンドを使いたかったので、とりあえずsysstatをインストールしました。

echo src intel-i586 http://iotdk.intel.com/repos/1.1/iotdk/i586 >> /etc/opkg/intel-iotdk.conf
opkg update
opkg install sysstat

ArduinoでFM音源シールド作成 (YM2413)

FM音源を制御したいと思い、FM音源シールドを作ってみました。
今回使用した音源チップはYM2413 (OPLL)です。
これはMSXで使われていた音源です。
ピンの数が少なく、プリセットで音色が用意され、さらにはDACも内蔵してるので、一番簡単に扱えるだろうと思ってさいようしました。
購入先はAliexpressで10個約13$(送料込み)でした。

テストプログラムとして
YM2413 Shield Ver 1.0
にある、YM2413_Tetrisを拝借しました。
ArduinoとYM2413は以下のように接続をして、YM2413_Tetrisのピン定義を修正してFM音源を動作させることに成功しました。

DATAピン = D2,D3,D4,D5,D6,D7,D9,D10
CS = A5
WE = A4
IC = D9
A0 = A3

すべてデジタルI/Oとして扱います。
将来MicroSDカードを使用したいため、SPI関連のピンとD8は明けてあります。

YM2413からの出力を直接オーディオジャックに接続すると音が小さかったので、アンプを追加しました。
ただオペアンプは過去にノイズまで増幅されてなかなか上手くいかずに断念した経験があり、敬遠してました。
今回は簡単に扱えるオーディオアンプを見つけたので、これを使ってみました。
今回使用したのは、低電圧1.2Wオーディオアンプ HT82V739です。
これはオーディオ用のアンプ回路とバイアス回路がチップ内に構成されていて、整電用のコンデンサ3個の外付け部品のみで簡単に高質な出力を得ることができ、さらには秋月電子で2個100円という低価格な超お勧め品です。

これでYM2413搭載のFM音源シールドが完成しました。


Arduino Leonardoに乗っけてみました

まだテスト用のプログラムで演奏させるだけですが、MML等で演奏できるように作っていこうと思います。

1つあれば便利!低価格小型オシロスコープ DS203 DSO QUAD

アナログ回路やセンサー類が動かない時に原因がなかなか分からず、無駄に時間を使ってしまうことが多くあります。
そこでオシロスコープを購入することにしました。
ただこのオシロスコープは高価で、今までも欲しかったのですが、なかなか手が出ませんでした。
秋月の簡易オシロスコープのキットも検討したのですが、組み立てが面倒なので、低価格のを探す方にしました。

そこで見つけたのが、"ポケットサイズ デジタルオシロスコープ DS203"です。
店によっては商品名がDSO203やDSO QUADとなっています。

東映無線ラジオデパート店で21,500円(税込)で購入しました。

価格に対して高機能で、小型なので邪魔になりません。
8MHz 2ch(アナログ)+2ch(デジタル) 72MS/s, メモリ長4096
垂直軸 : 20mV〜10Vdiv
最大入力電圧 : 40Vpeak (1:1時)

他のオシロスコープと比較すると性能は低く感じますが、電子工作で、アナログ回路やセンサーの波形を見るには十分です。
簡易ロジアナ機能もあり、シリアル通信のデバッグも行えます。

試しにSTM32F302のアナログポートからファミコンのような16階調の疑似三角波を出力してみました。

ファミコンの音源を再現したいと思い、前から作っていたのですが、今まで本当に階段状の疑似三角波になっているかわかりませんでしたが、これで確認できました。
思ったより綺麗な波形として見えています。

今までオシロスコープ無しで遊んできましたが、今回の事で便利なことが良くわかりました。
たこの機種はファームウェアを入れ替えることができます。
4個まで入れることができ、特定のボタンを押しながら電源を入れることにより、起動するファームウェアを切り替えることができます。
現在自分の環境は、デフォルトのファームウェアカスタムファームウェアとロジアナ専用アプリを入れて使っています。

このシリーズでDS201という1万円を切る機種もありますが、周波数帯域が200kHzしかなく、用途が限定されるので、汎用的にな用途に使いたいと思うならば、DS203をお勧めします。

DigiSpark (超小型Arduino互換)のクローンで遊んでみました

超小型のArduino互換機にDigiSpark USB Development Boardというものがありますが、さらにこれのクローンらしき物で遊んでみました。

↑本物
↓クローン

Aliexpressで2個6ドルで購入

開発環境はArduino純正ではなく、DigiSparkのカスタマイズ版が使えます。
ダウンロードはこちら

純正のArduinoとは違い、書き込み時はUSBから抜いた状態でコンパイルし、コンパイルが終了すると待ち状態になるので、この時にUSBに差すと書き込まれます。

このモデルは1番ピンにLEDが接続されているようなので、点滅させてみました。

void setup() {
  pinMode(1, OUTPUT);        // 1番ピン 出力(LED)
}

void loop() {
  digitalWrite(1, HIGH);
  delay(100);
  digitalWrite(1, LOW);
  delay(100);
}

直接USBに差せるのは面白いです。

Arduinoをはじめよう 第2版 (Make:PROJECTS)

Arduinoをはじめよう 第2版 (Make:PROJECTS)