マイコン工作実験日記

Microcontroller を用いての工作、実験記録

Gadget1に出展します

2010-07-31 16:14:42 | W-SIM
来週8月7日(土)に東京、青山で開催されるGadget1 R2に出展することになりました。時代を先取りするガジェットやツールに関する展示やプレゼンがあるイベントです。スマート・フォンや電子ブックリーダが展示される中、自作ガジェットの一例として、おバカ・フォンである「携帯できる電話機」を展示します。



ここのところPCF2127Aを追加していたりしたのも、この展示に向けての体裁を整えるためです。当日は10:00からイベント開始のようですが、わたしは昼ごろからの参加、展示となるかと思います。


拍手喝采

2010-07-30 22:21:23 | Weblog
本ブログを始めてから初めてかもしれませんが、きょうはマイコンとは関係ない話題です。JAXAの特別公開と、隣接する相模原市立博物館でのカプセル展示に行ってきました。何しろきょう、明日の2日間しかないうえに、ハヤブサブームも加わりかなり混雑していたのですが、自分としては運良く廻れたかなと思うので参考までに報告です。

朝9時頃に、JR淵野辺駅に到着。駅前にはバスやタクシー待ちの長い行列ができていました。無料のシャトルバスは9時半にならないと動き始めないということで、歩いていくことに。到着すると、すでにカプセル展示を見るための長い行列が博物館わきの駐車場スペースにできていました。博物館の正面ちょっと手前で、10:15からの川口淳一郎先生による宇宙科学セミナーの整理券が配布されていたので、まずはこれをゲット。とっても、ラッキーな出だしです。

つづいて博物館正面あたりにもうひとつの行列を発見。全天周映画HAYABUSAのチケットを購入するための待ち行列だったので、これに並びました。9時半の開館とともにチケット販売開始。20分ほどの待ち時間で、13:30からの上映分チケットを購入。

チケット購入後、地下階のセミナー会場に移動。川口先生のおはしを聞きました。



1時間半ほどの間、報道されたような苦難をのりこえる話だけでなく、それに関わる裏話や、神頼みに関わる話しなども交えて、大変楽しくそしてわかりやすくお話をされていました。内容について書き出すと、時間がかかってしまいそうなので、詳細は省略。きっと、どなたか記事にしてくれるでしょう。わたしを含めて、聴衆のみなさん感銘を受けるとともに、元気を分けていただくことができたと思います。何度も笑い声が起こり、そして最後はもちろん拍手喝さいで終わった、とてもすばらしい講演でした。

さて、セミナーの終わり近くでは、すでにカプセル展示の待ち時間が3時間近いという「悪いお知らせ」も入るという状況。展示室にあるカプセルや耐熱シールドのスライドもセミナー中に見せていただけました。

セミナー終了後は、JAXAの方に移動。生協前テントに開設された生協の宇宙グッズ売り場につかまってしまいました。プラモとかクリアファイルとか手にして、長いレジ待ち行列に並んでしばし、あと5分でレジに到達できるというところで、テントへの給電が止まってレジでの精算がストップ。なんでも、ブレーカが落ちたとかでさらに20分くらい待たされたと思います。

レジを済ましたところで、はやくも1時くらい。持参してきた軽食を済まして、再び博物館に移動して全天周映画HAYABUSAを鑑賞。実はこれで2回目です。前回はハヤブサを迎える気分を高めようということで6月に見ました。前回はかなりすいていたのですが、今回はもちろん満席です。

映画を済まして2時半。JAXAへ移動。ハヤブサの実物大模型のある第1会場は長い行列ができていたので今回はパス。第3、第4会場を廻っていたらあっというまに4時近く。博物館のカプセル展示待ち行列が1時間待ちまで短くなったというので、そちらへ移動。結局、4時半過ぎにようやくカプセルを見ることができました。残念だっだのは、待ち行列が続いているのでゆっくりとカプセルやシールドを見ることができないこと。おまけに、陳列ケースからも離れた位置から遠巻きに見ることしかできません。そのため、細部を確認することが、時間的にも視力的にもできないのです。いずれどこかの博物館で常設展示されるようになったら、改めてゆっくりと見たいものです。カプセル展示を見終えたところで、もう5時近く。JAXA側の見学時間も5時で終わりのため帰宅しました。

JAXA側はあす土曜だけの展示内容もあるので、JAXAの特別公開をメインに見るのであれば、博物館側のカプセル展示は最初から諦めた方がいいでしょう。待たされた時間に比べて、実際に見ることのできる時間(2分くらい?)があまりにも短すぎます。

PCF2127Aを使った時計表示

2010-07-28 22:53:39 | Weblog
PCF2127Aを使った時計表示機能を電話機ジャケットに追加しました。これまで待ちうけ画面が寂しい感じでしたが、これで落ち着いた感じがします。バックアップにはCR2032を使っています。本体の電源を落としても、時計は動き続けているというのは、やはり気持ちのいいものです。



RTCは毎秒割り込みを発生するように設定しており、その割り込みをきっかけに時刻を読み出し/表示する処理をおこなっています。これまでのジャケットと同じです。せっかく追加したRTCなので、もう少し使ってみるつもりです。

PCF2127A

2010-07-24 23:32:23 | Weblog
NXPがDigikeyやMouserのサイトで宣伝打っていたので、PCF2127AというRTCを知りました。かねがね電話機ジャケットにRTCを追加したいと思っていたので、こいつを使ってみることにしました。Cortex M3を使ってシステム組めれば、外付けRTCなんて使う必要無いのですが。。。

PCF2127Aは水晶内蔵のRTCなんですが、バックアップ電池用の電源端子が用意されており、メイン電源の電圧を検出して、バックアップ電源の切り替えをやってくれるという点が気に入りました。あとは、512バイトのRAMも内蔵しています。すぐに使うアテがあるわけじゃないんですが、RAM無しのPCF2129Aと大して値段が変わらなかったので、RAM有りのPCF2127Aを選択。



パッケージはSO20なのですが、9ピン~12ピンはN.C.になっています。そのため、SO16の変換基板を使って配線しています。I2CとSPIをサポートしていますが、電話機ジャケットではI2Cで接続。レジスタの読み書きまでは動作確認できたので、LCDへの時刻表示を追加するつもりです。


SAM3Nの気配

2010-07-20 23:11:48 | Weblog
どうやら、そろそろATMELのAT91SAM3Nシリーズが発表になるらしい。新しいSAM-BAがリリースされていたのでダウンロードしたところ、ターゲットのボードとしてSAM3N-EKが追加されていました。

自分としてはSAM3NよりはSAM3AとかSAM3Xの方に興味がありますし、なによりまずはSAM3Sを使ってみたいところ。しかし、あいかわらずSAM3UすらDigikeyやMouserに品揃えが整うにはまだ時間がかかりそうです。SAM3を本格的に使うのは、来年になるのかなぁと思い始めています。

魅力的すぎる脇役

2010-07-15 23:22:44 | Weblog
LPCXPressoが新たにLPC1768用の開発ボードを用意したことで話題になっているようです。NXPのサポートページでもガイドが更新されて、LPC1768ボードの回路図もアップされています。

LPCXPressoの写真と回路図を見るたびに気になるのは、基板左側のLPC-Linkの方。右側のターゲットMCUよりもはるかに強力なLPC3154が搭載されています。こちらはARM9 180MHzです。内蔵フラッシュは無いし、ボード上のSPIフラッシュも未実装ですから、USBからブートして動作するんですね。LPC315xにはLPC3152もありますが、LPC3154は3152にAESエンジンを追加したものになっています。LPCXPressoではAESを搭載したLPC3154を使うことで、USB経由でダウンロードするコードを暗号化しているのでしょう。

回路図を見て、ほんとに贅沢というかモッタイナイと感じさせられるのは、次のような部分です。
  • まず、アナログ機能の贅沢さ。CODEC機能を搭載しており、内部でI2Sとつながっています。ヘッドフォンアンプもあるし、ご丁寧にFMチューナ接続用の端子まで用意されています。これだけ見ても、FM付きMP3プーレヤをLPC3152を使って作り直してみたくなります。
  • そしてさらに、Li-ion電池の充電器機能もあります。携帯ガジェット作るには、うれしい機能です。
  • PCMインターフェースがあるので、W-SIMもつなげられそうです。

これだけ魅力的だとどうしてもLPC1768よりもLPC3152/3154の方にそそられてしまいます。Embedded Artistsのボードなんかも魅力的なんですが、SODIMMコネクタのボード作るのが面倒そうです。やっぱ、ヘッダーボードとかで使えるとありがたいのですが。。

AVRCPによるリモコン機能

2010-07-12 23:35:40 | MP3プレーヤ
中途半端になったままだったBluegigaで久しぶりに作業です。AVRCPの動作確認まではしたものの、それをリモコン機能として生かす段階まで進んでいなかったので、その機能を追加しました。

ヘッドセット側の操作スイッチは、ジョグスイッチになっています。↓押すとPLAY/PAUSE, 廻すとFOW/REW です。



Bluegigaはシリアルでの操作が可能なのですが、これまでは「LPC2388側のUARTポートに空きが無い」と思い、LPC2388とはつないでいませんでした。これが、リモコン機能を追加できていなかった大きな理由です。ところが、良く確認してみるとわたしの思い違いで、未使用端子上にUART3が残っていました。いつも参照している付録基板回路図上では、CN2の1番ピンから8番ピンまでが、AD0_0~AD0_7と記載されています。わたしは、勝手にこれらのピンがADC専用に割り当てられていると思い込んでしまっていたのですが、実際にはTXD3とRXD3が、AD0_2とAD0_3と重なっているので、これらを使うことが可能でした。慣れ親しんだATMELのSAM7にはAD専用に割り当てられたピンがあるので、ついついLPC2388でも専用ピンだと思い込んでしまっていたのでした。

そんなわけで、BluegigaのTXOをLPC2388のRXD3に接続。これで、AVRCPのメッセージを拾えるようになりました。ソフトの方では、WT32からのAVRCPメッセージ出力を監視するタスク(wt32_listener)を追加。ここで、Q-STEERリモコンを使う時と同様のイベントを発生することにしました。これだけの簡単な機能追加で、一応の操作がヘッドフォンからできるようになりました。



動作の様子を説明すると次のようになります。
  • ヘッドセットの電源を入れて、ジョグスイッチを押してしばらくすると、RINGを検出して再生音が流れ始めます。
  • もう一度押すと、PLAYイベントを検出しますが、すでに再生中なので、このイベントは無視します。
  • さらにもう一度押すと、PAUSEイベントが検出され、プレーヤは再生を停止します。
  • 次にスイッチが押されると、PLAYイベントが検出され、再生を再開します。
  • ジョグを廻すと前後の曲へスキップもできますが、ログは省略。


ちょっと気になるのは、始めの部分でジョグを押すと再生中にもかかわらず、PLAYイベントが検出されるところ。AVRCPで接続した時点で、ヘッドセット側とプレーヤ側の状態整合がおこなわれていないため、このような動作になってしまっていると推測されます。AVRCPには状態問い合わせのための手順が定義されていたと思うのですが。。。ヘッドセット側が状態取得要求を出していないのか、出しているけどWT32側がそれに応答できていないのか、このログだけからは判断できずにいます。

それでも、ヘッドセットだけで操作できるのはやはり快適です。ヘッドセットには音量調節のボタンもあるのですが、こちらはヘッドセット単体での制御になっており、AVRCPのメッセージは飛ばないようです。プレーヤ側の対応の有無を考慮すれば、ヘッドセット単体で制御してしまった方が無難な選択だというところでしょうか。実験して遊んでみたい側としては、ちょっともの足りませんが。。


不安定なSXGA画像

2010-07-10 23:44:57 | CMOSカメラ
なんとかSXGA用にOV9655を初期化することができたのはいいのですが、実際に使ってみるとまだ動きが怪しいです。
  • SXGAにすると画像に縞が入る。
  • うまく同期がとれないことがある。

画面の横縞ノイズの例を↓に示しておきます。上がVGAの場合で問題無いのですが、SXGAにすると下側の例のように横縞が入ってしまいます。プレビュー時には、これがチカチカと発生してしまいます。最初は、画面の表示処理のためのメモリアクセスとカメラからの画像取り込みのアクセスが競合してしまって、ノイズが発生しているのかと考えたのですが、プレビュー処理を停止しても撮影した画像に縞が入っているので、そういうわけではなさそうです。

VGAからSXGAへとジョグスイッチの操作で、解像度を切り替えられるようにしたのですが、どうもうまくカメラからの信号の同期がとれずにプレビュー画面が乱れたりすることがしばしばあります。何度か切り替えているとちゃんと同期がとれることもあります。SXGAからVGAに切り替える時は、ちゃんと同期がとれます。

どちらもVGAの時は安定しているのに、SXGAにすると不安定になるという印象を受けます。SXGAの場合にはカメラからのピクセル・クロック(PCLK)が高速になるので、それと関係があるハードウェア的な要因であるように感じられます。






このようにちょっと悩ましい状況なのですが、ジョグスイッチを押すことで撮影することができるようになったので、ずいぶんと操作は楽になりました。ジョグスイッチを押すと、プレビュー画面の更新を停止して、撮影した画像をJPEG圧縮して、SDカードへの書き込みをおこないます。書き込みが終了するとプレビュー画面の更新が再開します。VGA画像では圧縮には2秒ほどかかるのですが、それほど気になりません。SXGAでは8秒~11秒もかかり、こちらはちょっと時間かかりすぎ。

撮影操作はできるようになったのですが、画像確認操作はまだできないので、そのうちにその処理を追加するつもりです。

サンプルに頼る

2010-07-07 23:10:02 | Weblog
OV9655のSVGA用設定の続きです。7.5fpsしか出ない問題ですが、やはりどこをどのように設定変更すれば良いのかわかりません。しょうがないので、やはりサンプルを頼ることにしました。ATMELがAT91SAM9シリーズに出しているAT91libのサンプルの中にISIのサンプルも含まれているのですが、このサンプルがOV9655を対象CMOSセンサーとして含んでいました。ラッキー。

そこで、このSVGA設定を拝借。試してみると、画面にほとんど何もでません。なにか根本的にオカシイ。調べてみると、内蔵の1.8Vレギュレータを使用しないようにレジスタを設定していることが判明。aitendoのモジュールでは、内蔵レギュレータを使うことを想定して、外部から1.8Vを供給することはできないのでちゃんとカメラが動作していなかったようです。このレジスタを変更したところ、画面出てきました。VGAの時よりも画面が鮮明になって、明るい画像が表示されるようになりました。単にサイズの違いだけでなく、その他のパラメータの違いもかなり画質に影響している感じです。

そこで、ATMELのサンプルに含まれるVGAのレジスタ設定も試してみたのですが、なんだかちゃんと同期がとれません。レギュレータの設定は変更したのですが、他にも何か変更しなければならない箇所があるように思われます。うーん、レジスタ設定難しいです。とりあえず、aitendoのサンプルデータでVGAは動くので、これで我慢しておこうかと思います。気が向いたら、また挑戦してみましょう。

スイッチ追加

2010-07-03 21:12:30 | CMOSカメラ
CMOSカメラのボードにSparkFunのジョグスイッチを追加。これで、シャッター代りにしようという魂胆です。



撮影時にはジョグスイッチで撮影する解像度も選択できるようにしようと思い、SXGAでのカメラ設定を模索。aitendoのサンプルをもとにVGA設定はなんとかできたのに、SXGAの設定がうまくできません。思いついたのがカメラの初期設定を試すこと。もともとSXGAのカメラなのでレジスタを全てリセットすれば、ディフォルトはSXGAなのではないかと思ったわけです。試してみると、たしかにそのとおりでした。ただし、VGAの時はカメラの出力がRGB 5:6:5であったのに対し、リセットではYCrCb 4:2:2になってしまいます。この色空間の違いはAT91SAM9260の方のISI (Image Sensor Interface)の設定を変更するだけで簡単に対応できます。

LCD画面に表示する時は、画面サイズはQVGAのままですのでSXGAのデータをQVGAに縮小する必要があります。また、LCDへの出力はRGB形式になるので色空間の変換も必要となります。これらの作業もISIのレジスタを設定するだけで対応できます。ソフトでは、ISIが変換した結果得られる RGB 5:5:5のQVGA画像データを RGB 5:6:5に変換して画面に出力するという作業をやってやります。こうやって連続的に画面を更新してやると、なにやら画面の更新が遅いことに気付きました。調べてみると 7.5fpsでしか画面更新が発生していません。OV9655の仕様では SXGAでは 15fps, VGAでは 30fpsということになっています。VGAの時は確かに30fps出ていたのですが、どうやらリセットだけでは15fps出す設定になっていないようです。