エントリー

カテゴリー「make:」の検索結果は以下のとおりです。

GPS時計 - 完結編

  • 2009/12/11 14:31
  • カテゴリー:make:

 GPS時計ですが,その後も毎日のように検討を続けていました。

 GPSを使って時刻情報を得ていながら,1秒近くずれるというのはもはや言語道断といえて,何とかなるならしてみたいし,駄目な場合でも駄目な理由を理解してからあきらめたいと思ったからです。

 さて,前回,UARTのボーレートを38400ボーにするということと,使っていないセンテンスは送出させないようにしたこと,それと1秒に1回だったデータの送信周期を1秒に2回にしたことで対応を図ったが,あまり良い結果が得られなかったことを書きました。最大で1秒弱の遅れは解消されず,遅れる時間も長かったり短かったりとバラツキがみられます。

 そして,根本的にGPS本来の精度の時計を作るなら,GPSモジュールから1PPSの信号を得なければどうにもならない,ということもはっきりしました。ここまでが前回までのお話です。

 一般論としてですが,どうもGPSモジュールから出てくる時刻情報は,実際の時刻よりも少しだけ進んでいるのが普通のようです。少しだけ進んだ時刻をマイコンが取り込み,その後やってくる1PPSの信号で表示を更新することで,GPS本来の精度の時計が実現出来るというわけです。

 今回使っているGT-720Fというモジュールはこの1PPSの信号が出ていませんので,そもそもGPS時計を作るのに適していないモジュールを選んでいることになります。

 それに,これまでいじった結果として感じるのですが,少し進んだ時刻が出ているかどうかもあやしいです。

 ということで,1PPSがないと正確な時計を作る事が出来ないなら,GT-720Fから1PPSの信号を引っ張り出せないか,と考えました。

 幸いないことに,GT-720Fで使われているベースバンドチップは,Venus621LPというもので,1PPS信号の出力を持つLSIです。きっと,モジュールのどこかに1PPS信号が出ているに違いないと考えました。

 そこで背面のシールドケースをあけ,1PPS信号を探したのですが,結論からいうと見つかりませんでした。Venus621はBGAパッケージのLSIですから,端子から直接信号を取り出せません。基板上のどこかに出してくれていることを期待したのですが,スルーホールや抵抗などの部品をすべてあたっても,1PPSの出ている箇所を見つけることができませんでした。

 ならば,と衛星をつかまえたことを示すLEDはどうだろう,と考えました。GT-720Fは,衛星をつかまえていない時はLEDが点灯,つかまえると一定間隔で点滅します。

 このLEDの点滅が1PPSに同期しているなら,1PPS信号として使えるでしょう。いい所に気が付いたと思ったのですが,残念ながら全く同期しておらず,無関係でした。この段階で,GT-720Fから1PPS信号を得る事はあきらめ,外したシールドケースを元に戻しました。寂しいですね。


 ここに至って,1秒近く遅れる,という人間の感覚でもばれてしまうズレを,せめて意識しないで済む程度にする,という消極的な方法しかなくなってしまいました。

 そのためには,前回も書きましたが,何らかの理由でずれた時刻が送られて来ても,更新周期を早めて表示を頻繁に行うのが有利です。周期が短いほど,ずれた時刻の表示が正しい時刻になるまでの時間が短くなります。

 そこで,GT-720Fの設定ツールを使って,更新周期を設定可能な最大である1秒間に10回に設定しました。

 また,ボーレートを19200ボーに下げました。これは,38400ボーに上げたところで数msしか高速化されませんし,96バイトとバッファサイズを大きくしてまでこのボーレートで受け取るのは無駄で,64バイトのバッファで受信可能な19200ボーが最適という判断です。

 前回書きましたが,バッファを64バイトにすれば,リングバッファの実現が条件分岐ではなく,ANDによるマスクという処理だけで可能となります。これは処理速度にもコードサイズにも有利です。

 さらに,LCDへのデータ転送タイミングには十分すぎる時間を確保してあったのですが,これを大幅に切り詰めました。LCDへの転送クロック周期はスペックでは500nsから1000ns程度なのに,2msと2000倍も長くとってありました。動作は確実でしょうが,処理時間の大半はLCDへの転送にかかっていたことになります。

 試したところ,確かに見た目のズレはかなり軽減されています。しかし,そのズレ方は一定ではなく,1/10秒くらい遅れているときもあれば,ほとんどずれていない時もあります。

 この違いはなんだろう・・・はっきりしないと,時計として全く信用できません。

 この疑問は,GPSモジュールの吐き出すセンテンスを直接PCで見た時に氷解しました。

 実は,GPGGAにしてもGPRMCにしても,時刻情報として

133227.999

 というデータが,13時32分28秒の段階で送り出されていることがあるようなのです。

 27.999秒というのは,もうほとんど28秒なのですが,1/10秒以下を無視してしまうと,27秒と表示されてしまいます。

 もし,1秒間に1度の更新周期なら,次のデータは28.999秒となり,実際の時刻である29秒との表示のズレは,またしても1秒出てきてしまいます。こうして,GPSモジュールが何かのきっかけでxx.999ではなく,xx.000を出してくれるようになるまで,この1秒の遅れは続きます。

 もし1秒間に2回の更新を行う場合,送られて来るデータは

133227.999 133228.500 132228.999 133229.500

 という順番で出てくる事になり,ズレは0.5秒まで軽減されます。とはいえ,0.5秒のズレはばれてしまいますね。

 さらに,もしなんらかの理由で,

133228.000 133229.000

 という形で送られて来るようになると,.xxxを無視して表示すれば,ほとんどずれることなく表示が出来る事になります。

 さらに調べていくと,.xxxの部分は一定ではなくばらつくこと,バラツキの大きさによって遅れる時間が変わることも分かりました。

 これが,表示時刻が不規則に遅れる理由でした。

 少し実験をします。PCで.999というデータが出ていることを確認した上で,実機の表示を1/10秒まで表示させてみました。すると秒の桁が,

11.1 -> 11.2 -> 11.3 ... -> 11.8 -> 11.9 -> 11.9 -> 12.1 -> 12.2 ...

 という具合に変化します。1/10秒にゼロが表示されないことと,1秒の桁は11.9では変わらず12.1で変わるので,実際の時刻よりも1/10秒遅れているのがよくわかります。

 また,PCで.000で揃ったデータが出ている状態で同様に確認すると,ほとんど同時に表示も変化するようになります。これではっきりしました。

 そこで,暫定的に.999になったら秒のデータに1を加えるという簡易的な方法を試してみたところ,表示は概ねずれることなく更新されるようになったのですが,

18.8 -> 18.9 -> 19.0 -> 19.1 ... 19.8 -> 19.9 -> 1:.0 -> 20.1 ...

 という変則的な表示となり,見た目が非常に悪くなりました。キャラクタコードに1を加えただけの手抜きはダメで,やっぱり真面目にやるしかありません。

 そこで,さらに大幅な変更をします。日付はともかくとして,時刻だけはちゃんと処理する事にしましょう。日付は24時間に一度変化しますが,GPSからのデータの取得はは1秒おきですので,1秒だけ32日とか出てしまうことが考えられますが,まあいいでしょう。メモリも足りませんし。

 このため,これまで直接リングバッファの値を表示用の関数に渡していたものを,一度グローバル変数に取り込んで,文字列-から数値への変換,補正や表示を行う事にしました。

 あと,潜在的なバグとして日付の処理に問題があり,UTCで9日をJSTに変換するところでくだらないミスをしていたため,10日とならず,0:日と表示されていました。配列の宣言のミスで,暴走一歩手前だったことも白状します。お恥ずかしい。

 そうこうして出来た最終的なソースが,以下です。


続きを読む

楽しいAVRでGPS時計を作ってみる

  • 2009/12/08 14:09
  • カテゴリー:make:

ファイル 339-1.jpg

 先日,MakeTokyoMeeting04を見学し,Maker達の熱意にずいぶん影響を受けたのですが,ともあれGPS Laboさんでわけて頂いた,GPS時計プログラムを書き込んだATtiny2313を生かさねばなりません。

 とにかく簡単に試せるという事で,MTM04の直後にGPSモジュールを秋月電子に手配を済ませてあり,翌週の土日から検討に入っています。

 LCDは昨年の今頃,大阪のデジットで入手した大型のLCDモジュールを使う事としましたが,予想通りあっさり動いてしまいました。

 元々,PICをアセンブラで使い慣れている私としては,個性の強いMSP430やPSoCならまだしも,個性の弱いAVRを今さら使うのもどうかなあ,と感じて試す気にならずにいました。

 ところが,GCCが使える(つまり無制限で優秀なCコンパイラが使える)ことと,tiny2313であれば秋月価格で1つ100円と圧倒的に安いことが私にとっては強烈な個性に見えて,軽く遊んでみることにしました。幸いライタは昨年のデジット詣の際に購入済みです。

 GCCが使えるという事から,プロセッサのアーキテクチャが無個性であることがうかがい知れるわけですが,逆にPICでは個性が強すぎてGCCをインプリ出来なかったわけですね。先日も話していたのですが,PICは「クセの強さをアセンブラで味わうマイコン」です。

 開発環境であるAVRstudioも使いやすいですし,tiny2313はちょっとメモリが少ないですが,最大20MIPSという高速処理と,レジスタと内部メモリが1クロックアクセス出来る事もあり,プログラムを作る上で速度低下に気をつけながらコードを書かずに済むため,コンパイラ任せでも精神的に随分楽です。

 わずか100円で20MIPS,豊富なI/OポートをCでグリグリ動かせますから,もうPIC18F84とはおさらばです。ということで,すっかり私はAVRのファンになってしまいました。

 AVRを使うと決めた以上,いろいろ試しておきたくなるのが人情というもので,USIという原始的なシリアルインターフェースモジュールを使ってSPIを実現する(8MHzのクロックで4MHzの転送クロックが出せます)プログラムや,LCD関連のライブラリをひと通り準備しました。

 これは,MacBookPro上にSunのVirtualBoxという仮想マシンを入れて,Windows環境が実現出来たことが随分大きいです。後日書こうと思っていますが,このVirtualBox,かなり出来がよいです。無償ですが,有償の仮想マシンを買う必要を全く感じません。

 余談ですが,x86には仮想マシンを実装するにはやや問題があり,普通に仮想マシンを実装しようとしてもパフォーマンスががた落ちになり,うまくいきません。有償の仮想マシンとして有名なVMwareはこの問題をうまく解決したソフトとして知られていますが,Core2Duoなど仮想マシンを前提とした新しいx86であれば,あまりおかしな事をしなくても仮想マシンをちゃんと実装出来ます。だから,無償の仮想マシンでもなんら問題はないというのが,私の考えだったりします。

 実際の所,VirtualBoxがどうやっているかはわかりませんが,仮想マシンを支援するハードウェアを使うかどうかのオプションがあるので,少なくともパフォーマンスへの貢献はあるのでしょう。

 話が逸れてしまいましたが,開発関連ツールはWindowsが前提なだけに,自宅にまともなWindows環境が手に入ったことはとても大きなことで,今回のAVRを楽しむことだって,その恩恵だと思います。

 それで,GPSクロックですが,どうもうまくありません。

 GPS Laboさんは,処理などに時間がかかり,表示された時刻が正確な時刻ではない,という話をされており,これをきちんと表示させるには1PPSの信号のあるGPSモジュールを使うしかない,といわれていました。

 実際,平気な顔をして1秒くらい表示が遅れています。いかにGPSが原子時計の精度を持っているといっても,表示が1秒もずれたら,正確な時計としては存在価値がありません。

 GPS Laboさんのソフトは,時刻情報の含まれているGPGGAセンテンスを割り込みで一気に80バイトのバッファに取り込み,その後文字列から時刻情報を抽出し,JSTに変換してLCDに転送する仕組みです。初期設定が終わったらひたすら空ループを回すのが,main()の中身だったりします。

 それはそれでいいのですが,割り込みは出来るだけ軽く,という考えからすると,時刻情報の抽出やJSTへの変換,LCD表示などはやはりmain()で処理したいところです。ごく普通に,UARTからの割り込みで1バイトをバッファに取り込む,という処理だけを割り込みで行うと,1センテンスの取り込み完了を待たずに続きの処理が出来る事になるので,表示のアップデートにかかる時間が短縮されて,表示の遅れが小さくなりそうです。

 そこで,UARTの練習も兼ねて,プログラムの書き直しをしてみることにしました。センテンスの処理を行って時刻情報を抽出する部分は流用させて頂きますが,それ以外は他の方のコードを参考にするか,自分で作るかします。

 UARTから受信割り込みがきたら,割り込み処理の関数で1バイトをリングバッファに取り込み,ライトポインタを進め,割り込みから復帰させます。

 main()ではループのなかで$をリングバッファからサーチし,以下に続くGPGGAが見つかったら,続けて取得した文字列をデコード,時刻情報を取り出しJSTに変換,LCDへの転送を行います。

 リングバッファは1センテンス分というより処理が間に合うだけという感じですので,当初は64バイトを確保しました。

 また,ついでにGPRMCセンテンスから日付情報も取得するようにしてみました。

 ところが,これでもやっぱり遅れます。考えてみると,UARTから80バイトを取り込むのにかかる時間は多くても100ms程度ですから,これをゼロにしても,1秒の遅れが解消されるわけではありません。なにが原因なんだろう・・・やっぱり1PPS出力がないとダメなのでしょうか。

 GPSモジュールとしては,MNEA-0183で送り出す測位情報を外部のマイコンで記録してくれることを期待しているわけですから,必要なのはその測位を行った時刻が正確であることです。リアルタイムで正確な時刻を吐き出すことはしていなくても当然です。だからGT-720Fを使う限りは,もう無理なのかなあと思ったのですが,あきらめずにもう少しだけ頑張ってみることにします。

 GT-720Fには,ボーレートを変更するためのツールがあります。9600bpsではなく,これを38400bpsにすれば1センテンスの受信にかかる時間が1/4に短縮されます。

 ということでいろいろツールをいじっていると,別の端子から専用のパルスを出すのとは違いますが,UARTへの出力を1秒で正確に出すことで1PPSが可能になったり,測位を1秒に2回とか4回といったように,測位周期を変えるたり出来ます。また,送り出すセンテンス種類を制限したり,それぞれの送信頻度を調整できたりします。

 タイムゾーンの設定が出来るとJSTへの変換もいらなくなるのでいいなと思ったのですが,設定を行っても反映されないようなのであきらめました。

 これらの設定をいろいろ試行錯誤したところ,AVR側の処理速度と受信バッファの大きさから,38400ボーでは取りこぼしが起きています。64バイトの受信バッファでは,あと数バイトたりない感じです。

 悔しいので,96バイトまで増やすことにしました。

 64バイトだと,リングバッファを実現するのに,リードポインタもライトポインタも0x3fでANDするだけでサイクリックに回せるのですが,96では真面目に96になったかどうかを判定し,真ならゼロにリセットという処理をせねばなりません。せっかくボーレートを上げても,処理が増える事で速度低下が起きるようなら本末転倒ですが,まあやるだけやってみます。

 また測位周期は1秒に1度から1秒に2度にします。これまでは1秒に1度しかGPGGAセンテンスが飛んでこず,よって1秒に1度しか表示が更新されないことになるので,表示のズレが1秒くらい出てきてしまうことは避けられないように思いました。

 しかし,1秒に2回にすれば,500msごとにGGAセンテンスが送られてきて,表示も1秒に2回更新されることになりますから,GPSモジュールが本当に1秒未満のズレで時刻を送ってこなければ,表示のズレは500ms以内に収まるはずです。

 さらに,処理を軽くするために,GPGGAとGPRMC以外のセンテンスの送信を停止し,さらに日付情報が欲しいだけのGPRMCセンテンスの送信頻度を10秒に一度にします。こうすると,GPGGAが運んでくる時刻情報が他のセンテンスに邪魔されず,1PPSを守って送られてくると考えたのです。

 また,AVRの処理速度を根本的に向上させるため,これまで内蔵クロック8MHzだったものを,外部クリスタルによる20MHz駆動としました。UARTのボーレートも正確になり,一石二鳥です。

 そんなこんなで,こんなコードになりました。


続きを読む

Make: Tokyo Meeting 04 - 工作大好き人間のお祭り

  • 2009/11/24 20:13
  • カテゴリー:make:

ファイル 337-1.jpg

 さる11月22日,23日に,大岡山の東京工業大学で,Make: Tokyo Meeting 04(以下MTM04と略)が開催され,私も今回初めて見て来ました。一応工作好きで,Make:は日本語版が出る前から知っており,日本語版もずっと買っているということもあって,以前からいってみたいと思ってましたが,ようやく今回その夢が叶うことになりました。

 電子工作についていえば,アメリカやヨーロッパではそれなりに認知された大人も楽しめる趣味であるのに対し,残念な事に日本では工作=夏休みの宿題という刷り込みからか子供の遊び,と言う先入観が強く,大人が楽しむことは「特殊な例」として見られるようです。(模型や鉄道も同じような感じでしょうか)

 しかし,インターネットの普及によって,国境を越えた情報交換,部品の入手,そして作品の公開が可能となり,にわかに工作という趣味の裾野が広がって来たように感じます。

 一部の硬派なマニアの中には,回路設計も出来ないのになにが電子工作か,アセンブラも出来ないのになにがマイコンか,と眉をひそめる向きもあるようですが,逆に言うとそうした専門的な知識がなくとも電子工作を楽しむ事が出来る環境が整ったことは,もっとたくさんの創意工夫を見ることが出来るようになったと考えるべき事で,歓迎すべき事だと私は思っています。

 それこそいろいろなレベルの人が,ものづくりが楽しいという1点で集うMTM04,私も同じ趣味を持つ人間として,大いに触発されてきました。この居心地の良さは何だと思うほど,本当に楽しく過ごしてきました。

 Make:というよりむしろCraft:に興味のある友人に,友人の妹さん,そして妹さんの友人の清楚で賢そうなかわいらしい女子高生(!)の4人で見学しようという話になっていたわけですが,会場に入るや否や女性3人を放置してピューッと単独行動をしてしまった私は,真のMakerだと誇って良いと思います。

 まず,みんな優しいですね。会場はとても混雑していたのですが,例えば鞄がポンとぶつかったりすると,みんなちゃんと「すみません」といいます。朝の品川では考えられないことで,ここにいる人々が互いに関係のある人として意識し合っていることを感じました。一言で言うと仲間意識とでもいうのでしょうか。

 人が通るときにはさっとよけてあげたり,荷物が通るときには道を作ってあげたりと,みんなやさしいんですよ。物販ブースでもみんな我先にと争うこともなく,丁寧だし,マナーもよいし,こういう集団に自分が属していると思うと,とてもうれしくなります。

 展示をしている人は,自分の作品を公開する勇気のある人ですが,そのレベルは本当にまちまちです。しかしどの人も物怖じせず,気軽に見学者との意見交換を楽しんでいます。

 出展者は別に何かを買ってもらおうと思っているわけではないし,見学者も別に何かを買おうと思っているわけではありません。互いに金銭上の問題や損得勘定を外に置き,むしろ対等な立場で意見の交換を行って,お互いに触発されることを目指しているので,どのブースに行っても面白いお話が出来ます。いやほんと,時間の経つのを忘れてしまうほどです。

 多くの出展者にとって,自分の作品を見てもらうことが大きな目的になっていますから,ウソはつかない前提で「これは面白い」「これはxxxな可能性がありますね」というと,みな一様に喜びます。見学者は見学者で,口だけではなく実際の形にしてきたことに最大限の敬意を払いつつ,自分だったらどうするかなあと妄想し,それを口にしては,最後に互いに「ありがとうございました」でお別れするわけです。

 人混みが苦手の私も,このMakerたちとの接触と,会場の雰囲気の良さに疲れ知らずであちこち見て回っては,出展者の人と利害関係を越えてお話を楽しんできました。

 本当に楽しかったので,お礼も込めて,印象に残ったブースを紹介します。


・学研 / 大人の科学

 MTM04は別にアマチュアの祭典ではなく,アマチュアスピリットのある企業も参加しています。学研もその1つで,大人の科学というシリーズがMakerたちをどれだけ焚き付けてきたかわかりません。

 かくいう私も大人の科学は随分買っていて,その度にその創意工夫に感心します。つまり,電子工作はアマチュアでも出来るのですが,メカ設計やプラスチック成型というのはアマチュアには非現実だということを大人の科学はよく分かってらっしゃって,逆に自分達の得意なところはメカだといって,そこに注力されるところが,素晴らしいのです。

 来年春の予定ですが,前回の4ビットマイコンに続くマイコンシリーズとして8ビットマイコンというのがアナウンスされていました。実体としてはArduino互換のマイコンボードと,これに繋いで実験できるメカ部品のセットになっているものです。左手で持ち,右手でハンドルを釣り竿のリールのように回すと,LEDが8つ列んで付いている棒がワイパーのように左右に動くというものです。

 これでバーサライタが手軽に作れるというわけですが,なにせ付属している基板はArduino互換ですから,可能性は無限です。2回目以降は基板を付属せず,そこに取り付けて遊べるものでシリーズ化していこうと思っています,と言うお話でした。

 「だってこれが我々得意ですから」と,切削で試作されたメカ部分を指さしながら,そんな風におっしゃってるのを聞いて,これはなんと頼もしい話だと思いました。

 あくまで付録ですから,基板の欲しい人は何冊でも買って下さい,と笑ってらっしゃいましたが,前述の通り基板はどうにでもなるが,メカはどうにもなりません。メカを目当てに何冊も買うのもありでしょう。2作目3作目も期待大です。


・ISH / Arduino YM2151シールド

 なにやら聞き慣れた音とYM2151という文字,そして28ピンのDIPパッケージに思わず立ち止まったのですが,そう,4オペレータ・8音ポリのFM音源ICであるYM2151をArduinoのシールドとして基板をおこし,PCから往年のMDXデータを流し込んで,演奏出来るというものが展示されていました。

 その昔,私はYM2151電子オルゴールというのを作ろうと考えていた時期がありました。私の弟は,かつてはMDX作者としてちょっと知られた存在らしく,奴に音色とシーケンスデータの作成をお願いして,マッチ箱くらいの大きさでFM音源がなりまくる,というのを考えていましたが,なんだかんだで散りかかることなしに,お蔵入りとなりました。

 YM2151なんて手に入るんですかと問えば,流通在庫があるようですとのお返事。電源の逝ってしまったX68000から外すというのも手ですねと言えば,自分もそうした口ですとのお返事。

 エミュレータでは心許ないですね,やっぱ実物で音が鳴るから値打ちがあると言えば,満面の笑みでその通りとお返事。やっぱシリコンから出てくるFM音源には格別なものがあります。残念ながら基板の頒布などは部品の入手の問題もあり,考えていないとのこと。

 Arduinoの可能性は本当に無限ですね。YM2151とUSBが繋がってMDXが演奏出来るというのも,Arduinoのおかげでしょう。ただ,私はPC側のソフトは苦手なので,最終的にはPC側も自分で出来ないと,せっかくのArduinoも宝の持ち腐れになってしまいそうです。


・GPS Labo / パラナビ・GPSクロック

 GPSモジュールが安く手に入るようになり,シリアルインターフェースにレベルコンバータまで内蔵したものが普通になって,アマチュアにもGPSが手軽に利用出来るようになりました。

 パラナビはMake:08でも紹介済みのもので,GameboyAdvanceでパラグライダーのナビゲーションシステムを作ったというものですが,残念ながら私はパラグライダーはやりませんので,その隣にあったGPS時計に注目。

 GPSからの信号には時刻情報ものっていますが,これをただ単に表示させるだけのものです。GPSには原子時計が搭載されているので,精度は原子時計並みです。

 これがネットワークに繋がって,NTPサーバになるとすごいでしょうねという話をしますと,それは実はもう取りかかっています,fonの安いルータはLinuxベースで動いていて,ハックできることが分かっているので,これをベースにNTPサーバにする計画で,次のMTMには間に合わせますよ,といわれていました。

 雑誌の記事になったりしたそうですが,アメリカが国防を目的に膨大なお金をかけて打ち上げた測距システムであるGPSを,単純に時刻表示を行うだけに使ったということで,非難する声もあったとかなかったとか。

 しかし,私はそういうアマチュアイズムが大好きで,アメリカにしてやったりと実に痛快です。時間と時計に興味の深い私も,実はGPSを時計代わりに出来ないかと考えた事があったのですが,結局アイデア倒れになっていました。これは是非作ってみようと,そんな話をしていると,出展者の方が「では今動いているマイコンをそのまま1つ,実費の100円でおわけしましょう」と,ビックリするようなお申し出を頂きました。

 悪いですから,といったのですが,どうぞどうぞと言ってくださり,では書き込み代金としてもう100円というと,そんなものはいりません,あくまでTiny2313の代金だけで結構ですと。

 私はAVRのライタを一応持ってはいますが,一度も動かしたことがない体たらくで,自分で焼くのはちょっと面倒だなと思っていただけに,このお話は本当にありがたく,目の前で動いているAVRマイコンをそのまま頂いてきました。

 一緒に必要になるGPSモジュールは秋月電子に注文済み。届いたら早速追試です。


・Jinno / Rainbow Engine

 直接お話はしなかったのですが,電球の熱でスターリングエンジンを回し,偏光板を回転させ,様々な美しい色やパターンを見せるものです。

 これ,見る人によって注目する部分が違っていて,一緒にいた女性達は偏光板の織りなす色とパターンに感心していましたが,私はもっぱら電球の熱でゆっくり動くスターリングエンジンに興味がありました。残念な事にスターリングエンジンは箱に収まっていて動いているところを見ることが出来ませんでした。


・Hotproceed / CupCakeCNC

 3Dプリンタって,まだまだ先の話だと思っていたのですが,ここでは目の前に見ることが出来ます。MicrobotIndustoriesのキットで,USBでPCとつなぎ,3つのステッピングモータで3軸を制御,溶かしたABS樹脂をノズルから吹き出して,立体を印刷します。

 安価に仕上げるために骨格と外板は木製,アクリルで作ったギアなどはいかにもちゃちな印象ですが,出来上がった「印刷物」は,まさに成形品です。

 価格は約16万円だそうで,消耗品のABS樹脂はHotproceedさんが用意してくれるそうです。また,オリジナルとして,もう少し大きなステージを用意したキットも用意されるとのこと。

 結局の所,アマチュアの泣き所は,プラスチック成型です。回路や基板はどうにかなるとして,見た目の悪さが最大の弱点です。また,ギアなどのメカ部品が自分で作れないことも問題で,様々な足かせになっています。これらが3Dプリンタで一気に解決するなら,これはすごいことです。

 木で出来ていること,精度をそんなに追求しているわけではないこと,ノズルの径などから,そんなに精密な加工は出来ないようですが,日本の住宅事情では騒音がひどく切削加工を自宅で行うのは至難の業。音がほとんどでないこの3Dプリンタは,Makerの夢を叶えるものでしょう。


・エレピプロジェクト / DIY型電気ピアノ

 ギターの弦とピックアップを使い,電気ピアノを作ってしまった人がいました。残念ながらご本人ではなくお留守番の方としかお話出来なかったのですが,木の板を使ってピアノの本体,鍵盤,そしてアクションまで手作りされています。ちゃんと音が出ていて,その音は綺麗な澄んだ音でした。

 いわく,製作者の方はベースを弾く方で,その音でピアノを作ったら面白そうと言う,いかにもアマチュアイズムあふれる発想から,実際にアクションまで手作りしてしまうとは,脱帽です。ほんまよーやるわ。

 木工職人さんの協力を得て,きちんと木製パーツを作る目処も立ったそうで,さらに精度の良い,さらに見た目も良い,手作り電気ピアノが,次は見られるかも知れません。


・ごうだまりぽ / 手作りアンテナによる気象衛星受信の展示

 これも詳しい話は伺えませんでしたが,水道用の塩ビパイプをつかって,人の背丈ほどあるアンテナを作り,気象衛星の信号を受信して天気図をPCに表示するというシステムを展示されていました。

 知る人ぞ知る世界ですが,世の中には天気図をFAXで送信してくれるシステムというのがあり,市販のオールバンドレシーバをPCにつなぎ,天気図を表示するフリーウェアを使って音声信号になった天気図をデコードするというのは,今に始まった特別なことではありません。ただ,これを安価な塩ビパイプでやっちゃうところが面白いです。


・Nov-Co / 光るクラフト

 私はMake:だけではなく,Craft:も是非日本語版を出して欲しいと思っている人ですが,このブースはMake:の翻訳者としてもおなじみの金井哲夫さんと奥様の金井伸子さんのお二人が作った光り物クラフトを展示されていました。

 直径8mm程の円盤の縁に,長さ20mm程の4本の細い針金を取り付けます。鳥かごのような見た目になったところで,円盤の真ん中からおもりを付けたワイヤーを垂らします。こうすると振動でおもりが周囲の針金に接触し,導通がおこります。

 そうすると4つのLEDがアットランダムに点灯するようにできるわけで,これをクラフトに仕込むというお話です。このセンサは哲夫さんの発案だと伺いましたが,実に面白いのです。

 例えば,このセンサをマイコンに繋いだらどうだ,センサを複数用意し,それぞれのおもりの重さを変えたらどうだ,LEDを縦横のマトリクスに配置して,複数のセンサからの情報で光らせたらどうだ,など,いっぱい思いつきます。そんな話をしていると,「ここの来ている皆さんのレベルは本当に高くて,いろんな意見をたくさん頂きます」といってらっしゃいました。

 私は,実際にモノを作った方が一番偉いと思うのですが,技術者というのは作ったモノに意見されると,それが良い意見でも悪い意見でも,とりあえず「言い訳」をするものです。

 このブースに限らず,皆さんそうでしたが,言い訳は一切無し。私も彼らの作品にケチをつけるのではなく,私ならこうするかなと言う程度の話を気楽にしただけなので,警戒されずに済んだのかも知れませんが,仕事では出来ない理由ばかりを聞かされるうんざりな毎日を過ごしているだけに,発展的な意見交換が出来る楽しさを,再発見したのでした。


・綛田幸司さん / 藤井の素

 床のゴミを取る粘着ローラーってありますよね,あれにそっくりなものを前後に動かして,ぴぎゃーぴぎゃーいってるものがあったので見ていると,出展者の方に話しかけられました。

 これはなんですか,と聞くと,床の情報を読み取って音に変換する楽器です,とのお返事。確かに床に敷いた紙の上をなぞると,白と黒の文字の状態で音が変化します。

 私はてっきり金属探知機か何かかと思ったのですが,これが楽器になるためには音を止める仕組みが必要だなあと思ったので,音程に加えて,音を出したり止めたりする仕組みがあるといいですね,というと,その発想はありませんでしたとお返事。

 楽器というのはそういうものなのですか,とおっしゃるので,テルミンでもそうですね,音程と音量の調整ができる,多少難しくても演奏者というのは訓練でどうにかしてしまうものなので,音量の調整の仕組みについては,例えば棒を起こす角度で調整するとか,どうですかね,というと,なるほどーと言われていました。

 そうなのです。私にも経験がありますが,自分だけで作っていると,袋小路に入ってしまうのです。赤外線LEDとフォトトランジスタで反射率を捉えて,それを音程にするという所までは実に面白そうだと思う訳ですが,これが楽器になるためにはもう1ステップ進まないといけないわけで,そのためには実際になにか演奏してみようと思う人の意見が役に立ちます。とにかく人と話せば,話した分だけアイデアがわいて出てくるものです。


・Gaje / アナログ電子楽器

 ここもご本人のお話を聞けず,お留守番の方とお話をしたのですが,アナログシンセサイザーのキットを準備中とのことで,どういうものかを見せて頂いていました。

 実は,アナログシンセサイザーというのは,大規模な半導体も必要なく,大げさなプログラムを書くこともなく,根性さえあれば小規模な半導体を繋げて作る事が可能で,その割には表現力のある楽器として成立し,なによりいろんな音が出て面白い,上級者向け電子工作の花形です。

 しかし残念な事に,その小規模な半導体でさえも,入手の難しいものが最近増えてきています。国内ではほぼ枯渇,海外ではわずかに在庫が残っていて,それも争奪戦になっているという状況らしいです。

 というのも,ビンテージシンセサイザーの修理に必要な部品でもあるからですが,そんなこんなで,なかなかアナログシンセサイザーを作るのは難しいのです。

 ここでそんな話をすると,設計意図としてはそこら辺で買える普通の部品で作る,というのを狙っていますと。だから入手の難しい部品は使いませんということでした。

 そういえば,ここのサイトは私も見たことがあります。詳しい回路までは見ていませんが,実機の基板を見ていると,VCFもトランジスタが目に付いたので,Moogのようなラダー型なのかなーと思っています。


・通電未踏組 / オンライン珈琲メーカー「萌香たん」

 家電がネットワークに繋がるとどうなるか,についてなかなか答えの出せない頭の硬いエンジニアが多い中で,今回最も私が素晴らしいと思ったのが,オンライン珈琲メーカーです。

 え,そんなもの珍しくない?まあ,そう言わずに。

 これ,現在mixiでエンジニアとして活躍中の井上さんが作られたものなのですが,ご本人と楽しくお話することが出来ました。

 コーヒーメーカーはコーヒーが出来た時にパイロットランプが消えます。これをCdSで検出,マイコンでA/D変換し,コーヒーが出来たかどうかを判別します。そしてその結果をTwitterで送信。(なんとフォローしている人が少なくないとか)

 しかも,コーヒーが沸いたという通知にいくつものバリエーションがあり,ツンデレ風味のものもあるようです。

 感心したのは,コーヒーメーカーを分解して改造するような,長期信頼性を損なうような方法を採用していないということです。高温,水分,高電圧とこの手の改造には鬼門である要素を廃し,パイロットランプで検出とは,いやはや脱帽です。

 技術的にも面白いですし,ツンデレも結構なのですが,なにより素晴らしいのは,井上さんが,このコーヒーメーカーが「人を集めるトリガになっている」とおっしゃったことです。

 mixiさんではみんなヘッドフォンをして作業をしている人が多く,他の人とのコミュニケーションが取りにくいところがあるのだそうです。私の職場ではヘッドフォンなど出来ないので,文化の違いがあるなあと思っていたのですが,そういう希薄な人間関係の中,できたてが一番おいしいコーヒーが,今まさに出来上がったということをトリガにして,みんな一斉にコーヒーを飲むようになったのだそうです。

 そうしたきっかけで人が集まり,同じ目的のために同じ時間を過ごし,そして少しばかり話が弾むというのは,どんなに楽しいことでしょうか。

 一見すると「いつでもコーヒーがありますよ」の方が便利で気が利いていますよね。でもそうではなく,「今コーヒーが出来ました」に集う人々が,ある種の帰属意識を持つようになるという事実。

 家電がネットワークに繋がることで,新しいコミュニケーションのトリガとなる,こんな素晴らしい話があったかと,そう私は思いました。


・ニコニコ技術部

 私はあまりニコニコ技術部の活動を普段見ていないのですが,なんだかミクがネギを振ることばかりに熱中していて(もっともニコニコ技術部がミクのネギふりから始まったものなので当然ですが),今ひとつミクに夢中になれない私としては,すごいのかすごくないのかよく分からないところで,通り過ぎてしまいました。

 あと,リアル野尻先生もお見かけしました。ついでに,某アニメで知られるパンツ型の飛行機もありました。あれはやっぱり羽ばたいて飛んでいないと,値打ちがないですね。


・オライリー

 エンジニアでオライリーの世話にならない人などもぐりだと思うのですが,オライリーもエンジニアの世話をすることを至上命題にしてくれているらしく,物販にもそういう傾向が見て取れます。

 アメリカで売られているキットなどもありましたが,やっぱりお目当ては本。以前から欲しかった英語版のMake:を探したところ,初年にでた4冊をまとめたBOXが2000円と破格値で出ており,またMakers Notebookも1000円で売られていたので買いました。いや,これはいい買い物ですよ。

 ちなみに友人は,ガチャガチャをやったところ大当たりが出てしまい,どれでも1冊欲しい本を差し上げますというので,時間をかけて選んでいました。うらやましくなった私もガチャガチャをやったところ,普通の缶バッジだったので,無言で立ち去りました。
 

・そのほか

 テスタ棒をスライドさせて音を出す,大人の科学のアナログシンセサイザーをMIDI化すると言う触れ込みで,メカ的に接点をギアで動かし,その位置をMIDIで制御するというものがありました。見た目にインパクトありますね。

 鍵盤を弾くと「ぎょーぎょ」といいながらスライドします。なにが笑ったって,ピッチベンダーを動かすと,微妙にスライダーが左右に動くんですよね。ピッチベンドまで実装してあるとは!

 mini-ITXのATOMのマザーボードに小型の液晶ディスプレイを繋ぎ,スタンドアロンのミキサーを作った人もいました。アルミの筐体に仕込んであるのですが,いわく,Ethernetでオーディオ信号をやりとりするんだそうです。ソフトシンセが入ってくると面白いですねーといったら,それは確かにありですね,と言われていました。

 モノクロの128x64位の小型液晶モジュールを,Windowsから認識してディスプレイにする工作もありました。案外モノクロでもちゃんと見えるものです。WindowsではノートPCの表面に小型のディスプレイを置いて,ここにメールが来たとか,そういう情報を表示する仕組みをもってるそうですが,ほとんど例を見ません。でも,この展示を見たら考えが変わるかも知れません。


 とまあ,こんな感じで,随分楽しんできたのですが,つくづくMTMというのは,ものづくりを趣味とする,あるいはものを実際に作る事を尊敬できる人の,お祭りなんですね。

 見る側が受け手で,出す側が送り手という言い方は,MTMにおいてはちょっと当てはまらないかも知れません。確かにモノを実際に作った出す側がもっとも尊敬を受けることは間違いありませんが,モノを作った人が「自慢がてら」に,見る人とコミュニケーションを取ることの出来るような,そんなチャンスを狙って来られているうちは,やっぱり見る人も同じ目線で楽しむ事が許される,フラットなイベントであると思います。

 そしておそらく,出展者もヘビーな2日間を終えた後,強烈な連帯感で繋がり,出展者同士の繋がりが生まれていることでしょう。それは出展した人の特権ですが,ものづくりを楽しむ人が,縦と横で繋がって,作る側も見る側も,より面白く,より楽しい趣味として進化してくれると,同じ趣味を持つ私も本当にうれしいと思います。

 悲しいことに,私には面白いアイデアが浮かばないという致命的欠陥があります。技術力とて大したことはありませんが,技術と言うのは所詮は道具に過ぎません。面白い事を実現したいという動機がなければ何の意味もありません。

 私がやってることと言えば,カメラのシャッター制御を行う回路をPICマイコンで置き換えるとか,今時珍しい電源同期式の時計を作るとか,そんな程度の話で,実用一点張りです。本人はそれで十分に満足していますが,工夫も面白さも全くないので,つくづくMake:という世界は,技術ではなくアイデアだと痛感しますね。

 何か作ろうとおもって出来るものではない,おもろいことを思いついた時がまさに旬,そんな気分で,自分も本物のMakerになりたいものだと,考えながら大岡山を後にしました。

 次回も,ぜひ行こうと思います。

(追伸)かの清楚で賢そうなかわいらしい女子高生ですが,友人の妹さんと一緒に,とっとと先に帰られてしまいましたよ。そしてMTM04の感想として「イケメンが少ない」と宣っていたとのこと。出展者,見学者,いずれも次は頑張ろう!

PC-E500が動かなくなりました

  • 2009/03/30 14:36
  • カテゴリー:make:

 PC-E500関連のネタはもう昨年の秋で終わりになると思っていたのですが,昨日書かねばならないことが起こってしまいました。

 昨年10月に改造と環境構築が一区切り付いたPC-E500ですが,単4エネループ4本は搭載されたまま,ずっとメモリもバックアップされたままでした。思いついたときに動作試験を行い,電池が切れていないかを調べていたのですが,昨日調べると全く動作しません。

 電池切れはまあ来るべき時が来たか,という感じとして,心配なのはバックアップ電池の消耗によるメモリ内容の完全消去です。

 SRAMですから,電池が切れると苦労してインストールしたソフトや作った環境が全部消えてしまいます。再インストールの手間が大変なのでそれだけは避けたいと思っていましたから,気休めにメモリバックアップ電池をCR2016からCR2032に大型化してあります。しかしCR2032に変えたところで数日でバックアップ電池も消耗してしまいます。

 実はCR2032は切れていませんでしたから,今にして思えば,この時素直に新しい単4電池に入れ替えていればおそらくすべてはうまくいったのでしょうが,私のやることがすんなりうまくいくはずがありません。その時,やはり新しい電池は手元にありませんでした。

 仕方がないので,拡張コネクタの電源端子に安定化電源を突っ込むという荒技にでました。

 ・・・なにも表示されません。メモリ内容がこわれたのかも知れないですね。あきらめてリセット・・・なにも表示されません。壊れたのか!

 電源電圧が低いのかも知れないと思い,少しだけ電圧を上げてみました。勢い余って7V以上の電圧がかかってしまいました。一瞬表示が出てかと思うと,また画面が消えています。電流計を見ると,なんと500mAも流れています。普段の20倍です。

 これは深刻だと,別のマシンから単4電池を取り外して付けてみますが,やっぱり動きません。そうすると,ほんのり背面が暖かくなってきました。

 やばい・・・RAMカードのフタを外すと,私がS3:エリア用に2段重ねで増設したSRAMがむき出しになっているのですが,これを触るとやけどしそうなほど発熱しています。

 やっちゃいました。

 電圧を不意に上げたことで,SRAMがラッチアップして死んでしまったようです。

 これでは起動するはずもありません。私は事態の深刻さをようやく理解したのでした。

 とりあえず修理しなければなりません。発熱したSRAMは2段重ねの上段ですから,まずはこれをニッパーで足を切り取り外します。ここで動けば下段のSRAMは壊れていない可能性があります。(壊れていないとは言い切れませんし,壊れてなくてもストレスがかかっているわけですから,寿命は極端に短くなっていることでしょう)

 試したところ,幸いにも起動します。下段のSRAMも壊れているかも知れませんが,壊れていない可能性も高くなってきました。

 そこで同じSRAMの新品を1つ用意し,交換。うまく起動してくれました。動作電流もスタンバイ電流も問題はなさそうです。

 この2つのSRAMの全アドレスに55hとAAhを書き込み,メモリテストを行いましたが,無事に通りました。直ったようです。

 そして一番面倒なソフトのインストールと環境構築。日本語環境とエディタ,そしてファイラーの最低限の環境だけ整えて終了とします。この間3時間。いやー,時間の無駄とはこういう事をいうんでしょうね。

 ところで単4のエネループは750mAh程度の容量があるようです。この改造されたPC-E500では,スタンバイ電流が200uA程ありますから,ざっと3750時間となります。日数に直すと156日ですので約5ヶ月と言うことになります。

 今回のPC-E500では,メインの単4電池はすっからかんでしたが,メモリバックアップ用のCR-2032は2.7V程度でしたので,メインの電池が切れてそれほど時間は経っていないと思われます。

 それで,昨年10月に電池を入れ替えていましたので,電池が切れたのが最近とすれば約5ヶ月。恐ろしいほど正確です。実際,DC-DCコンバータの搭載とSRAMの増設でどれくらい電池が持つのか気になっていましたが,なんとか期待した通りになってくれていたことがわかり,安心しました。

 ということで,今後は4ヶ月くらいで電池を入れ替えた方が良さそうです。

 実は,前日の土曜日には,palmTXへの以降の総仕上げとして,課題として残っていたWristPDAの環境設定とデータの共有にチャレンジしていましたが,やはりはまりまくりました。ざっと6時間かかってようやく動くようになったのですが,これもまあ時間の無駄と言えば,その通りでしょう。

 友人が私にそそのかされてchumbyを買い,やはり土日に完全引きこもりで遊び倒したそうですが,どういうわけかこの手のガジェットというのは,我々の心をとらえて放さない何かを放っているような気がします。

遅ればせながらPSoC

  • 2009/02/20 15:06
  • カテゴリー:make:

 MicrochipのPICマイコンが成功を収めたことで,国内外の小型マイコンは新しい方向性を模索するようになりました。かつて,Z80や8086,68000あたりの汎用CPUはなんとかアマチュアにも使えるだけの環境を整えることができたのですが,組み込み用のマイクロコントローラについては,数は膨大なものがあるにもかかわらず,開発環境はおろか技術資料さえもアマチュアには手に入りにくい関係で,長く「知られざる存在」でした。

 90年代前半まで,マイクロコントローラの開発環境はICEとコンパイラで100万円,技術資料は分厚いデータブックしかなくメーカーに頼んで購入するしかありませんでした。

 アーキテクチャは特殊で文献は皆無,仮に苦労の末開発が出来てもそれを実機で動かすために,プログラムをマイコンのROMに書き込むライターが何十万円,さらにマスクROMに書き込むには数千個の注文が必要と,全くアマチュアの利用を想定していません。

 そもそも,20年ほど前の電子部品というのは,プロもアマチュアも共通でした。2SC1815はアマチュアでは長く定番ですが,当時のプロの設計者でも定番でした。そんな中で,プロ用とアマチュア用で完全に分かれていた数少ない部品がマイクロコントローラだったといっていいでしょう。つまり,半導体メーカーにとっても売り上げが大きい主力商品であったマイクロコントローラは,秋葉原の部品屋さんでは買うことの出来なかった部品だったわけです。(たとえ手に入っても全く使い物にならないので買う人もいないのですが)

 余談ですが,プロの設計者の部品が面実装品になり,アマチュアが使う部品との差が大きく広がった今日,アマチュアが使える定番部品は使用量が減り,どんどん生産中止になっています。在庫もかなりありますし,中国などではまだ大量に使われているので現地のメーカーが生産を続けていますから,プロのおこぼれをもらうアマチュアにとってそんなに慌てるような話ではないにせよ,アマチュアが真空管などのプロが絶対に使わない部品で工作を好んでするようになったこともあり,いつまで電子工作というホビーが生き残れるのか,不安になります。

 前置きが長くなりましたが,そんなマイクロコントローラの世界を大きく変えたのが,PICです。PICそのものは意外にマイクロコントローラ黎明期から存在する古典的プロセッサを源流に持つものなのですが,当時の米国系マイクロコントローラでメジャーだった8048や6801,8051や68HC11に比べて,

・パッケージが小さく8ピンから20ピンくらい
・機能を絞り込み低価格
・低消費電力で電池で動く,その割に結構高速
・アセンブラなど開発ツールが無償
・技術資料やデータシートも無償
・ICEもライターも安い,ライターは自作も可能
・そして参考書や使用例が豊富にある

 と,アマチュアにとっての障害が,ことごとく取り払われていることが画期的でした。アメリカでプロアマを問わず広く使われるようになり,日本でも90年代中頃に,アマチュアからブームとなりました。今ではプロも製品に組み込むことが普通になった,草の根からメジャーに上り詰めたマイコンです。

 こうしたなか,アマチュアをバカに出来ないと思いを新たにしたかつてのマイクロコントローラ先進国,日本のメーカーも,PICと同じ方法でアマチュアへの売り込みを図っていますが,なかなか浸透しないのもまたマイクロコントローラの世界で,思うようにアマチュアに使ってもらえていないような感じです。(私に言わせれば,全然日本のメーカーは分かってないです)

 しかし,アメリカではその後も実に面白いマイクロコントローラがいくつも生まれています。AVR,MSP430,dsPIC,そして今回のPSoCもそうです。どれも先に挙げた特徴を最低限のものとして備え,さらにそこから特徴のある個性を主張しています。

 私はPIC以外ではAVR,MSP430を触ったことがある程度なのですが,以前から気になっていたのがPSoCです。果たしてPSoCがマイクロコントローラなのか,と問われれば,必ずしもそういう「狭い」言い方が正しいとは思いません。PSoCにとってマイクロコントローラは機能の1つである以上,PSoCの本質はさらに深いところにあります。

 PSoCはアメリカのCypressが作るマイクロコントローラで,Programmable System on Chipの略とされています。簡単に言うと,PICに見られるマイクロコントローラの特徴に加えて,

・アナログ回路をチップ内に作ることが出来る
・デジタル回路もチップ内に作ることが出来る
・もちろん普通のマイコンも入っている
・それぞれ自由に繋いで使う事が出来る
・実に多くのライブラリが完備されていて,下位レベルをほとんど自分で書く必要がない
・開発ツールにGUIが多用されており,気が付いたら使えるようになっている

 という点が際立っています。

 アナログ回路をチップ内で作ることが出来る,というのはPSoCの最大の特徴で,オペアンプ,コンパレータ,PGA,ADコンバータ,スイッチトキャパシタを内蔵しており,ユーザーはそれらを組み合わせ,またパラメータを設定して純粋なアナログ回路をチップ内部に作ることが出来ます。

 デジタル回路についても同様ですが,PLDとは違って論理回路を合成できるわけではありません。ただ,基本的な論理演算回路が複数入っており,これを組み合わせてタイマやカウンタ,CRC演算器,乱数発生器やUART,I2Cなどを作ることが出来るようになっています。マイコンのペリフェラルもこれで作られます。

 マイコンは大した性能は持っていませんが,最大24MHzで動作,4MIPS程度の能力を持つ8bitのプロセッサです。ただ,PSoCはアナログデジタル混載のプログラマブルシステムLSIを標榜しているので,マイコンも「システムの1つ」に過ぎない扱いです。事実,そのアーキテクチャについて詳しく知る必要性はほとんどありません。

 そしてこれが最大の特徴なのですが,ライブラリがあまりに豊富なのです。

 Cypressでは,先程のアナログ,デジタルの回路のうち,よく使われるものを雛形として提供しています。これをユーザーモジュールと呼んでいるのですが,開発ツールであるPSoC Designerで使いたいユーザーモジュールをGUIで配置し,パラメータを設定すれば,後は基本的な回路ブロックを組み合わせて構築し,初期化のプログラム,そしてアプリケーションからアクセスするためのライブラリまで自動的に生成してくれるのです。

 例えば,先程のスイッチトキャパシタを使ってバンドパスフィルタを作る場合,ユーザーモジュールとして既に用意されているバンドパスフィルタを使えば,フィルタの仕様だけで所望のバンドパスフィルタをPSoC内部に実装し,しかも初期化プログラムに加えてマイコンからパラメータをいじるためのAPIまで完備してくれるというわけです。

 アナログでもここまでやるのですから,デジタルでは当たり前の話で,なんとSDカードのインターフェースのようなものまでユーザーモジュールになっています。

 こいつはすごくて,ハードウェアはSPIを使ってSDカードに接続,ソフトウェアはそのSPIの初期化やドライブはもちろん,低レベルのアクセス関数はおろか,FATファイルシステムまで完備されており,ユーザーはファイルを開いて閉じてするだけです。いっときますが,これがワンチップのマイクロコントローラで出来るのです。汎用OSも搭載されていなければ,SDカードインターフェースをペリフェラルで持っているわけでもないのです。

 さらに面白い例があります。秋月電子などで16桁x2行のLCDキャラクタ表示モジュールが売られており,内蔵されているHD44780互換のLCDコントローラはすでに業界標準になっていますが,これを前提にしたLCD表示も,ユーザーモジュールで出来てしまうのです。

 従来,この手のLCDモジュールは,4bitもしくは8bitのデータバスとE信号やRS信号,R/W信号のコントロールバスをマイコンのGPIOにつなぎ,ソフトでそれぞれのポートをタイミング良くソフトで上げ下げして使っていました。慣れた人だと簡単なのですが,それでも自前で用意することは変わりません。

 GPIOの初期化に始まり,LCDの初期化,データの送受信,1文字の表示,そして文字列の表示と,階層を1つずつ上げてソフトを自前で用意しないといけないのですが,PSoCではユーザーモジュールをぽんとGUIで置けば必要なGPIOがLCD用に確保され,それらを初期化して動かすAPIが用意されます。

 例えば,LCDの左上から3文字目の所に「TEST」と表示するプログラムは,

  LCD_1_Start();           // LCDの初期化
  LCD_1_Position(0,3);     // 書く場所を指定
  LCD_1_PrCString("TEST"); // 書く

 と,わずか3行です。本当にこれだけです。他の部分になにかおまじないを書かないといけないとか,一切ありません。mainの中にこの3行を書きさえすれば,LCDにTESTと表示されます。

 こんな具合にまさにProgrammableなSystem on Chipをアマチュアが作る事の出来るPSoCですが,アナログ回路とデジタル回路,そしてマイコンの3つが同時並行で動くことを十二分に活用しマイコンに頼らないリアルタイムシステムを実現するのもよいでしょうし,ライブラリが充実して手軽に動かせるという利便性でPICの代わりに使うことだってよい使い道です。例えばUARTで受けたデータをSDカードに保存するというシステムを,PICで作るとかなり大変ですが,PSoCならあっという間です。

 それにデジタルのブロックがUARTやI2C,SPIに化けてくれるので,そもそも製品の品種が非常に少なく整理されており,手元に2種類程度のPSoCを置いておけばどんな用途に使えてしまうフレキシビリティも,アマチュアにはうれしい話です。

 アマチュアが手軽に使えるマイクロコントローラはPICによって開花し,内蔵メモリの増大や処理能力の向上,あるいは低消費電力という観点で進化してきましたが,結局それらはマイクロコントローラを越えたものではありません。

 はっきりいって,多少のアーキテクチャの差はあっても,結局出来る事はどれも同じ,マイクロコントローラの差はメモリの大きさと内蔵ペリフェラルの種類と数,そして価格と消費電力だという話の裏返しであり,もう大した興味も沸かないという方は多いと思います。

 それなら使い慣れたPICやAVRで十分となるのですが,PSoCの面白さは自由度の高さを高機能に振ることも,扱いの簡便さに振ることも可能であるということと,ユーザーは最終的にやりたいと思うことの実現に専念出来るということにあります。

 これが,System on Chipたるゆえんなのだと思います。アナログの回路をマイコンからサクサク叩いたり,デジタルのユーザーモジュールと連携させたり,果てはダイナミックコンフィギュレーションを行ってみたりと,従来なら様々な回路を組み合わせ大規模にせざるを得なかった回路をワンチップで(しかも自前で)作る事が,低レベルの関数の整備やレジスタの初期化など面倒で非創造的な作業で手を汚すことなく出来てしまうことに,ただただ感服するばかりです。いやー,アメリカはすごいなあ。

 欧米では,プロアマを問わず,プロトタイピングという「でっち上げ」をつくることがとても重要視されています。マイコンを応用したでっち上げは,電気回路の専門家とソフトウェアを書く人がいないとダメなのですが,これでは工業デザイナーや企画担当者が思いついたことをすぐに実現出来ません。

 そこで,そんな非専門家でもマイコン応用機器が作れるような環境がメジャーになっています。よく知られているArduinoはAVRベースで,習熟の容易なプログラム言語が通るシステムプログラムが書き込み済みです。

 PSoCは,チップ単体でこのプロトタイピングが可能なくらいに簡便化されています。同じ事をやるのに簡単な方がいいに決まっています。

 頭で「ほーすごいなあ」と思って半年,実際に触ってみないといけないと考えて半日触ってみましたが,まさにこの面白さは新次元です。

 さてさて,そんなPSoCですから,何を作るか,がとても重要です。

 アナログのユーザーモジュールを使い倒さないとPSoCの真の姿は見えてきませんし,だけどPICよりも簡単に使える簡便性でPIC16F84の置き換えとしても捨てがたいです。
 
 なにを作りましょうかねえ。

ページ移動

ユーティリティ

2020年05月

- - - - - 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31 - - - - - -

検索

エントリー検索フォーム
キーワード

ユーザー

新着画像

新着エントリー

過去ログ

Feed