June 03, 2010Super Sylphide 進捗状況(30) -- 委託生産の可能性すいません、今回の記事は少し堅い話です。 オートパイロットシステムSuper Sylphideですが、ハード、ソフトとしてある程度まとまってきたこともあり、そろそろ内製利用にとどめている現状をできれば打破したいと考えています。ひとつのアイデアとして、業者さんに委託生産を行っていただくという方向性について検討をしている段階ですが、どの程度の初期需要があるのか、というのが業者さんにお願いする上での最低限でのマナーでありますので、その調査に関してこの記事を読んでいる皆様のお力添えをいただきたく、記事を書かせていただきました。
よろしくお願いいたします。 なお余談になりますが、僕としては、僕が関連する分野の研究開発がこのようなハードやソフトがあって成り立つものであることを重々承知しており、機器を委託生産、販売することによって得られうる利潤よりも、幅広く普及し関連分野が活性化されることを願って、この活動を行っています。自身の人件費が回収できていないことからして、ビジネスとしてはダメダメなことが明らかです。 ※次の進捗状況は小型化版のJTAGデバックについてです。 ※※委託生産品の製造に踏み切りました。ハードウェアが完成しました。 June 15, 2010HW-offへのお誘い
[Timely]
一週間に一度は記事を書くと決めたはずなのですが、色々と事情があって守れていません、すいません。前回の内容がまじめな内容だったので、今回は生存報告がてら軽めの内容で書くことにしました。 僕の趣味の一つは電子工作なのですが、今度それ系の人々で集まって飲もうよ、という話が待ちあがったので宣伝させていただきます。『6/26 ハードウェアオフ』というものなのですが、半田のヤニの臭いが好きな人たち(笑)が集まって飲もうよ、といういわゆるオフ会です。詳細は上記リンクを見てもらえればよいかと思いますが、だいたい濃い人が集まるのではないかと思います。最近、大人の科学のJapaninoをはじめとして、Arduinoも流行っていることですし、特に何か作っている人は是非いらしてください。 June 22, 2010Arduinoのi2cライブラリ(Wire)の拡張(WireExt)Arduinoがとても大好き(笑)な僕ですが、カメラからの画像を線を4本つなぐだけで取得できるモジュールをテストする都合もあり、Arduinoを積極的に使っています。今回はその過程でおきた問題で、Arduinoの標準付属ライブラリWireが役不足な故に、その拡張版を作ったというお話です。 上の写真はそのテスト風景ですが、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.cppとWireExt.h、keywords.txtを配置すれば使えるようになります。 June 30, 2010スタバカップスピーカ
[Tips]
先日のMake: Tokyo Meeting 05で買ってきた『なんでも作っちゃう、かも。』の@arms22さんのキットを組み立ててみました。スタバカップでスピーカなんてちょっとお洒落です。 これなら誰かが急に部屋に入ってきてもコーヒーをのんでる振りをしてやり過ごすことができますね(笑)。今度はステレオ環境にしようかなぁ。 |
かれんだ~
スポンサード リンク
|