0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Nanopi Neo 2とArmbian Bullseyeの組み合わせでGPIOを使う

Last updated at Posted at 2023-03-30

はじめに

いきなり入手できなくなったRaspberry Piの代替として注目していたNanopi Neo 2ですが、こちらもいきなり入手できなくなりましたね。涙

そんな中、Nanopi Neo 2のOSをArmbian 23.02 BullseyeにしたらGPIOが使えなくなってしまいました...涙
色々なところで紹介されているWiringNPをインストールしても「これはNanopi Neo 2ではない!!」と怒られてしまいます。

ということで、Nanopi Neo 2でGPIOを使えるようにした顛末をメモ。

Armbian

以下のURLからダウンロード

GPIOのチェック

使用できるGPIOの情報を確認

cat /sys/kernel/debug/gpio

使えるGPIOの一覧を確認

cat /sys/kernel/debug/pinctrl/*/pinmux-pins

...なんだかよくわからない。

コマンドラインで使う

前述のGPIOの一覧から、8番ピンを入力として使用する場合は198という番号を指定するようです。

echo 198 > /sys/class/gpio/export
echo "in" > /sys/class/gpio/gpio198/direction

入力の接点をON / OFFしながら動作を確認。

cat /sys/class/gpio/gpio198/value

動いているみたい。
ちなみに、以下の表示で"in"となっていても明示的に"in"と指定しないと値が入ってこない。

cat /sys/class/gpio/gpio198/direction

使用を終了する。

echo 198 > /sys/class/gpio/unexport

Python3で使う

ここでは、8番ピンと10番ピンを入力、16番ピンと18番ピンを出力として利用することとします。

参考

以下のURLを参考にさせて頂きました。

準備

必要なソフトウェアやライブラリをインストールします。

apt install -y python3-pip
pip3 install OPi.GPIO

実行

import OPi.GPIO as GPIO
import time

# Nanopi NEO 2用の設定
GPIO.BOARD = {
    7:    203,   # PG11
    8:    198,   # PG6
    10:   199,   # PG7
    11:   0,     # PA0
    12:   6,     # PA6
    13:   2,     # PA2
    15:   3,     # PA3
    16:   200,   # PG8
    18:   201,   # PG9
    19:   20,    # PC0
    21:   65,    # PC1
    22:    1,    # PA1
    23:   66,    # PC2
    24:   67     # PC3
}

# 割込発生時の処理
def callback(channel):
    print("button pushed %s"%channel)

# 初期設定
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BOARD)

# 入力の指定
GPIO.setup(8, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(10, GPIO.IN, pull_up_down=GPIO.PUD_UP)

# 信号入力時の動作を指定
GPIO.add_event_detect(8, GPIO.FALLING, callback=callback, bouncetime=300)
GPIO.add_event_detect(10, GPIO.FALLING, callback=callback, bouncetime=300)

# 出力の指定
GPIO.setup(16,GPIO.OUT)
GPIO.setup(18,GPIO.OUT)

# 入力確認
GPIO.input(8)

# 出力と結果の確認
GPIO.output(18,GPIO.HIGH)
GPIO.input(18)

# 1秒待機
time.sleep(1)

# 出力と結果の確認
GPIO.output(18,GPIO.LOW)
GPIO.input(18)

できた〜!

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?