Raspberry Pi Zero WHを素人なりにセットアップ

夢は「リモコン統一」!!

家の照明がリモコン操作になってから、いろんなところにリモコンがある。 中にはボタンを二度押さないと照明が消えないリモコンもあり、なんとも使いづらい。 そんな折、Raspberry Piで安くリモコンを自作する解説記事を見つけた。

qiita.com

この方法なら電子工作初心者の自分でもできそうだし、工夫次第でスマートなリモコンを作れると思い、材料を揃えてみた。 新しく購入した材料は以下の通り。

  • 赤外線受信モジュール
  • 赤外線LED
  • MOSFET (2種類) (どういうものなのか理解していない)
  • 抵抗 (2種類)
  • ピンソケット
  • ユニバーサル基板
  • ブレッドボード
  • ジャンパ・ワイヤー
  • Raspberry Pi Zero WH
  • micro SDカード 8GB

総額で4,000円もないけど、たくさん買ったから気持ち的に引き返せない。

で、意気揚々と制作開始しようとしたが、Raspberry Piの開発環境をセットアップするのに結構手間取ったのでメモることにする。

目的

Raspberry Piを使ったことのある人にとっては当然だろうけど、こいつにはディスプレイもマウスもキーボードもついていない。 家に余ってるディスプレイなんてないし、新しく買ったら予算オーバーするのは目に見えている。 しかも、Raspberry Pi ZeroはUSB端子がUSB micro-B、つまりスマホとかによく使う小さい端子しかついていないので、 マウスやキーボードを接続するのも大変そうだ。 そこで、今持ってるパソコンとSSH接続して開発をする環境を構築したい。

参考にした記事

qiita.com

すごく参考になった。 この記事で言うところの「USBケーブル一本で電源供給+ネットワーク接続」を目指す。

環境

Raspberry Pi

Raspberry Pi Zero WH。

自分は秋月電子秋葉原の物理的店舗)で購入した。

SD カード

HIDISCというメーカーのmicroSDHC I規格のカード。 容量は8GB。 型番は字が小さくて読みたくないので省略。

どこかの記事によるとSDカードとRaspberry Piの相性というものがあるらしく、 RPi SD cards - eLinux.org で確認してから購入するのがいいらしい。 私も一応確認した。

パソコン

MacBook Pro (15-inch, 2017)

macOS Mojave ver.10.14

Wi-Fi

2.4GHz帯じゃないとRaspberry Pi Zero Wが対応していない。 規格でいうと802.11 b/g/nのいずれかが必要。

USB ケーブル

以前使っていたスマホの充電ケーブルで代用。 片側がUSB A端子(フツウのUSB)でもう一方がUSB micro-B端子のもの。

合わせて、自分のMacBookにはUSB Type-CしかついていないのでUSB A端子を挿す用のアダプタ。

古いパソコン

やっぱりMacBookにSDカードが挿さらないので大学で使っているちょっと古いMacBookでOSイメージを書き込んだ。 SDカード用のアダプターが欲しい。

手順

OSの準備

SDカードの挿さるパソコンでRaspberry Pi用のOS Raspbianを準備する。 やり方は色々あると思うけど、私は Download Raspbian for Raspberry Pi でRASPBIAN STRETCH WITH DESKTOPをいうのをzipでダウンロードした。 STRETCHというのは現行バージョン4.14の愛称らしい。 もしかしたら、自分の目的だとRASPBIAN STRETCH LITEで事足りたかもしれない。

ダウンロードしたzipファイルはブラウザ(Chrome)の機能で展開した。便利だ。 Etcherっていうのを使うと簡単にインストールできるみたいだったけど、 ちょっとプリミティブにやりたい気分だったのでEtcherは使わずコマンドラインからインストールした。

Installing operating system images on Mac OS - Raspberry Pi Documentation に従えば特に困ることはなかったと思う。

SSHの有効化

イメージファイルがSDカードに書き込めたら、カードを一旦抜いて再度接続するとbootという名前になる。 これがなんでなのかよく分からん。 とにかく、bootができるので、そこにsshという名前のファイルを置いておく。

$ touch /Volumes/boot/ssh

USB経由でのインターネット接続の有効化

/Volumes/boot/cmdline.txtに"modules-load=dwc2,g_ether"を追加するらしい。 場所はrootwaitとquietの間。 全く意味がわからん。 実は必要ないのではないかという気もする。 今度調べてみよう。

さらに、/Volumes/boot/config.txtの末尾に"dtoverlay=dwc2"を追加するらしい。 これまた意味がわからん。 追々調べよう。

ここまでできたら、SDカードをRaspberry Piの方に挿し直す。 こんなちっこいのがちゃんと動くのか不安だけど信じる。

起動!

参考にした記事だと、PCでUSB接続のインターネット共有を有効にせよとあるのだけど、 なんかそれをしなくてもできた。 インターネットの共有をしてなくてもローカルでのSSH接続はできるのかもしれない。

というわけで、USBケーブルでRaspberry Piとパソコンを繋ぐ。 電源が供給されると自動的にRaspberry Piは起動して緑のLEDが光る。 LEDが光るのは楽しい。 Raspberry Piを買って良かった。 LEDは最初のうち点滅しているが、体感1分くらいで安定して光るようになる。 点滅しているのはブート処理をしてることを示しているのかな。

SSHでログイン

[MacBook]$ ssh pi@raspberrypi.local

でできる。 初期ユーザー名はpi、初期パスワードはraspberryになっている。 参考にした記事にはbonjourがどうのと書いてあったけど、よく分からないから無視した。 自分の躓きポイントがここにあって、「ラズベリー」のスペルはrasberryじゃなくてraspberryってこと。 スペルミスっててログインできず、寝た。

ログインパスワードの変更

スペルミスなどせずにログインできたら、パスワードを変更する。 初期パスワードのままインターネットに接続とかしちゃうとたぶんセキュリティ的に良くない。

[pi@raspberrypi]$ sudo raspi-config

とすると、設定をいじれる画面が出てくる。 選択はEnterキー、移動は矢印キーとかEmacsで移動するときのキー(Ctrl+{f, b, n, p})でできる。 ここを一通り眺めるだけで楽しい。 Raspberry Piを買って良かった。

Change User Passwordを選択すると、新しいパスワードを聞かれる。 確認のために二回入力するとパスワードが変更できる。

Wi-Fiの設定

Setting WiFi up via the command line - Raspberry Pi Documentation を見ながらWi-Fiの設定をする。 使うWi-FiSSIDとパスワードが必要。

設定ファイル(/etc/wpa_supplicant/wpa_supplicant.conf)を書くとき、 emacsvimがまだインストールされていないのでnanoというエディターで頑張って書いた。 大変であった。 nanoを呼ぶ時にsudoをつけてないと書き込み権限がなくて困る。 私はそれで二度同じ設定を書く羽目になった。 nanoの中で管理者権限で書き込む機能とかもありそうだけど、知らないし調べるより二度書いた方が速かった。

設定ファイルを書いてから、Raspberry Piを再起動するとWi-Fiに接続された。 再起動は

[pi@raspberrypi]$ sudo shutdown -r now

とかでできる。

接続の確認は

[pi@raspberrypi]$ ifconfig wlan0

IPアドレスが割り当てられているかを見たり、

[pi@raspberrypi]$ ping www.google.com

でグーグルのページに繋がるかを見たりした。 もっといい方法とかもありそうだけどノウハウがない。

SSHの設定

パソコンからログインする時に一々パスワードを入力するのは億劫なので、

[MacBook]$ cat ~/.ssh/id_rsa.pub | ssh pi@raspberrypi.local 'cat >> .ssh/authorized_keys'

のようにしてパソコンの公開鍵を登録しておく。 パソコンの側でも、~/.ssh/configに

Host pi
HostName raspberrypi.local
User pi

のなどと設定しておくと、

[MacBook]$ ssh pi

でログインできて大変便利。

シャットダウン

Raspberry Piも他のコンピュータと同じく電源をいきなり抜くようにはできていない。 ちゃんとシャットダウンしてからUSBケーブルを抜く。

[pi@raspberrypi]$ sudo shutdown -h now

でシャットダウンできる。 LEDが消えたらケーブルを抜いていいんだと思う。

今後のやりたいこと

  • USBを経由しないSSH接続
  • Raspberry PiにLEDを繋いでチカチカ
  • OSイメージの書き込みからもう一度やり直し
    • 不要に思えるステップは飛ばしてみたりしたい
  • RaspbianにはMinecraftが入ってるらしいのでそれで遊んでみたい
  • もちろん、リモコンの作成