Raspberry piのセットアップ
購入したRaspberry pi。
購入しようとした時には品薄でどうにもならず。
今になってやっと購入。
まぁ、開いていた間でさまざまやることが増えたのもあるんですが。
- OSのダウンロード
- SDカードのフォーマット
- 起動と各種セットアップ
- DHCPの対策(SSHとかVNCとかの為)
- rsyncでディレクトリ同期
- sshで接続してみる
- zshのインストール
- Emacsのインストール
- VNCも一応入れてみる
- inoのインストール(ArduinoのCUI開発環境)
- setserialもインストールしとく
- Wi-fiドングルで無線化!
- こいつで実現したいこと
OSのダウンロード
NOOBSをダウンロード。
ダウンロードしたzipファイルを解凍しておく。
http://www.raspberrypi.org/downloads/
SDカードのフォーマット
SDカードは、専用ツールでフォーマットする。
残念ながらWindowsかMacでしか動作しない・・・ので、Linuxの場合はエミュレータ使うかWindowsマシンで行う。
フォーマットしてから気がついたんですが、FAT32でのフォーマットでやってる様子なので、Linuxでフォーマットしても動作するかもしれない。
https://www.sdcard.org/jp/downloads/formatter_4/
※専用ツールは内部的にカスタマイズしてるような説明文が記載されているので・・・・Linuxでフォーマットは危険かも。
NOOBSをSDカードにセットアップ
セットアップと言っても・・・・解凍した全てのファイルをSDカードのルートにコピーするだけです。
SHIFTキーを押しながらRaspberry piの起動
SDカードをRaspberry piに押す!
さらに、USBマウスとキーボード、HDMIケーブルでテレビに接続。
コンポジットでテレビ接続した場合、どのように表示されるかは不明。
THOSHIBAのREGZAにHDMI接続したら・・・綺麗に写った!!
Raspbian を選択しました。
転送には結構時間かかります。
小一時間ほど書けて、OSが転送された様子。
他にも面白そうなOSがあったんですが、とりあえずの標準モノ選択です。
触りまくりで飽きてきたら、別のOSも試してみよう。
各種セットアップ
最初の起動時は、セットアップのためのコンソールアプリが起動します。
設定後に再設定を変更したい場合は
zsh% sudo raspi-config
とすれば再び設定アプリが起動します。
○ Change Your Pasword
パスワードを変更しておきます。
最初の「raspberry」だと沢山打たなきゃいけないし。
○ Internationalisation Options
→ Change Locate
自分が住んでいる地域を選択。
→ Change Timezone
自分が住んでいる地域を選択すると、時計設定に反映されます。
→ Change Keyboard Layout
自分が利用しているキーボードを選択。
僕の場合はUS配列なのでそれにあわせる。
○ Over Clock
オーバークロックしたい場合に触る設定。
Raspberry piを購入した時に、ヒートシンクも買っておいたのでそれを取り付けています。
どれくらいオーバークロックしても大丈夫なのかは未知数ですが・・・・とりあえず一番はやい周波数のTurboを選んでみます。
もしも、動作が不安定になるようであれば、設定する周波数を落として調整。
Modset → Medium → High → Turbo
○ Advanced Options
SSH接続するために、つねにサービスを起動するように設定する。
→ SSH → Enable
○ Finish
これを選択するとリブートします。
ちゃんとリブートで着てれば成功。
リブートできない場合は・・・・NOOBSがセットアップされているから、また最初からやればいいし。
DHCPの対策
僕の家のLANはDHCPサーバーが動いています。
Raspberry piに固定のIPアドレスを割り振ればいいのですが、そうも行かない理由があります。
Raspberry piを別の場所に持って行き、ネットワークに参加させたい場合、その環境がDHCPによるIPアドレス配布かもしれないです。
すくなくとも、自分のRaspberry piを持って外出していく先はDHCPであることが判明しています。
(´-ω-`;)ゞポリポリ 「どうする???」
google先生に聞いてみた。
Avahi デーモンのインストール
これで解決できるみたい。
IPアドレスが、コンピュータを起動するたびに変わってしまう環境において、共通の名前(ホスト名)でアクセスできる仕組みを提供してくれるようです。
この仕組みのことを
Zeroconf
というらしく、その仕組みを実装しているのが「Avahi デーモン」と言うこと。
zsh % sudo apt-get update zsh % sudo apt-get install avahi-daemon
インストールが終了すれば,avahi-daemon はすぐに動作を始め,これ以降,リブート後も avahi-daemon は自動的に実行されるようになるはず。
同じ SSID をもつ無線 LAN 内であれば,「ホスト名.local」という名前で,この Raspberry Pi にアクセスできます。
ホスト名を設定
zsh % sudo vi /etc/hostname
/etc/hostname に1行目にホスト名を記載します。初期値は raspberrypi となっています。 さらに、/etc/hosts の 127.0.1.1 raspberrypi となっている部分を上で決めた自分のホスト名に書き換えます。
zsh % $ sudo vi /etc/hosts
ちなみに、僕は「kamuypi」としました。
pingで確認してみます。
zsh % ping kamuypi.local PING kamuypi.local (192.168.24.66) 56(84) bytes of data. 64 bytes from kamuypi.local (192.168.24.66): icmp_req=1 ttl=64 time=0.593 ms 64 bytes from kamuypi.local (192.168.24.66): icmp_req=2 ttl=64 time=0.156 ms 64 bytes from kamuypi.local (192.168.24.66): icmp_req=3 ttl=64 time=0.159 ms 64 bytes from kamuypi.local (192.168.24.66): icmp_req=4 ttl=64 time=0.156 ms
イケてるみたいです。
データの受け渡し
も実現します。
昔ながらのrsyncがいいかなと。
簡単だし。
お互いに同期するためのディレクトリを用意します。
そうですね・・・・・ホームディレクトリ直下にoutdoorってのを作ることにします。
それを同期。
■PC側から操作
zsh % rsync -avru /home/kamuycikap/outdoor pi@kamuypi.local:/home/pi/outdoor
こうなります。
SSHでRaspberry piに接続してみる
さぁ。いよいよ接続!!
コマンド叩いてみたら・・・・いけた!!
zsh % sudo ssh pi@kamuypi.local pi@kamuypi.local's password: <--- ここでRaspberry piに設定したパスワードを入力!!
パスワードを特に変更していない場合は一律で「raspberry」になっている様子です。
Emacsとzshをインストール
apt-get使えるから簡単ですね〜♪⌒ヽ(*゚ω゚)ノ ヤッターッ!
zsh % sudo apt-get update zsh % sudo apt-get install emacs
zsh % sudo apt-get update zsh % sudo apt-get install zsh
たったこれだけ。
無事に設定ファイルも読み見込んだ。
Emacsはコンソールバージョンなので・・・・アレコレ触る必要があったのだけれど、それはまた後の機会に。
基本はssh接続で、CUIで利用します。
VNCもインストールしてみる!
HDMIケーブルでディスプレイに接続はできるものの・・・・やっぱりVNCの口も用意しておく。
こいつも至って簡単。
zsh % sudo apt-get install tightvncserver zsh % vncserver :1 -geometry 1024x768 -depth 24
これだけ。
んで、実行してみる。
zsh % tightvncserver New 'X' desktop is raspberrypi:1
2行目の情報が大切。
後に、PC側からVCN接続するときのパラメータになる。
zsh % vncviewer kamuypi.local:1 Connected to RFB server, using protocol version 3.8 Enabling TightVNC protocol extensions Performing standard VNC authentication Password: <--- ここでRaspberry piのpiユーザーパスワードを入れる
するとRaspberry piのGUI画面起動!!
GUIもリモートで実現。
ちょっとわからなかったのが、表示画面の移動。
画面が途中で切れていて、右や上の隠れている部分を表示させる方法。
スライドバーで右クリック、左クリックで表示部分を左右に制御
ってのに気がつくまで、ちょっと時間がかかりました。(´-ω-`;)ゞポリポリ
だって、普通はドラッグしたら画面の見えない部分にスライドしていくと思うぢゃん・・・
さぁ!Arduinoの開発環境だ!
いよいよArduinoの開発環境です。
GUIのIDEはssh接続では不可能。
Arduinoを開発するときだけGUIってのもなんだかなぁ・・・なので、CUI開発環境をインストールしてみました。
まずはArduinoの環境を素直にインストール。
zsh % sudo apt-get install arduino
つづきまして、ino環境を簡単にインストールできるツールpipをインストール
pipはgithubリポジトリからinoパッケージを簡単にインストールできるツールです。
zsh % sudo apt-get install python-pip
起動を確認してみる。
zsh % sudo pip --help Usage: pip COMMAND [OPTIONS] Options: --version show program's version number and exit -h, --help Show help -v, --verbose Give more output -q, --quiet Give less output
zsh % sudo pip install https://github.com/datsuns/ino/archive/master.zip
起動確認
zsh % ino --help usage: ino [-h] {build,clean,init,list-models,preproc,serial,upload} ... Ino is a command-line toolkit for working with Arduino hardware. It is intended to replace Arduino IDE UI for those who prefer to work in terminal or want to integrate Arduino development in a 3rd party IDE.
setserialもインストールしておく
Arduinoの開発になると、シリアルポートの設定を行う必要がある。
ので、簡単に設定と確認ができるツールをインストールしておく。
zsh % sudo apt-get install setserial
ここまででセットアップは完了!
実際のinoの動作は・・・また後ほど。
Wi-fiドングルで無線LANに参加!!
させてみた。
Google先生に質問したら、エディタであれこれ設定を書き換えているサンプルがあるんですが・・・・
GUIツールだけで行けた。
ちなみに、使ってみたWi-fiドングルはこちら。
■WLI-UC-GNM
http://buffalo.jp/product/wireless-lan/client/wli-uc-gnm/
これ差し込んでRaspberry piを起動しVNC接続。(HDMIで本体操作してもオッケー)
■Raspberry pi側
zsh % tightvncserver
でvncサーバーを起動したあとで
■PC側
zsh % vncviewer kamuypi.local:1
とする。
無事にGUI表示されたら「Wifi Config」ってアプリを起動する。
デスクトップ上に起動アイコンがあるはず。
このGUI使って、自分が使っているネットワークのパスワードとかSSIDを登録する。
ちなみに、WLI-UC-GNMは何も設定ファイルを編集することなく認識(wlan0として認識してた)してくれていたため、Wifi Configの画面上に選択肢として出てきていた。
wlan0のアダプターでSSID検出(scanボタンクリック)したら、ちゃんとアクセスポイント見つかったし。
特に苦労はありませんでした。
さぁできた!!!
ここまでで、このマシンで開発環境の基礎は出来上がった。
んで、何を作りたいか。
先日、さくらインターネットさんでレンタルサーバーの契約を行いました。
なので、こんな感じの関係でアプリを一つ作ってみようと。
まぁ、ありきたりですけれどね。
生活に密着してるとしたら・・・・スマホで家電制御くらいかなと。
作っているうちにあれこれと要望とかもでてくるだろうし。
■要件
エアコンのON/OFF制御を行いたい。
エアコンOn/OFFの確認ができる(温度で判断)
リビングの明かりをつけたり消したりできる。
■構成
スマホ or タブレットのブラウザ <--> sakura server <--> Raspberry pi <--> ArduinoUNO <--> 各種センサー
シリアル接続:Raspberry pi <--> ArduinoUNO
TCP/IP(GET) :sakura server <--> Raspberry pi
TCP/IP :スマホ or タブレットのブラウザ <--> sakura server
■各種センサー
・温度確認
・明るさ確認
・エアコン制御
・リビングの明かり制御