Raspberry PiにWebSocketを導入するまでの道のり①

raspberrypi2
少し思うところがあって、webブラウザからハードウェアを操作するための方法を模索していました。
それも、タップしたらすぐLEDが点灯するといったレスポンスの早さに重点をおいた実装方法です。
webと同期している感じを実現したいです。
前回の記事ではArduino Yunを使って、実現させようと思っていましたが、反応が遅かったのが気になりました。そこで、同僚のエンジニアに相談したところ、Raspberry PiとWebSocketを使えば実現できそうということだったので、実装方法をレクチャーしてもらいました。今回はHello Worldとして、Raspberry PiとWebSocketを使ってLEDをチカチカさせるまでを記事にしていきたいと思います。

ラズベリーパイのシリアルコンソール画面
ラズベリーパイにはLinuxというOSが搭載されています。小さなPCのようなもので、直接アクセスするためには画面が必要です。ラズベリーパイのコンソール画面をノートパソコンで見るためには、ネットワーク経由のSSHで接続する方法と、シリアルコンソールで接続する方法があります。最終的にはSSHで接続して操作する方が楽なのですが、そのためにラズベリーパイ側で設定する必要があるため、まず始めにシリアルコンソール接続をします。

Arduinoとシリアル通信
hardware
シリアルコンソール接続でラズベリーパイにログインするために、Arduinoを使います。

接続方法
RX (Arduino) <-> RX (Raspberry Pi)
TX (Arduino) <-> TX (Raspberry Pi)
GND (Arduino) <-> GND (Raspberry Pi)

ここで注意しておかないといけないのが、Arduino側のマイコンチップを外しておくことです。外しておかないとarduino側のプログラムが動いてしまって、うまくシリアル通信できません。

Raspberry Piにログインする
次に、ラズベリーパイにログインします。arduino側からPCのUSBポートにつなげて、ターミナルを立ち上げます。
以下のコマンドを実行すると、現在接続しているデバイス一覧を取得できます。

ls /dev/tty.*

iTerm2を使っている人はタブで補完できるので、この作業は必要ないかもしれません。
その後、screenコマンドで、使用しているPCとラズベリーパイをオープンにします。
screenコマンドについてはこちらのサイトに詳しく書かれています。

screen /dev/tty.usbserial-**** 115200

115200はボーレートです。シリアル接続ですので、screenコマンドの後ろにボーレートを記述します。
コマンドを入力すると、ターミナル画面に

raspberrypi login:

と表示されます。表示されない場合は、リターンキーを何回か押してみてください。
それでも何も表示されない場合は、シリアル通信がうまくできていない可能性があります。
arduinoとラズベリーパイのTXとRXの接続を確認してみてください。

ログインですが、デフォルトではユーザー名「pi」で、パスワードが「raspberry」になっています。
ログインが成功すると

pi@raspberrypi ~ $

このように、表示されます。

無線LANに接続
ラズベリーパイを無線LANに繋げてwifiで通信させるために、ラズベリーパイにUSBのwifiドングルをつけます。
今回使用したドングルはBUFFALOのWLI-UC-GNM2です。

まず、/etc/network/interfaces を編集します。

$ sudo vi /etc/network/interfaces

auto lo wlan0

iface lo inet loopback
iface eth0 inet dhcp

allow-hotplug wlan0
iface wlan0 inet dhcp
  wpa-ssid "接続先のSSID"
  wpa-psk "パスワード"
  #wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp

設定を保存した後に、ネットワークを再起動します。

sudo /etc/init.d/networking restart

これでネットワークに接続できるようになりました。
以下のコマンドでIPアドレスを調べることができます。

ifconfig wlan0

このIPアドレスでラズベリーパイにSSH接続できます。
ただ、これだとDHCP接続(IPアドレスが自動で割り振られる)であるため、毎回ラズベリーパイにログインして、IPアドレスを調べて接続しなくてはいけません。
LinuxではAvahiというフリーソフトウェアがあり、ホスト名でアクセスが可能になります。
こちらのサイトに詳しく書かれています。

sudo apt-get install avahi-daemon

デフォルトのユーザー名は「pi」で、ホスト名は「raspberrypi」になっているため、以下のコマンドで接続できると思います。

ssh pi@raspberrypi.local

ただしこれはローカルエリア内でしか参照できないため、接続元であるPC端末はラズベリーパイが接続されているwifiと同じssidに接続されていなければ使用できません。
以上がラズベリーパイでwifi接続するまでの流れです。
ラズベリーパイとの接続を切る場合は以下のコマンドを入力します。

sudo halt

入力してリターンキーを押すと、ラズベリーパイの赤いパイロットランプが消えます。
この状態で、ラズベリーパイの電源供給をしているusbを外して終了です。

You may also like...