Raspberry Pi Picoというマイクロコンピュータがあるのをご存じでしょうか。1枚1000円以下で手に入る割に、性能が高くていろいろなことができるコンピュータです。プログラム言語は、PythonやC言語、ブロック型言語が使えます。ただ、本体だけでは何もできなくて本当に基板だけです。そこで、これをiːoに差し込んで使えるように基板を作ってみました。PICOは、基板上にハンダ付けしています。micro:bitのエッジ互換です。ピン配置ですが、次のようになっています。
上の列がPICOの端子、下の列がiːo(micro:bit互換)の端子番号になります。たとえば、PICOのGP26とiːoのP0端子がつながっています。
ちなみに、基板上で、Aボタン(GP15)、Bボタン(GP14)、I2Cは10MΩのプルアップ抵抗が付いています。また、I2Cソケットが2つ(3V・GND・SCL・SDAと、GND・3V・SCL・SDAの順)あるので、市販の多くのOLEDディスプレーがそのままささります。
プログラムをしてみます。microPythonでプログラムをする場合は、Thonnyというエディタが便利です。Thonnyの使い方は、ネット上にいろいろ出ているので、割愛します。
まず、小さなOLEDディスプレー(SSD1306)を接続して、Aボタンを押している間、iːoに接続したモーターを回してみました。
AボタンはPICO上のGP15,BボタンはGP14,リレーはGP6になります。エディターには、SSD1306のlibraryが必要です。
import time
import machine
from machine import Pin
# 入力ピン設定
sw1 = Pin(15, Pin.IN, Pin.PULL_DOWN) # スイッチのピン番号を指定してswとして入力設定(プルアップ)
out1 = Pin(6,Pin.OUT) # リレーのON/OFF
while True:
out1.value(sw1.value())
time.sleep(0.1)
続いて、iːo上の人感センサーが反応した際に、モーターを回します。人感センサはGP11です。
import time
import machine
from machine import Pin
# 入力ピン設定
sw1 = Pin(11, Pin.IN) # 人感センサー
out1 = Pin(6,Pin.OUT) # リレーのON/OFF
while True:
out1.value(sw1.value())
time.sleep(0.1)
次に、iːo上のフルカラーLED(Noepixel)をコントロールしてみます。接続ピンはGP7です。ws2812bのlibraryが別途必要です。
import ws2812b
np = ws2812b.ws2812b(3,0,7)
np.set_pixel(0,255,0,0)
np.set_pixel(1,0,255,0)
np.set_pixel(2,0,0,255)
np.show()
最後に、基板上の小さなOLEDディスプレーに文字を表示させます。I2C接続で、GP0(SDA)、GP1(SCL)になります。SSD1306のlibraryが別に必要です。
import time
import machine
import ssd1306
import time
sda = machine.Pin(0)
scl = machine.Pin(1)
i2c = machine.I2C(0,sda=sda, scl=scl, freq=400000)
oled = ssd1306.SSD1306_I2C(128, 32, i2c)
oled.fill(0)
oled.show()
oled.text('RaspberryPi PICO', 0, 0)
oled.text('Eureka Koubo',15,25)
oled.show()
いかがだったでしょうか。micro:bitに比べるとプログラムは難しくなりますが、iːoをPicoでも使用できるという利点があります。また、Pythonの入門としてよいと思います。
製品ですが、当社のBASEショップで1枚500円(3枚限定、PICOは含まれていません)で頒布おりますので、作ってみたい方はお申し込みください。