概要
ラズパイことはじめな記事
Components
- Raspberry Pi 3 B+
- microSD 16GB
- Hypriot
- 1.9.0
- Docker
- Hypriotにデフォルトで入っているバージョン
- Python
- 3.7.2
手順
1. LEDを光らせるコードを用意する
led.py
# -*- coding: utf-8 -*- import time import RPi.GPIO as GPIO #FIXME: YOUR BCM NUMBER LED = 14 GPIO.setmode(GPIO.BCM) GPIO.setup(LED, GPIO.OUT, initial=GPIO.LOW) GPIO.output(LED, 1) GPIO.cleanup(LED)
Dockerfile
FROM python:3-alpine WORKDIR /app COPY leds.py entrypoint.py /app/ RUN apk add --no-cache python3-dev libffi-dev openssl-dev build-base musl \ && pip3 install --no-cache --upgrade pyserial RPi.GPIO CMD ["python", "leds.py"]
2. RaspberryPiを用意する
ハードの用意
今回は以下の環境を用意した
- Raspberry Pi 3 B+
- SDカード 16GB
- スイッチハブ(BUFFALO製のなにか)
- LANケーブル x2
- スイッチ配下へMacとRaspberryPiを置く
- LED
flashのインストール
SDカードのフォーマットとOSのインストールを行ってくれるHypriot製ツール
$ brew install wget pv awscli $ curl -LO https://github.com/hypriot/flash/releases/download/2.1.1/flash $ chmod +x flash $ sudo mv flash /usr/local/bin/flash
SDカードへHypriot OSのインストール
OSはRaspbianではなくHypriotを使用する。
最初からdockerやsshd有効化されていたり、cloud-initが使用可能。
インストールは以下のワンコマンドで完了する。
$ flash https://github.com/hypriot/image-builder-rpi/releases/download/v1.9.0/hypriotos-rpi-v1.9.0.img.zip
※ wi-fiの場合別途cloud-initを記載する必要有り
3. DockerでLEDを動かす
$ ssh pirate@black-pearl.local # パスワードは"hypriot"
コードをコピペ
$ cat <<EOL > led.py # 上記のpythonコード EOL $ cat <<EOL > Dockerfile # 上記のDockerfile EOL
dockerのビルドをしてrun。
runする際に /dev/gpiomem
をボリュームマウントすることがポイント
$ docker build -t led . $ docker run --device /dev/gpiomem led
残課題
- macからARM向けのイメージをビルドする