25
24

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

IoTワークショップでRaspberry Piを使う

Last updated at Posted at 2016-05-15

イントロダクション

プログラミングやIoT、プロトタイピングなどをワークショップで学ぶためのツールとして「Raspberry Pi」を使用することが増えてきました。Raspberry Piは、クレジットカードサイズのコンピュータボードで、安価で入手できるパワフルな環境として世界中に普及しており、豊富な情報を入手できます。様々な制約があるワークショップにおいて、円滑に進めるための事前準備について簡単にまとめてみました。もし、もっと良い方法をご存じでしたら、コメント等で教えていただけると助かります。

想定する参加者

  • MacOSまたはWindowsを普通に使うことはできる
  • Raspberry Piは初めて使う
  • PCの代わりではなくサーバまたは特定用途の専用機としてRaspberry Piを使いたい
  • 総数は数名〜十数名程度、チームあたり1〜2名で数チームを編成

想定する環境

  • Wi-Fiでインターネットに接続できる
  • PCおよびRaspberry Piに必要な電源を確保できる
  • 各自の作業に必要十分なスペースが確保されている
  • プロジェクタまたは大型ディスプレイが利用できる

想定する制約事項

  • スペースまたは予算の制限によりRaspberry Piごとにディスプレイやキーボード、マウスを用意することはできない
  • Wi-Fiルータの設定にアクセスしたり、ワークショップのためだけに設定を変更したりすることはできない
  • 講師以外のアシスタントはいない、もしくは1名程度でチーム毎に専属のアシスタントがサポートすることはできない

事前準備

ハードウェア

  • 各チーム毎
  • 共通
    • コンパクトなHDMI接続のディスプレイ(例:センチュリーのLCD-8000VH2B
    • コンパクトなUSB接続のキーボード(例:GMYLEのNPL710007

MACアドレスの確認

無線LANアダプタの場合

次の図はGW-USNANO2Aの例で、本体に小さな字で刻印されています。Raspberry Pi本体に接続してしまうと読み取れなくなるので、最後の4桁(この例では5197)をメモしておきます。

IMG_1572.JPG

Raspberry Pi 3 Model Bの場合

Raspberry Pi 3 Model Bのオンボード無線LANチップのMACアドレスに関しては、残念ながらシール等では記載されていないようです。面倒ですが、事前に有線LANで接続するなどしてMACアドレスを確認し、そのアドレスをシール等で記載しておくとよいでしょう。

以下はRaspberry Pi 3でのMACアドレスを確認した際の例です。この中でHWaddrとして表示されるのがWi-FiモデムのMACアドレスで、上位6バイト(b8:27:eb)はRaspberry Pi FoundationのベンダーIDなので全てのRaspberry Pi 3で同じです。下位6バイトがデバイス毎に異なるため、この6バイト(以下の例では12:34:56)をメモしておけばよいでしょう。

MACアドレスの確認
$ ifconfig wlan0
wlan0     Link encap:Ethernet  HWaddr b8:27:eb:12:34:56  
          inet addr:192.168.1.25  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::321e:d0af:f60b:b201/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:10548 errors:0 dropped:1532 overruns:0 frame:0
          TX packets:2102 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:5898932 (5.6 MiB)  TX bytes:280956 (274.3 KiB)

PC側での準備

Windows 10よりも前のWindowsの場合

後の手順で紹介する「ホスト名.local」でのアクセスに必要となるため、Windows 10よりも前のWindows(例:Windows 8)を使用している場合にはBonjour Print ServicesもしくはiTunes for Windowsをインストールします。IPアドレスで指定する場合にはこれらのアプリケーションのインストールは不要です。

Raspberry Piの設定

基本設定

  1. RASPBIAN JESSIE (May 2016)を公式サイトのダウンロードページからダウンロードして公式サイトで紹介されている手順に従ってマイクロSDカードにコピー
  • MacOSでGUIから操作したい場合にはApplePi Bakerが便利
  1. /boot/wpa_supplicant.confという名前のファイルを作成してアクセスポイントの情報を追記1
  2. マイクロSDカードをイジェクトし、Raspberry Piに挿入して起動し1分間程度待つ
  3. PC上でarp -aコマンドを実行して同じWi-Fiルータに接続しているデバイスのMACアドレスとIPアドレスのリストを取得する
  4. 取得したリストと事前に確認したMACアドレスを照合し、それぞれのRaspberry Piに割り振られたIPアドレスを取得する
  5. PC上でターミナルを起動し、ssh pi@192.168.1.23のようにしてSSHでそれぞれのアドレスに接続する
  6. sudo raspi-configでRaspberry Pi Software Configuration Toolを起動する
  7. 5 Internationalisation OptionsI2 Change Timezoneで現在地を選択(例:Asia→Tokyo)する
  8. 9 Advanced OptionsA2 Hostnameでホスト名をデフォルトの「raspberrypi」から変更する(例:team-1-pi、使用できる文字はaからzまでのASCII文字と数字、ハイフンのみ)
  9. escキーでRaspberry Pi Software Configuration Toolを終了する
  10. sudo apt-get updateおよびsudo apt-get upgradeを実行する2
  11. sudo rebootで再起動する

以下はWPA2パーソナル(WPA2-PSK)環境でのwpa_supplicant.confの例です。

wpa_supplicant.conf
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=JP

network={
        ssid="YOUR_SSID"
        psk="YOUR_PASS"
        key_mgmt=WPA-PSK
}

一時的にディスプレイとキーボードを接続し、公式サイトの説明に従ってGUIで設定した後、/etc/wpa_supplicant/wpa_supplicant.confとして生成されたファイルを利用すると簡単でしょう。なお、このままではパスフレーズが平文で記載されてしまっているため、以下のようにして生成した文字列をpskとして指定した方が良いでしょう(ssidには二重引用符が必要なのにpskには不要なので注意)。

sudo wpa_passphrase <SSID> <PASSPHRASE>

以下はarp -aでPCが接続しているWi-Fiルータに接続中のデバイスのリストを取得した際の例です。この例では、192.168.1.23がRaspberry Piです。

$ arp -a
...
? (192.168.1.23) at 0:**:**:**:51:97 on en0 ifscope [ethernet]
...
SSHでのログイン例
$ ssh pi@192.168.1.23
pi@192.168.1.23's password:パスワード(初期設定はraspberry)

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Sat Apr 30 10:44:57 2016 from 2001:a451:1:4000:8638:35ff:fe4b:845a

raspi-config-hostname.png
図:ホスト名の設定画面例。ここではASCII文字と数字、ハイフン以外も入力できてしまうので注意。

SSHログイン後のアップデート
$ sudo apt-get update
$ sudo apt-get upgrade

Sambaのセットアップ

SambaはWindowsネットワークの実装の1つです。Raspberry PiにSambaをセットアップしてファイルサーバにすることで、MacOSやWindowsからアクセスしてファイルをやりとりしたり、Raspberry Pi上のファイルをPC上のテキストエディタで編集したりできるようになります。

  1. sudo apt-get -y install sambaでSambaをインストールする
  2. sudo nano /etc/samba/smb.confで設定ファイルを開く
  3. Global Settingsの[global]にunix charset = UTF-8dos charset = CP932の2行を追加する
  4. Share Definitionsのread only = yesread only = noに、create mask = 0700create mask = 0664に、directory mask = 0700directory mask = 0775に変更する
  5. Ctrl-OとCtrl-Xで設定ファイルを保存する
  6. sudo smbpasswd -a piで新規ユーザを追加する
  7. sudo service smbd restartでSambaを再起動する
#======================= Global Settings =======================

[global]
unix charset = UTF-8
dos charset = CP932
#======================= Share Definitions =======================

[homes]
   comment = Home Directories
   browseable = no

# By default, the home directories are exported read-only. Change the
# next parameter to 'no' if you want to be able to write to them.
   read only = no

# File creation mask is set to 0700 for security reasons. If you want to
# create files with group=rw permissions, set next parameter to 0775.
   create mask = 0664

# Directory creation mask is set to 0700 for security reasons. If you want to
# create dirs. with group=rw permissions, set next parameter to 0775.
   directory mask = 0775
新規ユーザの追加
$ sudo smbpasswd -a pi
New SMB password:
Retype new SMB password:

スクリーンショット 2016-05-15 10.01.25.png

スクリーンショット 2016-05-15 10.01.34.png

Netatalk

もし使用するのがmacOSだけであれば、sambaよりもNetatalkの方が簡単です。以下のようにしてインストールし、Finderの[移動]→[サーバへ接続…]で表示されるダイアログにafp://kotobukipi.local/のように入力し、Raspberry Piのユーザ名とパスワードを入力することでFinderからアクセスできます。

$ sudo apt-get install netatalk

その他

環境の複製

ワークショップ全体の時間によっては、上記のような設定を全て行うことが難しいかもしれません。その場合には、1台のRaspberry Piであらかじめ必要とされる環境構築を済ませ、その環境をSDカードにコピーすることで時間を大幅に短縮できます。手順は以下の通りです。

  1. マイクロSDカードを挿入したUSBカードリーダーをUSBポートに接続する
  2. メニューのAccessoriesからSD Card Copierを起動する
  3. コピー元(Copy From Device)に「Internal SD Card」を、コピー先(Copy To Device)にUSBカードリーダー(例:Generic- USB3.0 CRW -SD)を選択する
  4. 「Start」ボタンを押して実行する

2016-05-15-100616_465x180_scrot.png

2016-05-15-100654_314x175_scrot.png

2016-05-15-100933_314x175_scrot.png

2016-05-15-102256_314x175_scrot.png

なお、所要時間はそれなりに(8GBのSDに対して実測した際で約15分)かかるため、多数のSDカードを準備する場合にはそれなりの準備時間を想定しておく必要があるでしょう。

トラブルシューティング

SSHでログインしようとした際に警告が表示されてログインできない

このエラーは、OSをインストールし直した場合など、以前に接続したことがあるホストに接続した際、そのホストがクラックされたのではないか、ということで警告が表示されることがあります。この場合には、適当なテキストエディタで/Users/username/.ssh/known_hostsを開き、そのファイルから該当するホスト(この例では192.168.1.23)の情報が含まれた行を削除するとログインできるようになります。

SSHでセキュリティに関する警告が表示された例
$ ssh pi@192.168.1.23
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ECDSA key sent by the remote host is
SHA256:********************************/**********.
Please contact your system administrator.
Add correct host key in /Users/username/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /Users/username/.ssh/known_hosts:15
ECDSA host key for 192.168.1.23 has changed and you have requested strict checking.
Host key verification failed.

ホスト名.localでの接続が不安定

sudo nano /etc/avahi/avahi-daemon.confでavahi-daemonの設定ファイルを開き、以下のようにuse-iff-runningをyesに設定すると解決する場合があります。

[server]
...
use-ipv4=yes
use-ipv6=yes
...
use-iff-running=yes

SSHでの反応が時々鈍くなる

この例で使用しているGW-USNANO2Aなど、一部のUSB無線LANアダプタに対してはデフォルトで省電力モードが有効になっているため、一定時間操作しなかった場合などに無線LANアダプタがスリープし、そこからの復帰に少し時間がかかる場合があります。以下のようにして設定ファイルを作成し、設定を記入することにより、次回起動時からスリープしないようになります。

$ sudo nano /etc/modprobe.d/8192cu.conf
# Disable power management
options 8192cu rtw_power_mgnt=0 rtw_enusbss=0 rtw_ips_mode=1

リファレンス

  1. RASPBIAN JESSIE (May 2016)から追加されたもので、/boot/wpa_supplicant.confとして作成したファイルは、初回起動時に/etc/wpa_supplicant/に移動され、無線LANが有効になると共に指定したアクセスポイントに自動的に接続される。もしもこれで上手くいかない場合には、一時的にディスプレイとキーボードを接続し、公式サイトの説明に従ってGUIで設定するのがいちばん早いかもしれない。

  2. ここでsudo rpi-updateしてファームウェアを最新のものに更新することを推奨している記事が多数ある。しかしながら、最新のファームウェアに対応していないアプリケーションもあるため、特に理由がない限りは闇雲に最新のものに更新しない方がいいかもしれない。

25
24
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
25
24

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?