Kamuycikap - SentenceDataBase

日々の勉強の記録を気分で書き綴るブログ

遅ればせながら、Raspberry piで遊びはじめた♪(*´∀`)ノ

Raspberry piのセットアップ

購入したRaspberry pi。
購入しようとした時には品薄でどうにもならず。
今になってやっと購入。
まぁ、開いていた間でさまざまやることが増えたのもあるんですが。

  1. OSのダウンロード
  2. SDカードのフォーマット
  3. 起動と各種セットアップ
  4. DHCPの対策(SSHとかVNCとかの為)
  5. rsyncでディレクトリ同期
  6. sshで接続してみる
  7. zshのインストール
  8. Emacsのインストール
  9. VNCも一応入れてみる
  10. inoのインストール(ArduinoCUI開発環境)
  11. setserialもインストールしとく
  12. Wi-fiドングルで無線化!
  13. こいつで実現したいこと

OSのダウンロード

NOOBSをダウンロード。
ダウンロードしたzipファイルを解凍しておく。
http://www.raspberrypi.org/downloads/

SDカードのフォーマット

SDカードは、専用ツールでフォーマットする。
残念ながらWindowsMacでしか動作しない・・・ので、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のREGZAHDMI接続したら・・・綺麗に写った!!

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

こうなります。

で、何のファイルを送るのかですが、後ほど必要になるEmacszshの設定ファイルを持ってきます。

SSHでRaspberry piに接続してみる

さぁ。いよいよ接続!!
コマンド叩いてみたら・・・・いけた!!

zsh % sudo ssh pi@kamuypi.local
pi@kamuypi.local's password:   <--- ここでRaspberry piに設定したパスワードを入力!!

パスワードを特に変更していない場合は一律で「raspberry」になっている様子です。

Emacszshをインストール

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の開発環境です。

GUIIDEssh接続では不可能。
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

■各種センサー
・温度確認
・明るさ確認
・エアコン制御
・リビングの明かり制御



優良アダルトサイト紹介の最終形態!!MaxInfo