How to access the GPIO with Python3 of DietPi v7.9 on NanoPi NEO

DietPi

FrendlyElec の wiki に Embedded Operating Systems として DieiPi のリンクがあります。

DietPi でも NanoPi NEO 公式対応となっています。

2022年4月25日時点では、DietPi v8.3(Debian 11 bullseye)が最新になります。

ですが!

前回の NanoPi NEO の FriendlyCore 4.14 にて GPIO を制御する にて判明している問題もありまして、古いリリースを探したところ、DietPi v7.9(Debian 9 stretch) を見つけた(一応、公式の案内です)ので使ってみます。

DietPi インストールと初期設定

DietPi のインストール方法は、マニュアル通りに進めてください。

各種 SBC と同じく MicroSD にダウンロードしたイメージを焼いてスロットに挿して電源を入れる手順ですね

NanoPi NEO の場合は、有線LANのケーブルが必要になります。

Tera Term などで接続してセットアップを進めましょう!

今のところ DietPi が各種ディストリビューションの中で一番、安定感と無駄が少ない感じで気に入ってます。

DietPi ロゴは、ラズベリー&プレデターみたい?でカッコいいですよね~!

最初の起動で root の dietpi にてログインしていただくと初期設定が自動で案内されますので用途にそって指定します。

特に難しい操作は、ないと思われます。

このあたり、初心者の私には、とてもありがたいです。

Python3 環境

Python3(3.5)と仮想環境(venv)をインストールします。

$ sudo apt install python3.5 python3-dev python3-venv

Python 仮想環境の構築です。venv の後のディレクトリ名は、何でもいいのですが、Python のバージョンを分けて仮想環境を構築したい場合、わかりやすい名前がよいかと思います。

私の場合は、バージョンを一元とするのでホームディレクトリ直下に .local の名前で仮想環境を構築しています。

$ python3 -m venv .local

アクティブ化

$ source .local/bin/activate
(.local) :~$

非アクティブ化

(.local) :~$ deactivate
$

gpio グループとルールの作成

gpio グループとルールの作成 を参照願います。

オーナー、権限が変更されない場合、手動での変更、もしくは、ルールのパーミッションなどを調整してください。

GPIO デバイスの設定

GPIO デバイスの設定を参照願います。

ここでは、GPIOG11 の pin 番号 203 を信号送信で使用します。

$ echo 203 | sudo tee /sys/class/gpio/export

tee コマンドで export へ登録します。

確認します。

$ ls -l /sys/class/gpio/gpio203/
total 0
-rw-rw-r-- 1 root gpio 4096 Apr 25 08:09 active_low
lrwxrwxrwx 1 root gpio    0 Apr 25 08:09 device -> ../../../gpiochip0
-rw-rw-r-- 1 root gpio 4096 Apr 25 08:21 direction
-rw-rw-r-- 1 root gpio 4096 Apr 25 08:09 edge
drwxrwxr-x 2 root gpio    0 Apr 25 08:09 power
lrwxrwxrwx 1 root gpio    0 Apr 25 08:09 subsystem -> ../../../../../../../class/gpio
-rw-rw-r-- 1 root gpio 4096 Apr 25 08:09 uevent
-rw-rw-r-- 1 root gpio 4096 Apr 25 08:25 value

RPi.GPIO_NP ライブラリのインストール

RPi.GPIO_NP から git clone します。

RPi.GPIO_NP は、RPi.GPIO の NanoPi 向けに作られたものです。

NanoPi で RPi.GPIO_NP が使えないと gpio の操作は、かなり狭まると思われます。

NanoPi Neo
NanoPi Neo Air
NanoPi Duo
NanoPi Duo2
NanoPi NEO2
NanoPi NEO Plus2
NanoPi M1
NanoPi M1 Plus
NanoPi NEO Core
NanoPi NEO Core2
NanoPi K1 Plus

に対応しているとのことです。※全部は、確認していません。

公式の説明通りにインストールしても使えるようになります。

要は、Python2 > Python3.8 以下?で RPi.GPIO_NP は、稼働しますのでインストールも実行環境も同じ Python バージョンに合わせることが大事です。

今回は、Python3.5 の環境に統一してます。

そして、python-dev が必須となりますので予め、apt install python3-dev を実行します。

※python-dev の場合、Python2 がインストールされる場合があります。不要です。

それでは、Python3.5 の環境にて git clone から setup install します。

$ git clone https://github.com/friendlyarm/RPi.GPIO_NP
$ cd RPi.GPIO_NP
$ python3 setup.py install

以上です。

pip で確認します。

$ pip list
Package       Version
------------- -------
pip           9.0.1
RPi.GPIO      0.5.8
setuptools    33.1.1
(.local) :~$

Python3 から GPIO の操作

NanoPi NEO の場合、先ほどの gpio203 は、7 pin となります。

この ピン の先に制御される LED がある前提となります。※こちらの配線になります。

Python3.5 の仮想環境で実行する ”Lチカ” のサンプルです。

EXAMPLE : 入力値 zero と 1 以上で HIGH、LOW を 5 回繰り返す。

#!/usr/bin/env python3
import RPi.GPIO as GPIO
import time

PIN_NUM = 7 # Pin Number

GPIO.setmode(GPIO.BOARD)
GPIO.setup(PIN_NUM, GPIO.OUT)

for i in range(0, 5):
    numerical_grade = int(input("Enter Number: "))
    if numerical_grade == 0:
        print("Low!!!")
        GPIO.output(PIN_NUM, GPIO.LOW)
        time.sleep(3)
    else:
        print("High!!!")
        GPIO.output(PIN_NUM, GPIO.HIGH)
        time.sleep(3)

GPIO.output(PIN_NUM, GPIO.LOW)
GPIO.cleanup()

注意事項:
おそらく上記のサンプルも root 権限がないと実行できないと思われます。

sudo で実行してみてください。

以上です。

Was this helpful?

0 / 0

コメントを残す 0

Your email address will not be published.