Arduinoベースの加速度計を改造

Arduinoベースの加速度計ですが、思ったよりも電池の消費が大きく20mAくらい食っています。ですので、200mAhの006P型の電池では10時間くらいしか持ちません。しかし、頻繁に地震で揺れるので、できれば電源をいれたままにしておきたいところです。(最初の思惑では5mAくらいに収まって、丸2日くらい動かないかな~、と思っていたのですが・・・)

そこで、後改造で綺麗とは言い難いのですが、12VのACアダプタでの駆動としてみました。

ついでに、NiMH電池へのごく簡単な充電回路も追加しました。

といっても、簡単にするためにトリクル充電としています。本来はNiMH電池はトリクル充電には向いていないのですが、充電電流も7mA程度と時間率に直すと28時間程度なのでよしとすることにしました。

また大きな余震が・・・

東日本大震災から1ヶ月の今日の夕方17時16分、再び大きな余震がありました。

震源は北緯36.9度、東経140.7度、マグニチュードM7.1、震源の深さは10kmだそうです。
今回の地震では自作加速度計では20くらいの値(計算があっていれば単位はgal)を表示していましたので、震度4にギリギリ入るくらいのところでしょうか。

もう少しメモリとパワーのあるマイコンが使えれば、リアルタイムで計測震度表示をしてみたいところですが・・・。

CY8C24123A-24PXIでLEDチカチカ

先にインストールしたPSoC DesignerでLEDチカチカしてみました。

まず、ストレス発散に一言。

『PSoC Designer 使いにくいっ!!』

なにが使いにくいかというと、内部処理でいろいろと怪しい橋を渡っているのか、KasperskyがWarningを頻繁にあげてきます。さらに、内部的にバッチファイルを生成してそれを呼び出すことでコンフィギュレーションとビルドを行うみたいなのですが、バッチファイルがKasperskyにブロックされてしまいます。バッチファイルの名前が毎回違うので、ブロック対象から外すこともできず、かといって、Kasperskyの機能を丸ごと無効にする気にもならずでどうしようもありません。

さらに、HEXファイルも生成される箇所が2箇所あることがあるようで、しかも、片方しか更新されない場合があります。PSoC Designerから呼ばれるProgrammerは別プロセスにはならない(=ウインドウが出ている間はPSoC Designerの操作はできない)ので、別途PSoC Programmerを起動しておく方がビルドと実行のサイクルが早いわけですが、片方しか更新されない(しかもどっちが更新されるかルールがまだよくわからない)ので、ビルドしたつもりでも書き込まれるのは古いHEXだったりすることがあったようです。(書き込む際にHEXファイルのタイムスタンプでも表示してくれれば気づくのですが、それもない)

かといって、別プログラムのPSoC Programmerを使わずに、PSoC Designerの組み込みのプログラマを使おうしても、先述の通り閉じないとDesignerの操作ができないのでウインドウは出したままにできないし、アイコン一発で書込みできるわけでもないので、ものすごく面倒くさいです。

まだまだ文句はあるのだけどこの辺にして、上記の苦闘6時間の末、とりあえずLEDチカチカできました。

8ピンのCY8C24123Aで出力端子2本にLEDを接続し、PWM16とPWM8でチカチカをさせました。

ソースはPSoCらしく非常に簡単で、設定はすべてプロパティで行うので、Start()のみです。

//—————————————————————————-
// C main line
//—————————————————————————-

#include // part specific constants and macros
#include “PSoCAPI.h” // PSoC API definitions for all User Modules

void main(void)
{
// M8C_EnableGInt ; // Uncomment this line to enable Global Interrupts
// Insert your main routine code here.
PWM16_1_Start();
PWM8_1_Start();
}

ビルドに際しては、先述の様に今ひとつ上手くいかないです。

本来は、赤矢印の「Generate/Build Project」だけで上手くいくべきなのでしょうが、先述の通り、途中でDesignerが生成したバッチファイルの起動ができずにすっ飛ばしてしまうことがあります。そのため、Buildは青矢印の方を使って個別に行います。で、生成されたHEXファイルを書き込んで完了です。

今時、セキュリティ対策ソフトは欠かせないのですから、きちんと共存できるように作ってほしいものです。(本当はLinux版が欲しい所なのですが・・・)

PSoC環境構築

ふとしたことから、しばらく前に見た鼓動にあわせて光るペンダントの記事を思い出しました。

・・・で、ペンダント形にするかどうかはともかくとして、鼓動に合わせて光るものを作ってみたい、ということで、なんとなくPSoCの開発環境を引っ張り出してみました。

で、最新のPSoC Programmer(書込みツール)とPSoC Desginer(開発環境)をインストールしました。で、PSoC Programmerを起動後、手持ちのPSoC MiniPROGを認識するかと思ってUSBで接続したら・・・認識しません。(;_;)

Googleさんに聞いてみたら、ドライバを手動でインストールしなければならないようでです。

デバイスマネージャで「!」マークがついているプログラマを選択して、「C:\Program Files\Cyress\Programmer\3.12.4\drivers\mprog1」フォルダにあるINFファイルをインストールしたら、認識するようになりました。

・・・あっちこっち試してみてるからなかなか完成しないんだよなぁ・・・。

昨日の地震の前兆?

昨日(4月7日)の午前11時くらいのできごとですが、3月11日の地震の数時間前と同様に地鳴りのような音を感じていました。

といっても、3月11日のように「コォォォォーッ」というような感じではなく、「コッゴッコッゴッコッゴッ・・・・」というような感じです。前回と同じく、やはり窓を開けてみたのですが、前回同様、外から聞こえる音ではありません。前回に比べると微かでわかりにくかったのですが、それでも3月11日のことがありましたので、どこから音がしているのか突き止めるために職場内を歩き回って調べましたが、前回と同じように窓の外から聞こえる気がする(感じるという方が適切な表現かもしれません)ばかりで正体はわかりませんでした。今回は、近くにいた同期の友人に聞いても「そんなの聞こえない」とのことでした。

そうこうしているうちに、11時40分に茨城県沖でM4.9の地震が発生しました。

で、その後、ほとんど聞こえなくなってしまいましたので、その前兆だったのかな、とも思いましたが、M4.9の地震の前兆なんて当たっても意味がありません(それこそたくさん起きている)ので、結局3月11日の地鳴りが聞こえた(感じた)のも気のせいだったんだろう、とそれで妙にすっきりしてすっかり忘れていました。

・・・が、よく考えると、昨夜の宮城県沖のM7.4の地震の前兆だったのでしょうか・・?

空白域がある??

AQUAシステムにいち早く情報が載るので、いつも地震が起きたらチェックする防災科学研究所Hi-net自動処理震源マップをたまたまみていたら、デフォルト表示の『日本全国広域』の『最新30日間』で埼玉・群馬・長野・山梨の4県が接するあたりに明らかな空白域が見えることに気がつきました。(画像を含むデータの転載はできないので、自分で見てください)

・・・・が、「日本全国拡大」や「東日本」に拡大すると、そんなにはっきりした空白域にはみえませんでした・・・。

東日本の拡大図をみていると、今度はこんなところで地震が多いことに気がつきました。

  • 群馬栃木の県境、白根山の地域
  • 新潟県の苗場から十日町にかけての地域
  • 白馬~鹿島槍ヶ岳~立山の北アルプス地域
  • 密度は低いですが、いわゆる南アルプス地域

どこも山なのが興味深いです。

宮城県で強い余震発生

4月7日23時32分に宮城県沖で強い地震がありました。

職場にいた前回と違って今回は自宅にいました。前回は翌日帰宅してみたら本棚のものがかなり放り出されていたのですが、今回は本棚の上から多少落ちてくるくらいでした。

また、Arduinoベースの加速度計では15(gal)程度の値を表示していました。

今回の震央は北緯38.2度、東経142度、マグニチュードM7.4、震源の深さは約40kmとのことだそうです。通常であれば、かなりの規模の地震ですが、3/11の大地震の前では余震にみえてしまいます。

HT7750Aを試す

これまでの製作で電池動作をさせる場合には006Pタイプの電池とLDOレギュレータの組み合わせでやってきましたが、006PタイプのNiMH電池は単価が1個800円程度もします。しかも、容量が200mAh程度しかなく、(電圧低下を無視すると)8.4V×0.2Ah=1.68Wh程度の電力量しかありません。さらにLDOで熱に変えてしまいますから、実質的には1.68Wh×5V/8.4V=1.0Wh程度です。

そこで、100円ショップでも入手可能な単三のNiMH電池と安価なスイッチングレギュレータの組み合わせでいけないかということで、HOLTEKの三端子スイッチングレギュレータの実験をしてみました。理屈の上では、1.2Vから5Vを85%(Typ)で生成しますので、100円ショップでも入手可能な1300mAhのNiMH電池でも、1.2V×1300mAh×85%=1.3Wh程度ということで同程度の駆動時間は得られますし、1900mAhのeneloopを使えば1.2V×1900mAh×85%=1.9Whと倍近い駆動時間が得られるはずです。

で、まずはブレッドボードに組んでみました。回路はデータシートほぼそのまま・・・ですが、タンタルコンデンサではなく電解コンデンサと0.1uFの積層セラミックコンデンサの組み合わせです。インダクタは手持ちの100uAのチョークコイルです。出力に470Ωの抵抗を介して白色LEDを接続しています。470Ωの両端の電圧を測ると810mVですから、負荷は1.7mA程度です。この時の出力電圧は5.03Vでした。

負荷として470Ωを1本並列に足すと4.74V、2本で4.50V、3本で4.11Vとなりました。大雑把には1本で10mA程度の負荷になりますから、10mA程度で電圧が下がり始めることになります。負荷に470Ωを3本追加した状態で電池を充電済みのeneloopに変えてみたのですが、4.19Vにしかなりませんでした。

次に電源のeneloopを2本直列にしてみますと、470Ω負荷0本(LEDのみ)で5.07V、1本で5.10V、2本で5.10V、3本で4.82Vということで、20mAを越えると電圧が下がり始めます。

今回はブレッドボードに組んでいますし、コンデンサも電解+積層セラミックの組み合わせですのでHT7750Aの本来の性能が出ていない可能性もありますが、あまり余裕はないようです。三端子で構成が簡単なのは魅力ですが、よく注意して使わないと思わぬ落とし穴がありそうです。

ArduinoでSDカード(2)

前回ハードウェアが完成しましたので、とりあえず動かしてみます。

といっても、サンプルにすでにありましたので、「File」→「Examples」→「SD」→「DataLogger」でデータロガーのサンプルを開きます。

ソースをみると、冒頭にCS信号に関するコメントが記載されています。どうやらEthernetShieldとの関係で、デフォルトは4pinがCSになっているようです。自分は10pinに接続していますので、最初の方の

const int chipSelect = 4;

を4ではなく10に変更します。

これで、コンパイル・ダウンロードしてやると、A0、A1につないだジョイスティックの値と、何もつないでいないままのA2の値がSDカードに書かれていくようになりました。

ただ、1回のデータ収集毎にファイルクローズしているせいか、1サンプル/1秒程度の動作となってしまっています。そうしなければ電源断やリセット時にファイルが失われるので、仕方ないのですが・・・。

改めてUSBメモリにUbuntuをインストール(2)

アップデートが完了したら、必要なものをインストールしていきます。

まずはブラウザです。

  • Google Chrome

次に、Synapticでインストールできるものをインストールします。

  • KlamAV
  • GIMP
  • WINE
  • avrdude/avr-libc
  • jhead
  • openjdk-6-jre
  • Gufw

以下のものは個別にインストールしていきます。

  • Broadcom用無線LANドライバ(システム管理の「ハードウェアドライバ」から)

さらに、以下の作業を行います。

完了したら、以下のコマンドでディスクイメージのバックアップを取っておきます。

$ sudo dd if=/dev/sdc of=イメージファイル名

これでディスクイメージを準備できました。