コメを噛め

コメを噛め

rerofumi の電子工作メモ

Archive for 5月, 2008


hatena bookmark

愚民養成ギプス。
kome_gumin01.jpg
三軸加速度センサーをスイッチにして、こいつを振ると音が鳴るという仕組み。
もちろん、振る方向で三種類の音を鳴らし分けることができるぞ。ということなんだけれども、実際は振動が混ざりまくりで要らぬ音声が暴発気味に出てしまうのが難点。
コイツを作りたくて作業を始めたところがあるので、一応の完成系。

gumin01.png
ぷちぷちの時より基板を大きめにとってあるので、C1815をエミッタフォロアにして電流増幅してみた。小型スピーカーを直に繋げる事が一応できるっぽ。

kome_gumin02.jpg
加速度センサーの入力でPSoCの足が全部埋まっているあたり。こうなると引き回せる足が限られるので、ある程度ユーザーモジュールを配置して設計した後で回路が決定するあたり。

ソースコード: gumin02.zip


hatena bookmark

∞ぷちぷち、ぷち萌え「ヤンデレ編」
kome_putimoe01.jpg
∞ぷちぷちの押しスイッチと内部スピーカーを利用、それ以外を外部のPSoCとROMで構成している。
とにかく小さくまとめるのが目的なので 8pin の CY8C27143 を利用。音声データをまとめたら 44KB ほどになってしまったので 1Mbit 容量のATMEL 24C1024 を利用。1Mだとアドレスが 9bit になるんだけれども、そこはI2Cアドレスを1bit割り当てるらしい。なので感覚的には512kbit(64KB)が2バンクある感じ。今回必要なのは44KBなので、片方のバンクのみで収まる。
∞ぷちぷちのボタン電池3VだとシリアルROMが駆動しないので、電源は外から供給。ちょっと残念な点。(最近低電圧版のシリアルROMが秋月で売られているのでそれを利用するといけるのかも)

mikuputi.png
回路図はこんな。
kome_putimoe02.jpg
ハンダが汚いとなぜか評判なのだけれども、フラックスが目立つから?
まあ、結構試行錯誤で作った試験基板的な作品なのと、このあたりから全て無鉛ハンダに切り替えたあたりも理由かと。無鉛ハンダだとユニバーサル基板をハンダブリッジさせようと思ってもなかなかできないのよね。というか、避けたほうが無難。

block1.png
内部ブロックは簡単に書くとこんな。
カウンターで 8khz の割り込みを発生させて、そのたびにDACに 1byte 渡すことで発声。バッファに32byteとってあって、I2C受信バッファから32byteをコピーし、次の32byteをくれとI2Cに要求。ROMからの読み出しは 8khz×32byte の間で十分間合うのでタイミングはシビアでもない。

ソースコード: putiputi.zip


hatena bookmark

まずはI2CシリアルROMにデータを書き込む必要がある。
そのためにPSoCマイコンとPCをシリアルで繋ぎ、PCから流し込んだデータをPSoCのI2C経由でシリアルEEPROMに書き込むという作業を行う。

今回書き込むのは音声データなのだけれども、8bit 8khz モノラルと規定しておく。
8khzのwav形式データを作成して、RIFFフォーマットからDATAチャンクのみを取り出す。つまり音声データだけ取り出して、その他情報は捨てたいわけなのです。
そのために適当にDATAチャンクを取り出す使い捨てコードを作成。

Cのソースコード: wavsprit.c

これを使ったりしてあらかじめデータを用意しておく。

i2crom_writer.png
回路図はこんな感じ。
PCからの一方通行でデータを流し込めば良いので RX だけ接続してある。
LCDモジュールは別段必要でもないのだけれども、書き込んだデータ量を確認するためにアドレスを表示させている。
シリアルはゆっくり目の 4800bps で接続、これ以上早くするとEEPROM書き込みが間に合わなくてデータ欠落が起こるみたい。

ソースコード: i2crom_writer.zip

先日秋月でPSoCのCコンパイラを購入したので、今回からC言語で作成している。ご了承あれ。
アセンブラも楽しいけど、短時間でぱぱっと組みたいときC言語が使えるとやっぱ便利だわ。


hatena bookmark

マイコン電子工作の Hello, World! と言えばLEDぴかぴか。それにセンサーが扱えるようになると色々な事ができるようになるのだけれども、音を出すというのは案外面倒だったりもする。
音を自在に出すことができる様になればいろんなおもちゃが作れるのではないかと思うのです。
ボイスレコーダーキットを利用するのも良いけれども、ここはマイコンで手作りしてみましょ。

実は長らく、音の出るおもちゃを作るにはどうしたら良いのかと考えていたのだけれども、たどり着いたのが PSoC とシリアルROMの組み合わせ。これがそこそこコンパクトでそれなりな長さの音声が出力できる組み合わせかと。
PSoCを使うのは使い慣れているというのと、8bitDACユーザーモジュールを持っているから。
シリアルROMは秋月で160円の256KB I2C シリアルROMを使うと、ビットレート8kHzで 4Sec ほどの音声がならせる。一言二言には十分な長さ。

というわけで以下の制作物の回路図とソースコードを次記事にて置いとくのです。