mojavy.com

ワイヤレスなRaspberry Pi環境をつくる

April 28, 2013 at 01:54 AM | categories: raspberry pi |

raspberry

Raspberry Pi遊ぶからにはその小ささを生かしたことがしたいですよね。 というわけで手始めにワイヤレス化しました。手順は非常に簡単で、ほぼAmazonで買ったパーツを差すだけで達成できました。

Raspberry Piを標準的な構成でうごかすとLANケーブル、電源、 キーボード、ディスプレイの4本コードがのびることになりますが、sshで接続できればディスプレイもキーボードも不要なのであと必要なのはネットワーク環境と電源だけです。

電源は 5V 700mA なので、普通のスマートフォン用バッテリーがそのまま使えます。 5V 700mAを越えていれば何でもいいと思いますが、今回は以下をつかいました。


ネットワークはUSBの無線LAN受信機を使います。 これも何でもいいと思いますが、あまり最新のモデルだとドライバが対応してないかもしれないのでちょっと古めのもののほうが無難です。以下の商品は問題なく動きました。

wifiの設定はX Windowの設定画面からしました。startxでデスクトップを起動するとWiFi Configというアイコンがあるのでそこから設定できます。 ターミナルでifconfigを実行してwlan0にinet addrが割り当てられていることを確認できればOKです。

pi@raspberrypi ~ $ /sbin/ifconfig
eth0      Link encap:Ethernet  HWaddr b8:27:eb:90:32:15
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:8 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:1104 (1.0 KiB)  TX bytes:1104 (1.0 KiB)

wlan0     Link encap:Ethernet  HWaddr 10:6f:3f:ec:5f:b8
          inet addr:192.168.1.13  Bcast:192.168.1.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:4285 errors:0 dropped:0 overruns:0 frame:0
          TX packets:673 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:937903 (915.9 KiB)  TX bytes:81630 (79.7 KiB)

ここで確認したIPアドレスにsshしてつながれば完了です。



Raspberry Pi はじめました

April 28, 2013 at 01:30 AM | categories: raspberry pi |

raspberry

前々から気になってたRaspberry Piを手に入れました。

最終的にはセンサーとかいろいろつけてインタラクティブなおもちゃをつくりたいですが、当面の目標は秋月電子で調達してきたLCDディスプレイに文字を表示させるためのドライバを書くことにしようと思います。

Raspberry Piのセットアップ手順はぐぐればすぐでてくるので割愛しますが、そのままだとsdcardの空き領域がつかえないので起動時にマウントできるようにするまでの手順だけメモしときます。

pi@raspberrypi ~ $ sudo fdisk /dev/mmcblk0

Command (m for help): p

Disk /dev/mmcblk0: 31.7 GB, 31674335232 bytes
4 heads, 16 sectors/track, 966624 cylinders, total 61863936 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00014d34

        Device Boot      Start         End      Blocks   Id  System
/dev/mmcblk0p1            8192      122879       57344    c  W95 FAT32 (LBA)
/dev/mmcblk0p2          122880     3788799     1832960   83  Linux

Command (m for help): n
Partition type:
   p   primary (2 primary, 0 extended, 2 free)
   e   extended
Select (default p):
Using default response p
Partition number (1-4, default 3):
Using default value 3
First sector (2048-61863935, default 2048): 3788800
Last sector, +sectors or +size{K,M,G} (3788800-61863935, default 61863935):
Using default value 61863935

Command (m for help): p

Disk /dev/mmcblk0: 31.7 GB, 31674335232 bytes
4 heads, 16 sectors/track, 966624 cylinders, total 61863936 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00014d34

        Device Boot      Start         End      Blocks   Id  System
/dev/mmcblk0p1            8192      122879       57344    c  W95 FAT32 (LBA)
/dev/mmcblk0p2          122880     3788799     1832960   83  Linux
/dev/mmcblk0p3         3788800    61863935    29037568   83  Linux

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.

pi@raspberrypi ~ $ sudo mkfs.ext4 /dev/mmcblk0p3
mke2fs 1.42.5 (29-Jul-2012)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
1815072 inodes, 7259392 blocks
362969 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=0
222 block groups
32768 blocks per group, 32768 fragments per group
8176 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
        4096000

Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks):
done
Writing superblocks and filesystem accounting information: done

上記のように、fdiskでパーティションをきってrebootしたあと、mkfs.ext4でフォーマットします。 最後に/etc/fstabに以下を追記してもう一度再起動して完了です。 マウントするディレクトリ(以下だと/home)は適当にかえてください。/homeにマウントする場合はpiユーザのホームディレクトリをコピーしておくといいと思います。

/dev/mmcblk0p3 /home            ext4    defaults,noatime  0       2
pi@raspberrypi ~ $ df -h
Filesystem      Size  Used Avail Use% Mounted on
rootfs          1.8G  1.4G  246M  86% /
/dev/root       1.8G  1.4G  246M  86% /
devtmpfs        212M     0  212M   0% /dev
tmpfs            44M  276K   44M   1% /run
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs            88M     0   88M   0% /run/shm
/dev/mmcblk0p1   56M   19M   38M  34% /boot
/dev/mmcblk0p3   28G  172M   26G   1% /home


TOMLノススメ

April 26, 2013 at 08:21 PM | categories: tips, toml |

github

TOMLとは

https://github.com/mojombo/toml

Tom's Obvious, Minimal Language (TOML) とはgithubの中の人が提案している設定ファイルのためのミニ言語で、以下のような特徴があります。

  • 人間が読み書きしやすい
  • 標準的なデータ型が利用できる
  • 曖昧さが発生する余地が極力排除されている
  • パーサをかくのが簡単

なぜTOML?

例えば、YAMLを設定ファイルに使っているシステムは多いですが、YAMLの仕様書は80ページもあり正しく使うのは意外と大変です。1

またJSONはカッコやダブルクオートの割合が多すぎますし、コメントも使えません。2

TOMLをつかえばそのようなストレスはありません。

TOMLの使い方

TOMLの書き方は本家のドキュメント をみてもらえばすぐわかると思います。

TOMLのライブラリは各種言語に対応したものが既にたくさんあります。 言語によっては複数の実装が存在するものもありますが、とりあえずはgithub上でのstarの数が一番多いものから試すといいと思います。

わざわざ説明するほどの内容でもないですが、ここでは一応rubyでの使い方を紹介します。 gem install tomlでインストールして、以下のようにするだけです。YAMLの場合と大体同じですね。

require 'toml'

TOML.load("thing = 9")
# => {"thing" => 9}

TOML.load_file("my_file.toml")
# => {"whatever" => "keys"}

その他

  • TOMLでは日付型も定義されていて、それもUTC固定というのが地味にいいです
  • githubのコードハイライトは既にTOMLに対応してます
  • emacsユーザはtoml-modeというのがmelpaに登録されているので、M-x list-packagesからインストールできます。

まとめ

TOMLという設定ファイルのための新しいフォーマットを紹介しました。 設定ファイルにYAMLやJSONつかってるひとはTOMLに移行すると幸せになれるかもしれません。


  1. 仕様を正確に実装したYAMLパーサはほとんど存在しないとかいう話もちらほら 

  2. https://github.com/mojombo/toml/issues/2  



Quicklinks 5

April 23, 2013 at 08:20 PM | categories: quicklinks |

ruby

MessagePack

https://github.com/msgpack/msgpack/issues/121

盛り上がってたのはもう2か月くらい前ですが議論はまだ進行中のようです。 技術的な面だけでなく日本のコミュニティの外国からの見えかたとか政治力とかといった点も興味深かったです。

toml

https://github.com/mojombo/toml

日本でLTSVが流行ってたくらいの時期にtomlというミニ言語も流行っていたらしいです。 あらゆる設定ファイルはこのフォーマットになればいいと思います。

RubyMotion

http://www.rubymotion.com/

rubyをつかったiOSアプリのためのツールチェイン。 rubyのコードをllvmベースのマシン語にコンパイルするので高速に実行できるとのこと。 既存のrubyコードがすべてそのまま動くというわけではないみたいですが、XCodeとObjective-C使わなくていいというのは魅力的ですね。

MobiRuby

http://mobiruby.org/

これもrubyでiOSアプリをつくるためのものですが、こちらはmrubyをベースにしたruby実行環境をiOSの上に構築するので既存のrubyのコードがほとんどそのまま動くそうです。

Ruboto

http://ruboto.org/

こっちはrubyでAndroidアプリをつくるためのもの。jrubyベース。 これに関しては別途記事書きました

genome compiler

http://www.genomecompiler.com

塩基配列をリッチなUIでデザインするためのエディタ的なもの。 ゲノムをソースコードのアナロジーでつかうならコンパイルは遺伝子発現だと思うけど、これで実際にできるのはデザインした配列を生合成業者に注文するところまで。

七葉院まゆせ

http://shichihain.com/

CVは金元寿子さんだそうです。帰省の際は両備バス利用したいと思います。

その他

つかれてきたので以下簡易版



inf-php.elがmelpaに登録されました

April 21, 2013 at 04:56 PM | categories: php, emacs |

emacs

先日つくったinf-phpmelpa に登録されました。1

emacs24 以降をつかっている人はM-x list-packages からinf-phpをインストールできるようになります。


  1. 初めてmelpaにpull requestを送ってみましたが、送って1分でmergeされるという爆速対応でした。 



About Me

pic
mojavy

Recent posts






Categories



Badges