2015年3月22日日曜日

このサイトの検索クエリは平日が多いみたい

 このサイト(Matsup's blog)は,Google のブログサービスである Blogger の上に構築されている。 そのため,Google ウェブマスターツールでサイトの状況を確認できる。その中には,このサイトがどれだけ Google の検索にかかったか,という項目(検索トラフィックの中の検索クエリ)がある。 それを見ていて気づいたことがあったので,このエントリーを書いてみた。


 これが,2014年の年末から 2015 年3月中旬までにこのサイトが Google 検索での検索結果がユーザーに表示された件数である。 図を見ると,左端を除いて,一定の周期で検索数が増えたり減ったりしている。 とてもきれいに「台形」と下向きの「谷」が交互に並んでいる。 これはこのサイトを見る人の特徴を捉えているに違いない。

2015年3月15日日曜日

Physical Computing (特に Intel Edison) における I2C による通信について(その3)

 前回 Physical Computing (特に Intel Edison) における I2C による通信について(その2)として,Linux での I2C 通信の例について書いた。 今回はその続きで,mraa ライブラリでの I2C 通信について書いてみよう。
 項目番号は前回からの続きということで (7) から始まる。

(7) mraa ライブラリでの I2C 通信:Linux の実装における SMBus 通信を使った I2C 通信(書込み)
  次に mraa ライブラリでの I2C 通信の処理について見てみよう。 mraa ライブラリでは I2C 通信は,mraa/src/i2c/i2c.c に記載されている。 そこでは,SMBus 通信を使って I2C 通信を行っている。以下具体的に見てみよう。

2015年3月14日土曜日

Physical Computing (特に Intel Edison) における I2C による通信について(その2)

 前回 Physical Computing (特に Intel Edison) における I2C による通信について(その1)として,physical computing で使われるシリアル通信としての I2C とその派生系である SMBus の一般論について少しだけ書いた。 今回は,それを yocto Linux が動いている Intel Edison でどう扱われているか,について書いていこう。
 項目番号は前回からの続きということで (4) から始まる。

(4) Intel Edison における I2C 通信
  Intel Edison で I2C 通信を行って,センサー等の機器と通信をするには幾つかの方法(プログラム言語)がある。 一つは,Arduino IDE を使う方法であり,他には Linux 上で C 言語や C++ でプログラミングを行う,などである。 (Python や node.js なども使えるみたいだが…) ここでは Linux 上での C 言語や C++ の場合について見てみよう。

Physical Computing (特に Intel Edison) における I2C による通信について(その1)

 今回は少し趣きを変えたタイトルにしてみた。 なんか,お題目が大きいなぁ…。
ちなみに前回 Intel Edison の新しい統合型インストーラーを使ってみた からの続きである。

 なんでこんな事を書こうと思ったかというと,前回まで書いていた,Intel Edison 絡みである。 また,SparkFun Blocks for Intel Edison を重ねてみたにも書いた,SparkFun 社製の SparkFun Blocks for Intel Edison 絡みでもある。つまりは Physical Computing に絡んで少し勉強したので,せっかくだから書いておこう,と思ったのが動機である。

 そもそも physical computing って何かというと,それは Arduino に代表されるような,極小コンピュータ(Microcontroller と呼ばれたりする)を使って,センサーの情報を読み取ったり,場合によってはモーターなどを駆動して何かを動かす,みたいな事を言うらしい。これまで physical computing と言うと,Arduino がその火付け役として代表格のように言われてきたが,最近では Intel Edison や Raspberry Pi などかなり高性能のものも出始めている。

 かく言う私は,Intel Edison を買って遊んでいる。 まだ,Linux システムに振り回されているが,そろそろセンサーを使って遊んでみたいと思い,ちょこちょこといじっている段階である。 特に SparkFun Blocks for Intel Edison の9軸の加速度・地磁気・回転センサー LSM9DS0 が載った 9dof(9 Degrees of Freedom) Block を持っているので,それを試してみたのだが,その際に I2C 通信についてわからないことがあり,気になったのでいろいろ調べてみた。 それでこんなタイトルのエントリーを書こうと思ったのだった。

 ちなみに Arduino の場合は,Arduino IDE と呼ばれる統合環境の中に Wire library というのがあり,そのルーチンを用いることで I2C 通信を行える。しかし,ここでは Linux 上で C 言語や C++ でプログラミングを行う場合の I2C 通信についてみてみよう。

2015年3月8日日曜日

Intel Edison の新しい統合型インストーラーを使ってみた

 前回,Intel Edison で micro SD カードを使うと書いた。 今回は64 bit Windows 用の Intel Edisoin の新しい統合インストーラーについて書こう。

 つい先日,Intel community から下記のような Edison 用に新しく統合インストーラーを作った,とメールが来た。
Intel Communities
Announcement: New Edison integrated installer launched.

created by intel_jorge in Forums

Today we launched a brand new Edison integrated installer. 
Please visit the Edison Software Downloads page for more info. 
http://www.intel.com/support/edison/sb/CS-035180.htm

Announcement expires on March 13, 2015
 統合インストーラーということで,windows に Edison をつなぐためのドライバーや, Edison の firmware の最新版,Arduino 開発環境などを一度にインストールしてくれるものである。 個別にインストールしなくてもいい,という感じのものだった。 で,早速使ってみることにした。

 まず,Intel Integrated Installer は 2015/3 時点で version が 2015.1.15 である。
使い方は,まずソフトウェアダウンロードのページから, 該当のインストーラー(Windows 64 Integrated Installer)をダウンロードしてくる。 2015/3 時点では,ファイルサイズが 21,581 kB だった。

2015年3月7日土曜日

Intel Edison で micro SD カードを使う

 前回,Intel Edison の無線 LAN の IP アドレスを固定したいと書いた。 今回は Intel Edisoin で micro SD の使い方について書こう。

 最近 Intel Edison で遊んでいる。その記憶容量は,プロセッサ自体に 1 GB,eMMC に 4 GB あり,合計 5 GB となっていて,Arduino などに比べると格段に大きな容量を持っている。 しかし,SD カードに記録できると,容量も増やせるし,他の機器とのデータのやりとり手段がひとつ増えることになる。

 ということで,Intel Edison で SD カードを使ってみよう。 Edison で使えるのは,基本的に micro SD カードである。 2015/3 時点で使えるのは,Intel 製の Arduino 拡張ボードと,SparkFun 製の micro SD Block (for Intel Edison) である。 Edison 本体には SD カード用の端子が設定されており,どちらの拡張ボードもそれらの端子を使っているので使い方は同じである。 ただし,SparkFun 製は取り出す時も一度押しこむタイプなのに対し(一度押しこむとバネで少し手前に出てくる), Intel 製の Arduino 拡張ボードのものは,バネ機構がないので,入れる時は押し込み,取り出す時は引っぱり出さないといけない。 あまりスマートじゃないなぁ…。

 使い方は至極簡単であり,単に適当なマウントポイントに媒体をマウントするだけ,である。 Edison にはマウントポイントとしては,最初から
   /mnt
がある。 そのため,その /mnt に micro SD カード媒体をマウントすればよい。

 マウントのコマンドは,
   # mount -t vfat /dev/mmcblk1p1 /mnt
である。 ここで「/dev/mmcblk1p1」は,「mmcblk1」が SD カードを表し,「p1」が "fdisk -l" コマンドで得られるパーティション番号を表している。 micro SD カードがある状態でこのマウントコマンドを実行すれば,/mnt の下に micro SD カードの内容が表示される。

 逆に micro SD を取り出したい場合は,
   # umount /mnt
とすればよい。 ただし,どこかの window で pwd が /mnt の下になっていたりすると,busy ということで umount されない。 その場合は他のディレクトリに移動しておかないといけない。

(Intel Edison の新しい統合型インストーラーを使ってみたに続く)

2015年3月1日日曜日

Intel Edison の無線 LAN の IP アドレスを固定したい

 前回,Intel Edison で opkg upgrade すると Windows に対して USB OTG で接続できなくなったと書いた。 今回は Intel Edisoin の無線 LAN の固定 IP の設定の話を書こう。

  Intel Edison は極小サイズにもかかわらず,本体に無線 LAN と Bluetooth の機能を持っている。 実物を見ると,こんなに小さいのに?と感じてしまう。 無線 LAN の設定は,初ログイン後に
   # configure-edison --setup
というコマンド実行すると,パスワード,マシン名の後に設定できる。

 その Edison の無線 LAN の設定だが,デフォルトでは DHCP で IP アドレスを取得するように設定される。 しかし,場合によっては固定 IP にしたい場合もある。 今回は再起動しても固定 IP とする方法について書いておこう。 ちなみに,元ネタは新春電子工作!:“Edison”でロボットアームをグリングリン動かす(前編) (3/5)に書いてあった。 ここでも受け売りですねぇ…。

2015年2月28日土曜日

Intel Edison で opkg upgrade すると Windows に対して USB OTG で接続できなくなった

 前回,SparkFun Blocks for Intel Edison を重ねてみたと書いた。 その続きである。

 ここしばらく Intel Edison で遊んでいる。 Edison は小さいが十分な能力を持つコンピューターである。 購入した時点で yocto linux がインストールされているが,当然最新版ではないため,まずは firmware をアップデートしないといけない。 さらに,opkg というシステムで様々なアプリケーションをインストールしたり,それらのアプリケーションをアップデートしたりできる。

 今回,firmware のアップデートの後に opkg でのアップデートを行った際, Windows に接続した時に USB メモリのように見えるはずのものが,全然接続されなくなってしまった。 その顛末について書こう。


 結論を先に書いておこう。 原因は /boot/ partition のサイズが小さいため,opkg upgrade で kernel のアップグレードの際にエラーを起こしていた。 そのため,一部の kernel module がうまくインストールされずにトラブルになっていた。 特に USB gadget あたりに不都合が生じていたため,UBS OTG が不調になっていた。

これに対する使用時の対処法としては,下記のいずれとかなる。

SparkFun Blocks for Intel Edison を重ねてみた

 前回の投稿で,SparkFun 社製の Intel Edison 用の Block を買ってみた,と書いた。 その際,Block を重ねることで,複数の Block をコンパクトに保持することができる,と書いた(写真を載せただけ?)が,それには多少加工が必要であった。 そのことについて書いておこう。

 SparkFun 社製の SparkFun Blocks for Intel Edison は,縦横数センチずつと非常にコンパクトながら,Intel 製の Arduino Board などには負けない入出力機能を持っている(小さいので,それなりに制限はあるが…)。 1枚1枚に装備された機能は基本的に一種類ずつだが,基板の上と下に Edison に使われているヒロセの DF40 というコネクターを備えており, 必要な機能を持った Block を必要な枚数重ねて使うことができる。 例えば,Edison 本体と SD カードと AD 変換入力のボードを組み合わせて使う,という感じの使い方ができる。 そういえば最大何枚まで重ねてもいいのだろう…?

 この SparkFun Blocks for Intel Edison の各段はヒロセのコネクター自体の力で力学的にもそれなりに保持されるが,念のために物理的なサポートが欲しい。基板には,別の機能を持った(同じ機能のものを複数枚重ねてもよいが…)基板同士をつなぐサポートをつけるための穴が四隅に開けてあり,専用のサポート(ビスとナットと standoff と呼ばれる柱とビスとナットが一体になったような部品)のセットが用意されている。 このサポートセットは国内のネットショップではまだ売られているのを見たことがない。そのため,アメリカの SparkFun 社のサイトから直接買わないといけなかった(私が知らないだけ?)。 今回,Base Block ほか,を購入する際についでに買ってみた。 1セットにつき,M2 のビスとナットが6個ずつ,standoff が10個が入っている。(M2 のビスはネジ部の直径が 2mm という細いネジ) これは,Edison 本体と Block を3枚重ねて使う時にちょうどいい数となっている。 Edison 本体は固定用の穴は2個だけなので,各段の間に4個ずつ,Edison 本体の固定に2個の standoff が必要となる。 従って,3枚の Block の間で合計8個,Edison 本体の固定に2個,合計10個となる。 それより多くの Block を重ねるには,複数のセットを買わないといけない。

2015年2月27日金曜日

SparkFun製のIntel Edison 用 Blocks を買ってみた

 前回,Intel Edison の初期設定を書いた。 その続きである。
 2015/2 に SparkFun 社製の Intel Edison 用の Block を買ってみた。 SparkFun 社の Intel Edison Blocks は非常にコンパクトで,Intel Edison の小ささを最大限に活かせそうに思ったし,ちょっとおもしろそうだった,というのが理由である。

 SparkFun Blocks for Intel Edison は,いろいろな用途を持つものが 13 種類ある。 それらは「Base Block」, 「Console Block」, 「UART Block」, 「Battery Block」, 「micro SD Block」, 「I2C Block」, 「GPIO Block」, 「ADC Block」, 「PWM Block」, 「Dual H-Bridge Block」, 「OLED Block」, 「Arduino Block」, 「9dof(9 Degrees of Freedom) Block」と名付けられている。

 今回,これらの中から, 「Base Block」, 「micro SD Block」, 「I2C Block」, 「GPIO Block」, 「ADC Block」, 「PWM Block」, 「9dof(9 Degrees of Freedom) Block」の7種類を買ってみた。 まだ,SparkFun でも売りだされてからまだ日が浅く,作られてもすぐに売れてしまうみたいで,なかなか在庫されない。 そのためだと想像しているのだが,一部の種類は国内のスイッチサイエンスなどでも売られているが,特定のものはアメリカの SparkFun でないと売られているのを見たことがない。 例えば「Base Block」は本家 SparkFun でもしばらく在庫切れが続いていたりする。 入荷されても比較的早くに売り切れてしまう。 今回,1~2ヶ月ほど待ち,やっとのことで手に入れることができた。 ただ,送料をケチったために,注文から手元に来るまでに12日もかかってしまったが…。