ラズパイ・ピコ

メンターの「いわちゃん」からラズパイ・ピコ「Raspberry Pi Pico W」を頂きました。何ができるのか試したので報告です。ピコぴこってなんだかカワイイ名称ですね。

ラズパイ・ピコとは?

超小型のラズパイです。今回はピコを検証しますが、マイクロSDカード搭載のラズパイ・ゼロという製品もあります。

  • Raspberry Pi Pico シリーズ
  • 価格:1,500円くらい
  • CPUは デュアルコア ARM, 133MHz
  • メモリは 2MB, オンボード・フラッシュメモリ
  • マイクロSDカードスロットが無いので、ラズパイOSにログインはできません
  • 電源は、1.8V~5.5V, PCと接続するUSBケーブル(5V)で給電できます。
  • Pythonコードをフラッシュメモリに書き込み、コードを実行します
  • [W]は無線LANが利用できるモデル

何ができるの?

フルサイズのRaspberryPi 3B+のように40ピンのGPIOを使って、電子機器を制御できます。ラズパイOSの設定が不要なので、Pythonコードを実行できます。つまり、OSの起動時間が無いのでラズパイ・ピコの電源をONした瞬間、すぐにPythonコードが動き出します。小型コンピュータというよりは電子機器を構成する部品のひとつとして組み立てることができそうです。

使うための準備 1/2

ラズパイOSのインストールは不要ですが、Pythonコードを動かすために「microPythonファームウェア」というソフトウェアをラズパ・ピコのフラッシュメモリに書き込みます。

(1)ラズパイ・ピコの[microPython UF2ファイル]ファームウェアをWindowsパソコンにダウンロードしておく。
https://www.raspberrypi.com/documentation/microcontrollers/micropython.html#what-is-micropython

(2)USBケーブルをラズパイピコに繋ぐ
Bootselボタンを押しながら、Windowsパソコンに繋いだUSBケーブルをラズパイピコにつなぎます。新しいドライブとして認識されます。

(3)ダウンロードした[microPython UF2ファイル]ファームウェアを、ドラッグアンドドロップしてラズパイ・ピコのドライブに保存します。
※参考:新しいドライブに保存されている index.html ファイルを開くとラズパイの公式WEBサイトが開きます。公式WEBサイトでファームウェアをダウンロードしてラズパイピコに移動もしくはコピーを保存します。

使うための準備 2/2

Pythonコードを作ってラズパイピコに書き込むためのエディタをWindowsパソコンにインストールします。Thonny Python IDE をインストール
https://thonny.org/

Thonny エディタの初期設定

ラズパイピコにPythonコードを書き込むための設定をします。インタプリタ・タブで「ラズパイピコ」を選び、私のPCではUSBケーブル接続としてCOM3を選びラズパイピコと通信できました。

はじめてのPythonコード on ラズパイピコ

LEDを0.5秒毎に点滅させます。

Thonnyエディタで Pythonコードを書いたら緑色の実行ボタンをおしてLEDが点灯することを確認します。

import machine, utime
led = machine.Pin(14, machine.Pin.OUT)
while True:
    led.value(1)
    utime.sleep(0.5)
    led.value(0)
    utime.sleep(0.5)

プチ改造したPythonコード on ラズパイピコ

LEDがろうそくのゆらゆらする火みたいに点滅するコード

from machine import Pin, PWM
import utime, random
pwm = PWM(Pin(14))
pwm.freq(100)

while True:
    x = random.random()
    pwm.duty_u16(int(65535*x))
    utime.sleep(0.1)
    print(x)

電子機器を制御する Pythonコード on ラズパイピコ

2つのボタンを押すと、360度サーボモーターをそれぞれ1秒間だけ正転・逆転するコード

from machine import Pin, PWM
import utime

led = Pin(14, Pin.OUT)
pwm = PWM( Pin(28, Pin.OUT) )
pwm.freq(50) # 周波数50Hz
button1 = Pin(16, Pin.IN, Pin.PULL_UP)
button2 = Pin(17, Pin.IN, Pin.PULL_UP)
sensor = Pin(0, Pin.IN, Pin.PULL_DOWN)

CW = 700_000      # 700us~1500us
STOP = 1_500_000  # 1500±45us
CCW = 2_300_000   # 1500~2300us

led.value(1)
utime.sleep(1)

def servo_CW(p):
    #global led
    led.toggle()
    pwm.duty_ns(CW)
    utime.sleep(1)

def servo_CCW(p):
    #global led
    led.toggle()
    pwm.duty_ns(CCW)
    utime.sleep(1)

button1.irq( trigger = Pin.IRQ_FALLING, handler = servo_CW )
button2.irq( trigger = Pin.IRQ_FALLING, handler = servo_CCW )

while True:
    if sensor.value() == 0:
        print("checking...")
        led.value(0)
        pwm.duty_ns(STOP)
        utime.sleep(1)
    else:
        print("Detected")
        led.value(1)
        pwm.duty_ns(CW)
        utime.sleep(1)

以上です。
ラズパイOS起動する時間が不要なので、電子機器の部品としてPythonコードを実行することができます。さて、何をつくろうかなー😁


コメントを残す