復興に向けた大連立は誰のため?

朝日新聞の記事によると、民主党・自民党・公明党の大連立の機運が盛り上がってきた、とあります。しかし、その背景は、民主党側はガレキ処理とか仮設住宅とか早急が必要なものへの対応、というのがありそうですが、一方で巨額の震災被害(記事によれば16兆円~25兆円)への復興事業に関与を求める声が自民党内のベテラン議員を中心に高まってきているだとか・・・。で、実現させるために、巨額の復興事業に関わる大臣ポストをいくつか用意するんだそうで。

それで連立するのかしないのかわからないけれど、これで釣られる方も釣られる方だし、釣るのにそんな餌を用意する方も用意する方だと思う。記事によれば「民主党幹部は『運び方さえ間違わなければ大連立に進む』とか自信を示してる」んだとか。言い換えれば『金を餌にするから入れ食い間違いなし!』としか聞こえないんですけどね。

復興はもちろん最優先事項だけど、この大連立に向けた動きは、どうも金と利権の匂いしかしない。自民党のベテラン議員と民主党の幹部、一体何なんでしょうね。この組み合わせでは、どうしても表向きの箱物事業のイメージしか沸きません。しかも、箱物に全予算をつぎ込んで終わってしまう気がします。

今回の震災からの復興は今後の日本のいわゆる国家100年の計の礎ともなりうるものだと思います。現在の日本の経済状況からして、限られた予算でいかに効率よく回していくかが求められるはずです。それなのに、いきなりこれでは先が思いやられます・・・。

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

今日は改めてUSBメモリにUbuntuをインストールします。

目的はポータブルな環境を作る・・・ことではなくて、ちょっと無茶なことをやってみるとか、変わったことをやってみるための実験用の環境にするためです。もちろん、VMwareを使うという手もあるのですが、USBなどで何かを接続する場合などハードウェアが絡んでくる場合にはVMwareは面倒くさいのです。なので、Ubuntuで作った環境を dd でイメージを採取しておくことにします。

インストールするのは定番の 10.04LTS です。BIOSでSATAを殺してHDDが見えないようにした後、CD-ROMで起動します。起動後のインストールにあたってはユーザー名を聞いてきますが、どうせ実運用の環境ではありませんから、その場で消してしまう、あるいは、その場できちんとユーザーを作り直す前提にします。ユーザー名はrootにしようかと思いましたが、システムに組み込まれているので「ubuntu」にしておきました。ログインは後でユーザーを追加する前提なので、ログイン時にパスワードを要求させます。

再起動すると、膨大なアップデートが待っています。この時点では392個、305MBでした。延々とアップデートを進めます。

各国のロボットが福島に結集?

今回の東日本大震災を発端とする福島第一原子力発電所の事故の事態収拾のため、各国のロボットが人が入れないところでの作業用などに集まってくると報道がされています。

もともと日本はASIMOや産業用などのロボット技術では進んでいたはず・・・なのですが、今回はどうも海外のものが注目されています。で、日本でもJCOの臨界事故を受けて、放射線強度が高いとこで活動できるロボットを開発したらしいのですが、維持する予算がなかったために動かせる状態にないらしい。原子力事故などはないにこしたことはないし、あったとしても滅多にあるものではないのだけど、だからといって備えをしなくてもいいというわけでもない。しかし、原子力事故だけを目的に開発・維持管理するのは無理があります。他の用途とあわせて自衛隊などの装備にするのがあるべき姿なのではないかと思うのですが、どうなのでしょう。

会社組織でも同じですが、なんと縦割り&セクショナリズムが激しいことでしょう・・・。

また、日本でも民間企業でも無人で空撮ができる機器をもっている会社があるようです。また、その写真が載っているサイトがありました。

ArduinoでSDカード(1)

センサが読めるようになったら、今度はそれをロギングしたくなるのは当然と言えるでしょう。

というわけで、こんなものを作ってみました。

単にSDカードのソケットをユニバーサル基板に載せただけです。載せるにあたって、位置合わせ用のエンボスを切り飛ばしたり、端の方の2.54ミリピッチに合わないピンをそっと曲げたりして載せてあります。当然、SPIモードでの接続です。

後ろのArduinoは3.3V/8MHz動作版のArduino(Akidukino)です。ただ、液晶モジュールは5V動作のものが多いので両方付けようとすると結構面倒くさい・・・。

Arduinoでジョイスティックの値を読む

今度はArduinoでジョイスティックの値を読んでみました。

こんな感じでA0とA1にジョイスティックの出力を接続します。

プログラミングはさすがに超簡単です。

これだけでジョイスティックの値を読んで、シリアルコンソールに出力し、その値に応じてLEDを点滅させてくれました。

PIC10F222でジョイスティックの値を読む

PIC10F222でA/D変換した値を9600bpsで送信できるようになったので、抵抗式のアナログジョイスティックを接続してみました。

接続したところはこんな感じです。

左上に小さな変換基板が2つありますが、その下の方に10F222が載っています。上の方の変換基板には10F200が載っていますがどこにもつながっていません。そして、右半分にAkidukino(秋月Arduino)がありますが、電源供給とUSB-UART変換の部分しか使っていません。右下のTXDのジャンパのところに左上のPIC10F222の4pin(GP2)からのUART出力がつながっていて、右上のAE-UM232Rを通してPCに接続されています。

PIC10F222部分の拡大です。

アナログジョイスティック部分の拡大です。

これでアナログジョイスティックをぐりぐり動かすと、それに応じてUARTに送信される値が変化します。中央部分は摩擦によるヒステリシスのようなものがあるようで、実際に使う場合にはそれをどうキャンセルして違和感がないように見せるかが問われそうです。

今回はブレッドボードにバラで搭載しましたが、PIC10F222は安価ですのでヒステリシスをごまかしたりした上で電源、GND、シリアル出力の3線で使えるアナログジョイスティックモジュール、なんてものも作れそうです。

ちなみにArduinoがあるなら、直接そのアナログ入力で受ければいいじゃないか、という声が聞こえてきそうですが、まさにその通りです。ただ、これはPIC10F222の実験なので、これはこれでいいということで・・・。

東京電力の記者会見で思うこと

まず、先に福島第一原子力発電所の現場で奮闘されている東京電力の関係者の方々、自衛隊や消防庁などの方々、本当にお疲れさまです。おそらくはまさに戦場ともいえる状況での皆様の奮闘を想像すると、感謝と尊敬の念を抱かずにはいられません。また、負傷された方もいらっしゃるとニュースで伝えられていますが、無事に回復されることをお祈り申し上げます。

さて、朝日新聞のサイトで、東京電力の記者会見の様子を伝える記事がありました。

その中で、最後に会見が荒れた様子が伝えられています。

『電源がすべて失われた場合を想定しなかったのは何故か?』『それに対してどのような対策を講じてきたのか?』という質問に対して、東京電力は『津波が想定外だった』という回答をしています。途中をすっ飛ばして、『津波が想定外だった』という回答を初っ端からするのもよくないけれども、そもそも外部電源が全て喪失した場合に自力で動けるように発電機を用意していたわけです。津波が想定外で、その発電機が流されてしまった、電源に関する最悪の事態に対する備えが失われた、というのが答えなのに、記者は内容を理解することなく突っ込みつづけています。これではまったく議論にならないでしょう。

例えるなら、地震で外部から食料調達ができなくなるかもしれないので、災害に対する食料備蓄をしていた。しかし、それが予想をはるかに越える津波で流されてしまった。そんな状況で『災害時に腹が減ることは想定していなかったのか?』という質問をしているようにしか見えません。なんとも滑稽な話です。

また、『現状の最悪の事態がどうのこうの』とやっていますが、そんなものは原子力に関する基礎的な知識があればおおよそ予想がつく話で、言葉尻を捉えてセンセーショナルな記事を書きたいだけにしか見えません。最悪の場合は単純に、現状維持で放射性物質の漏洩が続く、もしくは機器や配管の破損が進んで放射性物質の漏洩が増えていく、それだけのことなのではないかと思います。もちろん、そうならないように現場の方々が奮闘しているのに失礼な話だと思います。

一方で、今回の東日本大震災での津波が必ずしも想定外だったかというとそういうわけでもないようです。毎日新聞の記事によると、2009年の6月に原発の耐震性再評価に関する中間報告書案の審議会で専門家から貞観津波の再来が近いことを警告されていたのに、「十分な情報がない」と先送りしていたようです。しかし、1100年も前の出来事について詳細な情報があるわけがありません(自分がWebで素人なりに調べた結果は3月14日の記事を見てください)。つまり、うやむやにしようとしていたところで今回の震災に伴う事故が起きてしまった、という状況のようです。

東京電力は民間企業ですから、経営陣からすれば余計な経費をかけたくないのも理解できます。しかし、高い公益性をもつ企業として原子力という正しく使わなければ危険な道具を託されているわけです。もっと重大な責任感をもって対応してもらわなければ困ります。

自分の勤務する会社でも経済のグローバル化に伴う国際会計基準の厳密な適用などで、経営部門の権限がどんどん強くなってきているように思います。CSR(企業の社会的責任)とかが謳われていますが、自分の勤務する会社ではあくまで建前にしかみえません。幸い、自分の関わるものは社会インフラを支えるものや、人命に関わるようなものではないのですが、それでも技術的に危ない、人として倫理的にどうなの、と思うことがあっても、結局経済論理が最優先で判断されてしまっています。

このような風潮が日本中のもっと重要な箇所でも起きているのではないかと心配です(社内にも社会インフラや人命に関わる機器を扱う部門も存在します)。安全性に関してはもちろん規格がありますが、「規格を通りさえすれば良い」という考え方と、「規格の主旨に則って設計し、規格で確認する」という考え方では全く違います。

技術立国日本とよく言われますが、現場を知らない/理解しようとしない経営部門の前に急激に脆くなってきているのではないかと心配です。

PIC10F222でA/D変換

UART送信プログラムができたところでターゲットをPIC10F200からA/D内蔵のPIC10F222に変更して、実際にA/D変換させたものをソフトUARTで送信して、それをAE-UM232R経由でPC上のTeraTermに表示させてみました。

10F222は内部の発振周波数が8MHzも選択できるので、8MHzに設定した上で通信速度も9600bpsに変更しました。(Waitも現物あわせしなおしです)

A/D変換の対象は内部の0.6Vの電圧リファレンス、AN0/AN1の3つです。表示は内部リファレンス、AN0、AN1の順でスペースを開けてHEXで送信します。

こちらは機能が少ない分だけあっさり動作しました。PICKit2がつながっているとAN0/AN1は0のままなので面白みも何もないですが、PICKit2を外して、端子に指を触れると指からのノイズに応じた値を表示できました。

プログラムは一応アップロードしておきます。⇒10F222 A/D変換プログラム

使用したMPLABのバージョンは8.60、CコンパイラはHITECH-Cの9.80(評価用です。インストールしてから時間が経っているので最適化がかからなくなっています)です。

PIC10FでソフトUART

PIC10F2xxの使い道として、PIC10F222のA/DコンバータでA/D変換した値をUARTで送信する使い方を考えてみました。ターゲットはアナログジョイスティックで、実験用に値をA/D変換してPCに送りつける使い方です。で、まずその準備としてPIC10F200でソフトウェアUARTを作ってみました。(送信だけなので正確にはUARTではないですが・・・)

これで1200bpsで文字を送信してくれます。なお、真ん中あたりに71回の無駄なループがありますが、これで送信速度(1bitの時間)を調整しています。調整はオシロスコープを見ながら現物あわせです。現物あわせですから、コンパイラのバージョンが変わると速度が合わなくなってしまう可能性もあります。TMR0を使ってきちんとタイミングを取る方法で作りかけたのですが、サイズが大きくなるのでやめました。

作成途中ではまったのは、以下の点です。

  1. 1ビットの時間が安定しないと思ったら、ウォッチドッグタイマが動いていた。
    MPLABのメニューのConfigure設定で禁止していると思ったら、禁止できていなかったです。やはりソース内に記述してしまうのが安心です。記述方法はHITECH-Cのマニュアル(PDFファイル)内に記載があります。
  2. OSCCALの値が破損していた。
    リセット解除するたびに1ビットの時間が 大きくばらつくので、やはり使い物にならないかと思ってあきらめかけたのですが、よく考えるとクロックの周波数自体は1%の精度が保証されているので精度としては十分なはずです。何が起きているのかと思ったら、ROMの最終番地に書かれているMOVLW命令が破損していました。つまり、リセット解除時の不定なWレジスタの値がOSCCALレジスタに書かれていたわけです。PicKit2のToolsメニューの中に、OSCCALの値を復活させる機能があるので、それで復旧したところ綺麗に直りました。

・・・・が、これだけで10F200の256バイトのROMのうち167バイト(65%)、16バイトのRAMのうち10バイトを使ってしまいます。10F222ならもう少し大きくなるとはいえ、数値を文字列に変換することなどを考えると苦しそうです。数値をバイナリで送るとかであれば何とか使えるかもしれません。

PIC10Fシリーズ

加速度計で地震がそれなりに検出できそうなので、揺れを検出したらブザーを鳴らしたいと思ったのですが、Arduinoではタイマーはすでに使われていて、500HzのPWM信号しか出力できません。そこで、ブザー自体を外部で生成することを考え、手持ちの米粒マイコンPIC10F200/222を試してみました。

SOT-23なので、変換基板を介してブレッドボードに実装してテストしました。残念ながら直接タイマーから出力できないのでタイマーを監視しながらソフトウェアでポートを制御することになります。本当にブザーだけであればまあまあですが、周期の精度が多少バラつくのか今ひとつ濁った音になります。

こちらはまだ動かしていませんが、PIC10F222です。ROM容量が倍の512バイト、RAM容量が約1.5倍の23バイト、8bit A/Dコンバータ内蔵です。