Si4735 ラジオモジュール、液晶の電源を変更してみました。

2012-12-16 15.42.24

I2C 液晶モジュールの電源を I/O ポートから取っていましたが、電源ラインからトランジスタ(2SA1015と2SC1815)のスイッチ回路経由で供給するように変更して動くか確認。とりあえずは問題なし、液晶に供給される電圧も電池の電圧になりますのでコントラストが濃くなりました。

ということで、液晶モジュール、Si4735ラジオモジュール、I2Cプルアップの電源をトランジスタスイッチ経由に配線を変更しました。プログラムは 0.0.2 のまま(液晶コントラストの値は修正必要ですが)変更していません。回路図が加筆修正されています。回路図は下記リンクより

Si4735 ラジオモジュールの回路図

20121215 ヴァイオリンレッスン111回目(今の教室21回目)

今日は、平年並みの気温に戻りまして朝から暖房もひかえめですみました。なので、事前の練習も寒さに震えることなくなんとかウォーミングアップ出来た状態でのレッスンです。

  • 楽器のチューニング
  • 小野アンナ ヴァイオリン音階教本 P15 C Dur と A moll の音階練習
  • カイザー練習曲3番
  • ステップ式ヴァイオリン教本 III P19 エチュード
  • 篠崎バイオリン教本2 P57 「アベ マリア」

今日はカイザー練習曲3番から本日のレッスン開始。今日は最初から最後まで何回か通しで練習。4の指のピッチ悪くなるところを注意しながらです。以前のレッスンで言われていた指摘ポイントがだいたい出来るようになってきたためOK。次回からは4番に進みます。

3ポジの練習は教本の19ページ。ホフマンのエチュードから。基本的に音程が取れることを優先するので、今回はギリギリOK。3ポジも少し安定してきましたね。というところでしょうか。まだ、ドンピシャは無理です。

篠崎教本2 P57 バッハの「アベ マリア」。さて、これが個人的にものすごい問題な曲です。まぁ、超有名曲なのでそれなりに弾けないと実に印象悪いという面倒臭いやつ。将来にわたって何回も弾くことにはなると思うので基礎はね。積みましょ。レッスン的にはまぁいいでしょうでOKですけれども。次はP59シューベルトの軍隊行進曲。これはファーストポジションのままで練習します。右手がうまくないとメリハリ無い曲になります。

次回は12月下旬の予定。

12月13,14日は名古屋へ行っておりました。

2012-12-13 11.52.49

12月13日と14日は名古屋へ行っておりました。以前賛助会員でありましたセントラル愛知交響楽団様より第九演奏会のチケットをいただいておりまして聞きに行ったという次第。まぁ、本年11月で会員の期間満了のため以降こういうサービスはありません。金の切れ目は縁の切れ目の言葉通りです。移動は青春18きっぷで、JR東海道線の大阪-名古屋間を普通に往復しただけです。ということで↑の写真は使い始めの日、帰りにもスタンプ押されていますので2回使ったことになります。

2012-12-14 16.46.32

帰る日には熱田神宮、大須などウロウロしてから帰りましたが、電車乗る前におみやげ購入。今回は青柳の小倉サンドなるものを購入。私が愛知県から大阪府引越ししたあとに発売になった菓子ですので見るの初めてです。説明見た感じマルセイのバターサンドの小倉版?と思いつつ購入。後日配るので楽しみです

Si4735 ラジオモジュールの更新を行ないました。

一連の Si4735 ラジオモジュールの記事を参考に製作チャレンジされた方から質問をいただきました。(Si4735 ラジオモジュール進捗と〆のコメントにて) 内容は、局の選択後に信号強度のSがリアルタイム更新されないけど対応はあるかというものです。今回その対応分のソースの zip を下のリンクに貼っておきます。また、以下は差分情報になります。

最新のソースは Si4735 ラジオモジュールの Blog 記事一覧 から取って下さい。

$ diff -p Si4735Radio_Ver0.01/ Si4735Radio_Ver0.02
diff -p Si4735Radio_Ver0.01/Si4735.cpp Si4735Radio_Ver0.02/Si4735.cpp
*** Si4735Radio_Ver0.01/Si4735.cpp 2012-12-15 09:31:55.671118400 +0900
— Si4735Radio_Ver0.02/Si4735.cpp 2012-12-15 09:32:02.617515700 +0900
*************** void Radio::updateFMTuneStatus() {
*** 163,168 ****
— 163,189 —-
}
}

+ void Radio::updateFMRsqStatus() {
+ int i;
+
+ i2c.beginTransmission(SI4735ADR);
+ i2c.write(0x23);
+ i2c.write(0x20);
+ i2c.endTransmission();
+ _delay_ms(2);
+
+ i2c.requestFrom(SI4735ADR, 6);
+ for(int i = 0; i < 6; i++) { + switch(i) { + case 4: + FMrssi = i2c.read(); + break; + default: + i2c.read(); + } + } + } + void Radio::updateAMTuneStatus() { int i; *************** void Radio::updateAMTuneStatus() { *** 191,196 **** --- 212,237 ---- } } + void Radio::updateAMRsqStatus() { + int i; + + i2c.beginTransmission(SI4735ADR); + i2c.write(0x43); + i2c.write(0x00); + i2c.endTransmission(); + _delay_ms(2); + + i2c.requestFrom(SI4735ADR, 6); + for(int i = 0; i < 6; i++) { + switch(i) { + case 4: + AMrssi = i2c.read(); + break; + default: + i2c.read(); + } + } + } int Radio::getFMFreq() { return(FMfreq); diff -p Si4735Radio_Ver0.01/Si4735.h Si4735Radio_Ver0.02/Si4735.h *** Si4735Radio_Ver0.01/Si4735.h 2012-12-15 09:31:55.795125500 +0900 --- Si4735Radio_Ver0.02/Si4735.h 2012-12-15 09:32:02.628516300 +0900 *************** class Radio { *** 41,46 **** --- 41,48 ---- void seekDownAMFreq(); void updateFMTuneStatus(); void updateAMTuneStatus(); + void updateFMRsqStatus(); + void updateAMRsqStatus(); int getFMFreq(); int getAMFreq(); int getFMRssi(); diff -p Si4735Radio_Ver0.01/Si4735Radio.cpp Si4735Radio_Ver0.02/Si4735Radio.cpp *** Si4735Radio_Ver0.01/Si4735Radio.cpp 2012-12-15 09:31:55.816126700 +0900 --- Si4735Radio_Ver0.02/Si4735Radio.cpp 2012-12-15 09:32:02.638516900 +0900 *************** void loop() { *** 146,151 **** --- 146,152 ---- switch(mode) { case FM: radio.updateFMTuneStatus(); + radio.updateFMRsqStatus(); ffreq = radio.getFMFreq(); int tmp01, tmp02; tmp01 = radio.getFMFreq() / 100; *************** void loop() { *** 154,159 **** --- 155,161 ---- break; case AM: radio.updateAMTuneStatus(); + radio.updateAMRsqStatus(); afreq = radio.getAMFreq(); sprintf(msg, "AM %4dkHz S:%i", radio.getAMFreq(), radio.getAMRssi()); break; $ [/code]

あと、Atmel Studio6 のプロジェクト設定で、以下ハードコピーのように delay マクロ用の周波数定義を入れておくと良いです。

201212141958

20121208 ヴァイオリンレッスン110回目(今の教室20回目)

寒いと言ってもどうにもならないので、あきらめました。

  • 楽器のチューニング
  • 小野アンナ ヴァイオリン音階教本 P15 C Dur と A moll の音階練習
  • ステップ式ヴァイオリン教本 III P18 18, 19番
  • 篠崎バイオリン教本2 P57 「アベ マリア」

3ポジの練習は教本の18ページ。短三度のシフトチェンジの練習と「ラルゴ」の短いフレーズの練習です。4の指で開放弦のポジションと3ポジ移動するので地味にピッチあわせるのが難しいです。3回ほど練習してなんとかOK。次は19ページのエチュードしといて下さいというステータスに変更。

カイザー練習曲3番のレッスンは今日お休み。(練習あまりできていないから)

篠崎教本2 P57 バッハの「アベ マリア」。カイザーお休みの分こっちの練習に時間配分増えます。休符の間にポジション移動する。その時、指の形作ってピタッと思った場所に指持って行くヒントをいただき練習。などをくりかえしつつ。ポジション移動後のピッチが甘いので次回も聞かせていただきますというステータスです。誰でも知ってる曲なので地味にハードルは高い。

次回は12月15日の予定。

Si4735 ラジオモジュール進捗と〆

11月30日の夕方に、Atmel Studio のプロジェクト作成したようですので 1週間経過です。まぁ全てこれに注力しているわけではなく、余裕のあるときにやっていますので工数的には少ないです。今の段階でインプリ出来ているのは

  • 受信周波数 AM 531kHz ~ 1602kHz, FM 76.0MHz ~ 90.0MHz
  • AM/FM 切り替えボタンによるバンド切り替え
  • 選局は、シーク UP/DOWN のボタンによるサーチ方式
  • アンテナは、AM/FM 共にロッドアンテナ
  • 液晶コントラスト調整(6段階)
  • 音量調整ボタン
  • アナログ音声出力 3.5φステレオジャック
  • 電源 ON 時以前の状態を復元
  • 電源 3.3V(電池可)
  • 電流 稼動時 20mA, 停止時 0.1~2μA(データシートより)

のようになってます。安物ラジオの条件達成なので個人的な目標も達成です。基板起しとケース入れるという作業は残ってますがね。

2012/12/8 追加開始: 上記機能までインプリしたソースと回路図を再掲します。

Si4735 ラジオモジュールの回路図
最新のソースは Si4735 ラジオモジュールの Blog 記事一覧 から取って下さい。

ソースファイルは、各種資料をもとを作成させていただいています。商用利用はお断り。二次配布もお断りします。
2012/12/8 追加おわり

このラジオモジュール使った短波受信ありのラジオも発売されているようですので、もうちょっと改良するところはありそうです。パット思いつくのは以下の点ですが、短波だけは試したいなと思います。

  • 短波(31mバンドあたり)が使いものになるのか動かしてみる。
  • フェライトアンテナでは AMが飽和して音声が出なくなる局がある。(ハリガネで結構受信出来る)
  • USB シリアル変換を付けて、ホストコントロール出来るようにする(普段ならデバック用に付けますが今回付けてないので)
  • アナログ出力のドライブ能力のせいか、音量上げるとクリップしてると一発でわかるのでバッファ用のアンプは付けたい。(↑の写真のように簡易アンプはさむと実用的にはなる)、ラジオチップのアナログ部分は 5V まで上げられるが、このモジュールは VDD と共用という仕様。
  • アンプ付けるとボリュームによる音量調整が出来るので、ボタン2個減らせる。→ だけど単三2本から4本くらいに電源変更したくなる。

個人的にはこのモジュールの基本的な使いかたはだいたいわかったので、妥協出来る切りのいいところでまとめてしまいたいなと思います。ほとんどこれにて終了状態ですけどね。

Si4735 ラジオモジュール構成検討中 その3

今日も少し構成変更しています。変更点は電源OFF/ONのボタンを着けた。ということです。AVR マイコンの PowerDown モードにするということです。電源 ON はあれこれ考えましたが結局リセットボタンとしました。これで初期化からいくので十分というやつです。(途中電源ディレイなども考えたけど…これが一番シンプルでした)

ただ、電源 OFF の課題は消費電流が減ってないことです。


動作時、20mA ,マイコン PowerDown モードで、10mA と。ただし、ラジオモジュールが動作時19mA 出てて、PowerDown 後はほぼ 0mA なので、この10mA はどこから出てきたのか不思議という状態。落す前にI/Oポートの処理せんといけないのかぁ。

あとは電源 OFF 時に周波数などを EEPROM に書いて、電源 ON 時に戻るようにしたいです。

電源 OFF/ON はタクトスイッチでいくとして、各ファンクションのタクトスイッチが多いので、I2C キーパッド使えるかなぁと思いつつちょっと悩み中なのと、シリアル I/F 付けて、デバック用も兼ねてホストからコマンド送れるようにするかどうか。むむ

Si4735 ラジオモジュールのプログラミングその3

本日は、FM / AM の基本処理追加とシーク動作出来るようにプログラムの修正をしました。とりあえずボタン2つ付けまして、周波数 Up/Down させるようにしました。あとはボリューム操作と AM/FM 切り替えを付けたら市販されているラジオキット相当になりそう。

		   text	   data	    bss	    dec	    hex	filename
		   5380	     34	     97	   5511	   1587	Si4735Radio.elf

AMもバーアナテナ無しで、NHK第一、第二は受信出来ているので動作確認終ってます。大半のプログラムは出来てるという状態です。これで↑のように5511バイト。余裕あります。気になるのは、電池が、3.3Vから3.0V まで電圧下がりましたが、液晶のコントラストがすごく変化して薄くなりました。こいつの調整も必要そうというところです。

Si4735 ラジオモジュール構成検討中 その2

ラジオモジュールのほうのプログラミングは FM だけですが、周波数のセットとステータス呼び出しが出来ていますので、AM のほうもすぐコーディング出来るようなところまでは来ています。この時点での変更点は

  • ATMEGA328P のクロックは内蔵 8MHz からデフォルトの 1MHz に戻した。
  • それに伴ない I2C のパラメタ設定修正
  • ブレッドボード上のパーツ整理

です。で、次考えないといけないがユーザーインタフェースです。これ悩み中ですが大雑把に以下の項目

  • 周波数のセットの仕方(直接入力・シーク・その他)
  • AM / FM の切り替え方法
  • 音量調整
  • 16×2 の液晶への表示内容(モード・周波数・信号強度(簡易Sメータ)など)
  • 液晶コントラストの設定(ボリュームでは出来ない)
  • スピーカー付けるか否か・とステレオかモノラルか

正直決まってないですね。すくないボタンでガンバルかどうするか検討してみましょう。

ネオン管(IN-9)使用用途が決まらない

ラジオモジュールの工作が煮詰まっているので違うお話。写真は前に購入して積み上げたまま放置されているパーツです。IN-9 というネオン管で、流す電流によってバーグラフのように光る部分が伸び縮みするというやつです。これのニキシー管タイプは IN-13 というのがありますが、最近なかなか見つかりません。

電子工作関係でもこれらの管を使って、オーディオの VU メーターやオーディオスペアナなどを作成されているすごいお方も見ます。しかしながらこっちがノーアイデアのため積んでるんですねぇ。

売るほど在庫は無いので使ってしまいたいところですがなんか活用出来んかなぁ。