ラベル Grove の投稿を表示しています。 すべての投稿を表示
ラベル Grove の投稿を表示しています。 すべての投稿を表示

2022年6月15日水曜日

Maker Pi RP2040とCircuitPythonで、Grove DHT20温湿度センサーを接続して温度・湿度を計測する

Maker Pi RP2040には7つのGroveコネクタがあり、様々なGroveデバイスを接続することが出来ます。Grove DHT20温湿度センサー(Grove - Temperature&Humidity Sensor DHT20 )を接続して温度・湿度を計測するには、以下の手順を実行します。

〇Maker Pi RP2040と接続したGrove DHT20温湿度センサー(Grove - Temperature&Humidity Sensor DHT20 )

実行手順

1. Maker Pi RP2040をパソコンにUSBで接続して、Mu Editorを起動します。

2. 以下のリポジトリ(Adafruit_CircuitPython_AHTx0)からCircuitPython用のDHT20ドライバクラスを取得します。
https://github.com/adafruit/Adafruit_CircuitPython_AHTx0
以下のpythonソースをダウンロードして、Maker Pi RP2040のlibディレクトリ以下にエクスプローラーなどを用いてコピーします。
https://github.com/adafruit/Adafruit_CircuitPython_AHTx0/blob/main/adafruit_ahtx0.py

3. code.pyを開いて、以下のプログラムを書き込みます。
シリアルに温度・湿度の計測値を出力し、温度が高いほどRGB LED0を明るく赤色に点灯させ、湿度が高いほどRGB LED1を明るく青色に点灯します。
DHT20温湿度センサーはGrove2コネクタに接続します。
※circuit python 7.2.5以降にアップグレードしてから実行してください。
※Mu Editorを使用せず、code.pyを直接エクスプローラーなどから保存する事も出来ます。
import board
import time
import digitalio
import adafruit_ahtx0
import busio
import neopixel_write

# RGB LEDを初期化
dio18 = digitalio.DigitalInOut(board.GP18)
dio18.direction = digitalio.Direction.OUTPUT
pixel_buf = bytearray([0, 0, 0, 0, 0, 0])
neopixel_write.neopixel_write(dio18, pixel_buf)

# DHT20初期化
i2c = busio.I2C(board.GP3, board.GP2, frequency=1000000)
dht20 = adafruit_ahtx0.AHTx0(i2c)

while True:
    # 温度が高いほど明るい赤で表示
    temp = dht20.temperature
    print("Temp: %0.1f C" % temp)
    temp = 0 if temp < 0 else temp
    temp = 40 if temp > 40 else temp
    # 湿度が高いほど明るい青で表示
    humi = dht20.relative_humidity
    print("Humidity: %0.1f %%" % humi)
    humi = int(humi/100*255)

    pixel_buf = bytearray([0, int(temp/40*255), 0, 0, 0, humi])
    neopixel_write.neopixel_write(dio18, pixel_buf)
    time.sleep(1)

関連情報

・Maker Pi RP2040に関する他の情報はこちらを参照してください。

・Mu Editorに関する他の情報はこちらを参照してください。

2022年6月11日土曜日

Maker Pi RP2040とCircuitPythonで、Grove光センサーとGrove 7セグメント4桁ディスプレイを接続して距離を表示する

Maker Pi RP2040には7つのGroveコネクタがあり、様々なGroveデバイスを接続することが出来ます。Grove光センサーとGrove 7セグメント4桁ディスプレイを接続してセンサー値を表示するには、以下の手順を実行します。

〇Maker Pi RP2040と接続したGrove light sensorとGrove 4-Digit Display

実行手順

1. Maker Pi RP2040をパソコンにUSBで接続して、Mu Editorを起動します。

2. 以下のリポジトリ(CircuitPython library für the TM1637 7-Segment Display)からCircuitPython用の4-Digit Displayドライバクラスを取得します。
https://github.com/bablokb/circuitpython-tm1637
以下のpythonソースをダウンロードして、Maker Pi RP2040のlibディレクトリ以下にエクスプローラーなどを用いてコピーします。
https://github.com/bablokb/circuitpython-tm1637/blob/master/files/lib/TM1637.py

3. code.pyを開いて、以下のプログラムを書き込みます。
Grove光センサーはGrove7コネクタ、Grove 7セグメント4桁ディスプレイはGrove6コネクタに接続します。光センサーに明かりを近づけたり遠ざけたりすると表示されるセンサー値が変わることを確認します。
※circuit python 7.2.5以降にアップグレードしてから実行してください。
※Mu Editorを使用せず、code.pyを直接エクスプローラーなどから保存する事も出来ます。
import board
import time
import digitalio
import tm1637
import analogio

# Grove 4-digit displayの初期化
# Grove6コネクタを使用する場合はGP27とGP26を使用します
tm = tm1637.TM1637(clk=board.GP27, dio=board.GP26)

# 明るさを設定
tm.brightness(5)

# Grove7コネクタ -> GP28
adc = analogio.AnalogIn(board.GP28)

while True:
    # センサー値を0-9999に変換
    sv = int(adc.value/65535*9999)
    tm.number(sv)
    time.sleep(0.1)

関連情報

・Maker Pi RP2040に関する他の情報はこちらを参照してください。

・Mu Editorに関する他の情報はこちらを参照してください。

2022年6月10日金曜日

Maker Pi RP2040とCircuitPythonで、Grove超音波センサーとGrove 7セグメント4桁ディスプレイを接続して距離を表示する

Maker Pi RP2040には7つのGroveコネクタがあり、様々なGroveデバイスを接続することが出来ます。Grove超音波センサーとGrove 7セグメント4桁ディスプレイを接続して距離を表示するには、以下の手順を実行します。

〇Maker Pi RP2040と接続したGrove Ultrasonic RangerとGrove 4-Digit Display

実行手順

1. Maker Pi RP2040をパソコンにUSBで接続して、Mu Editorを起動します。

2. 以下のリポジトリ(CircuitPython library für the TM1637 7-Segment Display)からCircuitPython用の4-Digit Displayドライバクラスを取得します。
https://github.com/bablokb/circuitpython-tm1637
以下のpythonソースをダウンロードして、Maker Pi RP2040のlibディレクトリ以下にエクスプローラーなどを用いてコピーします。
https://github.com/bablokb/circuitpython-tm1637/blob/master/files/lib/TM1637.py

3. 以下のリポジトリからGrove Ultrasonic Rangerのドライバクラスを取得します。
https://github.com/derhexenmeister/GroveUltrasonicRanger
以下のpythonソースをダウンロードして、Maker Pi RP2040のlibディレクトリ以下にエクスプローラーなどを用いてコピーします。
https://github.com/derhexenmeister/GroveUltrasonicRanger/blob/master/grove_ultrasonic_ranger.py

4. code.pyを開いて、以下のプログラムを書き込みます。
Grove Ultrasonic RangerはGrove2コネクタ、Grove 7セグメント4桁ディスプレイはGrove6コネクタに接続します。超音波センサーに物を近づけたり遠ざけたりすると表示される距離が変わることを確認します。
※circuit python 7.2.5以降にアップグレードしてから実行してください。
※Mu Editorを使用せず、code.pyを直接エクスプローラーなどから保存する事も出来ます。
import board
import time
import digitalio
import tm1637
import analogio
import grove_ultrasonic_ranger
import neopixel_write

# Grove 4-digit displayの初期化
# Grove6コネクタを使用する場合はGP27とGP26を使用します
tm = tm1637.TM1637(clk=board.GP27, dio=board.GP26)

# 明るさを設定
tm.brightness(5)

# RGB LEDを初期化
dio18 = digitalio.DigitalInOut(board.GP18)
dio18.direction = digitalio.Direction.OUTPUT
pixel_buf = bytearray([0, 0, 0, 0, 0, 0])
neopixel_write.neopixel_write(dio18, pixel_buf)

# Groveコネクタ2にGrove Ultrasonic Sensorを接続
gur = grove_ultrasonic_ranger.GroveUltrasonicRanger(sig_pin=board.GP3, unit=1, timeout=1.5)

distance_value=0
while True:
    try:
        distance_value = int(gur.distance)
        tm.number(distance_value)
    except RuntimeError:
        # タイムアウトエラーの場合は一瞬赤で表示
        pixel_buf = bytearray([0, 128, 0, 0, 128, 0])
        neopixel_write.neopixel_write(dio18, pixel_buf)
        time.sleep(0.1)
        pixel_buf = bytearray([0, 0, 0, 0, 0, 0])
        neopixel_write.neopixel_write(dio18, pixel_buf)
    time.sleep(0.1)

関連情報

・Maker Pi RP2040に関する他の情報はこちらを参照してください。

・Mu Editorに関する他の情報はこちらを参照してください。

2022年6月9日木曜日

Maker Pi RP2040とCircuitPythonで、Grove 7セグメント4桁ディスプレイを接続して数値を表示する

Maker Pi RP2040には7つのGroveコネクタがあり、様々なGroveデバイスを接続することが出来ます。Grove 7セグメント4桁ディスプレイ(Grove 4-Digit Display)を接続して数値を表示するには、以下の手順を実行します。

〇Maker Pi RP2040と接続したGrove 4-Digit Display

実行手順

1. Maker Pi RP2040をパソコンにUSBで接続して、Mu Editorを起動します。

2. 以下のリポジトリ(CircuitPython library für the TM1637 7-Segment Display)からCircuitPython用の4-Digit Displayドライバクラスを取得します。
https://github.com/bablokb/circuitpython-tm1637
以下のpythonソースをダウンロードして、Maker Pi RP2040のlibディレクトリ以下にエクスプローラーなどを用いてコピーします。
https://github.com/bablokb/circuitpython-tm1637/blob/master/files/lib/TM1637.py

3. code.pyを開いて、以下のプログラムを書き込みます。 初期状態では0の数値が表示され、GP20ボタンで数値を増加・GP21ボタンで数値を減少する事ができます。Grove 7セグメント4桁ディスプレイはGrove6コネクターに接続します。
※circuit python 7.2.5以降にアップグレードしてから実行してください。
※Mu Editorを使用せず、code.pyを直接エクスプローラーなどから保存する事も出来ます。
import board
import time
import digitalio
import tm1637

# Grove 4-digit displayの初期化
# Grove6コネクタを使用する場合はGP27とGP26を使用します
tm = tm1637.TM1637(clk=board.GP27, dio=board.GP26)
# 明るさを設定
tm.brightness(5)

# GP20ボタンの初期化
dio20 = digitalio.DigitalInOut(board.GP20)
dio20.direction = digitalio.Direction.INPUT
dio20.pull = digitalio.Pull.UP

# GP21ボタンの初期化
dio21 = digitalio.DigitalInOut(board.GP21)
dio21.direction = digitalio.Direction.INPUT
dio21.pull = digitalio.Pull.UP

num=0
while True:
    # GP20ボタンが押されたら数値アップ
    if dio20.value == False:
        num = num+1 if num < 10000 else 0
    # GP21ボタンが押されたら数値ダウン
    if dio21.value == False:
        num = num-1 if num > 0 else 9999
    tm.number(num)
    time.sleep(0.1)

関連情報

・Maker Pi RP2040に関する他の情報はこちらを参照してください。

・Mu Editorに関する他の情報はこちらを参照してください。

2022年6月8日水曜日

Maker Pi RP2040とCircuitPythonで、Grove sound sensorを接続して音の大きさに合わせてLEDメーター・RGB LEDを光らせる

Maker Pi RP2040には7つのGroveコネクタがあり、様々なGroveデバイスを接続することが出来ます。GroveアナログデバイスはGrove5-7コネクタに接続します。Grove Sound Sensorに応じてLEDバーをメーター表示・RGB LEDの明るさを変えるには、以下の手順を実行します。

〇Maker Pi RP2040と接続したGrove Sound Sensor

実行手順

1. Maker Pi RP2040をパソコンにUSBで接続して、Mu Editorを起動します。

2. code.pyを開いて、以下のプログラムを書き込みます。
アナログ入力の初期化はanalogio.AnalogInで行います。アナログ値を取得して、10段階の数値に変換し、それに合わせてLEDバーの点灯・消灯をコントロールします。また、音が大きいほど255に近い値となるように計算した値をRGB LEDに設定して明るさを変えます。
※circuit python 7.2.5以降にアップグレードしてから実行してください。
※Mu Editorを使用せず、code.pyを直接エクスプローラーなどから保存する事も出来ます。
import board
import time
import digitalio
import analogio
import neopixel_write

# RGB LEDを初期化
dio18 = digitalio.DigitalInOut(board.GP18)
dio18.direction = digitalio.Direction.OUTPUT

pins = [
  board.GP0,
  board.GP1,
  board.GP2,
  board.GP3,
  board.GP4,
  board.GP5,
  board.GP6,
  board.GP7,
  board.GP16,
  board.GP17,
#  board.GP26,
#  board.GP27,
#  board.GP28,
]

led_meter = []


# ピンの初期化
for pin in pins:
    dio = digitalio.DigitalInOut(pin)
    dio.direction = digitalio.Direction.OUTPUT
    # LEDメーター用配列へ
    led_meter.append(dio)

# Groveアナログコネクタと対応するピンは以下になります。
# Grove5コネクタ -> GP26
# Grove6コネクタ -> GP27
# Grove7コネクタ -> GP28
adc = analogio.AnalogIn(board.GP26)

while True:
    # アナログ値を取得して0-9のレベル値
    meter_level = int(adc.value/65536*10)
    # LEDバーをレベル値に応じて点灯・消灯
    for li in range(0, 10):
        if li <= meter_level:
            led_meter[li].value = True
        else:
            led_meter[li].value = False

    # アナログ値を取得して、音が大きいほど255に近い値となるように計算する
    lv = int(adc.value/65535*255)
    pixel_buf = bytearray([lv, lv, lv, lv, lv, lv])
    neopixel_write.neopixel_write(dio18, pixel_buf)

    time.sleep(0.2)

関連情報

・Maker Pi RP2040に関する他の情報はこちらを参照してください。

・Mu Editorに関する他の情報はこちらを参照してください。

2022年6月3日金曜日

Maker Pi RP2040とCircuitPythonで、Grove Rotary Angle SensorとGrove 7セグメント4桁ディスプレイを接続してセンサー値を表示する

Maker Pi RP2040には7つのGroveコネクタがあり、様々なGroveデバイスを接続することが出来ます。Grove Rotary Angle SensorとGrove 7セグメント4桁ディスプレイ(Grove 4-Digit Display)を接続してセンサー値を表示するには、以下の手順を実行します。

〇Maker Pi RP2040と接続したGrove Rotary Angle SensorとGrove 4-Digit Display

実行手順

1. Maker Pi RP2040をパソコンにUSBで接続して、Mu Editorを起動します。

2. 以下のリポジトリ(CircuitPython library für the TM1637 7-Segment Display)からCircuitPython用の4-Digit Displayドライバクラスを取得します。
https://github.com/bablokb/circuitpython-tm1637
以下のpythonソースをダウンロードして、Maker Pi RP2040のlibディレクトリ以下にエクスプローラーなどを用いてコピーします。
https://github.com/bablokb/circuitpython-tm1637/blob/master/files/lib/TM1637.py

3. code.pyを開いて、以下のプログラムを書き込みます。
Grove Rotary Angle SensorはGrove7コネクタ、Grove 7セグメント4桁ディスプレイはGrove6コネクタに接続します。Grove Rotary Angle Sensorのツマミを動かすと、表示される値も増減します。
※circuit python 7.2.5以降にアップグレードしてから実行してください。
※Mu Editorを使用せず、code.pyを直接エクスプローラーなどから保存する事も出来ます。
import board
import time
import tm1637
import analogio

# Grove 4-digit displayの初期化
# Grove6コネクタを使用する場合はGP27とGP26を使用します
tm = tm1637.TM1637(clk=board.GP27, dio=board.GP26)

# 明るさを設定
tm.brightness(5)

# Grove Rotary Angle SensorをGrove7コネクタに接続します
# Grove7コネクタ -> GP28
adc = analogio.AnalogIn(board.GP28)

while True:
    # アナログ値を取得して0-9999の値に変換
    ra = int(adc.value*9999/65535)
    tm.number(ra)
    time.sleep(0.1)

関連情報

・Maker Pi RP2040に関する他の情報はこちらを参照してください。

・Mu Editorに関する他の情報はこちらを参照してください。

2022年6月2日木曜日

Maker Pi RP2040とCircuitPythonで、Grove超音波センサーを接続して距離に合わせてLEDメーターを光らせる

Maker Pi RP2040には7つのGroveコネクタがあり、様々なGroveデバイスを接続することが出来ます。Grove超音波センサー(Grove Sound Ranger)を接続して距離に合わせてLEDメーターを光らせるには、以下の手順を実行します。

〇Maker Pi RP2040と接続したGrove Ultrasonic Ranger

実行手順

1. Maker Pi RP2040をパソコンにUSBで接続して、Mu Editorを起動します。

2. 以下のリポジトリからGrove Ultrasonic Rangerのドライバクラスを取得します。
https://github.com/derhexenmeister/GroveUltrasonicRanger
以下のpythonソースをダウンロードして、Maker Pi RP2040のlibディレクトリ以下にエクスプローラーなどを用いてコピーします。
https://github.com/derhexenmeister/GroveUltrasonicRanger/blob/master/grove_ultrasonic_ranger.py

3. code.pyを開いて、以下のプログラムを書き込みます。
超音波センサーの距離値を3で割った値を取得して、それに合わせてLEDバーの点灯・消灯をコントロールします。レベルの値が9より大きい場合は9に制限します。
※circuit python 7.2.5以降にアップグレードしてから実行してください。
※Mu Editorを使用せず、code.pyを直接エクスプローラーなどから保存する事も出来ます。
iimport board
import time
import digitalio
import grove_ultrasonic_ranger
import neopixel_write

pins = [
  board.GP0,
  board.GP1,
  board.GP2,
  board.GP3,
  board.GP4,
  board.GP5,
  board.GP6,
  board.GP7,
  board.GP16,
  board.GP17,
#  board.GP26,
#  board.GP27,
#  board.GP28,
]

led_meter = []


# ピンの初期化
for pin in pins:
    dio = digitalio.DigitalInOut(pin)
    dio.direction = digitalio.Direction.OUTPUT
    # LEDメーター用配列へ
    led_meter.append(dio)

# RGB LEDを初期化
dio18 = digitalio.DigitalInOut(board.GP18)
dio18.direction = digitalio.Direction.OUTPUT
pixel_buf = bytearray([0, 0, 0, 0, 0, 0])
neopixel_write.neopixel_write(dio18, pixel_buf)

# Connector7にGrove Ultrasonic Sensorを接続
gur = grove_ultrasonic_ranger.GroveUltrasonicRanger(board.GP28, unit=1, timeout=1.5)
distance_level=0
while True:
    try:
        dt = gur.distance
        distance_level = int(dt/3) if int(dt/3) < 10 else 9
    except RuntimeError:
        # タイムアウトエラーの場合は一瞬赤で表示
        pixel_buf = bytearray([0, 128, 0, 0, 128, 0])
        neopixel_write.neopixel_write(dio18, pixel_buf)
        time.sleep(0.1)
        pixel_buf = bytearray([0, 0, 0, 0, 0, 0])
        neopixel_write.neopixel_write(dio18, pixel_buf)

    # LEDバーをレベル値に応じて点灯・消灯
    for li in range(0, 10):
        if li <= distance_level:
            led_meter[li].value = True
        else:
            led_meter[li].value = False
    time.sleep(0.1)

関連情報

・Maker Pi RP2040に関する他の情報はこちらを参照してください。

・Mu Editorに関する他の情報はこちらを参照してください。

2022年5月28日土曜日

Maker Pi RP2040とCircuitPythonで、Grove光センサーを接続して暗いほど明るくRGB LEDを点灯する

Maker Pi RP2040には7つのGroveコネクタがあり、様々なGroveデバイスを接続することが出来ます。GroveアナログデバイスはGrove5-7コネクタに接続します。Rotary Angle Sensorに応じてLEDバーをメーター表示するには、以下の手順を実行します。

〇Maker Pi RP2040と接続したGrove光センサー

実行手順

1. Maker Pi RP2040をパソコンにUSBで接続して、Mu Editorを起動します。

2. code.pyを開いて、以下のプログラムを書き込みます。 アナログ入力の初期化はanalogio.AnalogInで行います。アナログ値を取得して、暗いほど255に近い値となるように計算した値をRGB LEDに設定して明るさを変えます。
※circuit python 7.2.5以降にアップグレードしてから実行してください。
※Mu Editorを使用せず、code.pyを直接エクスプローラーなどから保存する事も出来ます。
import board
import time
import digitalio
import analogio
import neopixel_write

# RGB LEDを初期化
dio18 = digitalio.DigitalInOut(board.GP18)
dio18.direction = digitalio.Direction.OUTPUT 


# Groveアナログコネクタと対応するピンは以下になります。
# Grove5コネクタ -> GP26
# Grove6コネクタ -> GP27
# Grove7コネクタ -> GP28
adc = analogio.AnalogIn(board.GP26)

while True:
    # アナログ値を取得して、暗いほど255に近い値となるように計算する
    lv = 255-int(adc.value/65535*255)
    pixel_buf = bytearray([lv, lv, lv, lv, lv, lv])
    neopixel_write.neopixel_write(dio18, pixel_buf)
    time.sleep(0.5)

関連情報

・Maker Pi RP2040に関する他の情報はこちらを参照してください。

・Mu Editorに関する他の情報はこちらを参照してください。

2022年5月24日火曜日

Maker Pi RP2040とCircuitPythonで、Grove Rotary Angleボタンを接続してLEDバーにメーター表示する

Maker Pi RP2040には7つのGroveコネクタがあり、様々なGroveデバイスを接続することが出来ます。GroveアナログデバイスはGrove5-7コネクタに接続します。Rotary Angle Sensorに応じてLEDバーをメーター表示するには、以下の手順を実行します。

〇Maker Pi RP2040と接続したGrove Rotary Angle Sensor

実行手順

1. Maker Pi RP2040をパソコンにUSBで接続して、Mu Editorを起動します。

2. code.pyを開いて、以下のプログラムを書き込みます。
アナログ入力の初期化はanalogio.AnalogInで行います。LEDバー表示のためにLED0-LED7,LED16,LED17の10個のLEDを使用します。
※circuit python 7.2.5以降にアップグレードしてから実行してください。
※Mu Editorを使用せず、code.pyを直接エクスプローラーなどから保存する事も出来ます。
import board
import time
import digitalio
import analogio

pins = [
  board.GP0,
  board.GP1,
  board.GP2,
  board.GP3,
  board.GP4,
  board.GP5,
  board.GP6,
  board.GP7,
  board.GP16,
  board.GP17,
#  board.GP26,
#  board.GP27,
#  board.GP28,
]

led_meter = []


# ピンの初期化
for pin in pins:
    dio = digitalio.DigitalInOut(pin)
    dio.direction = digitalio.Direction.OUTPUT
    # LEDメーター用配列へ
    led_meter.append(dio)

# Groveアナログコネクタと対応するピンは以下になります。
# Grove5コネクタ -> GP26
# Grove6コネクタ -> GP27
# Grove7コネクタ -> GP28
adc = analogio.AnalogIn(board.GP26)

while True:
    # アナログ値を取得して0-9のレベル値
    meter_level = int(adc.value/65536*10)
    # LEDバーをレベル値に応じて点灯・消灯
    for li in range(0, 10):
        if li <= meter_level:
            led_meter[li].value = True
        else:
            led_meter[li].value = False
    time.sleep(0.2)

関連情報

・Maker Pi RP2040に関する他の情報はこちらを参照してください。

・Mu Editorに関する他の情報はこちらを参照してください。

2022年5月17日火曜日

Maker Pi RP2040とCircuitPythonで、Groveボタンを接続してRGB LEDを制御する

Maker Pi RP2040には7つのGroveコネクタがあり、様々なGroveデバイスを接続することが出来ます。Maker Pi RP2040とCircuitPythonで、Groveボタンを接続してRGB LEDを制御するには、以下の手順を実行します。

〇Maker Pi RP2040と接続したGroveボタン

実行手順

1. Maker Pi RP2040をパソコンにUSBで接続して、Mu Editorを起動します。

2. code.pyを開いて、以下のプログラムを書き込みます。
neopixel_writeモジュールでRGB LEDの制御を行うことが出来ます。ピンはGP18を使用します。
バッファは[G1, R1, B1, G2, R2, B2]というように形式で指定することで2つのLEDを別個に制御出来ます。
※circuit python 7.2.5にアップグレードしてから実行してください。
※Mu Editorを使用せず、code.pyを直接エクスプローラーなどから保存する事も出来ます。
import board
import neopixel_write
import digitalio
import time

# RGB LEDを初期化
dio18 = digitalio.DigitalInOut(board.GP18)
dio18.direction = digitalio.Direction.OUTPUT

# Grove1コネクタに接続したボタンの初期化
# Groveボタンの場合 : 各Groveコネクタに対応するピンは以下です
# Grove1 -> GP1
# Grove2 -> GP3
# Grove3 -> GP5
# Grove4 -> GP17
# Grove5 -> GP26
# Grove6 -> GP27
# Grove7 -> GP28
dio1 = digitalio.DigitalInOut(board.GP1)
dio1.direction = digitalio.Direction.INPUT

while True:
    if dio1.value == True:
        # GP1のボタンを押している間は2つのRGBLEDを赤と黄色で点灯
        pixel_buf = bytearray([0, 128, 0, 128, 128, 0])
        neopixel_write.neopixel_write(dio18, pixel_buf)
    else:
        # ボタンを押していない間は消灯
        pixel_buf = bytearray([0, 0, 0, 0, 0, 0])
        neopixel_write.neopixel_write(dio18, pixel_buf)
    time.sleep(0.1)

関連情報

・Maker Pi RP2040に関する他の情報はこちらを参照してください。

・Mu Editorに関する他の情報はこちらを参照してください。

2021年7月16日金曜日

Raspberry Pi PicoとGrove rotary angleセンサーを接続して、回転角度データを取得する

Raspberry Pi PicoとGrove rotary angleセンサーを接続して、回転角度データを取得するには、以下の手順を実行します。

〇Raspberry Pi PicoとGrove rotary angleセンサー・Groveスクリューターミナルを接続した写真

開発手順

1. 部品の用意と配線
Raspberry Pi Picoの他、以下の部品とジャンパー線を用意します。

・GROVE - rotary angleセンサ
※以下の様なスターターキットに含まれています
Groveスターターキット(Raspberry Pi Pico用)
https://www.switch-science.com/catalog/7103/

・Grove - スクリューターミナル
https://www.switch-science.com/catalog/7102/

スクリューターミナルを上面手前に配置したとき、以下の様にスクリューターミナルとRaspberry Pi Picoを接続します。
・GND(左から1番目の端子)をRaspberry Pi PicoのAGNDと印字されているピン(33番ピン)に接続
・VCC(左から2番目の端子)をRaspberry Pi Picoの3V3と印字されているピン(36番ピン)に接続
・D1(右から1番目の端子)をRaspberry Pi Picoの26番ピン(GP26_A0)に接続

Grove - スクリューターミナルとGROVE rotary angleセンサはGroveケーブルで接続します。

2. プログラミングと実行 ThonnyでRaspberry Pi Picoにmain.pyとして以下のプログラムを保存して、実行します。ターミナルに回転角度データ(0-65535)が表示されるのを確認します。
import machine
import time

# Raspberry Pi Picoの26ピン=ADC0
pin26 = machine.ADC(0)

while True:
    value = pin26.read_u16()
    print("rotary angle sensor:{}".format(value))
    time.sleep(1)

関連情報

Groveデバイスまとめ

2021年7月15日木曜日

Raspberry Pi PicoとGroveブザーを接続して、音を鳴らす

Raspberry Pi PicoとGroveブザーを接続して、音を鳴らすには、以下の手順を実行します。

〇Raspberry Pi PicoとGroveブザー・Groveスクリューターミナルを接続した写真

開発手順

1. 部品の用意と配線
Raspberry Pi Picoの他、以下の部品とジャンパー線を用意します。

・GROVE - ブザー
https://www.switch-science.com/catalog/804/

・Grove - スクリューターミナル
https://www.switch-science.com/catalog/7102/

スクリューターミナルを上面手前に配置したとき、以下の様にスクリューターミナルとRaspberry Pi Picoを接続します。
・GND(左から1番目の端子)をRaspberry Pi PicoのAGNDと印字されているピン(33番ピン)に接続
・VCC(左から2番目の端子)をRaspberry Pi Picoの3V3と印字されているピン(36番ピン)に接続
・D1(右から1番目の端子)をRaspberry Pi PicoのGP5番ピンに接続

Grove - スクリューターミナルとGROVEブザーはGroveケーブルで接続します。

2. プログラミングと実行
ThonnyでRaspberry Pi Picoにmain.pyとして以下のプログラムを保存して、実行します。2秒おきに短いブザー音がなることを確認します。
import machine
import time

PIN5 = machine.Pin(5, machine.Pin.OUT)

while True:
    # 2秒おきに短いブザー音を出力
    PIN5.value(1)
    time.sleep(0.1)
    PIN5.value(0)
    time.sleep(1.9)

関連情報

Groveデバイスまとめ

2021年7月14日水曜日

M5StickCにGroveブザーを接続して、MicroPythonでブザーを制御するREST APIサーバーを作成する

MicroPythonでブザーを制御するREST APIサーバーを作成するには、以下のコードの様にMicroWebSrv2モジュールを使用して、特定URLアクセス時にブザーが鳴るようにします。

〇M5StickCとGroveブザーを接続した写真

開発手順

1. M5StickC上にlibフォルダを作成しMicroWebSrv2モジュールをアップロード
以下のページのCodeメニューのDownload ZIPをクリックして、ソースをダウンロードします。ダウンロード後、ZIPファイルを解凍します。
MicroWebSrv2 ※ESP32上でも動作するMicro Web Serverのgithubリポジトリ
https://github.com/jczic/MicroWebSrv2

/libフォルダがない場合はThonnyのファイルペインのデバイスから右クリックしてNew directory...を選択して、フォルダ名libを入力して作成します。次にlibフォルダに移動後、PC側でZIPを解凍した中にあるMicroWebSrv2フォルダ上で右クリックメニューからUpload to /libを選択します。

2. プログラミングと実行

以下のコードのSSIDやWiFiのパスワード、固定IPアドレスを変更してmain.pyとして保存して、実行します。
/buzzerにstate=1というパラメータをGETで渡したときに、0.2秒だけブザーを鳴らします。
import machine
import time
from MicroWebSrv2 import *
import network

ssid = "WiFiのssid"
password = "WiFiのパスワード"

# Wifiの初期化
def connect_wifi():
    sta_if = network.WLAN(network.STA_IF)
    # 固定IPに設定する場合は以下の1行を有効化
    sta_if.ifconfig(('xxx.xxx.xxx.xxx','255.255.255.0','192.168.1.1','8.8.8.8'))
    if not sta_if.isconnected():
        print('connecting to network...')
        sta_if.active(True)
        sta_if.connect(ssid, password)
        while not sta_if.isconnected():
            pass
    print('network config:', sta_if.ifconfig())

connect_wifi()

# Groveブザーの初期化
pin33 = machine.Pin(33, machine.Pin.OUT)
pin33.value(0)

# 空のロギング関数
def no_logging(self, msg, msgType):
    return 0

# Webサーバーの初期化
mws2 = MicroWebSrv2()
mws2.SetEmbeddedConfig()
mws2.BufferSlotsCount = 2
mws2.OnLogging = no_logging
mws2.StartManaged()

# Routeの設定
@WebRoute(GET, '/buzzer')
def rest_buzzer(microWebSrv2, request) :
    if 'state' in request.QueryParams:
        if request.QueryParams.get('state') == '1':
            # ブザーON
            pin33.value(1)
            time.sleep(0.2)

            # ブザーOFF
            pin33.value(0)        
    request.Response.ReturnOkJSON({
        'status' : 'ok'
    })

# キー停止があるまで、無限ループ
try:
    while True :
        time.sleep(1)
except KeyboardInterrupt :
    mws2.Stop()

3. ブラウザからのアクセス
ブラウザから以下のURLにアクセスして、ブザーが鳴ることを確認します。
http://<設定したIPアドレス/buzzer?state=1

関連項目

・使用したMicroPython firmware: esp32-20210418-v1.15.bin
https://micropython.org/download/esp32/

・MicroWebSrv2のリポジトリ
https://github.com/jczic/MicroWebSrv2

2021年7月11日日曜日

M5StickCとGrove温度センサーで、温度データをREST API経由で送信する

M5StickCとGrove温度センサーで、温度データをREST API経由で送信するには、以下の手順を実行します。
構成としてはM5StickCに接続したGrove温度センサーで温度を取得します。それからM5StickCからWiFi経由でPC側のFlaskのRESTサービスにアクセスしデータを送信します。

〇M5StickCとGrove温度センサーを接続した写真

開発手順

1. PC側:pipenvのインストール
sudo apt-get -y install python3-pip python3-distutils python3-dev python3-testresources

sudo pip3 install --upgrade setuptools

sudo pip3 install pipenv

echo "export PIPENV_VENV_IN_PROJECT=true" >> ~/.bashrc

source ~/.bashrc

2. PC側:flaskのインストール
以下のコマンドで、flaskをインストールした仮想環境を作成します。
mkdir -p ./m5stickc_temp

cd ./m5stickc_temp

pipenv --python 3

pipenv install flask

pipenv shell

3. PC側:REST APIでデータを受け取り、データを表示するFlaskアプリケーションの構築
以下のコードをapp.pyとして保存します。

app.py
from flask import Flask, jsonify, request
import time

app = Flask(__name__)

@app.route('/temp', methods=["POST"])
def m5stick_temp():
    temp = float(request.json['temp'])
    print("temp:{}".format((temp)))
    return {"status":"ok"}

app.run(debug=True, host='0.0.0.0', port=5010, threaded=True)

4. PC側:実行
Flaskを実行するには、以下のコマンドを実行します。
python app.py
※Ctrl+Cで停止します

4. M5StickC側:M5StickC上にlibフォルダを作成しurequestsモジュールをアップロード
以下のページのRAWボタン上で右クリックメニューから「名前を付けてリンク先を保存」を選択して、ダウンロードします。
https://github.com/micropython/micropython-lib/blob/master/python-ecosys/urequests/urequests.py

/libフォルダがない場合はThonnyのファイルペインのデバイスから右クリックしてNew directory...を選択して、フォルダ名libを入力して作成します。次にlibフォルダに移動後、PC側のrequests.py上で右クリックメニューからUpload to /libを選択します。

5. M5StickC側:以下のコードのWiFiのSSID/パスワード/REST APIの接続先を設定して、main.pyとして保存します。実行後、2秒おきにPC側に温度センサーの値が表示されることを確認します。
import machine
import time
import math
import urequests
import ujson
import network

ssid = "WiFiのssid"
password = "WiFiのパスワード"

# REST APIの接続先
url = "http://192.168.1.xxx:5010/temp"
header = {'Content-Type':'application/json'}


# Wifiの初期化
def connect_wifi():
    sta_if = network.WLAN(network.STA_IF)
    if not sta_if.isconnected():
        print('connecting to network...')
        sta_if.active(True)
        sta_if.connect(ssid, password)
        while not sta_if.isconnected():
            pass
    print('network config:', sta_if.ifconfig())

connect_wifi()

# ADC初期化
pin33 = machine.ADC(machine.Pin(33))
pin33.atten(machine.ADC.ATTN_11DB)
pin33.width(machine.ADC.WIDTH_10BIT)

time.sleep(1)
while True:
    # WiFi接続
    connect_wifi()

    # 温度センサー測定
    # 5V=1023 -> 3.6V=1023
    value = pin33.read()*(3.6/5.0)
    # refer to https://wiki.seeedstudio.com/Grove-Temperature_Sensor_V1.2/
    r = 100000.0 * (1023.0 / value - 1.0)
    temperature = 1.0 / (math.log10(r / 100000.0) / 4275.0 + 1 / 298.15) - 273.15
    # REST APIに通知
    data = ujson.dumps({"temp":str(temperature)})
    try:
        resp = urequests.post(url, data=data.encode("utf-8"), headers = header)
        print(resp.json())
        resp.close()
    except OSError as err:
        print(err)
        print("----")
    
    time.sleep(2)
    # deepsleep
    #machine.deepsleep(60*60*1000) # 3600sec=1時間

関連情報

・使用したMicroPython firmware: esp32-20210418-v1.15.bin
https://micropython.org/download/esp32/

ADC (アナログ/デジタル変換)
※MicroPythonのDocumentation

Groveデバイスまとめ

2021年7月4日日曜日

M5StickCにGroveの温度センサーを接続して、MicroPythonで取得した温度を返すREST APIサーバーを作成する

M5StickCにGroveの温度センサーを接続して、MicroPythonで取得した温度を返すREST APIサーバーを作成するには、以下のコードの様にMicroWebSrv2モジュールを使用して、温度センサーの値をJSONで返すようにします。

〇M5StickCとGrove温度センサーを接続した写真

開発手順

1. M5StickC上にlibフォルダを作成しMicroWebSrv2モジュールをアップロード
以下のページのCodeメニューのDownload ZIPをクリックして、ソースをダウンロードします。ダウンロード後、ZIPファイルを解凍します。
MicroWebSrv2 ※ESP32上でも動作するMicro Web Serverのgithubリポジトリ
https://github.com/jczic/MicroWebSrv2

/libフォルダがない場合はThonnyのファイルペインのデバイスから右クリックしてNew directory...を選択して、フォルダ名libを入力して作成します。次にlibフォルダに移動後、PC側でZIPを解凍した中にあるMicroWebSrv2フォルダ上で右クリックメニューからUpload to /libを選択します。

2. プログラミングと実行
以下のコードのSSIDやWiFiのパスワード、固定IPアドレスを変更してmain.pyとして保存して、実行します。
import machine 
import time
import math
from MicroWebSrv2 import *
import network

ssid = "WiFiのssid"
password = "WiFiのパスワード"

# Wifiの初期化
def connect_wifi():
    sta_if = network.WLAN(network.STA_IF)
    # 固定IPに設定する場合は以下の1行を有効化
    sta_if.ifconfig(('xxx.xxx.xxx.xxx','255.255.255.0','192.168.1.1','8.8.8.8'))
    if not sta_if.isconnected():
        print('connecting to network...')
        sta_if.active(True)
        sta_if.connect(ssid, password)
        while not sta_if.isconnected():
            pass
    print('network config:', sta_if.ifconfig())

connect_wifi()

# ADC初期化
pin33 = machine.ADC(machine.Pin(33))
pin33.atten(machine.ADC.ATTN_11DB)
pin33.width(machine.ADC.WIDTH_10BIT)

# 空のロギング関数
def no_logging(self, msg, msgType):
    return 0

# Webサーバーの初期化
mws2 = MicroWebSrv2()
mws2.SetEmbeddedConfig()
mws2.BufferSlotsCount = 2
mws2.OnLogging = no_logging
mws2.StartManaged()

# Routeの設定
@WebRoute(GET, '/temp')
def rest_temp(microWebSrv2, request) :
    # 5V=1023 -> 3.6V=1023
    value = pin33.read()*(3.6/5.0)
    # refer to https://wiki.seeedstudio.com/Grove-Temperature_Sensor_V1.2/
    r = 100000.0 * (1023.0 / value - 1.0)
    temperature = 1.0 / (math.log10(r / 100000.0) / 4275.0 + 1 / 298.15) - 273.15
    request.Response.ReturnOkJSON({
        'temp' : temperature
    })

# キー停止があるまで、無限ループ
try:
    while True :
        time.sleep(1)
except KeyboardInterrupt :
    mws2.Stop()

3. ブラウザからのアクセス
ブラウザから以下のURLにアクセスして、温度センサーの値がJSON形式で取得できることを確認します。
http://<設定したIPアドレス/temp

関連情報

・使用したMicroPython firmware: esp32-20210418-v1.15.bin
https://micropython.org/download/esp32/

ADC (アナログ/デジタル変換)
※MicroPythonのDocumentation

Groveデバイスまとめ

2021年7月1日木曜日

Lazurite MJ2001とGroveブザーを接続して、ブザーを鳴らす

Lazurite MJ2001は低消費電力で920MHz無線に対応したマイコンモジュールです。Lazurite MJ2001とGroveブザーを接続して、ブザーを鳴らすには、以下の手順を実行します。

〇Lazurite MJ2001とGroveブザー・Groveスクリューターミナルを接続した写真

開発手順

1. Lazurite MJ2001とGroveデバイスの接続
以下の記事を参照してLazurite MJ2001とGroveスクリューターミナルを接続します。その後、GroveケーブルでGroveスクリューターミナルとGroveブザーを接続します。
Lazurite MJ2001とGrove光センサーを接続して、明るさを取得する

2. Lazurite IDEでのプログラミングのコンパイル・書き込み
以下のプログラムをLazurite IDEでコンパイルしてMJ2001に書き込みます。MJ2001のコンソールにGrove Rotary Angleセンサーの値が表示されることを確認します。
#include "grove_buzzer_ide.h"		// Additional Header

#define PIN_BUZZER 3

void setup() {
	// シリアル初期化
	Serial.begin(115200);
	Serial.println("welcome");
    // 3ピンを出力モードに設定
	pinMode(PIN_BUZZER,OUTPUT);
}

void loop() {
    // Groveブザー ON
	digitalWrite(PIN_BUZZER, HIGH);
	delay(500);
    // Groveブザー OFF
	digitalWrite(PIN_BUZZER, LOW);
	delay(1500);
}

関連情報

・Lazuriteに関する記事はこちらを参照してください。

2021年6月29日火曜日

Lazurite MJ2001とGrove Rotary Angleセンサーを接続して、ツマミの回転角度を取得する

Lazurite MJ2001は低消費電力で920MHz無線に対応したマイコンモジュールです。Lazurite MJ2001とGrove Rotary Angleセンサーを接続して、ツマミの回転角度を取得するには、以下の手順を実行します。

〇Lazurite MJ2001とGrove Rotary Angleセンサー・Groveスクリューターミナルを接続した写真

開発手順

1. Lazurite MJ2001とGroveデバイスの接続
以下の記事を参照してLazurite MJ2001とGroveスクリューターミナルを接続します。その後、GroveケーブルでGroveスクリューターミナルとGrove Rotary Angleセンサーを接続します。
Lazurite MJ2001とGrove光センサーを接続して、明るさを取得する

2. Lazurite IDEでのプログラミングのコンパイル・書き込み
以下のプログラムをLazurite IDEでコンパイルしてMJ2001に書き込みます。MJ2001のコンソールにGrove Rotary Angleセンサーの値が表示されることを確認します。
#include "rotary_angle_sensor_ide.h"		// Additional Header

void setup() {
	// シリアル初期化
	Serial.begin(115200);
	Serial.println("welcome");
	// 14ピン=A0を入力モードに設定
	pinMode(A0,INPUT);
}

void loop() {
	int val;
    // Grove回転角度センサーの値を読み取る
	val = analogRead(A0);
	// コンソールに出力
	Serial.print("rotary angle sensor,");
	Serial.println_long((long)val, DEC);
	delay(2000);
}

関連情報

・Lazuriteに関する記事はこちらを参照してください。

2021年6月28日月曜日

Raspberry Pi PicoとGrove光センサーを接続して、明るさを取得する

Raspberry Pi PicoとGrove光センサーを接続して、明るさを取得するには、以下の手順を実行します。

〇Raspberry Pi PicoとGrove光センサー・Groveスクリューターミナルを接続した写真

開発手順

1. 部品の用意と配線
Raspberry Pi Picoの他、以下の部品とジャンパー線を用意します。

・GROVE - 光センサ v1.2
https://www.switch-science.com/catalog/3284/

・Grove - スクリューターミナル
https://www.switch-science.com/catalog/7102/

スクリューターミナルを上面手前に配置したとき、以下の様にスクリューターミナルとRaspberry Pi Picoを接続します。
・GND(左から1番目の端子)をRaspberry Pi PicoのAGNDと印字されているピン(33番ピン)に接続
・VCC(左から2番目の端子)をRaspberry Pi Picoの3V3と印字されているピン(36番ピン)に接続
・D1(右から1番目の端子)をRaspberry Pi Picoの26番ピン(GP26_A0)に接続

Grove - スクリューターミナルとGROVE - 光センサーはGroveケーブルで接続します。

2. プログラミングと実行
ThonnyでRaspberry Pi Picoにmain.pyとして以下のプログラムを保存して、実行します。コンソールに明るさの値が表示されるのを確認します。
import machine 
import time

# Raspberry Pi Picoの26ピン=ADC0
pin26 = machine.ADC(0)

while True:
    value = pin26.read_u16()

    print("lightness:{}".format(value))
    time.sleep(1)

関連情報

Groveデバイスまとめ

2021年6月27日日曜日

M5StickCにGrove温度センサーを接続して、MicroPythonで温度を取得する

M5StickCにGrove温度センサーを接続して、MicroPythonで温度を取得するには、以下のコードの様に33番ピンの電圧をADCで読み取って計算します。

〇M5StickCとGrove温度センサーを接続した写真

サンプルコード

以下のコードをmain.pyとして保存して、実行します。コンソールに読み取った温度が表示されます
import machine 
import time
import math

pin33 = machine.ADC(machine.Pin(33))
pin33.atten(machine.ADC.ATTN_11DB)
pin33.width(machine.ADC.WIDTH_10BIT)
while True:
    # 5V=1023 -> 3.6V=1023
    value = pin33.read()*(3.6/5.0)
    # refer to https://wiki.seeedstudio.com/Grove-Temperature_Sensor_V1.2/
    r = 100000.0 * (1023.0 / value - 1.0)
    temperature = 1.0 / (math.log10(r / 100000.0) / 4275.0 + 1 / 298.15) - 273.15

    print("temp:{:.2f}".format(temperature))
    time.sleep(1)

関連情報

・使用したMicroPython firmware: esp32-20210418-v1.15.bin
https://micropython.org/download/esp32/

Groveデバイスまとめ

2021年6月24日木曜日

M5StickCのジャイロ加速度センサー(MPU6886)とGroveブザーで、すばやく振り回したときブザー音が鳴るようにする(MicroPython)

M5StickCにはジャイロ加速度センサー(MPU6886)が搭載されています。MicroPythonでM5StickCのジャイロ加速度センサー(MPU6886)とGroveブザーで、すばやく振り回したときブザー音が鳴るようにするには以下の手順を実行します。

〇M5StickCとGroveブザーを接続した写真

開発手順

1. M5StickC上にlibフォルダを作成しAXP192ドライバーをアップロード
以下のページのRAWボタンを右クリックして「名前を付けて保存」を選択してmpu6886.pyをダウンロードします。
https://github.com/tuupola/micropython-mpu6886/blob/master/mpu6886.py

/libフォルダがない場合はThonnyのファイルペインのデバイスから右クリックしてNew directory...を選択して、フォルダ名libを入力して作成します。次にlibフォルダに移動後、PC側フォルダのmpu6886.py上で右クリックメニューからUpload to /libを選択します。

2. プログラミングと実行
MPU6886の加速度センサーの値はx, y, zのタプルで取得する事が出来ます。以下をmain.pyとして、M5StickCに保存して実行します。M5StickCをすばやく振り回すと、ブザー音が短く鳴ります。
import machine
import mpu6886
import time

# ジャイロ加速度計の初期化
i2c = machine.I2C(scl=machine.Pin(22), sda=machine.Pin(21))
sensor = mpu6886.MPU6886(i2c)

#sensor.calibrate()

# Groveブザー
pin33 = machine.Pin(33, machine.Pin.OUT)
pin33.value(0)

while True:
    sv = sensor.gyro
    maxval = max(abs(sv[0]), abs(sv[1]), abs(sv[2]))
    if maxval >= 4.2: # 閾値は適当に調整してください
        # ブザーON
        pin33.value(1)
        time.sleep(0.2)

        # ブザーOFF
        pin33.value(0)        

    print(maxval)
    time.sleep(0.1)

関連情報

・使用したMicroPython firmware: esp32-20210418-v1.15.bin
https://micropython.org/download/esp32/

・MPU6886のドライバー
https://github.com/tuupola/micropython-mpu6886

Groveデバイスまとめ