秋月でMAKER NANO RP2040を買ってみた↓
1.MAKER NANO RP2040
開発はCytronという処で製造はマレーシアと梱包箱には記載されている↓
データシート↓
docs.google.com Cytron社はpHATやMaker nano(original)を買った事があってSTEM用やそこそこの実装密度でコスパの良いボードを提供していると認識しており個人的には高評価。製造がマレーシア故か基板実装はまあそこそこではあるが個人用途としては全く無問題と想っている。
2.外観
GROVE変換ケーブル2本も添付されており多少高めではあるがLED付+ケーブル付きで考えるとまあ納得のコスパだろうか(私見)。Seeed等の支那製と何とか勝負してる印象(私見)。
ウラ面(基板面)。ピエゾブザーとSTEMMA QTコネクタはウラ面に実装されている。
3.プレインストールされているCircuit python
USBケーブルを接続すると以下のフォルダを表示する↓
プレインストールされている情報はboot_out.txtに出力されているらしい↓
Adafruit CircuitPython 7.1.0 on 2021-12-28; Cytron Maker Nano RP2040 with rp2040
Board id:cytron_maker_nano_rp2040
令和四年卯月三日時点の情報なので今後バージョンアップ・変更される可能性があります。無知な私はMicroPythonとCircuitPythonの違いが分からないのだがプレインストールされているのはCircuitPython 7.1.0らしい。。。
4.使い方(遊び方)
上記フォルダでcode.pyというのがCircuitPythonで書かれたコードなのでダブルクリックしてテキストエディタを開く↓
ご覧の通りPython(CircuitPython)のコードが表示されるので適当に編集してエディタの保存(Save)するとcode.pyが更新されたと判定して保存したコートが実行される。code.pyはMAKER NANO RP2040に保存されているのでpythonコードはエディタでPCに保存しておけば良い。まあこの手のSTEM想定の環境では良く有るパタンで多分IDEも提供されているようなのでそれとの組み合わせを想定していると思います(無知故、直操作でご容赦)。確かMicrobitのPythonIDEのようなものが提供されている筈。。。参考迄にcode.pyの内容は以下の通り↓
import board
import digitalio
import neopixel
import simpleio
import time
import pwmio# Initialize LEDs
# LEDs placement on Maker Pi RP2040
LED_PINS = [board.GP0,
board.GP1,
board.GP2,
board.GP3,
board.GP4,
board.GP5,
board.GP6,
board.GP7,
board.GP8,
board.GP9,
board.GP17,
board.GP19,
board.GP16,
board.GP18]LEDS = []
for pin in LED_PINS:
# Set pins as digital output
digout = digitalio.DigitalInOut(pin)
digout.direction = digitalio.Direction.OUTPUT
LEDS.append(digout)# Initialize Neopixel RGB LEDs
pixels = neopixel.NeoPixel(board.GP11, 2)
pixels.fill(0)# Melody
MELODY_NOTE = [659, 659, 0, 659, 0, 523, 659, 0, 784]
MELODY_DURATION = [0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.2]# Define pin connected to piezo buzzer
PIEZO_PIN = board.GP22# Initialize buttons
btn1 = digitalio.DigitalInOut(board.GP20)
btn1.direction = digitalio.Direction.INPUT
btn1.pull = digitalio.Pull.UP# -------------------------------------------------
# ON START: Show running light and play melody
# -------------------------------------------------
for i in range(len(LEDS)):
LEDS[i].value = True
if i < len(MELODY_NOTE):
# Play melody tones
simpleio.tone(PIEZO_PIN, MELODY_NOTE[i], duration=MELODY_DURATION[i])
else:
# Light up the remainding LEDs
time.sleep(0.15)# Turn off LEDs one-by-one very quickly
for i in range(len(LEDS)):
LEDS[i].value = False
time.sleep(0.02)
color = 0
state = 0# -------------------------------------------------
# FOREVER LOOP: Check buttons & animate RGB LEDs
# -------------------------------------------------
while True:
# Check button 1 (GP20)
if not btn1.value: # button 1 pressed
# Light up all LEDs
for i in range(len(LEDS)):
LEDS[i].value = True
# Play tones
simpleio.tone(PIEZO_PIN, 262, duration=0.1)
simpleio.tone(PIEZO_PIN, 659, duration=0.15)
simpleio.tone(PIEZO_PIN, 784, duration=0.2)
simpleio.tone(PIEZO_PIN, 984, duration=0.25)
# Animate RGB LEDs
if state == 0:
if color < 0x101010:
color += 0x010101 # increase rgb colors to 0x10 each
else:
state += 1
elif state == 1:
if (color & 0x00FF00) > 0:
color -= 0x000100 # decrease green to zero
else:
state += 1
elif state == 2:
if (color & 0xFF0000) > 0:
color -= 0x010000 # decrease red to zero
else:
state += 1
elif state == 3:
if (color & 0x00FF00) < 0x1000:
color += 0x000100 # increase green to 0x10
else:
state += 1
elif state == 4:
if (color & 0x0000FF) > 0:
color -= 1 # decrease blue to zero
else:
state += 1
elif state == 5:
if (color & 0xFF0000) < 0x100000:
color += 0x010000 # increase red to 0x10
else:
state += 1
elif state == 6:
if (color & 0x00FF00) > 0:
color -= 0x000100 # decrease green to zero
else:
state += 1
elif state == 7:
if (color & 0x00FFFF) < 0x001010:
color += 0x000101 # increase gb to 0x10
else:
state = 1
pixels.fill(color) # fill the color on both RGB LEDs
# Sleep to debounce buttons & change the speed of RGB color swipe
time.sleep(0.05)
このコードを書かれた方は(親しみが湧くように)ピエゾブザーで昔のゲーム機のメロディを再現する為にコードの多くを使っている様でゲームに無縁な私でも大昔のゲーム機っぽい音がしてる気がする。ボタン(GP20)押下で動作が変わる。RGBLEDを2個搭載しておりPWMでじわじわ色を変化させたり色々頑張っている↓
5.まとめ
・その名の通りMAKER NANOのRP2040バージョン
・Groveへの変換ケーブル添付で2個のGroveデバイスを本機だけで接続可能
・プレインストールされているCircuitPythonで遊べる(Arduino C/C++を使わない人向け)
arduinoを使うにはCircuitPythonを消去しなければならないので勿体無い・面倒くさいからCircuitPythonで遊んでみる。この類の環境はがじるねでrubyの方が早かった印象があるが言語の知名度というかエコシステムの暴力でPythonに制圧されそうな今、だろうか。
2022/04/09 12:53追記:
Ubuntu20.04でmu-editorを導入した。導入方法は
pip3 install mu-editor
で十分で仮想環境がどうちゃらこうちゃらとか気にしない。。。
導入はしたもののマウントされたcode.pyをテキストエディタで直接編集・保存した方が単純で性に合ってる気がする。複雑怪奇なIDEはもとよりIDEはあまり好きではないというか頭が単純なので単純な方が理解しやすいだけの事ではある(頭悪いって言ってます)。