June 03, 2010

Super Sylphide 進捗状況(30) -- 委託生産の可能性

すいません、今回の記事は少し堅い話です。

オートパイロットシステムSuper Sylphideですが、ハード、ソフトとしてある程度まとまってきたこともあり、そろそろ内製利用にとどめている現状をできれば打破したいと考えています。ひとつのアイデアとして、業者さんに委託生産を行っていただくという方向性について検討をしている段階ですが、どの程度の初期需要があるのか、というのが業者さんにお願いする上での最低限でのマナーでありますので、その調査に関してこの記事を読んでいる皆様のお力添えをいただきたく、記事を書かせていただきました。
具体的には、以下に示す条件(案)の下においてもSuper Sylphideの購入に興味がある方がいらっしゃれば、僕のアドレス(画面右下にある@gmail.comのアドレス)宛てに、2010/6/18(金)までに、ご連絡先やご意見を沿えてメールをいただけると幸いです。

  • ある程度の規模を有する国内の教育機関、研究機関、会社組織に限る
  • お納めするものはAs isで(納品時に双方確認のもと完動であれば、以後の保証義務関係は存在し得ない)
  • 研究開発用途に限る(前項に関連するが、製品転用などして事故が起きても無保証)
  • ハードとしては全てをお渡しするが、ソフト機能的にはオートパイロットではなく、航法装置(位置や姿勢がINS/GPS複合航法で出力)やそのデータロガーとしての部分
  • ハードやソフトの詳細(ガーバデータやソースコード一式)は別途NDAを結んでいただくなどすることで入手可能
  • 価格については消耗品として決済可能な額を超えない範囲を予定

よろしくお願いいたします。

なお余談になりますが、僕としては、僕が関連する分野の研究開発がこのようなハードやソフトがあって成り立つものであることを重々承知しており、機器を委託生産、販売することによって得られうる利潤よりも、幅広く普及し関連分野が活性化されることを願って、この活動を行っています。自身の人件費が回収できていないことからして、ビジネスとしてはダメダメなことが明らかです。

※次の進捗状況は小型化版のJTAGデバックについてです。

※※委託生産品の製造に踏み切りました。ハードウェアが完成しました。

20:47 fenrir が投稿 : 固定リンク | | このエントリーを含むはてなブックマーク | コメント (0) | トラックバック
このエントリーのトラックバックURL: https://fenrir.naruoka.org/mt/mt-tb.cgi/757

June 15, 2010

HW-offへのお誘い

[Timely]

一週間に一度は記事を書くと決めたはずなのですが、色々と事情があって守れていません、すいません。前回の内容がまじめな内容だったので、今回は生存報告がてら軽めの内容で書くことにしました。

僕の趣味の一つは電子工作なのですが、今度それ系の人々で集まって飲もうよ、という話が待ちあがったので宣伝させていただきます。『6/26 ハードウェアオフ』というものなのですが、半田のヤニの臭いが好きな人たち(笑)が集まって飲もうよ、といういわゆるオフ会です。詳細は上記リンクを見てもらえればよいかと思いますが、だいたい濃い人が集まるのではないかと思います。最近、大人の科学のJapaninoをはじめとして、Arduinoも流行っていることですし、特に何か作っている人は是非いらしてください。

22:31 fenrir が投稿 : 固定リンク | | このエントリーを含むはてなブックマーク | コメント (0) | トラックバック
このエントリーのトラックバックURL: https://fenrir.naruoka.org/mt/mt-tb.cgi/758

June 22, 2010

Arduinoのi2cライブラリ(Wire)の拡張(WireExt)

Arduinoがとても大好き(笑)な僕ですが、カメラからの画像を線を4本つなぐだけで取得できるモジュールをテストする都合もあり、Arduinoを積極的に使っています。今回はその過程でおきた問題で、Arduinoの標準付属ライブラリWireが役不足な故に、その拡張版を作ったというお話です。

TCM8240MD_breakout_and_Amini.jpg
とても小さなテスト環境。

上の写真はそのテスト風景ですが、Arduino Miniと接続している線は電源2本(VCCとGND、VCCは+5V/3.3V両対応)、そしてi2cのSDA/SCLの2本、計4本です。今回のお題であるWireというライブラリは、そのi2cでデータを送信したり受信したりするためのライブラリです。

i2cは2本の線にいろいろな機器を接続できるなどなかなか高機能な規格で、データの送受信についても複数バイトを一つの単位として扱うことができます。言い換えれば転送によって複数バイトで構成されている意味を失わずにすむわけです。例えば今回のカメラモジュールについては、1回のシャッターで撮った画像を1回の転送で処理する、というような対応関係にしました。

ArduinoのライブラリWireもそのような意味づけを扱いやすいように設計されています。例えば送信ならば以下のようなコードを使います。beginTransmission()からendTransmission()までの範囲が一つの単位として送信されます。

Wire.beginTransmission(address);
Wire.send(byte[0]);
Wire.send(byte[1]);
...
Wire.send(byte[n]);
Wire.endTransmission();

一方の受信はこのような使い方をします。ちょっと作りが送信とは違います。

requestFrom(address, n);
while(n > 0){
    if(available() > 0){
        byte b = receive();
        do_somthing_with(b);
        n--;
    }
}

ここで問題が発生しました。カメラモジュールの場合、nがとても大きくなります。例えばVGAで1ピクセルあたり2bytes表現のRGB565を使った画像でしたら640*480*2=614400(bytes)です。Wireではnが内蔵メモリに収まる程度、例えば32bytesまでの範囲でしか使うことが想定されていません。このままだと画像の少し先頭を受信できるだけで、意味がありません。

そこで送信に似た形で受信も無限に行えるよう、Wireの拡張ライブラリをこさえました。その名もWireExt。使い方はbeginReception()とendReception()で囲んでget_byte()でデータを1byteずつ受信できます。アドレスが間違っているなど受信開始に失敗した場合はbeginReception()で負の値が返るので、それを検出して例外処理を行うことができます。さらに、beginReception(address, twbr)とすると、twbrの値を小さくすることで受信スピードを一時的に早くすることもできます(0をいれると最速になり、Arduino Miniでは1Mbps)。

#include <WireExt.h>
void loop(){
    unsigned long count = 0x1000;
    if(WireExt.beginReception(cameraAddress) >= 0){
        while(count > 0){
            byte b = WireExt.get_byte();
            do_somthing_with(b);
            count--;
        }
        WireExt.endReception();
    }
}

ArduinoのlibrariesフォルダにWireExtというフォルダを作成して、中にWireExt.cppWireExt.hkeywords.txtを配置すれば使えるようになります。

01:31 fenrir が投稿 : 固定リンク | | このエントリーを含むはてなブックマーク | コメント (0) | トラックバック
このエントリーのトラックバックURL: https://fenrir.naruoka.org/mt/mt-tb.cgi/759

June 30, 2010

スタバカップスピーカ

[Tips]

先日のMake: Tokyo Meeting 05で買ってきた『なんでも作っちゃう、かも。』@arms22さんのキットを組み立ててみました。スタバカップでスピーカなんてちょっとお洒落です。

stb_speaker.jpg
中はコーヒー、じゃない!

これなら誰かが急に部屋に入ってきてもコーヒーをのんでる振りをしてやり過ごすことができますね(笑)。今度はステレオ環境にしようかなぁ。

23:59 fenrir が投稿 : 固定リンク | | このエントリーを含むはてなブックマーク | コメント (0) | トラックバック
このエントリーのトラックバックURL: https://fenrir.naruoka.org/mt/mt-tb.cgi/760