LoginSignup
2
2

More than 3 years have passed since last update.

RaspiにUbuntu入れてその上にDocker入れてコンテナからpythonでGPIO制御

Posted at

はじめに

めちゃくちゃややこしいタイトルになってしまいましたがこんなイメージです
スクリーンショット 2020-02-11 14.56.17.png

環境

開発PC:Mac Mojave
RaspBerry Pi4 メモリ4GB
SDカード16GB

Ubuntu19.10をSDに書き込む

https://ubuntu.com/download/raspberry-pi
から64bit版をダウンロードしてbalenaEtcharを使って書き込みました。

dockerをUbuntuにインストール

Ubuntuにsshかなんかで入って

sudo apt-get install docker-ce

でインストールできます。

sudo usermod -aG docker ubuntu

でsudo使わなくてもdockerできます。

ベースイメージを作る

開発PCでpython scriptを書いてからDockerfileでdockerImageにコピーしてもよいのですが、わかりづらかったので一度Dockerfileでベースを作ってから、コンテナに入りそのコンテナからイメージを作ります。

Dockerfileです

Raspberry Pi で TensorFlow する Docker 環境構築
を参考にさせていただきました、この記事ほぼほぼ上を参考にしました。
rpi.gpioを入れたかったのですが入れ方よくわかんなかったのでそのまま記述してます

FROM resin/rpi-raspbian:stretch

RUN echo "deb http://mirrordirector.raspbian.org/raspbian/ stretch main contrib non-free rpi firmware" > /etc/apt/sources.list

RUN apt-get update -y
RUN apt-get install -y --no-install-recommends \
        vim git less wget \
        build-essential \
        libatlas-base-dev \
        python3-pip python3-dev python3-setuptools\
        python3-scipy python3-h5py \
        libraspberrypi-bin \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/*

RUN pip3 install --upgrade pip setuptools
RUN pip3 install rpi.gpio

あとはbuildします

docker build -t rpi/rpi:0.1 .

docker imagesでできてることを確認しましょう!できてるはずです。

コンテナを起動してpythonスクリプトを書く

先ほど作ったイメージからコンテナを起動します。
bash
docker run --name rpi_test -ti --privileged rpi/rpi:0.1 /bin/bash

で、コンテナの中に入るので、欲しいものをインストールします。nano派なので

sudo apt-get update
sudo apt-get install nano

homeに移動してscriptを作ります。
この辺ほんとは作業ディレクトリとか設定するのがよいのだろうな・・・

cd home
nano test.py

GPIO17にLEDをさして適当にLチカするプログラムです。


import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BOARD)
GPIO.setup(11, GPIO.OUT)
while True:
    GPIO.output(11, True)
    time.sleep(2)
    GPIO.output(11, False)
    time.sleep(2)

スクリプトを保存したら

exit

でログアウトしてください

docker ps -a
CONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS                     PORTS               NAMES
e700d8490be8        rpi/rpi:0.1           "/usr/bin/entry.sh /…"   11 minutes ago      Exited (0) 6 seconds ago                       rpi_test

コンテナが止まっています。このコンテナからイメージを作るには

docker commit rpi_test rpi/rpi:0.2
docker images
REPOSITORY           TAG                 IMAGE ID            CREATED             SIZE
rpi/rpi              0.2                 50f7f2a406e7        2 minutes ago       622MB

scriptが保存してあるイメージができました。

起動

sudo docker run --privileged -it -d --name rpi -w /home rpi/rpi:0.2 python3 test.py

バックグラウンドでコンテナが動いてLちかし続けます!
止めたい時は docker stop rpiでとまります

まとめ

センサーデータとかもそのうちとりたい

2
2
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
2
2