サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
CES 2025
fenrir.naruoka.org
プログラムを書いていて少し気になることがありました。べき乗を求めるpowという関数がありますが、二乗の場合はpow(x, 2)と書くのと(x * x)と書くので、どちらが速く実行されるのでしょうか。早速ベンチマークを取ってみようということになりました。 僕の予想としては、コンパイラが最適化してくれるおかげでどちらでも同じ結果が得られるだろうという予想です。皆さんはどうでしょうか。結果は続きをどうぞ。 ベンチマークの環境は以下のとおりです。 コンパイラ: M$ VC2005 Express Editionコンパイラオプション 主に/O2 /arch:SSE2(その他はmakefileVC8参照)ソースコードはpow2_test.cpp開発、実行環境はThinkPad X60s (Core Duo L2400 1.66GHz + RAM 2GB) + M$ Windows XP SP2 ベンチ
最近は簡単に半田付けできないタイプの半導体を扱うことが多く、半田付けに失敗することがそれなりにあります。特にBGAパッケージはとても嫌いなパッケージです。そこで失敗してもやり直しがきくよう、BGAの裏の半田ボールを再生するリボールの環境を整え、リボールをやってみました。 用意したのは、ホットエアー(FR-803)が大物で、その他にリボール用の専用台、ステンシル、半田ボール、フラックスです。大物以外はすべてebayで購入し、全部合わせても30ドル程度でした。 以下、写真で紹介します。 リボール用の専用台は、上下に分かれていて、BGAパッケージを下側にセットした後、ステンシルがはめ込まれた上側で挟み込みます。(ステンシルの四隅が汚れているのは違う目的で使ったためです、新品では当然汚れていませんでした。) リボール台にフラックスを塗ったBGAパッケージ、ステンシルをセットし、その上に半田ボールを
オートパイロットシステムTinyFeatherですが、開発環境を見直そうと考えています。その一環として、JTAGエミュレータなどのハードやコンパイラといったソフトウェアを揃えなくとも、ちょっとしたスクリプトを書くだけで制御系を構築できるようにしようと考えています。その一環として、スクリプト言語を搭載することにしました。いくつか候補があったのですが、僕はmrubyを選びました。Rubyが好きだからです(笑)。 取り急ぎ、mrubyが動作している様子を掲載してみようと思います。 配列やハッシュ、算術演算、evalを試してみました。TinyFeatherとPCを擬似シリアル(USBのCDC)で繋げ、PCからシリアルボートにアクセスしている画面です。送受信が両方表示されており、見難くてすいません。TinyFeatherの中ではDSP(Texas Instruments TMS320C6745)上で
Arduinoがとても大好き(笑)な僕ですが、カメラからの画像を線を4本つなぐだけで取得できるモジュールをテストする都合もあり、Arduinoを積極的に使っています。今回はその過程でおきた問題で、Arduinoの標準付属ライブラリWireが役不足な故に、その拡張版を作ったというお話です。 とても小さなテスト環境。 上の写真はそのテスト風景ですが、Arduino Miniと接続している線は電源2本(VCCとGND、VCCは+5V/3.3V両対応)、そしてi2cのSDA/SCLの2本、計4本です。今回のお題であるWireというライブラリは、そのi2cでデータを送信したり受信したりするためのライブラリです。 i2cは2本の線にいろいろな機器を接続できるなどなかなか高機能な規格で、データの送受信についても複数バイトを一つの単位として扱うことができます。言い換えれば転送によって複数バイトで構成されて
« Super Sylphide 進捗状況(55) -- Super Sylphide と Tiny Feather の図 | Top | ペダルたん 来た! » 積みハードとなりつつあるすごいロガー(NinjaScan)ですが、ようやく中身のソフトウェアを開発する時間が確保できそうになりました。そこでまずは、NinjaScanに搭載されたSTM32F4の開発環境を整えてみることにしました。ARMを搭載したLinuxは弄ったことがある(Chumby等)のですが、ARM系マイコンを直接触るのははじめてなので、一から調べなおしてみました。 世の中には色々派閥があるようで、中には特定の開発環境を使うと全身から血を吹く奇病に罹っている方もおられる(ねむいさん、いつも大変参考にしております、笑)ようですが、その中から僕はeclipseでコーディング、およびデバッグ環境を整えることにしました。Tiny
オートパイロットシステムTinyFeatherの航法部分が安定して動作するようになったので、また新しい企画を立ち上げてみました。題して『すごいロガー』です。すごいロガーは加速度や角速度、地磁気、GPS緯度経度といった生データのログ、および演算で速度や位置、姿勢などの航法情報を求める航法機器になる予定です。 なんだ、また今までお馴染みのやつじゃないか、と思われるかもしれませんが、すごいロガーの"すごい"部分はその大きさにあります。1 x 1.4 inch (26 x 36mm)です。現在すごいロガーは回路図、および基板アートワークが完了し、基板の発注をかけました。例によってアートワークをあげてみたいと思います。 表と裏。1 x 1.4 inch。 両面基板に無理やり詰め込みました。載る予定の半導体は以下のとおりです。 STMicroelectronics STM32F405RG : ARM
センサをはじめ半導体をいじっていると、厄介なパッケージに遭遇することがあります。内側までパッドがしっかりあるBGAは、基板を多層化しなければいけない等難易度が遥かに高いので諦めがつくのですが、裏面にしかパッドがないが外周にパッドが並んでいるQFNに代表されるパッケージですと、あと一歩のところなので大変悔しい思いです。 一般的に裏面にしかパッドがないパッケージは、半田マスクを作ってペースト半田を塗布、リフローで半田づけというプロセスを経ます。しかし少量しか作成しないものですと、マスクを作ったり、あるいはオーブンやホットエアといった装置を導入するのが惜しいので、悔しさひとしおです。そこで、半田ごてだけで対処する方法考えてみました。僕が試した限りでは比較的成功率が高い方法ですが、全部が全部うまくいくというわけではないことをはじめに断わっておこうと思います。 コツはチップと基板、両方のパッドに先に
加速度計やジャイロといった慣性センサがあると、物の動きがわかって面白いです。ところが半田付けが難しかったり、入手が困難であったり、といった理由で、センサを選んで基板を起こして組み上げる、というのはホビーユーザには非常に敷居が高い状態です。最近はそのような事情に配慮して、センサをある程度くみ上げた状態のIMU(Inertial Measurement Unit)で販売しているのを結構見かけるようになりました。ここではそのようなIMUの中から魅力的なものを集めて、紹介したいと思います。随時更新しますので、素敵なものが漏れている場合は教えていただけると、僕が狂喜乱舞します。 なお条件ですが、あまり高くないこと(200ドル以下)が第一です。あと6自由度(各速度計の加速度XYZとジャイロによる角速度XYZ)計測できることも基本的な条件にしたいと思います。そして半田付けが大変でないことも重要です。 s
先日の大震災の影響で関東地方では電力の供給不足という状況に陥っていますが、それに関連して、東京電力には電力の消費状況をモニタするサイト『電力の使用状況グラフ(当社サービスエリア内)』があります。このサイトでは電力の消費状況に加えて計画停電の実行状況を知ることもできます。 ところがこのサイト、データが画像として提供されているだけで、APIなどコンピュータフレンドリな方法が一切なく、他の機器でこのデータを応用することが難しくなっています。そこで、この画像を読み取り数値データに変換するスクリプトを作成してみました。 即席なので、特定の画素の色データを読み込んで数値に変換するといういい加減なコードです。ですが例えば、電力消費がやばそうだからエアコンを自動的に切る、といった電力関係のアプリを作ろうとしている方のお役に立てければ幸いです。 ※ここで公開しているスクリプトを応用して、Twitterのボッ
今日から大学生協の書籍部でアスキー出版の本が15%オフでした。これに乗じてアスキー出版からでている『エキスパート C プログラミング』という本を買いました。 この本、いいです。今まで断片的にしかなかったC言語の仕様にかかわる部分までが、詳細に解説がしてあります。私見をいわせてもらうと、C言語の本はK&Rの『プログラミング言語C』とこの本があれば十分な気がします。 コンピュータ言語の書籍についていわせてもらうと、コンピュータ言語の本というのは2種類に厳密に区別されるべきではないかと思います。この2種類というのは、文法書と語彙書。 文法書はコンピュータ言語のお作法が書いてある本で、語彙書はどのような関数や定数があるか(ライブラリのリファレンス)が書いてあるもののことです。多くの初心者向けの本はこの2つをごっちゃにして書いてあるから、よい本がないのではないでしょうか。コンピュータ言語を学ぶのは外
(訳者より: この文章はfenrirによって原著者(BatchPCB)とは無関係、無許可に翻訳を行ったものです。この文章はいかなる正しさも保証しません。またこの文章を参考にすることによって、いかなる損害を被ろうとも、その賠償をいかなる相手に対しても請求することはできません。2010年8月5日) 一般的なことや発注でわからないことがあったら [email protected] どこなんですか、ここ? デザインルールはどんな感じ? 送料は? Sparkfunの注文と混ぜられる? オーダステータス(order statuses)は何を表している? どうしてオーダステータスが"Passed"の表示のままなの? 注文したものが届くまでどれくらいかかる? どうしてボットの画像が変なの? どうしてドリルファイルがアップロードすると違って見えるの? 本当に安い? 料金設定はどうなっているの? どんな
English abstract is below. 以前お知らせした、猫カメラのカメラの部分だけ取り出して電子工作の部品にしようという計画(TCM8240MD breakout)、完了しました。下の写真にあるように動作確認がとれています。 モジュールの様子をモジュールで取り込んでいる 上の動作確認では、モジュールにArduino Miniを繋げて、モジュールから画像をi2c経由でArduinoに取り込み、それをUSBシリアルでPCに流し、さらにPCでOpenCVを使ったデモプログラムで表示させています。 モジュールのスペックを以下にまとめておきます。 接続は4本です。電源2本(VCCとGND)、i2c(SDAとSCL)です。VCCは+5Vにも+3V3にも対応しています。i2cについてもHレベルが+5Vであっても+3V3でも問題ありません。最大でSXGA(1280 x 1024 pixel
ここ3年くらい僕がやっていた話をまとめた文章をリリースします。表題は『システム同定による小型無人航空機の飛行特性の取得』。興味があるようでしたら眺めてくださると幸いです。 内容ですが、ラジコンくらいの小さな飛行機がどんなふうに飛んでいるかそれなりにまじめに調べてみたよ、という話になっています。オートパイロットシステム Super Sylphideも計測装置として非常に活躍しています。 キーワードを羅列しておくと『システム同定(System Identification)』、『小型無人航空機(Small UAV)』、『安定微係数(stability derivatives)』、『ウェーブレット変換(Wavelet Transform)』、『多重解像度解析(Multi-Resolution Analysis)』、『INS/GPS複合航法』、『エアデータセンサ(Air Data Sensor)』
とあるデータファイルがMatlabのフォーマット(*.mat)だったのですが、それをRubyから読み込めたらいいなぁ、という事態に遭遇しました。王道としてはMatlabを起動してデータファイルを読み込み、それをCSVフォーマットで吐き出させてRuby側で取り込めばいいと思います。しかし、それでは一次ファイルができてしまいクールではないので、Rubyから直接Matlabのファイルを扱えるようにしてみました。 といってもRubyにはMatlabを内部的に呼び出しデータ変換などを可能にしてくれるmatlab-rubyという便利なライブラリがあります。これを使えば解決、と思ったのは束の間、残念ながら僕が所有している環境ではうまくいきませんでした。僕の環境はWindowsのMatlab R2006b(ちょっと古いですね)とcygwinのRubyです。 ということで問題点を調べてmatlab-ruby
ちょっとした事情がありまして、以前記事を書いた『Amontec JTAGkey-Tiny (FT2232) を Xilinx iMPACTから使う』のメンテナンスをしています。これはXIlinxの純正書き込みツールでFT2232を使ったFPGAやPROMへの書き込みを可能にしようというツールなのですが、メンテナンスを行うにあたって表題のローカルを流れるTCPパケットを直接調べたいという要望が発生しました。 持ち出したるはTCPのパケットを監視するフリーウェアNirSoftのSmartSniffなのですが、これが困ったことにNICを通ったパケットしか拾ってくれないようでした。このフリーウェアはパケットをキャプチャしてくれるという単機能なので、非常に使い勝手が良く愛用しているので、できれば今回の目的にも使いたいところです。 ということで方法を考えてみました。方法は2つ考えたのですが、結局のとこ
Twitterでぶつぶつ言っていると急に数式を書きたくなりませんか? 僕は勿論のこと、皆さんもそうなりますよね(笑)。そこでTwitter上でTeXの数式をつぶやくと、画像のURLを返してくれるサービスを作りました。 使い方は簡単、@TeX_Eqに対してTeXの数式をつぶやいてみてください。 例えば @TeX_Eq E = mc^{2} とつぶやくと、しばらくして http://is.gd/5cg3AというURLがつぶやき返しされるはずです。これはアクセスすると以下のような画像がゲットできます。 Rubyで書いたソースコードを公開しておきますが、仕組みは至極簡単です。 TeX_Eq向けのつぶやきをcronで監視つぶやきがあったら、それを数式と解釈してGoogle chart APIを使って数式の画像を取得するためのURLを内部的に生成そのままだとTwitterの140文字制限に引っかかって
複数の作業を効果的にこなすために、Redmineというプロジェクト管理ツールを導入しているのですが、このツールはソースコードを管理するためのSubversionやgitといった別のツールと連動することが可能です。この仕組みはとても便利で、例えば、Subversionでコミットする際のコメントに、Redmine側で発行したチケット(ToDoリストのようなもの)の番号を記載しておくと、Redmine側であるチケットに対してどれだけコードが変わったか、ということをうまいこと紐付けしてくれてます。 僕がこれまで作ったRedmineは、同じサーバ上でRedmineとSubversionを動かし、Redmine側からローカルディスクのSubversionを叩くという構成でした。ところが最近、新たに外部に作られたhttpsベースのSubversionリポジトリを取り込む必要がでてきたため、表題のような問
色々変わった電子部品を扱っているsparkfunですが、そこで売っているSTMicroelectronics製のジャイロ LISY300ALを使ってみたくなりました。ところがどっこい、このジャイロ、半田付けが一筋縄ではいきません。難敵のBGAではないものの、表面実装パッケージでありながら半田付けを側面から行えない、すなわち足が出ていないどころか、側面に半田が付くパッドが形成されていないパッケージなのです。 そこでクリーム半田(半田ペースト)を導入して、半田付けを行ってみることにしました。クリーム半田での半田付けは、半田を塗布したいところに穴が空いたステンシルと呼ばれる板の上から半田を塗りこみ、電子部品を載せ、最後にリフローあるいはホットエアー(ヒートガン)装置で熱を加えて完了します。この方法ならば半田ごてで熱を直接加えて融着できなくとも、半田付けを行うことができます。 このクリーム半田を使
Rubyでちょっとした処理プログラムを作ったときの話です。プログラムの構造として、Ruby以外の言語で書かれた実行バイナリが既に複数あり、それを起動したり、終了したりしながら制御をするというものでした。いわゆるプロセス制御なのですが、僕が思い違いをしていたこともあり、ちょっと苦労したのでその時の話をまとめておこうと思います。僕がいきついた答えを先に書いてしまうとRuby::PTYでした。 今回の目的に使えるのでは、とまず一番に思ったのが、Rubyで外部のコマンドを起動する最も簡単な方法である、組み込みコマンドのsystemや`(str)`、execなどです。これらは外部コマンドの実行結果を得ることができるのですが、外部コマンドの終了まで制御が帰ってこない、execに至っては外部コマンドの起動が成功してしまうと起動したRubyスクリプトに制御が戻ってこないというありさまです。 そこでこれらの
(いわゆるネタです。元は『私がTwitterを使わないわけ』) 0. この記事を書いた理由 僕の周りで、Arduinoを使っていない(厳密に言うと持っていても使う気がしない、あの頃は若かったんだよ…)のは僕一人だ。特に事あるたびに『あんなもの買うんじゃない』と周囲に力弱くつぶやいている(本来、長いものには巻かれろの軟弱モノです)のですが、たまには声を大きくして言ってみたかったから(笑)。 1. ArduinoでLEDをヒカヒカさせるのは無価値だ そうですとも。LEDヒカヒカはプログラミングで言うところのHello world。あんなもの一から自力で組上げて何ぼだと思います。組み込みで一からというと、基板をおこして、半田付けして…、というと批判が物凄く寄せられそうなので、評価キットやブレットボードは使ってもいいことにします(またしても力弱い…)。あ、もちろん自作Arudino互換機については
今度ニコニコ技術部のイベントがあるそうです。NT首都圏。なんだか面白そうなので参加してみたいなぁ、せっかく参加するなら、展示をしてみたいなぁ、と思ってみました。というわけでやっつけ仕事的に、僕がやっている事をニコ技風にアレンジして動画を作ってみました。 オートパイロットシステム Super Sylphideで、はちゅねさん振っているだけです、はい。 ※ニコニコのアカウント持っていない方でも見れるようにしました。続きをどうぞ。 19:10 fenrir が投稿 : 固定リンク | | | トラックバック このエントリーのトラックバックURL: https://fenrir.naruoka.org/mt/mt-tb.cgi/715
ドラクエ9の発売に伴い色々な動きがあるようですが、それに便乗してみることにしました。ミニブログ的なサービスであるTwitter上でメッセージをやり取りしながら、ドラクエを象徴する敵であるスライムと対戦できる『スライムTwitter Bot』というものがあるのですが、それと自動対戦を行う勇者Botというものを作ってみました。 スライムBot上では、打ち込んだメッセージは何でも"呪文"として認識されるので、Twitter上で流行っているキーワードを抽出するbuzztterから"呪文"を作ることにしました。 対戦の模様、実装の詳細は続きをどうぞ。 対戦中の様子です。@dq_jumonで始まる行が勇者Botの攻撃です。 スライムBotの仕様によると、"呪文"として回復系の呪文であるホイミなども使うことができるようですが、あまり頭のいい勇者ではないようで攻撃重視、よく死にます。またスライムBotに呪
マイコンを扱っているとシリアルポートで通信を扱う機会がよくあるのですが、標準入出力やファイルと同等にシリアルポートを扱いたいという要望があります。例えば何かの入力を拾ってきて、それを加工し出力するC++プログラムがあったとします。このC++プログラム、当初はファイルに記録されたログをfstreamで読み込み、後から処理させることを想定していました。しかしとある事情で、シリアルポートからリアルタイムで情報を取得し、それを加工して出力する必要がでてきました。さてどうすれば変更を最小限に留められるでしょうか、というのが今回のお題です。 まずですが、プラットフォームはWindowsを想定することにします。なぜなら*NIXなら/dev/ttyS0等のスペシャルデバイスによってシリアルポートはファイルとかなり同等に扱えますので、あえて茨の道を進みます(笑)。ちなみにWindowsにインストールしたCy
某プロジェクトの関係でソースコードを共有する仕組みを考えていたのですが、最近はgithubを使うのがはやりのようです。これまではsubversionを使っていたのですが、よい機会だと思いgitに手をだしてみることにしました。そこでgithubを使おうと思ったのですが、はじめはソースをプライベートの状態で開発を開始したいとの申し出でしたので、githubを前提とするならば有償サービス(最低7ドル、機能対価格表)を利用しなければいけないようでした。そこでgithubクローンで、かつ、rails上で動くオープンソースのgitoriousを試してみることにしました。今回の記事はそのインストールで躓いた部分の備忘録です。 gitoriousにはインストールレシピがあり、ubuntu用チュートリアルを参考に行いました。基本的にそのチュートリアルをなぞればパッケージの導入自体は完了しました。railsを
統合開発環境Eclipseを使って、gitで運用しているプロジェクトを扱っているのですが、gitプラグインの使い方がよくわからなかったので、一連の動作について試行錯誤した結果をメモとして残しておこうと思います。なおgitプラグインのインストールは、普段どおりUpdateサイトを利用して簡単に行うことができました。 ちょっと長くなりそうなので、続きをどうぞ。既存リモートリポジトリからクローンの作成、リモートリポジトリから更新があったかの確認、更新のローカルコミットとそれのリモートリポジトリへの反映についてまとめてあります。 まずはリモートに既存のリポジトリが存在し、それからファイルを引っ張ってくるクローン(clone)という作業について書きます。これはインポートのメニューから行うことができます。Git Repositoryを選択し、次の画面で以下のように適切なプロトコルと場所を設定します。今
RubyでPDFを生成したいと思い、RubyのPDFライブラリを物色していました。結果、プロジェクト管理ツールRedmineのプラグインとして開発されているRFPDFが、使いやすそう、かつ、日本語もある程度扱えるようだったので、使ってみることにしました。しかしながら速度が十分でなかったので、改造を施しパッチを作りました、というのが今回の話です。 クリックするとPDF 生成しようとしていたPDFは上のようなものです。今度の5月に開催されるMake: Tokyo Meeting 03に何かだせたらいいなぁ、ということでネタ出しをしている段階なのですが、それの検証用としして作成していたものです。ビットマップを読み込んで、モザイク画像を生成するスクリプト bmp_tiler.rb (後半に無理やり高速化をかけている痕跡がありますが、笑)で生成しました。円を沢山描きまくるスクリプトです。 このPDF
こんな感じになりました。 本来と逆さまですが 上がDSP基板の裏面(電源部+RAM+ROMが見えています)、次が小亀基板(SDが出ています)、一番下の緑色の基板が小々亀基板のセンサ基板(加速度計3軸+ジャイロ3軸+GPS)です。 これからファーム作りという感じです。あと、この状態では航法機能しかもっていないので、FPGAとモデムを足してオートパイロット化を狙っています。しばらくは書類作業があるので、なかなか進まないと思いますが。 ※開発コードはSuper Sylphide (スーパーシルフィード)です。 ※2007/1/14 進捗状況(1)を書いてみました。 23:59 fenrir が投稿 : 固定リンク | | | トラックバック このエントリーのトラックバックURL: https://fenrir.naruoka.org/mt/mt-tb.cgi/538
こんな怪しいサイトを構えていると色々な話が舞い込んできますが、カメラモジュールを役立てていただける方が現れました。例によって未踏がらみなのですが、猫にぶら下げるカメラがほしいとのことでした。題して『猫カメラ』。 写真にあるとおり、設計と実装が完了しました。カメラに加えて、GPS、Bluetooth、加速度計などが組み込まれています。サイズは2 x 1.4inch(約51 x 36 mm)です。回路図やファームについては、動作確認が取れ次第公開しようかと考えています。 なお、使い方について色々倫理的なことを考えだすと厳しいものがあるかもしれませんが、技術的には大変面白い企画だと思います。これならMake:のイベントに出せますかね(笑) ※(2009/10/31追記)カメラの部分が気に食わない事態が発生したのでVer.2を作成中ですが、このバージョンのEagleの回路図と基板レイアウトを公開し
開発をほぼ終えたカメラモジュール用の電池を入手しました。LiPo(リチウムポリマー)の1セル(3.7V)で、容量は400mAhと600mAhです。LiPoは専用の充電回路を用意しなければならない等、その取り扱いには十分な注意が必要ですが、軽くて容量が大きいのでとても便利です。基板面積を小さく抑えたかったカメラモジュールにLiPoの充電回路を内蔵するのはかなり至難の技でしたが、電池が大容量で軽いメリットを考えると、その苦労も大変報われるものです。 入手したLiPo電池 入手先は耳掛け音楽プレーヤー Timpyで有名なchiakiさんのサイトからリンクがあった香港のラジコンショップ Hobbycityを利用してみました。価格が驚異的に安く、400mAhと600mAhを2個ずつ頼んで、送料込みで20ドルいきませんでした。激安です。 23:59 fenrir が投稿 : 固定リンク | | | ト
次のページ
このページを最初にブックマークしてみませんか?
『Fenrir's BLog』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く