5
4

More than 1 year has passed since last update.

RaspberryPi4 セットアップについて(てんこ盛り版)

Last updated at Posted at 2021-11-09

立ち上げ手順等の取りまとめメモ
正直まとめておかないとすぐ忘れるのでやばい

やりたい事

①Opencvによる画像データ収集
②Tensorflow1系を使っての画像判別

大きくこの2つ(細かい部分はもっとあるが…)
目的別にRaspberryPiをセットアップすればOKだが
テスト機として全部入れる
その各種セットアップ方法をメモとして残す

機器環境

RaspberryPi4 modelB 8GB
RaspberryPi OS bastar(RaspberryPiImagerにてRASPBERRY PI OS FULL(32bit)をセットアップ)
Windows10 home 64bit

初回セットアップ

使用microSDは64GBを使用。
microSDのフォーマットについてはSDcardformatterを使用。
OSの書き込みに関してはRaspberry Pi Imagerを使用。
RaspberryPiimagerが出る前はbalenaEtcherを使用していたが
最新版を入れるなら公式版が楽。
各種APPのダウンロード・インストールについては割愛。

立ち上げ

OSをインストールしたmicroSDカードをRaspberryPi本体スロットに入れて電源ON

電源入れてしばらくするとデスクトップが立ち上がり、セットアップ案内が出るので
画面に沿ってセットアップを行っていく。

Set countryChange PasswordSet Up ScreenSelect WiFi NetworkEnter WiFi PasswordUpdata Software
アナウンスに従って進めていけば問題なく辿り着けると思われる。
(たまにWiFiのセッティングでバグる)

初回のセットアップが完了したら本番スタート

ターミナルを立ち上げて

sudo apt update
sudo apt upgrade -y
sudo apt autoremove
sudo reboot

上記を入力して最新にする。(初回のSoftware Updataでも可だが打ち込みしないと気持ち悪いのでいつもやってる)

これで次に進める。

機械学習系モジュールのインストール

setuptoolsが40.8.0なので --upgradeで41系にする。(tendorboradでエラー出る)

sudo apt install python3-dev -y
sudo pip3 install setuptools --upgrade

numpy opencv用

sudo apt install -y libhdf5-dev libqtwebkit4 libqt4-test libatlas-base-dev libjasper-dev

skimage入れた時点でpandasやmatplotなど大体入る

sudo apt-get install python3-skimage
sudo apt-get install python3-sklearn

tensorflow import時にエラーがでるが無視して良いらしい

sudo pip3 install tensorflow==1.14

keras

sudo pip3 install keras==2.2.4

OpenCVは3系を (2020/06/01時点ではまだ4系はバグ有るらしい)

sudo apt-get install python3-opencv

exfat(HDDのEXFAT形式に対応させる為)

sudo apt-get install exfat-fuse

日本語入力出来ない場合 Mozc

sudo apt install fcitx-mozc

ここまでくれば最低限のセットアップは完了。

他に使いたいモジュールがあれば都度インストールすればOKかと。

VNC ViewerやSSHの有効化

windows側から接続していたいので設定を行う。
SSH接続を有効にする設定も同じ所にあるので合わせて行うと楽。

画面左上のラズパイマークから
設定RaspberryPiの設定を開く。

インターフェースタブを選択して有効にしたい物を選択する。

カメラやSSH、VNCを有効にチェックを入れてOKを押す。

2021-07-07-104648_1920x1080_scrot.png

そうすれば再起動しますと出るので再起動する。

2021-07-07-104656_1920x1080_scrot.png

再起動したら使える様になる。(右上にVNCが表示される。)

2021-07-07-104816_1920x1080_scrot.png

windows側でVNCViewerを立ち上げて接続先のIPを入れれば接続できる。
初回はログインpassとか求められるのでセットアップ時に設定した物を入力すればOK

スクリーンショット (279).png

外付けHDDのマウント

画像等を保存する際、microSDに保存せず外付けのUSBメモリ等に保存する(はず)
なので、外付けHDDをマウント及び接続先固定を行う。
今回使用するのはWesternDigital製のWD Elements SE 2TBを使用する。

①使用HDDのフォーマット

色々なサイトを参考してめちゃくちゃやり方があったがwindows側に接続して
フォーマットするだけで使用可能になる。
windows側ではNTFS形式でフォーマット
マウント後にext4形式でフォーマットする文献が多いがwindows側で認識出来なくなるのでしない。

②RaspberryPiにHDDを接続する。

普通に接続するとHDDはデスクトップ上に表示される。
この時HDDは/media/pi/hddにマウントされる。
普通に使用する分にはこれでも問題ないと思うが自動マウント設定を行うので特に気にしない。

③自動マウントの設定

まずはデバイス状況を確認する為、ターミナルを立ち上げる。
ターミナルに以下を打ち込む。

df

2021-07-07-113249_1920x1080_scrot.png

マウントしたHDDが表示される。
確認したらアンマウントを行う

umount /dev/sda1

2021-07-07-114724_1920x1080_scrot.png

dfで確認数するとアンマウトされているこ事が確認出来る。


次に接続されているHDD等のデバイスをマウントするディレクトリを作成する。
接続先としては任意でよいがここではmnt直下に作成する。

sudo mkdir /mnt/hdd
sudo chmod 777 /mnt/hdd

2021-07-07-115808_1920x1080_scrot.png

外部からアクセス出来る様に権限を『すべて』にする方が楽です。
(Samba使用時の設定にもあるけどやっておいた方が楽かと)

まずは一通りの準備完了。

次にラズパイ起動時に自動マウントされる様に設定する。


ターミナルに以下を打ち込む。
作業性向上のため、2つ立ち上げるとやり易い。

sudo blkid
sudo mousepad /etc/fstab

2021-07-07-134759_1920x1080_scrot.png

sudo blkidでHDDのPARTUUIDを確認する。

1.png

sudo mousepad /etc/fstabで立ち上がったファイルに
PARTUUID=お使いのHDDのPARTUUID /mnt/ext_hdd ntfs defaults,nofail 0 0を入力して上書き保存する。

2.png

入力して上書き保存したら、再起動を行う。

再起動後にdfでマウント先が変わっている事を確認する。

2021-07-07-135903_1920x1080_scrot.png

これで設定したHDDは常に同じ場所にマウントされます。
(本体を交換したら再度行う。)

参考サイト

④sambaの導入

これに関しては特に必須という訳でないが
実験環境下でいちいちメディア経由でデータを抜くのがめんどくさいので
sambaを用いてファイル共有を行う。

1.Sambaとは?


Sambaとは、UNIX系OSとWindows(Windows NT、Windows 2000系)との間で、
ネットワーク上のファイルやプリンタの共有などを実現するソフトウェア。

要はWindows側からファイルにアクセス出来るってシロモノ。

sudo apt-get install samba
又は
sudo apt-get install -y samba

インストール中、こんな表示が出るけど【いいえ】でOK
2021-07-07-141157_1920x1080_scrot.png

2.共有フォルダの設定


今回は前述で設定した外付けHDDを共有化する。

sudo nano /etc/samba/smb.conf

これでconfファイルを開く。(viでもOK)
開いたファイルに設定を追加する。

[pi]
   comment = Welcome to pi Server
   path = /
   browseable = yes
   wriable = yes
   guest ok = yes
   force create mode = 0777
   force directory mode = 0777
   read only = no
   create mask =0777
   directory mask = 0777

2021-07-07-142204_1920x1080_scrot.png

元からある設定の下(赤線部)に追加する。
今回はテストなので誰でもアクセス可能にしているが、ニーズ合わせて設定する。

2021-07-07-143144_1920x1080_scrot.png

入力はこんな感じ

3.Sambaユーザーパスワード設定


sudo smbpasswd -a pi
New SMB password:
Retype new SMB password:
Added user pi.

パスワードに関してはRaspberryPiをセットアップした際に設定した物と合わせてますが
こちらも任意です。

設定が完了したら

sudo service smbd restart

上記でSambaを再起動してOKとなります。

4.Sambaへのアクセス


Windows側からRaspberryPiにアクセス。
ショートカットを作成し、RaspberryPi側のIPアドレスを入力する(ifconfigで確認)

初回接続時はパスワード入力を求められるので設定したパスワードを入力する。

スクリーンショット (281).png

確認出来たら、適当なファイルでも突っ込んで
RaspberryPi側で見れるか確認して問題がなければOK

Visual Studio Codeのセットアップ

こちらも必須ではなし。
Windows側でVScodeを使用してコーディングしているので使用感を合わせるためにインストールする。
RaspberryPiデフォルトのThonnyで問題がないのであれば特に必要では無し。

sudo apt update
sudo apt install -y code

上記で終了!

正式にRaspberryPi(ARM)に対応したのでこれでOK

メニュープログラミングVisual Studio Code
又は
ターミナルにcode入力すれば立ち上がります。

拡張機能設定に関してはPythonがメインとなるので
・Python
・Japanese Language Pack for Visual Studio Code(純日本人なんで)
・MagicPython
・Pylance
・Python Extension Pack

これくらいです。(自分のWindows環境と合わせた)

詳細等はネットにいくらでも転がっているので好みに応じてです。

画面スリープの無効

デフォルトだとすぐにスリープに入るので無効にしてみる。

sudo nano /etc/xdg/lxsession/LXDE/autostart

開いたファイルの末尾に以下を追加

@xset s off
@xset s noblank
@xset -dpms

2021-07-07-163409_1920x1080_scrot.png

こんな感じ

追加したら上書き保存する。

編集が終わったら

sudo nano /etc/lightdm/lightdm.conf

ファイルを開き、開いたファイルの末尾に

[SeatDefaults]
xserver-command=X -s 0 -dpms

上記を追加する。

編集後、sudo rebootで再起動する。

これでスリープ無効となります。

参考サイト

プログラムオートスタート

電源投入で自動的にプログラムを走らせる。

方法は色々ある

参考として確認したのは以下の所
超参考サイト

いつもお世話になっております。

今回はその中のautostartを実施。

autostart設定(Raspbian Buster以降)

以下コマンドを実行して、autostartファイルの雛形を、
ホームディレクトリのコンフィグにコピーする。

$ mkdir -p ~/.config/lxsession/LXDE-pi
$ cp /etc/xdg/lxsession/LXDE-pi/autostart ~/.config/lxsession/LXDE-pi/

~/.config/lxsession/LXDE-pi/autostartファイルに実行したいコマンド名を追記する。

48.png

↑にファイルがいます。
(隠しファイル表示しないと見えません。)

ファイルに実行したいコマンドを追記する。

49.png

↑の赤枠の様に追記してますが色々と失敗した挙句の表記です。

今回テストとしてOpenCVでの画像撮影プログラムを作成。
ちなみに

cap_get.py
import os
import sys
import cv2
import numpy as np
from datetime import datetime

save_path = '/mnt/hdd/cap_data'
save_name = 'Picture'
ext_name = '.png'

os.makedirs(save_path, exist_ok=True)
main_path = os.path.join(save_path, save_name)

cap = cv2.VideoCapture(0)
cap.set(cv2.CAP_PROP_FPS, 30)

n = 0

while True:
    path, dirs, files = next(os.walk(save_path))
    file_count = len(files)
    n = file_count
    ret, frame = cap.raed()
    cv2.imshow("Picture", frame)
    key = cv2.waitKey(1) & 0xFF
    if key == ord('o'):
        frame2 = cv2.resize(frame, dsize=(224,224))
        cv2.imwrite((main_path + '_' + str(n) + ext_name), frame2)
        n += 1
        print('Picture Save OK!', str(n), '枚目')

    if key == ord('s'):
        print('exit')
        break

    elif n == 500:
        print('Over Capacity')
        break

cap.release()
cv2.destroyAllWindows()

とりあえずキーボードOを押したらマウントしたHDDに画像を保存して、
windows側から抜き出せるように
適当に作った物です。(モジュールも使わないものも入れてます。)

.shファイルには

start.sh
#!/usr/bin/sh
python3 /home/pi/Desktop/Program_files/Cap_get/cap_get.py

と記入しとります。

rebootで再起動したら問題なく立ち上がりました。

54.png

やってみて比較的やり易かったのはこれでした。

バックアップについて

調べたら殆どがWindows機にWin32 Disk Imagerをインストールしてやる方法だったのでやってみる。

参考サイト

Win32 Disk Imager

ダウンロード・インストールは割愛
公式サイト

多分他のサイトを見た方が分かりやすいはず

バックアップを取る

RaspberryPiをシャットダウンして使用しているmicroSDを抜く
カードリーダー等をWindows機の接続してmicroSDを差す。

Win32 Disk Imagerを起動する。
スクリーンショット (285).png

Device バックアップを取るmicroSDを差したドライブを選択する。
Imaga File 保存先を指定する。
今回、RaspberryPi4_Backup.imgを先に作っておきました。(新規ビットマップ作成⇒名称変更)

両方セットするとReadが選択可能になるので問題がなければクリックする。

自分の環境下では大体14~15分位でイメージファイルが完成しました。

注意点としてはこのやり方はmicroSDサイズをフルで取るので
書き込みには同じ容量以上は必要となる事。
(今回は64GBをバックアップ)

イメージファイルを書き込む

バックアップを行ったイメージファイルを書き込むmicroSDは事前に
SDcardformatteを使って先にフォーマットしておく。

スクリーンショット (287).png

フォーマット済みのmicroSDを差し、認識したドライブを選択する。
次に書き込むイメージファイルを選択する。

両方セットするとWriteが選択可能になるので問題がなければクリックする。

自分の環境下では大体20分位で書き込みが完了しました。

とりあえずバックアップから起動しても取る前と同じ挙動だったので
使った感じ問題ないと思います。

IPの固定について

ネットワークの確認については

ifconfig

これでOK

eth0が優先、wlan0が無線となります。
どちらかを接続していればIPアドレスが表示されると思います。

設定ファイルを開く

sudo nano /etc/dhcpcd.conf

開いたファイルの末尾に以下を追記する。(数字は適当です。)

interface wlan0
static ip_address=192.168.120.112/24
static routers=192.168.120.1
static domain_name_servers=192.168.120.1

343.png

上書き保存後、再起動するとIPが固定されています。

まとめ

最低限使える様にする方法は纏めれたかと
他にもっといいやり方があれば、試した上で修正予定

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4