Day10 手動でLチカ

Raspberry PiでLチカ(LEDチカチカ)を行う前に、乾電池を電源とした原始的なシステムを構築して、Lチカを行ってみました。


【道具】
SWITCH SCIENCEの「Arduinoをはじめようキット」に付属
・ブレッドボード x1
・ジャンパーワイヤー(オス-オス)x2
・赤色LED x1
・330Ωの抵抗

イオンのトップバリュー
・アルカリ乾電池(1.5V) x2

回路図は以下の通り。(※抵抗の数値が誤っている)
そして、これがブレッドモードを利用して、実際に電子回路を構成したところ。ジャンパーワイヤーが乾電池の陽極に接していないので、LEDが点灯する事は無い。
ジャンパーワイヤーを電池の陽極に接触させることで、LEDに通電し、LEDが光を発する。



乾電池の陽極にジャンパーワイヤーを接触させたり、させなかったりを手動で繰り返せばLチカになるわけだ。
一方、Raspberry PiでLチカを行う場合、ソフトウェアのレベルで回路を制御して、LEDに通電する場合と通電しない場合を決定している。
素手で行う事が可能な作業を、ソフトウェアが肩代わりしてくれるのである。これがコンピュータシステムの本質的な部分である。ソフトウェアは、私たちの大脳と、ハードウェアの間のインターフェースと考えるとよいかもしれない。

【参考文献】
Massimo Banzi (著), 船田 巧 (翻訳)『Arduinoをはじめよう 第2版』2012


Day9 Raspberry Piで無線LAN

前回(Day8)、CUIによる設定に挫折したため、GUIにより無線LANの設定を行い、成功したことを書きました。
今回は、GUIの設定で成功した状態の設定ファイルを"カンニング"して、CUIだけで、無線LAN接続の設定を行う方法を記します。




今回は以下のハードウェアを使用します。
・Raspberry Pi model B R2
・Buffaloの無線LAN子機(WLI-UC-GNM : http://www.amazon.co.jp/BUFFALO-%E7%84%A1%E7%B7%9ALAN%E5%AD%90%E6%A9%9F-%E3%82%B3%E3%83%B3%E3%83%91%E3%82%AF%E3%83%88%E3%83%A2%E3%83%87%E3%83%AB-11n%E6%8A%80%E8%A1%93%E3%83%BB11g-WLI-UC-GNM/dp/B003NSAMW2/ref=sr_1_1?ie=UTF8&qid=1392612374&sr=8-1&keywords=WLI-UC-GNM)

無線LANの子機は様々な会社から様々なブランドのものが販売されています。しかし、その核となるコントローラチップを製造している肝心のベンダーの数はずっと少ない。そこで、WLI-UC-GNMの採用しているチップを調べて、それに合わせてファームウェアをインストールすれば、無線LAN子機のコントロールが可能となるのである。結果から言うと、今回はralinkという会社のチップが使用されており、デフォルトでralink社のコントローラ対応のファームウェアはインストールされていた。そのため、特に新たにファームウェアを入れる必要はなかった。

###############ファームウェアの確認#####################

まずは、Raspberry Piに無線LAN子機:WLI-UC-GNMを接続します。次に、電源アダプタを接続して通電します。
次に、MacからSSHで接続します。
$ ssh 192.168.11.3

カーネルが子機をどのように認識したかを調べるため、カーネリングバッファというカーネルの作業履歴を参照する。
$ dmesg | less
ここで、
[    3.371218] usb 1-1.3: Manufacturer: Ralink
という一行を見つけた。これがWLI-UC-GNMで使用されているコントローラーチップである。
Ralink社のチップに対応したファームウェアがインストール済みであるかを調べる。
$ sudo dpkg -l
すると、

という一行を見つける。これがRalink wireless cardsのファームウェアであるfirmware-ralinkというパッケージがインストールされていることの証拠である。



################################################


###############無線LANの設定#####################
あとは、具体的に無線LANの設定を行えば良い。

まずは、現在の部屋の中に飛んでいる無線LANの一覧を表示する
もしも、この作業でエラーがでるようなら、子機が正しく使用されていないことになる。
自身がいつも使用している無線LANのIDが表示されることを確認する
$ sudo iwlist scan | less

ここから、2つの設定ファイルを編集していく
#/etc/network/interfaces の編集
$ sudo vi /etc/network/interfaces




auto lo

iface lo inet loopback
iface eth0 inet dhcp

allow-hotplug wlan0
iface wlan0 inet manual
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp



#/etc/wpa_supplicant/wpa_supplicant.confを編集
$ sudo vi /etc/wpa_supplicant/wpa_supplicant.conf


ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
        ssid="MYID"
        psk="MYPASS"
        proto=WPA
        key_mgmt=WPA-PSK
        pairwise=CCMP
        auth_alg=OPEN
}


これで無線LANの設定は完了する。リブートせずに無線LANを接続するには以下のコマンド。
$ sudo down
$ sudo ifup wlan0

リブートなら、
$ sudo reboot

あとは、
・有線LANを抜いてもつながること。
・再起動しても自動で無線LANに接続すること。
の二点を確認したら終わり。
################################################


【参考文献】
Eben Upton、Gareth Halfacree著、株式会社クイープ訳『Raspberry Piユーザーガイド』インプレスジャパン 2013

Day8 Raspberry Piと無線LAN

Raspberry PiにUSB無線LANを接続する方法を書きます。

今回は以下のハードウェアを使用します。
・Raspberry Pi model B R2
・Buffaloの無線LAN子機(WLI-UC-GNM : http://www.amazon.co.jp/BUFFALO-%E7%84%A1%E7%B7%9ALAN%E5%AD%90%E6%A9%9F-%E3%82%B3%E3%83%B3%E3%83%91%E3%82%AF%E3%83%88%E3%83%A2%E3%83%87%E3%83%AB-11n%E6%8A%80%E8%A1%93%E3%83%BB11g-WLI-UC-GNM/dp/B003NSAMW2/ref=sr_1_1?ie=UTF8&qid=1392612374&sr=8-1&keywords=WLI-UC-GNM)

無線LANの子機は様々な会社から様々なブランドのものが販売されています。しかし、その核となるコントローラチップを製造している肝心のベンダーの数はずっと少ない。そこで、WLI-UC-GNMの採用しているチップを調べて、それに合わせてファームウェアをインストールすれば、無線LAN子機のコントロールが可能となるのである。結果から言うと、今回はralinkという会社のチップが使用されており、デフォルトでralink社のコントローラ対応のファームウェアはインストールされていた。そのため、特に新たにファームウェアを入れる必要はありませんでした。

次は、無線LANの設定についてです。実は、CUIで巷に出回っている情報を元に、かなりトライしましたが、はまってしまい、結局成功しませんでした。

結局、VNC接続で一度GUIでログインして
「WiFi Config」-> 「Scan」-> 表示されたネットワークリストの中で自分が接続したいものをダブルクリック -> 「PSK」に無線LANのパスワードを入力 -> トップ画面で「Connect」をクリック。

あとは、再起動すれば、有線LANを抜いた状態でも自動的に無線LANで接続できるようになっています。

【参考文献】
『お手軽ARMコンピュータ ラズベリー・パイでI/O』CQ出版株式会社 2013
Eben Upton、Gareth Halfacree著、株式会社クイープ訳『Raspberry Piユーザーガイド』インプレスジャパン 2013
Japanese Raspberry Pi Users Group『Raspberry Pi[実用]入門』技術評論社 2013
nekosan『「Raspberry Pi」でつくる電子工作』工学社 2013



Day7 SSH接続でX window systemを使用する

X window systemとは、LinuxなBSDなどの一般的なUNIXが採用しているGUI環境のことを指す。以下の図に示すように、X window systemは、サーバー&クライアントシステムを採用している。このメリットは、いちいちVNCのように生の画像をデータで送るのではなく、GUIの構成を行う処理をクライアントのPCで担うことが可能な点である。すなわち、Raspberry Piから、私が使用しているMacには、GUIを表示するのに必要な情報が送られてくるだけで、実際にGUIを構築するのは、こちらのMacなのである。このことは、Webサーバーのシステムに似ている。

【画像情報】
Recreation of Image:X client server example.png 
日付 2006年11月21日 
原典 Wikimedia Commons 
作者 Original by David Gerard, recreated by Efitu
 許可 (ファイルの再利用) GFDL


方法は簡単。sshコマンドの後に-Xというオプションを付けるだけ。Raspbianはデフォルトで、ssh接続でX window systemの利用が可能となっている。
 $ ssh -X 

#midoriでテスト
$ midori &
 #Rでテスト
$ sudo apt-get install update
$ sudo apt-get install r-base

$ R
> hist(rnorm(100))


Day6 VNCでMacbookからRaspberry PiにGUIで接続

VNC(virtual network computing)という方法で、MacbookからRaspberry PiにGUIで接続する方法を紹介します。VNCでは、操作を行うたびにネットワークを介した画像データの送信が行われるため、動作が遅くなりがちである点に注意が必要です。

######## Raspbian側の操作#############

#vncサーバーをインストール
$ sudo apt-get update
$ sudo apt-get install tightvncserver

#ディスプレイ番号0、解像度1024×600、色数16bitでvncserverを起動
$ vncserver :0 -geometry 1024x600 -depth 16


#########Mac側の操作##############
「Finder」-> 「Go」-> 「Connect to Server」で以下のウィンドを開く。
ディスプレイ番号0でvncserverデーモンを起動しているため、"vnc://192.168.11.3"と入力。
ディスプレイ番号が1の場合は、"vnc://192.168.11.3:5901"、、ディスプレイ番号が2の場合は"vnc://192.168.11.3:5902"と入力。
 vncサーバーを起動させた時に設定したパスワードを入力
接続に成功すると以下のような状態になる。


【参考文献】
林和孝『Raspberry Piで遊ぼう』ラトルズ 2014 pp281-283
http://www.obenri.com/_vnc/vnc_server1.html