Raspberrypi3

RaspberryPI3の環境構築メモ

More than 1 year has passed since last update.

はじめに

Raspberry PIで工作をする上で必要な作業をまとめてインストールする作業のメモ.
みんなのラズパイコンテスト2017」に向けて,いろいろと作業をおこなっているが,自分の実力不足かいろいろなところでコケる.
もうすでに5回目の再インストールに入ろうとしている.
もう何度も同じ作業をやる前にバックアップ取っとけよ,とかいろいろあるとは思うが今後も新たに環境構築を行うこともあるだろうからここにメモしておく.

他の方も少しでも参考になれば幸いです.

構築予定の環境

  • Raspberry PI3 with Jessie
  • OpenCV 3.2
  • Blynk
  • Adafruit WS2812
  • FaceTracker

今回のトラブル

特に今回はI2Cが認識しなくなった.デバイスが壊れているのかと思い,PCA9685,RaspberryPI3ともに買いなおしたが変化なし.
新たにインストールし直したSDカードで起動+確認したら認識したのでHWのトラブルではなかった.
金損した...orz

そこで,今回再インストール作業に伴い,行った作業を列挙していくことにした.途中で適時バックアップにimgファイルを作成する予定.

OSインストール

この作業はすでに終わっているので,後で書きます.

インストール直後の環境構築

RaspberryPi3を買ってSSHして電源を切るまで
ここ を参考に

sudo apt-get update
sudo apt-get upgrade
sudo rpi-update
sudo reboot now

VNC構築

OpenCVを使う場合,デフォルトのVNC接続でつなげるとOpenCVの画像がフレームバッファに直接描画されるようでHDMIの画面からしか見ることができません.
そこで,VNCでRaspberry Piを別のPCから操作しようあたりを参考にx11vncを導入します.

sudo apt-get install x11vnc
sudo x11vnc -storepasswd

これでVNC接続するときのパスワードを設定します.
さらに起動時に自動で立ち上がるように

cd ~/.config
mkdir autostart ※autostartディレクトリが存在していれば不要
cd autostart
nano x11vnc.desktop

x11vnc.desktopの内容は

x11vnc.desktop
[Desktop Entry]
Type=Application
Name=x11vnc
Exec=x11vnc -usepw -forever
Terminal=false

こんな感じ
起動しているか,の確認には

ps aux | grep x11vnc

これでできる.

ファイル共有

windowsのファイルシステムと共有するためにSambaを導入.

sudo apt-get install samba
sudo apt-get install chkconfig

smb.confの設定

smb.conf
sudo nano /etc/samba/smb.conf


[pi]
path = /home/pi
read only = No
guest ok = Yes
force user = pi

我が家にはMacもあるので、そちらも設定

sudo apt-get install netatalk

I2C周り

参考
- Raspberry Pi でI2C: 温度センサーを使う
- 最近の Raspberry Pi で I2C を有効化
- Raspberry Pi/i2cの有効化 - Berry Pie Lab

sudo nano /etc/modprobe.d/raspi-blacklist.conf
sudo modprobe i2c-dev

sudo apt-get install i2c-tools

ブラックリストをチェックしても何もなかったので,そのままインストール続行.

OpenCVインストール

ビルド用事前インストール関連

今回はC++で作業を進めるが,今後のことも考えてPython環境も整えておく.

sudo apt-get install build-essential cmake pkg-config
sudo apt-get install libjpeg-dev libtiff5-dev libjasper-dev libpng12-dev
sudo apt-get install libgtk2.0-dev libgstreamer0.10-0-dbg libgstreamer0.10-0 libgstreamer0.10-dev libv4l-0 libv4l-dev

sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
sudo apt-get install libxvidcore-dev libx264-dev

sudo apt-get install libatlas-base-dev gfortran
sudo apt-get install python-numpy python-scipy python-matplotlib
sudo apt-get install default-jdk ant
sudo apt-get install libgtkglext1-dev
sudo apt-get install v4l-utils

pip のインストール
ライブラリ用のディレクトリ「lib」以下に格納

mkdir ~/lib
cd ~/lib
wget https://bootstrap.pypa.io/get-pip.py
sudo python get-pip.py

OpenCV3.2のインストール

wget -O opencv.zip https://github.com/Itseez/opencv/archive/3.2.0.zip
unzip opencv.zip

wget -O opencv_contrib.zip https://github.com/Itseez/opencv_contrib/archive/3.2.0.zip
unzip opencv_contrib.zip

そしてコンパイル

cd ~/opencv-3.2.0/
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE \
    -D CMAKE_INSTALL_PREFIX=/usr/local \
    -D INSTALL_C_EXAMPLES=OFF \
    -D INSTALL_PYTHON_EXAMPLES=ON \
    -D OPENCV_EXTRA_MODULES_PATH=~/lib/opencv_contrib-3.2.0/modules \
    -D BUILD_EXAMPLES=ON \
    -D ENABLE_NEON=ON ..

sudo make -j3

sudo make install
sudo ldconfig


sudo nano /etc/bash.bashrc
sudo nano /etc/ld.so.conf.d/opencv.conf
/etc/ld.so.conf.d/opencv.conf
/usr/local/lib          # enter this in opencv.conf, NOT at the command line (leave a blank line at the end of opencv.conf)
/etc/bash.bashrc
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig       
export PKG_CONFIG_PATH

そして再起動.

BLYNK

参考にしたのは
第1回 IoTサービス「Blynk」を導入しよう - 連載 IoTサービス「Blynk」を使ってRaspberry Piをスマホからコントロールしよう
このサイト.

インストール

mkdir blynk
cd blynk
git clone https://github.com/blynkkk/blynk-library.git
cd blynk-library/linux
make clean all target=raspberry

起動時にBlynkが立ち上がるようにblynk.desktopを作成

cd ~/.config/autostart
nano blynk.desktop

blynk.desktopの内容は

blynk.desktop
[Desktop Entry]
Type=Application
Name=blynk
Exec=sudo blynk --token=BLYNK_TOKEN
Terminal=false

BLYNK_TOKEN にはBlynkで設定したTokenを入力.

C++で扱うためには,
Using C++ on a Raspberry Pi with Blynk
このあたりが参考になります.

BlynkをPythonで扱うこともできるようです
- [SOLVED]How to use python with blynk?
- Github
- Blynk API

ローカルサーバー

Blynkを

ここまでをバックアップ

Windows で Raspberry Pi のバックアップを取る方法
あたりが参考になります.

今回はwindowsでバックアップを取るので,Win32 Disk Imagerを使います.

再開

Adafruit WS2812環境

WS2812とは,マイコンチップを内蔵して3本の信号線で多数のフルカラーLEDを同時にコントロールできるLEDです.

参考
- [Tutorial] Connect a Raspberry Pi to a RGB LED/WS2812-Strip

C++で動かす

git clone https://github.com/jazzycamel/ws28128-rpi

Pythonで動かす

git clone https://github.com/jgarff/rpi_ws281x

Face Tracker

FaceTracker

git clone https://github.com/kylemcdonald/FaceTracker

cd ~/git/FaceTracker
make target=raspberry

これでコンパイルできるはずです.

face-alignment-at-3000fps

このあたりが参考になります.
- 関東CV勉強会20140802(Face Alignment at 3000fps)
- Github

ただし,このface-alignment-at-3000fps は動画に対応していないのでひとまずpending.