豆腐とコンソメ

豆腐とコンソメ

ラズパイ工作ともろもろのプログラム勉強記録

RaspBerry Pi Zeroの初期設定メモ

ラズパイZero買ってきた

こちらのラジコンをつくる上で、軽量化が避けて通れなそうなので、ラズパイZeroを秋葉原で買ってきました。  
tohutokonsome.hatenablog.com

5ドルで購入することができる、というラズパイZeroですが、発売されたばかりのせいか、単品売りしているお店は見当たらず、諸々のセット価格で3000円程度かかりました。

今現在(2017年3月末)のお店事情なので、もう単品の取り扱いは開始しているかもしれません。

この辺のネットショップで買ってみたい気もします。
https://raspberry-pi.ksyic.com/news/page/nwp.id/46

とはいえ、無線LANとBlueToothを内蔵したラズパイZero(W)もそろそろ出回るみたいです。
なのでそっちが出たら、Zeroを買っちゃおうかと思います。

セット内容

以下が、お店で買った際のセット内容です。

f:id:konoemario:20170429183859j:plain:w300

  • ラズパイZero本体
  • 電源
  • microSD(4GB)
  • マイクロUSBケーブル
  • ミニHDMI変換アダプタ
  • ピンヘッダー(写真だとすでに本体に装着済みです)

写真にはないけれども、SSHで接続するためにも、wifiドングルは必須!

ピンヘッダーの装着

ラズパイZeroですが、GPIO見ての通りピンヘッダーが本体とばらばらになっていました。
なので、これをはんだづけしてくっつける必要があります。

f:id:konoemario:20170429182543j:plain:w300

※作業後に気づいたのだけれども、はんだつげしなくてもいけたかもしれない。
GPIO Hammer Headerで検索すると、ピンヘッダーをとんかちで叩いてくっつける方法が紹介されています。
動画では、とんかちで叩く際に、ラズパイZero本体を固定する機器があるので、はんだづけしなくてもよい、ピンヘッダーセットなのか、固定さえできればピンヘッダーはなんでもいいのか、とかその辺がわかってないです。

www.youtube.com

2017/8/29 追記 動画の内容は、はんだ付け不要の専用キットを使用しています!

www.switch-science.com

ラズパイZeroのはんだづけは結構細かい作業になるので、不安であればこちらの使用をおすすめします。

はんだづけをした

ステッピングモーターを動かしてみた際にモータードライバのはんだづけをした経験があるので、余裕だぜ!と思ったのですが、大苦戦しました。

tohutokonsome.hatenablog.com

以前、はんだづけをする際にブレッドボードに固定してやってみて、これって危ないのかな、なんて思ってたのですが、はんだづけするのは、そこまで間違っていないみたいでした。

はんだづけ完了後の状態ですが、ものすごい下手くそです。
現時点で動作確認してないので、GPIOがそれぞれ無事なのかがかなり不安です。 f:id:konoemario:20170429185338j:plain:w300

※参考動画
www.youtube.com

microSDにOSを書き込み

ラズパイ3のときは、NOOBSを使って、GUI版の「RASPBIAN JESSIE WITH PIXEL」をインストールしました。

f:id:konoemario:20170429190738p:plain:w300

今回は、CUI版の一番最軽量の「RASPBIAN JESSIE LITE」を使います。 microSDが4GBで、imgファイルは1.3GBでした。

Download Raspbian for Raspberry Pi

ラズパイ3のときは、Windows環境でカードリーダーでmicroUSBを認識した後にimgファイルをドロップして完了!みたいな操作をした記憶があるのですが、今回はMac環境でイメージファイルを作成しました。

Terminalを起動して、コマンドでimgを書き込むとそれっぽい満足感を得られるのですが、一歩間違えるとOSやらなんやら消しかねないぞ!自信ないならこれをつかっとけ!という公式アドバイスに従って「Etcher」といツールを使用しました。

etcher.io

ラズパイZeroを起動

このへんは、ラズパイ3のときにすごく感動したのですが、二度目ともなると、大したこともないです。
HDMIをモニターに挿すことでコンソール画面が起動します。

が、sshの設定にものすごく時間が買ったので、ラズパイZero(W)購入の際に苦労しないようにメモをしておきます。

SSHで繋がるように設定する。

「ラズパイ ssh」で検索すると参考記事がたくさんでてくるので、簡単そうだったのですが

  • キーボードとwifiドングルを同時に挿せない
  • ラズパイ3にもwifiドングルが必須だという勘違い

の二重苦によってかなり苦労しました。

ifconfigでネットワークの状態を確認する

ifconfigでネットワークインタフェースの状態を確認する。

・ifconfgのコマンド
ifconfig 〜(IP)ネットワーク環境の確認/設定を行う:ネットワークコマンドの使い方 - @IT

ネットワークインタフェース(以降、NIC)は、コンピューターがネットワークに接続するために必要なもの。

無線LANを利用する場合も、それに対応したNICが必要になる。

最近のPCでは、有線のNICはもちろんのこと、無線のNICも内蔵している。
ラズパイ3も無線のNICは内蔵しているのだよ!)

まず、ラズパイZeroを起動して、ローカライゼーションの設定を行った後、ifconfigを打ってみる。

pi@raspberrypi:~ $ ifconfig

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:256 errors:0 dropped:0 overruns:0 frame:0
          TX packets:256 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1
          RX bytes:20736 (20.2 KiB)  TX bytes:20736 (20.2 KiB)

usb0      Link encap:Ethernet  HWaddr 消した
          inet6 addr: 消した Scope:Link
          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)


※MACアドレスっぽいものや、なんとなくまずそうなものは消してます。  

以下二つのみが存在していることが確認できる。

  • lo

  • usb0

loは必ず存在しているみたい。

 loは「ローカルループバック」と呼ばれる特別な仮想インターフェイスだ。ホスト自身を示しており、OSのプロトコルスタックが必ず提供することになっている。従って、まったくNICを設置していない場合でも、このloだけは存在する。そうした初期状態であっても、仮想的にネットワークのテストなどに使えるように用意されているのだ。また、対応するIPアドレスは必ず127.0.0.1が割り当てられる。当然、このIPアドレスを用いて外部と通信することはできない。

以下より抜粋
ifconfig 〜(IP)ネットワーク環境の確認/設定を行う:ネットワークコマンドの使い方 - @IT

usb0は今の段階ではよくわからないので飛ばす。
usbテザリングで使えるみたい。
kassyjp.ninja-web.net

wifiドングルをラズパイZeroに挿す

使えるUSBポートはひとつしかないので、wifiドングルとキーボードの両方を同時の使用することができません。

なので、キーボードを外すことになってしまいます。

仕方がないので、以下のようなシェルスクリプトを書いて実行した後に キーボードを外して、wifiドングルを挿しました。

gistc58c215674b0c2e8e11f1c27a6c6d2b0

それぞれの結果を抜粋するとこんな感じでした。

lsusb
Bus 001 Device 005: ID 0411:01ee BUFFALO INC. (formerly MelCo., Inc.) WLI-UC-GNM2 Wireless LAN Adapter [Ralink RT3070]

(確認点)
・wifiドングルが認識されていること。  
lfconfig
lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:256 errors:0 dropped:0 overruns:0 frame:0
          TX packets:256 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1
          RX bytes:20736 (20.2 KiB)  TX bytes:20736 (20.2 KiB)

usb0      Link encap:Ethernet  HWaddr 消した
          inet6 addr: 消した Scope:Link
          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)

wlan0     Link encap:Ethernet  HWaddr 消した
          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)


(確認点)
・wifiドングルを挿すことで新たなインタフェースが増えていること
   (大抵はwlan〜みたい)
iwconfig

突然でてきた「iwconfig」 ifconfigがNIC全体に対して、iwconfigは無線LANの専門みたい。
無線LANのESSIDとかの設定が確認できる。

Linuxコマンド集 - 【 iwconfig 】 無線LANインタフェースの参照・設定:ITpro

wlan0     IEEE 802.11bgn  ESSID:off/any
          Mode:Managed  Access Point: Not-Associated   Tx-Power=20 dBm
          Retry short limit:7   RTS thr:off   Fragment thr:off
          Power Management:off

(確認点)
・見れることぐらい
    ESSIDやパスの設定をしてないので、繋がっていない状態
iwlist

これは、無線LANのアクセスポイントを探すことができるコマンド。

sudo権限で実行しないと、そんなコマンドねえよっていわれるので注意。

$ sudo iwlist wlan0 scanning|grep ESSID

ネットワーク管理の基本Tips:端末からアクセスポイントの情報を調べるには? iwlistコマンド - @IT

                    ESSID:"これもなんとなく消したESSID1"
                    ESSID:"これもなんとなく消したESSID2"
                    ESSID:"これもなんとなく消したESSID3"
                    ESSID:"これもなんとなく消したESSID4"

(確認点)
・自宅のwifiルーターのESSIDが検出できていること
 

このへんまで問題なければ、次の設定へ進む。

無線LANの設定を行う

一旦、wifiドングルを外して、キーボードに差し替えて以下ファイルを編集する。

  • interface
  • wpa_supplicant.conf
/etc/network/interfaceの設定

wifiドングル(NIC名:wlan0)用の設定を追加する必要がある。 記載ルールはDebianの資料にあるけれども理解しにくい。
第5章 ネットワークの設定

また、IPをDHCP経由ではなく固定する場合の書き方は後で調べる。

# interfaces(5) file used by ifup(8) and ifdown(8)

# Please note that this file is written to be used with dhcpcd
# For static IP, consult /etc/dhcpcd.conf and 'man dhcpcd.conf'

# Include files from /etc/network/interfaces.d:
source-directory /etc/network/interfaces.d

auto lo
iface lo inet loopback
iface eth0 inet manual

#ここから追加 wlan0用の設定

#ラズパイ起動時に自動でwlan0を起動
auto wlan0
#ホットプラグ(USBを電源いれっぱで抜き差し)を検知して起動
allow-hotplug wlan0
#dhcpでIPの設定を行う。固定にする場合はstatic?dhcpcd.confに書くの?
iface wlan0 inet dhcp

#wifiのSSID等の設定は、こっちに書く
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
/etc/wpa_supplicant/wpa_supplicant.confの設定

以下のコマンドで、wpa_supplicant.confの設定を行う。

sudo sh -c "sudo wpa_passphrase SSIDの名前 パスワード >>  /etc/wpa_supplicant/wpa_supplicant.conf"

そこからルーターの設定に応じて、kye_mgmt以降の設定を行います。
このへんは既にwifiで接続していたラズパイ3の設定をそのまま書くことにしました。

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

network={
        ssid="rs500m-d6afa0-1"
        #psk="暗号化前のpass"
        psk=暗号化後のpass
        #以下を追加
        key_mgmt=WPA-PSK
        proto=WPA2
        pairwise=CCMP
        group=CCMP
        priority=2
}

ここまで来たら、設定が完了です。
なんとなく再起動して、設定前に実行したシェルスクリプトを実行して、wifiドングルを挿します。

ifconfigの実行結果のinet addr のあたりにIPアドレスが振られていれば成功です。

wlan0     Link encap:Ethernet  HWaddr 消した
          inet addr:192.168.1.6  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: 消した Scope:Link
          inet6 addr: 消した Scope:Global
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:8645 errors:0 dropped:12 overruns:0 frame:0
          TX packets:3175 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:870992 (850.5 KiB)  TX bytes:503769 (491.9 KiB)

思ったこと

USBハブを購入したほうがよい。

※設定完了後、買いました。

GPIO制御のWringPiを使うまで

以下を追記しました。

tohutokonsome.hatenablog.com

IPアドレスの固定

アドホック接続の中で、行いました。

www.tohuandkonsome.site