トップ 差分 一覧 ソース 検索 ヘルプ PDF RSS ログイン

Raspberry Pi

Raspberry Pi

 目次

 本文

機械学習

GPGPU

高速化

 書籍

 ラズベリーパイ財団

 出荷台数

 機種

$ cat /proc/device-tree/model
$ cat /proc/cpuinfo

Raspberry Pi

Raspberry Pi 3B+

Raspberry Pi 4B

Raspberry Pi 400

Raspberry Pi Zero 2 W

Raspberry Pi 3A+

Raspberry Pi Pico

Raspberry Pi 5

類似品

  • Banana Pi
  • Orange Pi 5
  • Orange Pi 5B
  • Orange Pi 5 Plus
  • NanoPC-T6
  • Rock 5B
  • BeagleBone Black
  • SeeedStudio BeagleBone Green
  • SeeedStudio BeagleBone Green Wireless (BBGW)
  • BeagleBone® Blue
  • PocketBeagle

 生産現場 raspi

Raspberry Pi 業務利用

 Kernel

 apt(apt-get,aptitude)

 Ubuntuのインストール

 ROS

 Debian GNU/Linux

 Alpine Linux

 Windows 11

 DietPi

 Raspberry Pi OS(Raspbian)のインストール

Raspberry Pi 4/5 Bookworm

Raspberry Pi Zero / Raspberry Pi Zero W / Raspberry Pi Zero WH / Raspberry Pi 4はUSBケーブルだけでネットワーク接続できる

microSDの/boot/config.txtと/boot/cmdline.txtを変更。

/boot/config.txt

最後の行に以下の記述を追加

dtoverlay=dwc2

/boot/cmdline.txt

rootwaitの後に以下の記述を追加。

modules-load=dwc2,g_ether

この状態で、PCとRaspberry PiをUSBケーブルで接続。

Rapsberry Pi 3A+でもUSBケーブルだけでネットワーク接続できる

Rapsberry Pi 5でもUSBケーブルだけでネットワーク接続できる

Raspberry Pi OS起動用microSDカードの作成

  • イメージファイルのダウンロード

Windowsでは正しくダウンロードできたかを確認するためにコマンドプロンプトから次のコマンドを実行します。

CertUtil -hashfile 2024-07-04-raspios-bookworm-arm64-full.img.xz SHA256

Raspberry Pi Imagerを使う場合は次の二つはImagerの中で設定できるし、ホスト名も設定しておける

  • Raspberry Piの起動
  • sshでログイン
  • 各種設定
    • 言語
    • タイムゾーン
    • プロキシ設定
    • パスワードの変更
    • ホスト名の変更
    • 固定IPアドレスの設定

SDカードフォーマッタ

SDカードエラーチェック

SDカード性能チェック

最新

モニターとキーボードなしで導入する

イメージをSDカードに書き込む

  • ダウンロード

64bit

32bit

古いバージョン

とても古いバージョン

インターネット接続の共有

SSH

Windows 10標準SSHコマンド

次のいずれかでログインする。raspberrypiは自分がつけたホスト名に置き換える。

ssh pi@raspberrypi
ssh pi@raspberrypi.local
ssh pi@raspberrypi.mshome.net

つぎの様なメッセージが出たらyesと答える

The authenticity of host 'raspberrypi.mshome.net (192.168.137.65)' can't be established.
ECDSA key fingerprint is SHA256:8bRKuwkqhw3RdUaKcOAgnowuvXtvarihgw0fhgsZKhY.
Are you sure you want to continue connecting (yes/no)?

SSHでエラーがでたら

CreateProcessW failed error:2
ssh_askpass: posix_spawn: No such file or directory
Host key verification failed.
mkdir \dev\tty
ssh-keygen -R hostname

mDNSでIPv4が無効になっている?

2023-02-21ではIPv4は有効になっています。

2016-11-25版からSSHはデフォルトで無効

/bootパーティションにssh(またはssh.txt)という名前のファイルを作成する。ファイル名はすべて小文字にする。/bootパーティションはFATなのでWindowsから読み書きすることができる。Raspberry Pi Imagerからも設定することができる。

Bonjour Print Services (Windows)

Windows 10からmDNSが標準で使えるようになっている。raspberrypi.localではなくraspberrypiとすること。

raspberrypi
ttermpro.exe raspberrypi
/auth=<mode>
    <mode> で指定された認証方式で自動ログインを試みる
        password パスワード認証
        publickey 公開鍵認証
        challenge チャレンジレスポンス(キーボードインタラクティブ)認証
        pageant Pageant を用いた公開鍵認証
/user=<username>
    ユーザ名を指定する
/passwd=<password>
    パスワードを指定する
ttermpro.exe raspberrypi.local /auth=password /user=pi /passwd=raspberry
C:\Windows\System32\drivers\etc\hosts.ics

設定

$ sudo raspi-config
  • 言語
$ sudo dpkg-reconfigure locales

または

$ sudo raspi-config nonint do_change_locale ja_JP.UTF-8
  • タイムゾーン
$ sudo timedatectl set-timezone Asia/Tokyo

または

$ sudo raspi-config nonint do_change_timezone Asia/Tokyo
  • 日付時刻の設定
$ sudo date -s '10/24 20:30'
  • Wi-Fi(国の設定)
  • microSDHCカードの領域拡大 (現在は初回起動時に自動で行われる)
  • プロキシ設定

固定IPアドレスを振る

bookwormから固定IPアドレスの設定方法が変わりました。

$ sudo nmcli con mod [NAME] ipv4.method manual ipv4.address "192.168.1.100/24" ipv4.dns "192.168.1.1 192.168.1.1" ipv4.gateway "192.168.1.1"
$ sudo nmcli con reload # コネクション情報へ反映
$ sudo nmcli con up [NAME] # サーバーにアドレスを反映※OS再起動不要

  • 以前の方法
$ sudo vi /etc/dhcpcd.conf
# 設定ファイルにこの行以下を追記する
interface eth0
static ip_address=192.168.11.101/24
static routers=192.168.11.1
static domain_name_servers=192.168.11.1

ネットワークのリスタート

sudo systemctl restart networking

固定IPの変更

sudo service dhcpcd reload
sudo systemctl restart dhcpcd

NTPサーバの設定

設定ファイル

/etc/systemd/timesyncd.conf.d/*.conf

ディレクトリの作成

$ sudo mkdir /etc/systemd/timesyncd.conf.d

ファイルの中身(ファイル名:Time.conf)

[Time]
NTP=192.168.100.61 172.16.0.1 ntp.nict.jp
 sudo systemctl status systemd-timesyncd

AP

apt(apt-get,aptitude)のproxyサーバ設定

proxyサーバの設定はraspi-configで行います。

$ sudo raspi-config

または

$ sudo raspi-config nonint do_proxy <SCHEMES> <ADDRESS>

次の設定は必要ありません。

$ cat /etc/apt/apt.conf.d/10proxy
Acquire::http::proxy "http://10.2.1.7:8080/";
Acquire::https::proxy "https://10.2.1.7:8080/";
Acquire::ftp::proxy "ftp://10.2.1.7:8080/";

一時的にproxy設定を無効にするには

$ sudo apt -o "Acquire::http::proxy=DIRECT" update

環境変数

$ export http_proxy="http://your.proxy.address:8080/"
$ export ftp_proxy="http://your.proxy.address:8080/"

環境変数によるproxyサーバの指定

raspi-configで設定します。

$ raspi-config

手動で一時的な設定をする

$ export http_proxy=http://10.2.1.7:8080
$ export https_proxy=http://10.2.1.7:8080
$ export ftp_proxy=http://10.2.1.7:8080
$ export HTTP_PROXY=http://10.2.1.7:8080
$ export HTTPS_PROXY=http://10.2.1.7:8080
$ export FTP_PROXY=http://10.2.1.7:8080

起動時に設定する(必要ありません)

$ cat /etc/environment
http_proxy=http://10.2.1.7:8080
https_proxy=http://10.2.1.7:8080
ftp_proxy=http://10.2.1.7:8080
HTTP_PROXY=http://10.2.1.7:8080
HTTPS_PROXY=http://10.2.1.7:8080
FTP_PROXY=http://10.2.1.7:8080

wgetのproxyサーバ設定

proxyサーバの設定はraspi-configで行います。

$ raspi-config

次の設定は必要ありません。

# vi /etc/wgetrc

以下のコメントを外す。
# https_proxy=http://...
# http_proxy=http://...
# ftp_proxy=http://...

このように記述する。
https_proxy=http://10.2.1.7:8080/
http_proxy=http://10.2.1.7:8080/
ftp_proxy=http://10.2.1.7:8080/

一時的にプロキシを無効にする

$ wget --no-proxy

gitのproxyサーバ設定

$ git config --global http.proxy http://10.2.1.7:8080
$ git config --global https.proxy http://10.2.1.7:8080
$ git config --global url."https://".insteadOf git://
$ git config --global http.sslVerify false

gpgのproxyサーバ設定

 --keyserver-option http-proxy=http://<アカウント>:<パスワード>@プロキシサーバ:ポート

ブラウザのproxyサーバ設定

proxyサーバの設定はraspi-configで行います。

$ raspi-config

次の設定は必要ありません。

ブラウザのproxyサーバの設定は個別に設定する必要がある。Chromiumはシステムのproxyを使うようになっているが、raspbianではシステムの設定にproxyは見つからない。Chromiumのコマンドラインパラメータに--proxy-serverがあるのでこれを使う。

$ chromium-browser --proxy-server="http=http://10.2.1.7:8080;https=https://10.2.1.7:8080"

一度プロキシが通った状態で起動したらプロキシ設定用のプラグインがあるのでそれをインストールすると良い。

以前のMidoriブラウザのproxy設定は、

メニュー → 設定 → ネットワーク

から行える。

ホスト名の変更

$ sudo hostnamectl set-hostname 新しいホスト名

OSを最新の状態にする

$ sudo apt update
$ sudo apt upgrade

リモート側で接続がクローズされてサーバからの読み込みに失敗しました [IP: 10.2.1.3 8080]等と出るのは原因不明ですが、何度か繰り返すといずれ全てのファイルがダウンロードでき、インストールが開始されます。

接続失敗 [IP: 10.2.1.3 8080]等と出るのはネットワークが遅いときですが、学内では大きなファイルをダウンロードするとウィルスチェックに時間がかかります。タイムアウトするまでの時間を長めに設定します。300でも足りないパッケージもあるようです(wolfram-engineは615MB程になるようで20000を指定するとダウンロードできました)。

$ sudo apt -o Acquire::http::Timeout="300" update
$ sudo apt -o Acquire::http::Timeout="300" upgrade

または、wolfram-engineを一旦削除し、後で再インストールます。

$ sudo apt remove wolfram-engine
$ sudo apt -o Acquire::http::Timeout="300" update
$ sudo apt -o Acquire::http::Timeout="300" upgrade
$ sudo apt install wolfram-engine

または

$ echo wolfram-engine hold | sudo dpkg --set-selections
$ sudo apt -o Acquire::http::Timeout="300" update
$ sudo apt -o Acquire::http::Timeout="300" upgrade
$ echo wolfram-engine install | sudo dpkg --set-selections

ファームウェアのアップデート

プロキシの設定。

$ sudo HTTPS_PROXY=http://<username>:<password>@proxy:port rpi-update

sudo で環境変数を引き継ぐには-Eオプションをつける。

$ sudo -E rpi-update

EEPROM

Raspbetty Pi 4のブートローダー用EEPRPMを更新します。

$ sudo apt install rpi-eeprom
$ sudo rpi-eeprom-update
$ sudo rpi-eeprom-update -a

vimのインストール

sudo apt install vim

network-managerのインストール

bookwormでは最初からインストールされています。

デスクトップ

キーボードレイアウトの変更

(1)

sudo dpkg-reconfigure keyboard-configuration

(2)

setxkbmap -layout jp

(3)

日本語入力

$ suto apt inatall fcitx-mozc

または

$ suto apt inatall scmi-anthy

single user mode

rootのパスワードを忘れたときにはsingle user modeで起動し、passwdコマンドで新しいパスワードを設定する。

overlayfs

バージョン情報

$ cat /etc/debian_version
$ cat /etc/issue
$ lsb_release -a
$ cat /proc/version
$ python -VV
  • Buster

2021-01-11版

gcc version 8.3.0 (Raspbian 8.3.0-6+rpi1)

Python 2.7.16 (default, Oct 10 2019, 22:02:15)

Python 3.7.3 (default, Jul 25 2020, 13:03:44)

ruby 2.5.5p157 (2019-03-15 revision 67260) [arm-linux-gnueabihf]

node -v

v10.23.1

  • bullseye

2023-02-21版

gcc (Debian 10.2.1-6) 10.2.1 20210110

Python 3.9.2 (default, Feb 28 2021, 17:03:44)

  • bookworm

Python 3.11.2 (main, Aug 26 2024, 07:20:54) [GCC 12.2.0]

 CPUの温度

 Python

# -*- coding: utf-8 -*-

例外

pip

pipコマンドのインストール(不要)

pyenv

Webサーバ(CGI)

Ajax (Asynchronous JavaScript + XML), XMLHttpRequest, XHR

WebSocket

OpenCV

sudo apt install python3-opencv

Jupyter

Socket

 Bluetooth

RasPi3以降にはBlutoothが標準で搭載されている。特に何もしなくてもBlutooth関係のコマンドが使用できる。以下は不要。

$ sudo apt install bluetooth bluez-utils

SPP

従来の方法でSPPを使用するには、

sudo nano /etc/systemd/system/dbus-org.bluez.service 

buetoothデーモンが互換モードで起動するように'ExecStart='の行末に'-C' を付け加える。 そして、その行のすぐ後に SPプロフィルを付け加えるために'ExecStartPost='を新たに付け加える。次の2行のようにする。

ExecStart=/usr/lib/bluetooth/bluetoothd -C
ExecStartPost=/usr/bin/sdptool add SP

書き換え後の再起動は、以下のコマンドを実行する。

sudo systemctl daemon-reload
sudo systemctl restart bluetooth
$ sdptool browse local
$ hcitool scan
$ sdptool browse 2C:8A:72:F0:DA:89
$ sudo bluez-simple-agent hci0 2C:8A:72:F0:DA:89
$ sudo nano /usr/bin/bluez-simple-agent
$ sudo perl -i -pe 's/KeyboardDisplay/DisplayYesNo/' /usr/bin/bluez-simple-agent
$ sudo bluez-test-device trusted 2C:8A:72:F0:DA:89 yes
$ sudo sdptool add --channel=22 SP
$ sudo rfcomm listen /dev/rfcomm0 22
$ sudo rfcomm watch /dev/rfcomm0 22

ペアリングの解除

# sudo bluez-test-device remove 2C:8A:72:F0:DA:89

ダイソーのシャッターボタン

スピーカー


  • Jessie
$ sudo apt install bluetooth bluez-tools bluez-firmware

 無線LAN

WPS

$ sudo wpa_cli wps_pbc

または、

$ sudo wpa_cli -i wlan0 wps_pbc

または、

$ sudo wpa_cli -i wlan0 reconfig

認証

以下の設定方法はBusterでは接続できなかった。Stretchでは接続できている。対処法は次のページを参考にしてください。

  • パスワード
$ echo -n 'パスワード' | iconv -t utf16le | openssl md4 > hash.txt
  • wpa_supplicant.conf (初期値)
$ cat /etc/wpa_supplicant/wpa_supplicant.conf
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=JP

上のファイルに追加する

network={
   ssid="SSID"
   priority=1
   proto=RSN
   key_mgmt=WPA-EAP
   pairwise=CCMP
   auth_alg=OPEN
   eap=PEAP
   identity="ユーザー名"
   password="パスワード"
   phase1="peaplabel=0"
   phase2="auth=MSCHAPV2"
}
  • 追記
# lsusb

# wpa_passphrase "SSID" "password"
network={
   ssid="SSID"
   #psk="password"
   psk=暗号化されたパスワード
}

# vi /etc/wpa_supplicant/wpa_supplicant.conf
network={
   ssid="SSID"
   psk=暗号化されたパスワード
}

# vi /etc/dhcpcd.conf
interface wlan0
static ip_address=192.168.11.101/24
static routers=192.168.11.1
static domain_name_servers=192.168.11.1
再起動して、ifconfigで確認する。

  • DHCP
sudo dhclient -v -r wlan0
sudo dhclient -v wlan0

アクセスポイント化

ELECOM WDC-150SU2M (8188euチップセット)

 VNC

2016-09-23版から標準でVNCサーバがインストールされている。

ただし、有効にするにはraspi-configで設定する必要がある。

$ sudo apt install tightvncserver

VNC Viewer for Windows

UltraVNC

 xrdp

$ sudo apt install xrdp 
$ cd /etc/xrdp
$ sudo wget http://w.vmeta.jp/temp/km-0411.ini
$ sudo chown xrdp:xrdp km-0411.ini
$ sudo ln -s km-0411.ini km-e0010411.ini
$ sudo ln -s km-0411.ini km-e0200411.ini
$ sudo service xrdp start

 X Window System (X Server) on Windows

 Java

 .NET

 Bun

 Deno

 Node.js (JavaScript)

$ sudo apt install nodejs
$ sudo apt install npm
$ sudo npm cache clean
$ sudo npm install n -g
$ sudo -E n stable

TypeError: Request path contains unescaped characters.

npm config set registry http://registry.npmjs.org/
  • プロキシ
$ sudo npm -g config set proxy http://proxyserver:8080
$ sudo npm -g config set https-proxy http://proxyserver:8080

nは環境変数http_proxy,https_proxyを参照する。sudoには-Eオプションが必要。

sudo npm install -g yarn
sudo yarn global add nodebots-interchange --prefix /usr/local

環境変数http_proxy,https_proxyを参照する。sudoには-Eオプションが必要。

 Ruby

sudo apt install ruby

 GPIO

ピンヘッダー

sudo cat /sys/kernel/debug/gpio
pinout

raspi-gpio

pigpio

標準でインストール済み。自動起動するので特別な操作は不要。raspi-config(Remote GPIO)で設定する。

確認

sudo systemctl status pigpiod

起動

sudo systemctl start pigpiod

停止

sudo systemctl stop pigpiod

自動起動

sudo systemctl enable pigpiod

自動起動解除

sudo systemctl disable pigpiod

Pigpio Encoder

gpiozero

 標準でインストールされています。

sudo apt install python3-gpiozero
sudo apt install python-gpiozero

PinPong

wiringX

Blue Dot

lgpio

RPi.GPIO

Jessie以降では最初からインストールされている。

bcm2835 ライブラリ

WiringPi

  • bullseye

bullseyeからはWiringPiが無くなりました。

  • Buster

Raspberry Pi 4以降は削除された。

「最新のバージョン2.52を入れる必要がある」そうです。

現在は標準でインストールされている。

  • Jessie
sudo apt install wiringpi

WebIOPi

$ wget https://sourceforge.net/projects/webiopi/files/WebIOPi-0.7.1.tar.gz
$ tar xvzf WebIOPi-0.7.1.tar.gz
$ cd WebIOPi-0.7.1
$ wget https://raw.githubusercontent.com/doublebind/raspi/master/webiopi-pi2bplus.patch
$ patch -p1 -i webiopi-pi2bplus.patch
$ sudo ./setup.sh
$ cd /etc/systemd/system/
$ sudo wget https://raw.githubusercontent.com/doublebind/raspi/master/webiopi.service

 I2C

sudo raspi-config

以下はもう必要ない。


sudo apt-get install i2c-tools
sudo /usr/sbin/i2cdetect -y 1

 RTC

BME280 (I2C)

MPL115A2

SCD41

 SPI

raspi-config

spidevはパッケージが存在し標準でインストールされています。

python-spidev python3-spidev

以下は、不要。


git clone http://github.com/doceme/py-spidev.git/
cd py-spidev
sudo python setup.py install

wget https://github.com/doceme/py-spidev/archive/master.zip

 ADC

 マイコンをADCにする

ATtiny85(I2C)

ATmega328P Arduino Uno (I2C)

 ServoBlaster

Debian stretchでは、動作しないそうです。

PlatformIO Core

 LIRC

$ sudo apt install lirc
$ sudo systemctl status lircmd

 音声

 MIDI

sudo apt install libasound2-dev
sudo pip install rtmidi
sudo pip install mido

 Wiiリモコン

$ sudo apt install wminput
$ wget https://www.raspberrypi-spy.co.uk/archive/python/wii_remote_1.py

または、

$ curl -OR https://www.raspberrypi-spy.co.uk/archive/python/wii_remote_1.py
  • wiimote.py
$ sudo apt install libbluetooth-dev
$ pip install PyBluez
$ git clone https://github.com/RaphaelWimmer/wiimote.py
$ cd wiimote.py
$ ./wiimote_demo.py
Press the 'sync' button on the back of your Wiimote Plus or buttons (1) and (2) on your classic Wiimote.
Press <return> once the Wiimote's LEDs start blinking.
Connecting to Nintendo RVL-CNT-01 (XX:XX:XX:XX:XX:XX)
$ sudo pip install wiiuse
  • wiipy python wiimote

$ sudo apt install libxwiimote-dev swig
$ sudo apt install autoconf libtool
$ ./autogen.sh --prefix=/usr
$ sudo apt install libncurses5-dev

 Wiiリモコンプラス

 PS3コントローラ

 PS4コントローラ

 Joy-Con

 NFC (FeliCa) RFID

RFID-RC522

非接触ICカードリーダー/ライター PaSoRi(パソリ)

機種 VID PID ライブラリ 備考 所有 対応
RC-S310 054c 006c libpafe ×
RC-S320 054c 01bb libpafe
RC-S330 054c 02e1 libpafe/nfcpy
RC-S360 nfcpy 楽天Edyリーダー ×
RC-S370/P 054c 02e1 nfcpy
RC-S380/S 054c 06c1 nfcpy 法人向けモデル ×
RC-S380/P 054c 06c3 nfcpy 個人向けモデル FeliCa、ISO/IEC 14443 Type A、マイナンバーカードを含む ISO/IEC 14443 Type Bの非接触ICカード
RC-S390 Bluetooth接続 ×
RC-S300 2021年11月11日発売 ×

RC-S310

RC-S320

$ lsusb
  • lsusbのインストール
$ sudo apt install libusb-dev
  • libpafe
libpafe は0.0.7は0.1系で0.0.8は1.x系に修正されている。どちらを使っているかの確認は 0.1のヘッダーはusb.hで1.x系はlibusb.hとなっているのですぐに出来る。
  • libpafe-0.0.8のインストール
$ wget http://hito.music.coocan.jp/pasori/libpafe-0.0.8.tar.gz
$ tar zxvf libpafe-0.0.8.tar.gz
$ cd libpafe-0.0.8
$ ./configure --build=arm-unknown-linux-gnu
$ make
$ sudo make install
  • libpafe-0.0.7のインストール
$ git clone https://github.com/rfujita/libpafe.git
$ cd libpafe
$ ./configure --build=arm-unknown-linux-gnu
$ sudo apt install automake1.11
$ make
$ sudo make install

ここにあるルールを設定する。

$ sudo sh -c "cat > /etc/udev/pasori.rules"
$ cd /etc/udev/rules.d
$ sudo ln -s ../pasori.rules 010_pasori.rules
$ sudo udevadm control --reload-rules

リロードの後はUSBポートからの抜き差しが必要。

$ tests/pasori_test
PaSoRi (RC-S320)
firmware version 1.40
Echo test... success
EPROM test... success
RAM test... success
CPU test... success
Polling test... success

ここにあるPythonスクリプトを保存する。

$ cat > pasori.py
$ python3 pasori.py

RC-S330

$ sudo sh -c "cat > /etc/udev/pasori.rules"
ACTION!="add", GOTO="pasori_rules_end"
SUBSYSTEM=="usb_device", GOTO="pasori_rules_start"
SUBSYSTEM!="usb", GOTO="pasori_rules_end"
LABEL="pasori_rules_start"

ATTRS{idVendor}=="054c", ATTRS{idProduct}=="006c", MODE="0664", GROUP="plugdev"
ATTRS{idVendor}=="054c", ATTRS{idProduct}=="01bb", MODE="0664", GROUP="plugdev"
ATTRS{idVendor}=="054c", ATTRS{idProduct}=="02e1", MODE="0664", GROUP="plugdev"

LABEL="pasori_rules_end"
$ cd /etc/udev/rules.d
$ sudo ln -s ../pasori.rules 010_pasori.rules
$ sudo udevadm control --reload-rules
$ tests/pasori_test

RC-S370

RC-S380/P

$ sudo sh -c "cat > /etc/udev/pasori.rules"
ACTION!="add", GOTO="pasori_rules_end"
SUBSYSTEM=="usb_device", GOTO="pasori_rules_start"
SUBSYSTEM!="usb", GOTO="pasori_rules_end"
LABEL="pasori_rules_start"

ATTRS{idVendor}=="054c", ATTRS{idProduct}=="006c", MODE="0664", GROUP="plugdev"
ATTRS{idVendor}=="054c", ATTRS{idProduct}=="01bb", MODE="0664", GROUP="plugdev"
ATTRS{idVendor}=="054c", ATTRS{idProduct}=="02e1", MODE="0664", GROUP="plugdev"
ATTRS{idVendor}=="054c", ATTRS{idProduct}=="06c3", MODE="0664", GROUP="plugdev"

LABEL="pasori_rules_end"
$ cd /etc/udev/rules.d
$ sudo ln -s ../pasori.rules 010_pasori.rules
$ sudo udevadm control --reload-rules

nfcpy

sudo apt install libusb-dev
sudo pip3 install nfcpy

サンプルコード

git clone https://github.com/nfcpy/nfcpy.git

Windowsの場合

サンプル

# NFCがかざされるまで待機、かざされたらNFCのIDmを表示する
import binascii
import nfc
def on_connect(tag):
    idm = binascii.hexlify(tag._nfcid)
    print("IDm : " + str(idm))
clf = nfc.ContactlessFrontend('usb')
clf.connect(rdwr={'on-connect': on_connect})
clf.close()

webpasori

 esp8266 MQTT

  • インストール
$ sudo apt install mosquitto mosquitto-clients
  • サブスクライバー(受信)
$ mosquitto_sub -d -t test -v
  • パブリッシャー(送信)
$ mosquitto_pub -d -t test -m "こんにちは"
  • Python用MQTTライブラリ
$ pip install paho-mqtt

MQTT over WebSocket

 IoTゲートウェイ

 カメラ

 監視カメラ

motion

インストール

sudo apt install motion

設定ファイルの編集

sudo vi /etc/motion/motion.conf
sudo vi /etc/default/motion

再起動

sudo systemctl restart motion

自動起動

sudo systemctl enable motion

 mjpg-streamer

$ sudo apt install -y cmake libv4l-dev libjpeg-dev imagemagick
$ git clone https://github.com/jacksonliam/mjpg-streamer.git
$ cd mjpg-streamer/mjpg-streamer-experimental
$ Emake
$ sudo make install
$ sudo ./mjpg_streamer -i "./input_uvc.so -f 10 -r 640x480 -d /dev/video0 -y -n" -o "./output_http.so -w ./www -p 8080"
$ /usr/local/bin/mjpg_streamer -i "input_raspicam.so -x 640 -y 480 -fps 15 -q 80" -o "output_http.so -p 8080 -w /usr/local/share/mjpg-streamer/www"

 gstreamer

sudo apt install cmake libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev gstreamer1.0-tools libgtk2.0-dev gstreamer1.0-omx=1.0.0.1-0+rpi12+jessiepmg gstreamer1.0-plugins-bad gstreamer1.0-plugins-good

 ffmpeg

 Nginx (Webサーバー)

  • インストール
$ sudo apt install nginx-full
$ sudo apt install php7.3-fpm
$ cd /etc/nginx/sites-available/
$ cp -a default test
$ sudo vi test
$ cd ../sites-enabled
$ rm default
$ ln -s /etc/nginx/sites-available/test test
$ git clone https://github.com/perusio/nginx_ensite.git
pi@raspberrypi:~ $ apt-cache policy nginx
nginx:
  インストールされているバージョン: 1.14.2-2
  候補:               1.14.2-2
  バージョンテーブル:
 *** 1.14.2-2 500
        500 http://raspbian.raspberrypi.org/raspbian buster/main armhf Packages
        100 /var/lib/dpkg/status
pi@raspberrypi:~ $

2022-12-13 nginx-1.23.3

2023-06-13 nginx-1.25.1

2024-10-02 nginx-1.27.2 mainline version has been released.

 Apache2 (Webサーバー)

$ sudo apt install apache2
  • ドキュメントルート
/var/www/html

 MySQL (データベースサーバー)

$ sudo apt install mysql-server

bullseye

$ sudo apt install default-mysql-server
$ sudo mysql_secure_installation
# mysql -u root -p
Enter password:root 

 Redmine (プロジェクト管理ソフトウェア)

$ sudo apt install mysql-server
$ sudo apt install redmine redmine-mysql libapache2-mod-passenger

途中いろいろ聞かれるがデフォルトのまま進める。データベースサーバはmysqlを選択する。

設定をやり直すときは、

$ sudo dpkg-reconfigure -plow redmine
$ sudo ln -s /usr/share/redmine/public /var/www/html/redmine
$ cat /etc/apache2/mods-available/passenger.conf
<IfModule mod_passenger.c>
  PassengerDefaultUser www-data
  PassengerRoot /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini
  PassengerDefaultRuby /usr/bin/ruby
  RailsBaseURI /redmine
</IfModule>
$ sudo su -c 'cat << EOF > /etc/apache2/sites-available/redmine.conf
<Directory /redmine>
  Options FollowSymLinks
  PassengerResolveSymlinksInDocumentRoot on
  AllowOverride None
</Directory>
EOF'

Apacheを再起動する

$ sudo systemctl restart apache2

アクセスは

http://ホスト/redmine

 PHP8

bookwormではPHP8.2になっています。

pi@raspberrypi:~ $ php -v
PHP 8.2.24 (cli) (built: Sep 27 2024 04:16:10) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.2.24, Copyright (c) Zend Technologies
    with Zend OPcache v8.2.24, Copyright (c), by Zend Technologies
pi@raspberrypi:~ $

セッションの自動開始

sudo su -c 'echo "session.auto_start = 1" > /etc/php/8.2/apache2/conf.d/30_session.ini'

設定ファイル

/etc/php/8.2/apache2/conf.d

 PHP7

bullseyeではPHP7.4になっています。

sudo apt install php

または

sudo apt install php7.4

busterではPHP7.3になっています。

sudo apt install php

または

sudo apt install php7.3

busterではPHP7.0も残っています。

sudo apt install php7.0

ドキュメントルートはApache2と同じく、

/var/www/html

PHPの確認

index.php

<?php phpinfo();
  • 最新(bullseye)
pi@raspberrypi:~ $ php -v
PHP 7.4.33 (cli) (built: Nov  8 2022 11:40:37) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with Zend OPcache v7.4.33, Copyright (c), by Zend Technologies
pi@raspberrypi:~ $
  • 最新(buster)
pi@raspberrypi:~ $ php -v
PHP 7.3.4-2 (cli) (built: Apr 13 2019 19:05:48) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.4, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.3.4-2, Copyright (c) 1999-2018, by Zend Technologies
pi@raspberrypi:~ $

 PHP5

busterでPHP5はなくなりました。

sudo apt install php5

 Laravel

 SQLite3

sudo apt install sqlite3

テーブルの作成

sqlite3 dbfile.sqlite3 "create table ttt(id,name)"

データの登録

sqlite3 dbfile.sqlite3 "insert into ttt(id,name) values (1,'abc')"

テーブルのデータ一覧

sqlite3 dbfile.sqlite3 "select * from ttt"

PHP+SQLite3

PHPからSQLite3を使えるようにする。

sudo apt install php-sqlite3
sudo systemctl restart apache2 # apache2の再起動

 Micorsoft SQL Server (MSSQLServer)

$ sudo apt install freetds-dev -y
$ pip3 install pymssql

 Samba(ファイルサーバー)

 オンラインストレージ

 Scratch

 FreeBASIC

 

 

 マインクラフト

 FLiR

$ sudo raspi-config
$ sudo apt install qt4-dev-tools
$ wget https://github.com/groupgets/LeptonModule/archive/master.zip
$ unzip master.zip

 CNC

 Machinekit (Linux CNC)

 Estlcam

 RT-Preempt カーネル

 Xenomai

 PICnc

 EMC 2 Arduino

 レベル変換

 PLCと通信

pymcprotocol (Python)

pip install pymcprotocol

pymelsec (Python)

pip3 install pymelsec

MC-Protocol(mcp.py)

PySLMPClient

FX5

FX5UJ

FX3U

mitsuplccom

mcprotocol (JavaScript)

Node-RED

Java FX5U

 PLCにする

 2JCIE-BL01(WxBeacon2)

WxBeacon2 Omron 2JCIE-BL01

 Pi STARTER

 Raspberry Pi Desktop

 bot

LINE

Twitter

  • [|]

 プログラムの自動起動

 自動ログイン

 コマンド