2016年4月11日月曜日

据置きのルーター機器を介さずキャタピラ式模型を操作してみた

はじめに

本書の最終章において、Raspberry Piを搭載したキャタピラ式の模型を作成し、PCやスマートフォンから操作するという演習を行ないました。

その際、Raspberry Piとスマートフォンの間の通信は、下図のようにルーター機器(典型的にはWifiルーター)を介しました。

この方法では、Wifiルーターから離れた場所ではキャタピラ式模型を操作することはできません。キャタピラ式模型を家から持ち出して操作したい場合などです。

本ページでは、そのような場合の対処法を記します。いくつか方法はあるのですが、実現が簡単な方法を紹介します。

方法1~ポータブルWifiルーターを用いる

まず、最も簡単なのは、上図の「ルーター機器」を「ポータブルWifiルーター」にそのまま置き換えることです。これにより、「キャタピラ式模型」、「スマートフォン」、「ポータブルWifiルーター」の3点を持ち出せば、外出先でキャタピラ式模型の操作ができます。

ただし、多くの場合、これはdocomoなどの通信業者との契約が必要なので、既に「ポータブルWifiルーター」をお持ちの方向けの方法となるでしょう。

方法2~スマートフォンのテザリング機能を用いる

2つめの方法は、上図の「ルーター機器」の機能をスマートフォンに肩代わりさせる方法です。図で示すと下図のようになるでしょう。

図から分かるとおり、据置きのルーター機器が不要になり、構成がシンプルになるのがメリットです。ただし、スマートフォンの電池の消費が速くなるという欠点もあります。

Androidスマートフォンではこの機能は「Wi-Fiテザリング」や「ポータブルWi-Fiアクセスポイント」などと呼ばれます。iPhoneでは「インターネット共有機能」と呼ばれます。


この機能を用いるには、お持ちのスマートフォンに対して、下記の制限があります。
  • テザリング機能に対応した機種をもち、さらに対応した契約をしていること。なお、以下に各通信会社へのリンクを貼りますが、これらの契約についての質問には答えられませんのでご了承ください。
  • SIM契約のないiPadの場合、この機能は利用できません(私のiPad mini Wi-Fiでは利用できませんでした)
条件を満たしている場合、利用はそれほど難しくありません。Androidスマートフォンの場合の例を以下に示します。機種やOSのバージョンにより異なる可能性がありますのでご了承ください。

まず、Wi-Fiアクセスポイントの初期設定を行なう必要があります。
  • ネットワーク名(任意。下図ではspnetとしています)
  • パスワード(任意。8文字以上)
を入力して保存します。この設定は一度行なえば二度目は必要ありません。

設定が終わったら、右図のようにポータブルアクセスポイントを有効にします。やはり機種やOSのバージョンにより異なりますが、通知領域にポータブルアクセスポイントが有効であることを示すアイコンが現れるでしょう。

この状態で、Raspberry PiにてWifiの設定を行い、スマートフォンによるネットワークに接続します。その際、ネットワーク名は上で設定したものを選択し、パスワードも上で決めたパスワードを入力します。この操作は通常のルーターに接続する場合と同じです。

なお、キャタピラ式模型の操作が終わったら、「ポータブルアクセスポイントをOFFにする」ことを忘れないでください。OFFにしないとスマートフォンの電池の消費が速くなりますので、必要なときのみ有効にする、という使い方をします。


なお、iPhoneにおける設定はAppleによる「インターネット共有」の解説をご覧ください。私のSIM契約のないiPad miniでは、インターネット共有機能を利用できず、解説を作成できないためです。iPhoneによるインターネット共有でうまく動作した、という方はお知らせいただけると幸いです。

方法3~Raspberry Pi側にルーター機能を持たせる

最後の方法は、スマートフォンにではなくRaspberry Pi側にルーター機能を持たせるという方法です。

しかし、今回のようにキャタピラ式模型を動かすという目的では、この方法には以下の欠点があります。
  • 初期設定が複雑である
  • アクセスポイント化したRaspberry PiにスマートフォンをWifi接続すると、その間スマートフォンがインターネットに接続できなくなる
そのため、本ページではこの方法の解説は省略します。興味のある方はコメント欄に少し情報を記しましたのでご覧ください。

5 件のコメント:

  1. いつも楽しく拝読させていただいております。

    公園や車の中などのように、wifiルーターの無い環境でmacからRaspberry Piにssh接続したいと思っています。
    テザリングだとスマホの電池消耗とデータ通信の容量が気になるので、方法3の解説をリクエストします。(後者についてはRaspberry Piからインターネットにアクセスしなければ問題ないかもしれませんが)

    wifiルーターの無い環境でリモートログインする方法として、シリアルコンソールからBluetooth経由で入る方法もあるようです。
    いろいろ調べて何度かトライしてみたのですが、どうもうまくいきませんでした。(/devの下にRaspberry PiとペアリングしたBluetoothデバイスが見えない)
    こちらのやり方についても、もしわかるようでしたら解説していただけると嬉しいです。

    Raspberry Pi 3B+、Raspbian GNU/Linux 9.8 (stretch)を使用しています。
    よろしくお願いします。

    返信削除
    返信
    1. macについて書き忘れていました。
      MacBook Proで、OSはmacOS Mojave 10.14.4を使用しています。

      削除
    2. 既に沢山の方がPi 3のアクセスポイント化を解説したページを作成していますので、
      私が新たに解説ページをつくるよりも、既にあるページを参考にされた方が
      良いと思います。

      例えば、
      「Raspberry Pi 3 Model B+でWiFi Access Pointを設定した話」
      https://qiita.com/kekedadamama/items/f2a2d4a9c8ea9b4ffd73
      に従ってみます。

      対象はPi 3および Pi 3 Model B+です。
      NOOBSは2019-04-08の3.0.1を用いました。

      なお、以下の手順に従うと、途中でPi 3のWifiが無効になります。
      途中でWifiがアクセスポイントモードになるためです。
      ですので、以下の手順はRaspberry Piにディスプレイなどを接続した状態で実行すべきです。

      まず、以下のコマンドでスクリプトをダウンロードします(長いですが一行です)

      wget https://gist.githubusercontent.com/khronos227/63c6f32baf218ab9563072d07977dba2/raw/cac7d475f61066d8702965d2d3f2a80038204d7e/rpi-wifi-setup.sh

      そして、ダウンロードしたスクリプトを実行します。

      sudo bash rpi-wifi-setup.sh raspberry pi-wifi

      これは、ネットワーク名(SSID)をpi-wifi、
      パスワードをraspberryと設定するためのコマンドですので
      適宜変更します。

      ソフトのインストールが行われるので、終了まで数分かかります。
      また、上で述べたように、Wifi接続をしていたならば
      このWifiが無効になって接続が切れてしまいますのでご注意ください。

      Rapsberry Piにはディスプレイで接続しているものとして、
      上記スクリプトの実行が終わったら下記の2コマンドを順に実行します

      sudo systemctl unmask hostapd

      sudo systemctl enable hostapd

      以上が終わったら、Raspberry Piを再起動します。
      すると、Raspberry Piがアクセスポイントモードで動作するようになっています。

      MacやPCでネットワークpi-wifiを見つけ、
      パスワードraspberry でWifi接続してください。

      なお、Raspberry Piを有線接続しておけば、
      PC->Raspberry Pi->インターネット
      とネット接続できます。有線接続がなければ
      PCはRaspberry Piとしか通信できません。

      Raspberry Piにssh接続するには

      ssh 172.24.1.1

      としてください(172.24.1.1は固定です)

      以上で、Raspberry Pi 3/3+のアクセスポイント化は終了です。

      これを元に戻すには、やはりRaspberry Piをディスプレイに接続した状態で
      まず下記3コマンドを順に実行します。

      sudo systemctl disable hostapd

      sudo systemctl disable dnsmasq

      sudo mv /etc/network/interfaces.d/wlan0 ~/

      さらに、下記コマンドで/etc/dhcpcd.confを編集できる状態とし…、
      sudo leafpad /etc/dhcpcd.conf
      ファイル末尾の

      denyinterfaces wlan0

      という行を

      #denyinterfaces wlan0

      として無効にして保存、終了します。

      ここでRaspberry Piを再起動すれば通常のWifi利用に戻っています。


      この後さらにアクセスポイントモードに戻すにはその逆を実行します。
      すなわち、
      /etc/dhcpcd.conf末尾の

      #denyinterfaces wlan0

      を有効にし、下記3コマンドを実行、です。

      sudo mv ~/wlan0 /etc/network/interfaces.d/

      sudo systemctl enable dnsmasq

      sudo systemctl enable hostapd


      なお、本ページは「据置きのルーター機器を介さずキャタピラ式模型を操作」することを
      目的としたページです。

      シリアルコンソールからBluetooth経由でログインする方法では
      「キャタピラ式模型を操作」することはできませんので、
      その方法の解説はご容赦ください。
      (キャタピラ式模型の操作にはPCとRaspberry Piのネットワーク接続が必要なためです)

      削除
    3. 念のため記しますが、上で記した作業は全てRaspberry Pi上で行うものです。

      PCまたはMacで必要な作業は
      「WifiでPi 3に接続する」「ssh で172.24.1.1に接続する」の
      2点のみです。ご注意ください。

      削除
    4. 丁寧な回答ありがとうございます。
      トライしてみようと思います。

      削除