メインコンテンツまでスキップ

モニター無しで Raspberry Pi のセットアップ

· 約2分
ひかり
Main bloger

モニター不要で Raspberry Pi のセットアップ方法の説明。

  • 有線での接続が必要なため、LAN ケーブルを接続できる Raspberry Pi 端末であること
  • Raspberry Pi を操作するためのパソコンが必要

Raspberry Pi Imager をインストールし、OS を選択。書き込み先の micro SD を選択し、WRITE で書き込む。

Raspberry Pi Imager

設定

SSH の有効化

SSH を有効にすることで外部から Raspberry Pi の操作が可能

micro SD カードを挿し直し、直下に ssh という名前でテキストファイルを作成。拡張子は不要。

Raspberry Pi enable SSH

VNC の有効化

config.txt を開き、

framebuffer_width=1280
framebuffer_height=720

のコメントを外し上書き保存。

Raspberry Pi enable VNC

起動

micro SD カードを Raspberry Pi に挿し、電源を接続し起動する。

SSH で接続

ホスト名は raspberrypi、ユーザー名は pi、パスワードは raspberry で接続

Raspberry Pi connect SSH

パッケージの更新

sudo apt update
sudo apt upgrade -y

VNC の有効化

sudo raspi-config

Raspberry Pi config

3 Interface Options を選択し、P3 VNC を選択し、YES。Finish で閉じる。

VNC で接続

Raspberry Pi VNC viewer

ユーザー名、パスワードは SSH のときと同様。

Raspberry Pi VNC connected

Wi-Fi の有効化

VNC から Wi-Fi を有効にすることで有線接続が不要となり、電源のみで Raspberry Pi を操作することが可能。

Webrick で rbenv 経由でインストールした Ruby の CGI が動かない場合の対処法

· 約1分
ひかり
Main bloger

ブラウザで CGI を実行すると、 /usr/bin/env: 'ruby': No such file or directory とエラーが出る

#!/usr/bin/env ruby

# ...

原因

$PATH が設定されていない。

#!/usr/bin/env bash

echo -ne "Content-type: text/html\n\n"
echo $PATH

とすると、

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin 

と表示され、Ruby のあるディレクトリーがないことがわかる。

対処法

:CGIPathEnv で Ruby のパスを設定する。

srv = WEBrick::HTTPServer.new({
:DocumentRoot => "./site/",
:Port => 8080,
:CGIPathEnv => ENV["PATH"]
})

gem 作り方

· 約1分
ひかり
Main bloger

テンプレートの作成

bundle gem <GEM 名> -t
cd <GEM 名>

Gemspec の編集

  1. <GEM 名>.gemspec を開く。
  2. spec.summaryspec.descriptionspec.homepage、 を編集する
  3. spec.metadata["allowed_push_host"] にホームページの URL を記述
  4. spec.homepage に Gem のページを記述
  5. spec.metadata["source_code_uri"] にリポジトリの URL を記述
  6. spec.metadata["changelog_uri"]changelog.md の URL を記述

最低限このくらい設定する。

GitHub に push しインストール

git init
git add .
git commit -mFirst\ Commit
git remote add origin [email protected]:<ユーザー名>/<GEM 名>.git
git push -u origin master

インストール

gem install specific_instal
gem specific_install -l "git://github.com/<ユーザー名>/<GEM 名>.git"

Gemfile

gem "<GEM 名>", github: "<ユーザー名>/<GEM 名>.git", branch: :main

ターミナル上で画像を表示するコマンド

· 約1分
ひかり
Main bloger

ターミナル上で画像を表示する tiv コマンドの紹介。

tiv

ファイルエクスプローラー開くのがめんどくさいときに良い。

git clone https://github.com/stefanhaustein/TerminalImageViewer.git
cd TerminalImageViewer/src/main/cpp
make -j
sudo make install

Bash でユークリッド互除法

· 約1分
ひかり
Main bloger
  1. A と B の余り C

  2. B と C の余り D

  3. C と D の余り E

    ...

  4. X と Y の余り 0

    となったときの Y の値が最大公約数。

Bash のスクリプト

#!/usr/bin/env bash

function gcd(){
test $2 -eq 0 && echo $1 || gcd $2 $(($1 % $2))
}

gcd 1071 1029
# 21

ImageMagick のインストール方法 (Ubuntu)

· 約1分
ひかり
Main bloger
wget https://download.imagemagick.org/ImageMagick/download/ImageMagick-7.0.11-14.tar.xz

展開

tar xf ImageMagick-7.0.11-14.tar.xz

make

sudo apt update
cd ImageMagick-7.0.11-14.tar.xz
./configure
make -j
sudo make install
sudo ldconfig /usr/local/lib

ガウシアンフィルターでノイズ除去 (Python / Scipy)

· 約1分
ひかり
Main bloger

例として、1[Hz] の sin 波を信号とする。 平均 0、標準偏差 0.5 の正規分布から乱数を作成したノイズを信号に加える。

import numpy as np
import matplotlib.pyplot as plt
from scipy.ndimage import gaussian_filter1d

t = np.arange(1000) / 100
s = np.sin(2*np.pi*t)
noise = np.random.normal(0, 0.5, size=len(t))
x = s + noise

plt.plot(t, x, label="+noise")
plt.plot(t, s, label="signal")
plt.legend(loc=1)
plt.show()

pyplot

標準偏差 5 のガウシアンフィルターをかける。 標準偏差が大きいほど、滑らかになるが元の信号と外れる。

y = gaussian_filter1d(x, 5)
plt.plot(t, y, label="filtered")
plt.plot(t, s, label="signal")
plt.legend(loc=1)
plt.show()

pyplot

Pyenv のインストールと設定

· 約2分
ひかり
Main bloger
  1. Pyenv をクローンする

    Pyenv のリポジトリーをクローンする。 ディレクトリーは ~/.pyenv がおすすめ。

git clone https://github.com/pyenv/pyenv ~/.pyenv

    

0. 高速化のための Bash 拡張をコンパイル

高速化のための Bash 拡張のコンパイルが可能。
コンパイルが失敗しても正常に動作する。

```sh
cd ~/.pyenv && src/configure && make -C src
  1. 設定 (bash)

    パスとかの設定。

echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.profile echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.profile echo 'eval "$(pyenv init --path)"' >> ~/.profile export PYENV_ROOT="$HOME/.pyenv" export PATH="$PYENV_ROOT/bin:$PATH" eval "$(pyenv init --path)" echo -e 'if shopt -q login_shell; then'
'\n export PYENV_ROOT="$HOME/.pyenv"'
'\n export PATH="$PYENV_ROOT/bin:$PATH"'
'\n eval "$(pyenv init --path)"'
'\nfi' >> /.bashrc echo -e 'if [ -z "$BASH_VERSION" ]; then'
'\n export PYENV_ROOT="$HOME/.pyenv"'
'\n export PATH="$PYENV_ROOT/bin:$PATH"'
'\n eval "$(pyenv init --path)"'
'\nfi' >>
/.profile



# Python 環境のインストール

## 依存するライブラリーのインストール
```sh
sudo apt-get update; sudo apt-get install make build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm \
libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev -y

インストール可能な環境を調べる

pyenv install -l

インストールする

コンパイル時間が長いので待つ。

CONFIGURE_OPTS="--enable-shared" pyenv install 3.9.5

バージョンの確認

pyenv versions

バージョンの切り替え

pyenv global 3.9.5