スポンサーリンク


RAKUTEN

  • スポンサーリンク

« PICマイコンでワイヤレスマイク? | メイン | AITENDOのジョイスティック »

2013/10/27

PICマイコンでワイヤレスオルゴール

先日偶然AMラジオから音が聞こえた現象を、意図的に動かしてみました。

Dscf2568_2  Dscf2559

原理はとても簡単で、PICマイコンが持っているPWM機能を以下のように使います。

 ・PWM周期をAMラジオの周波数帯に設定する。今回は630KHzにしました。

 ・20KHzインターバルタイマ割り込みでPWMのパルス幅を出したい音に合わせて制御する。

 

まずは動きをどうぞ。前回の現象はスプリアス的に周波数のあちこち聞こえてましたが、今回のものはラジオを周波数を630KHzに合わせるときっちり聞こえます。

 

電波法的には。。。3mどころか10cmも離せば聞こえなくなるので大丈夫でしょう。

実用性は。。。ないかな(^^;? 強いて言えばラジオのボリューム上げれば内蔵ブザーより大音量が得られる、くらいですかね。

 

回路図は以下の通りです。プログラム用コネクタに出ているPB0端子にアンテナ代わりの線を刺しただけです。ソフトでPB0をPWM出力にしています。

Oled2_cir_2

 

ソースは以下の通りです。

「WORG_MAIN.c」をダウンロード  メインです。

「musicdata.h」をダウンロード  2和音3曲分のデータです。

ほかのファイルは以前のTETRISのときと同じです。

音楽データは、音程1バイト+音長1バイトで一つの音符に相当します。

音程の数値は発音したい周波数を20KHzの周期(50us)で割ったものです。

 

20KHz割り込みごとにカウントし、この数値の1/2回ごとにPWMパルス幅の長短を切り替えることで630KHzのPWM出力に変調がかかります。

和音は、それぞれのパートのパルス幅長短の計算値を加算して対応しています。今回2和音ですが、割り込み処理が間に合うならもっと増やすこともできます。

 

実はこのデータとアルゴリズムは以前PIC12Fでオルゴールを作った物を流用しましたので、比較的簡単にできました。

しかし、PIC12Fの時はアセンブラでぎりぎり間に合っていた処理で、今回C言語で記述して間に合うかどうか、と不安でしたが、やってみたら特に問題なしでした。さすがPIC24Fです。

  

ADCを動かせばワイヤレスマイクもできますね。しかしあまり面白くなさそうなので今回はやめときますが。

 

それではまたです。

トラックバック

この記事のトラックバックURL:
http://app.blog.ocn.ne.jp/t/trackback/240957/24468556

この記事へのトラックバック一覧です PICマイコンでワイヤレスオルゴール

コメント

akio様。こんにちは。

お試しありがとうございました。
はい。あれはラジオがかなり近くにないとなにも聞こえません(^^)
あくまで面白実験ということで。

ご紹介の小型圧電サウンダ是非試してみたいと思います。
(しかし今のFRISKケースのブザーはホットボンドで固定してしまったので、ちょっと交換難しいです。。。)

早速、ソースをダウンロードして、試して見ました。
最初、何にも聴こえないな〜 と、思ったのですが、ラジオからじゃ無いと、聴こえないんですね。当然ながら^_^;
圧電ブザーは、これがオススメです。
秋月電子
ムラタ表面実装圧電サウンダ(トランスデューサ/圧電スピーカ/)
結構、小さいんですが、それなりに聴こえますよ^_^

ezekiel様。こんにちは。いつもご訪問ありがとうございます。
  
C言語のコンパイラについてですが、
 ・組み込み系でよくあるのが、PIC,ARM,SH,AVRといったあたりと思います。
 ・コンパイラは上のようなCPUの種類ごとに専用となります。
 ・CPUのメーカまたはサードパーティが出しています。
 ・有料もありますが、緩い制限付きで無料で使えるのがほとんどと思います。
  
PICに関しましては、12F系、16F系、18F系、24F系、dsPIC系など有り、開発環境とコンパイラは共通の物(MPLABとC30)が使えます。
 
ソースは残念ながらそれぞれの系で異なります。例えば16F用のソースをそのまま18Fには使えません。修正が必要です。
  
また同じ系でもCPUによってCONFIG定義やレジスタなどが異なりますので、例えば16F84と16F877では少し修正が必要となります。
  
とはいっても、PIC全体として基本部分がなんとなく共通的で、修正すれば使える、あるいは違う系のソースでもかなり参考にはなる、という感じはしています。
   
私が慣れているのでPICの話ばかりですみません。AVRの方がよくできていて使いやすい、という知り合いもいます。これからお使いでしたらPICにこだわらない方がよいのかもしれません。
  
回答になりましたでしょうか?

すっごーい
ただ、ただ感心するのみです。
見習い職人さんでは無く、もう匠の領域ですね
考えた事を物にし、実現する力は半端では有りませんね

いくらお隣さんが真似しようとも、見習い職人さんの様な人が
入る限り日本の将来は明るい。

すみませんちょっと別の件で質問宜しいでしょうか。
と言いながら勝手に質問させて頂きますが

ソースリストと言うのは、完全な(?)C言語出書かれたものを
コンパイルしてマシン語に直しますが
コンパイラーは例えばいろんなCPUがありますが
PIC用とかARM?・・・etcとか、それぞれの専用のコンパイラーと
言うのが有るのでしょうか。
また、PICには16Fとか、18,24Fとか有りますが
16Fで作ったソースをそのまま18Fとかにコンパイルして使えるのでしょうか。
余計なお手数をおかけしますが、何も分かりませんので
教えて下さい。

コメントを投稿