【ラズパイでもDocker!】ラズパイでLチカ 〜 実機からShellで行う方法 & Docker AlpineコンテナからShellで行う方法の比較
※ 当ページには【広告/PR】を含む場合があります。
2020/05/02
実機からShellで
ピン番号の確認
pinout
$ pinout
,--------------------------------.
| oooooooooooooooooooo J8 +====
| 1ooooooooooooooooooo PoE | USB
| Wi oo +====
| Fi Pi Model 3B+ V1.3 oo |
| ,----. +====
| |D| |SoC | | USB
| |S| | | +====
| |I| `----' |
| |C| +======
| |S| | Net
| pwr |HDMI| |I||A| +======
`-| |--------| |----|V|-------'
Revision : a020d3
SoC : BCM2837
RAM : 1024Mb
Storage : MicroSD
USB ports : 4 (excluding power)
Ethernet ports : 1
Wi-fi : True
Bluetooth : True
Camera ports (CSI) : 1
Display ports (DSI): 1
J8:
3V3 (1) (2) 5V
GPIO2 (3) (4) 5V
GPIO3 (5) (6) GND
GPIO4 (7) (8) GPIO14
GND (9) (10) GPIO15
GPIO17 (11) (12) GPIO18
GPIO27 (13) (14) GND
GPIO22 (15) (16) GPIO23
3V3 (17) (18) GPIO24
GPIO10 (19) (20) GND
GPIO9 (21) (22) GPIO25
GPIO11 (23) (24) GPIO8
GND (25) (26) GPIO7
GPIO0 (27) (28) GPIO1
GPIO5 (29) (30) GND
GPIO6 (31) (32) GPIO12
GPIO13 (33) (34) GND
GPIO19 (35) (36) GPIO16
GPIO26 (37) (38) GPIO20
GND (39) (40) GPIO21
For further information, please refer to https://pinout.xyz/
各コマンドの基本動作
export
$ echo 2 > /sys/class/gpio/export
$ ls /sys/class/gpio/
export gpio2 gpiochip0 gpiochip504 unexport
/sys/class/gpio/gpio2
direction
$ echo out > /sys/class/gpio/gpio2/direction
1
value
0
#Turn on
$ echo 1 > /sys/class/gpio/gpio2/value
#Turn off
$ echo 0 > /sys/class/gpio/gpio2/value
unexport
gpio2
$ echo 2 > /sys/class/gpio/unexport
$ ls /sys/class/gpio/
export gpiochip0 gpiochip504 unexport
gpio2
Lチカ on 実機
blink.sh
#!/bin/bash
echo 2 > /sys/class/gpio/export
sleep 1
echo out > /sys/class/gpio/gpio2/direction
sleep 1
for ((i=1; i<20; i++))
do
echo $i
echo 1 > /sys/class/gpio/gpio2/value
sleep 0.2
echo 0 > /sys/class/gpio/gpio2/value
sleep 0.2
done
echo 2 > /sys/class/gpio/unexport
blink.sh
$ chmod +x blink.sh
$ ./blink.sh
ここまでの内容で参考になるサイト
DockerコンテナからShellで
事前準備〜Dockerのインストール
docker
Rasbian
% curl -sSL https://get.docker.com | sh
#...中略
Warning: apt-key output should not be parsed (stdout is not a terminal)
+ sudo -E sh -c echo "deb [arch=armhf] https://download.docker.com/linux/raspbian buster stable" > /etc/apt/sources.list.d/docker.list
+ sudo -E sh -c apt-get update -qq >/dev/null
W: https://download.docker.com/linux/raspbian/dists/buster/InRelease の取得に失敗しました 'download.docker.com' が一時的に解決できません
W: http://archive.raspberrypi.org/debian/dists/buster/InRelease の取得に失敗しました 'archive.raspberrypi.org' が一時的に解決できません
W: いくつかのインデックスファイルのダウンロードに失敗しました。これらは無視されるか、古いものが代わりに使われます。
+ [ -n ]
+ sudo -E sh -c apt-get install -y -qq --no-install-recommends docker-ce >/dev/null
E: パッケージ 'docker-ce' にはインストール候補がありません
% curl -fsSL https://get.docker.com -o get-docker.sh
% sudo sh get-docker.sh
#...中略
E: パッケージ 'docker-ce' にはインストール候補がありません
download.docker.com
stable
stable
/etc/apt/sources.list.d/docker.list
edge test
nightly
% curl -fsSL get.docker.com | CHANNEL=nightly sh
#...中略
+ sudo -E sh -c echo "deb [arch=armhf] https://download.docker.com/linux/raspbian buster nightly" > /etc/apt/sources.list.d/docker.list
#...中略
+ sudo -E sh -c docker version
Client: Docker Engine - Community
Version: 0.0.0-20190727010531-15bdbd7
API version: 1.40
Go version: go1.12.6
Git commit: 15bdbd7
Built: Sun Jul 28 07:43:31 2019
OS/Arch: linux/arm
Experimental: false
#...以下略
docker
sudo docker
sudo
% sudo usermod -aG docker [現在のユーザー名]
% docker --version
Docker version 0.0.0-20190727010531-15bdbd7, build 15bdbd7
docker
Lチカ on Dokcer
/sys
/sys
armhf/alpine
$ docker run -it \
--rm \
-v /sys:/sys \
armhf/alpine /bin/sh
sys
-v
sys
/sys/class/gpio/
$ ls /sys/class/gpio/
export gpiochip0 gpiochip504 unexport
alpine
bash
sh
#!/bin/bash
echo 2 > /sys/class/gpio/export
sleep 1
echo out > /sys/class/gpio/gpio2/direction
sleep 1
for i in `seq 1 20`
do
echo $i
echo 1 > /sys/class/gpio/gpio2/value
sleep 0.2
echo 0 > /sys/class/gpio/gpio2/value
sleep 0.2
done
echo 2 > /sys/class/gpio/unexport
ここまでの内容で参照になるサイト2
--device
まとめ
shell
sys
--device
記事を書いた人
ナンデモ系エンジニア
電子工作を身近に知っていただけるように、材料調達からDIYのハウツーまで気になったところをできるだけ細かく記事にしてブログ配信してます。
カテゴリー