スキップしてメイン コンテンツに移動

投稿

OV7670で取得したRAW画像をPCで表示する

CMOSカメラのOV7670を使って、RAW画像を取得し、PCで現像してみた。 電源の3.3V化改造を行ったArduino MEGA(1280)にビデオFIFO付きOV7670モジュールをとりつけて画像取得の実験をしている。 製造時期により、若干設計が違う製品がAliexpressでは入り乱れている。 トラ技のOV7670特集より以前に買っていたので、リビジョンが一つ古く、回路図が変更されていることに気づかず結構時間を取られた。 (古いモジュールはFIFOのWRSTが引き出されていて、VSYNCと繋がっていない)  画像データ自体はビデオFIFO(AL422B)によって、カメラ側のクロックを気にせず好きなタイミングで読み出し可能だ。なので、あとはどういった解像度やフォーマットを選ぶかとなる。目的によって様々なサイズやフォーマットを使い分けることになるが、今回はVGAサイズの静止画を撮ることだけを考えてみたい。  ということで、CMOSセンサの出力フォーマットの生の値である、BayerRAWで撮ってみた。 このFIFOつきカメラモジュールでVGA解像度を取得するなら、これが一番簡単だ。 OV7670の主な画像出力形式は次に示すものとなる。 ・YUV  : 16bit/pixcek(4:2:2) ビデオ機器の色空間 ・RGB  : 16bit/pixcel(565) ビットマップ ・RAW  : 8bit/pixcel センサの画素の生出力。 YUVとRGBはOV7670の内蔵DSPがエンコードした色空間フォーマットで、本来1画素1色しか表現できない一般的な撮像素子で、隣接する画素から色情報を補完したもの。 対してRAWは、画素毎のアナログ処理を経た生データ。 受け取った側では、画素上のベイヤーパターン(カラーフィルタの配列)と、縦横解像度の情報を元に色情報を補完(現像)する必要がある。 単純にデータサイズで見れば、RAWで出力するとデータ量は1バイト/Pixcelで済むため半分になり、384kBのFIFO付きモジュールでVGAサイズ1枚の画像を取得することができる。  (YUV、RGBでもウインドウ機能を使って、FIFOの容量に収まるウインドウ...

Arduino Mini v5

Arduinoは様々な形態の互換機が売られているが、公式ボードだけでもかなりのバリエーションが存在する。 下は日本ではあまりお目にかからない、公式の最小ボード。Arduino mini v5 わけあってプロジェクトに組み込まれようとしているところ。 小さな箱はピンヘッダ付きの物を頼むとついてくる。 v5というリビジョンが示すように、実際は以前からラインナップされているのだが、Pro miniのほうが流通しているので知らない人も多いのでは。 公式のボードはどれも若干所有欲をくすぐるパッケージングがされている。 一見Arduino Pro mini(Sparkfun製)に似ているが、Pro miniよりもピンヘッダ1列分短い。ピン配列の他に、 ・5Vのみ ・FTDI配列の書き込み器用のピンヘッダは付いてない。 ・シリアル書き込みに必要な、DTRリセット用のコンデンサは付いてない という点には注意が必要。 試作というより、Arduino UNO等で試作した回路を、基板に組み込むためのソリューションとして用意されていると考えると良いみたい。

小さな太陽電池パネルを作る

2センチ角程度で、開放電圧5V程度の太陽電池パネルが見つからないので自作してみた。 出来たもののスペックは、22x22mmで 4.5V 10mA。単結晶シリコンのモジュールとなった。 ・・・・ 100mW以下の太陽電池を選ぶときは、開放電圧におおよその最適動作点となる0.8を掛けた電圧が、負荷となる回路の動作電圧に近いものを選ぶと、自然とインピーダンスが合うので無理が無い。 お手本になったソーラーLEDライトの太陽電池の開放は4.5~5V付近で、8割だと3.6~4V付近となる。LEDに3.5V程度必要なので、その充電池を充電するのにちょうどよい値となっている。  キーライト用途のほとんどはアモルファスシリコン。取り出してしまうと、ガラス基板なので結構デリケートだ。  安いけれど効率はそれなり。写真のパネルで直射日光下で1~3mA程度。  電池を1Fの電気二重層コンデンサに置き換え、 PICを動かしてみたり (過去記事)しているけど、もう少し効率的なものが欲しい。 大きさに制限のあるものに組み込もうとすると、効率が低いことをカバーしようとすれば、負荷を軽減するしかない。  ある程度の高効率を求めて、次に手を出してみたのが多結晶シリコンのパネル 中国の業者から輸入してみたもの。 モーター付きおもちゃなどに使われているもの。  パネルは多結晶シリコンを基板に乗せて、エポキシ樹脂で封入したタイプ。  ただ、小さいパネルは開放電圧が0.5Vだったり、1.5V程度のパネルしか見つからず失敗。  いくつか直列につなげるしかなくて、せっかく正方形でも単体では生かしにくい。  足りない電圧は昇圧という手段もあるけれど、実用的なのは数Wレベルのパネルでの話で、100mW以下だと変換効率によるロスが大きくなるという。 昇圧前提で真面目に考えるなら(若干観点がおかしいが)、家庭用ソーラパネルの単結晶セル(120x120mm)を買って、1枚をMPPT回路内蔵の昇圧ICで昇圧するのがちょうど良さそうだ。 ……… ということでセルを買ってパネルを作ることにする。無いなら作るしかないじゃない! アメリカの業者(SolarMade)から購...

Energia(IDE)でMSP430/Stellaris LM4F開発

MSP430向けに開発されたArduinoAPI互換IDE  Energia 。  最近MSP430LaunchPadを買ったついで最新版を確認したら、 Stellaris LaunchPad と MSP-EXP430FR5739 がサポートされていた。 (追記)Stellarisは名前が変わって Tiva™ C となった。 開発ボードはTM4C123G LaunchPadとなる模様。 ・・・・ MSP430LaunchPadは、Texas Instruments(TI)社の16bitマイコン MSP430 シリーズの開発用ボード。MSP430のバリューラインという石を開発できる。 Stellaris LaunchPad(通称StellarPad)は LM4F120H5QRというCortex-M4FコアのARMマイコン開発ボード。 MSP430は結構前に 購入していた が、先日もう一つ追加で買った(千石電商)。  今のロットでは同梱される石がピン数が多く周辺回路が豊富なものに変更されている。 以前ついていたものはバリューラインの中でも下位モデルだった。 もう一つ、StellarPad のほうは届いて以来積み基板と化していた…。 準備 Energiaをダウンロードして解凍するのとは別に、デバッガのドライバをインストールする。 ドライバの在り処はTIのWikiを参照。 (EnergiaにはMSP430のドライバが付属するけど、32bit用のみだった)  Windowsでは、MSP430は実行ファイルを一つ実行するだけだが、Stellarisはデバイス管理画面から、Stellarisのデバッガについて複数の項目(仮想UART、パラレルポートドライバ等)を一つ一つ当てる。 あとは、Energia上でマイコン種別と、仮想UARTポートを指定するだけ。 デバッガ経由なので、書き込みがとてもスピーディ。 ハードウェアまわり ・各ボードの ピン配置図 ・MSP430LaunchPadはボードRevによって若干仕様が違うので、要確認。 ・MSP430はIDE/Hardware にある boards.txtのボード定義を編集するだけで動作周波数を変更可能。 ...

SDLoggerを試す

OpenLog  シリアル-SDロガーといえば、2年ほど前から OpenLog というプロジェクトの製品版を使っている。 オリジナルのOpenLogはATmega328Pベースだけど、最近ふと思ったのが、もうちょっと余裕のあるATmega644Pを使えば、RXバッファ用のRAMも増えるし、ロガーと言いつつソースにJPEGカメラのコマンド操作を追加すれば、SparkfunのJPEGトリガーみたいに使えるんじゃないかという点。  その観点でググってみると、同じコンセプトのSDLoggerというプロジェクトが2年前からあって、SeedStudioから販売されていたことを知った…。  (人は見たいものしか見えないんだなあ…)  SDLogger   http://www.seeedstudio.com/wiki/SDLogger_-_Open_Hardware_Data_Logger  github        https://github.com/magnuskarlsson/SDLogger  ATmega328Pで取りうるRXバッファ量が少ないという懸念は、2年前の使用感を引きずっていただけで、本家OpenLogの最新のファームウェア(v3.1)を見たらだいぶチューンナップされていて、昔みたいに連続書き込みで問題が起きることは無さそうだ。   RAMもROMもギリギリまで使い込まれている上に、Arduino1.0環境で互換機として書き込みができる。 もし古いファームウェア(コマンドで確認できる)を持っているなら、本家のサイトの説明を読んで最新のものを書き込んでみるとよいだろう。    ということで、お手軽なOpenLogと比較すると、SDLoggerはそのままOpenLogのスケッチが走る上位互換機として、余ったROM/RAMとI/Oを使って何か特化したロガーを作ってみるのに向いてそうだ。  とりあえず、手持ちの部品でSDLoggerを組み立ててみた。 ・ATmega644P(DIPなら秋月で入手できる) ・14.7456MHzの水晶...

RPN電卓(WP-34S)

 設計のお供に関数電卓。  昔から気になっていたHPのRPN電卓に手を出してみた。  HPの電卓は逆ポーランド記法(RPN)というので有名で、宇宙開発とも縁が深いという話がある。 RPNを試してみたいなら、スマートフォン用に、RealCalc(Android)やPCalc Lite(iOS)といった、RPNにも対応したアプリがある。 少額で直感的なバイナリ計算などに対応するので便利だ。   現在入手できるRPN電卓は、過去の製品を復刻したものや、ビジネス向けモデル、グラフィック表示の科学計算用などのラインナップがある。 HP-35Sにも食指が伸びたけど、他にも候補を調べていたところ、WP-34Sというプロジェクトがあるのを知った。  WP-34Sは、HPの関数電卓のエミュレータとして開発され、実際にHP-20b/30bというビジネス用電卓のROMを書き換えて、科学計算ができる独自ファームウェアを載せるというプロジェクト。 自分はコミュニティーベースのハードウェアに弱い。 WP-34S   http://sourceforge.net/projects/wp34s/   ダウンロードからエミュレータ、バイナリ、充実したドキュメントが手に入る。 書き換え手段などはドキュメントに全部書いてあった。実機が無くても遊べる。  追記) iOSだと、Appストアからも入手できた。 HP-30b 書き換え前 HP-20bと30bという機種は回路図と開発環境が公開されていて、搭載されているAtmelのAT91SAM(ARM7)のプログラミングも可能となっている。 HP-10シリーズの復刻版の機種はこれで過去のバイナリをエミュレートしているとか。 WP-34S化した状態  ROM書き換えをするとキーの機能も変更になるが、耐久性のあるシールが配布されていて、HP-30bをeBayで買うのと同時に購入した。 HP-20bなら日本のAmazonでも取り扱いがあるし、ソフトウェア的には違いは無い。 30bを輸入したのは、キーがしっかりした作りであるという情報による。 30bはフロントが金属仕...

ギブスンのトリロジー

1972年のNewsweek誌 (押入れから発見されたもの) The  future is already here  — it's just not very evenly distributed. ウィリアム・ギブスンの言葉。  ギブスンの作品を初めて読んだのは高校3年の頃、模試の途中で立ち寄った本屋で買った「ニューロマンサー」 だった。 サイバーパンクの最高峰、独特な言い回しでカルト的な人気がある。 とはいえ、書かれたのは自分が生まれる4年前で、 サイバースペースはすでに古典と化していた。  短編ほか、代表的な3部作が3つあるが、 ニューロマンサーの後に書かれた2つの三部作はあまり噂を聞かなかった。 訳書も絶版で、中古本しかなく入手性がよくない。なので原書(Kindle版)を読破した。  この3つのシリーズを通してみると、ギブスンの作品はその当時の時代が色濃く反映されているのだと思う。技術好きなのでガジェット描写に注目してしまうけど、あくまで主役はそのガジェットが偏在する世界で暮らす人間達の物語だ。  橋三部作と、SF要素の無くなった新三部作についても、現在のネットや技術文化で起こっている現象を先取りしているようで、とても興味深い。 もっと入手性が良いとおすすめしやすいのだが…。 ということで、原書で読んだシリーズのあらすじを適当に整理しておこう。 スプロール三部作  「ニューロマンサー」、 「カウント・ゼロ」、「モナ・リザ・オーヴァドライブ」 80年代を1世紀くらい続けた先の近未来世界で、サイバースペースのハッカー、サイボーグの殺し屋といったヤバい仕事人たちがAIにこき使われるお話(超意訳)。  膨大な情報を解釈するために用意された仮想現実とネット。ソフトウェアとして流通する技能、レンタルビデオのように氾濫する五感メディアと人格ROM構造物。 ヒトがガジェットと化した未来世界で、混沌から生まれようとしている新たな知性…  復刊もされているため、たいていの人がニューロマンサーから入門すると思うけれど、入門が一番の難関だったりする。 自分の耳の後ろには早い段階でSF用ソケットが埋設されていたので、それほど困難は無かった...