Raspberry Pi PicoでLチカやってみた(MicroPython版)

今更ながらRaspberry Pi Picoが手元に届いたのでちょっと触ってみたいと思います。発売当初に日本からだと入手性が悪いかな~と思って海外サイトで購入したのですが、届いたのが日本発売の2ヶ月以上後だったのは悲しい思い出でした。せっかく届いたので個人的にはこれを使用してショートカット的なキーボードを作ってみたいと思っています。近いものとしては以下のような商品になるかなと思います。

ここまでのものでなくても、遊舎工房さんでも以下のような商品があるので、こちらを使うという手もあるかなと思います。

f:id:ueponx:20210608004816p:plain

そこをあえてRaspberry Pi Picoで自作してみるという感じでしょうか。ただ、単にArduinoIDE環境をつかって開発を行っても新しい学びはなさそうなので(?)今回はMicroPythonを使用する環境でやってみたいと思います。

f:id:ueponx:20210608000651p:plain

今回は環境設定の(その1)という感じでMicroPythonのREPL環境を設定してみます。公式サイトの以下のページを参考にして設定を行いました。

https://www.raspberrypi.org/documentation/rp2040/getting-started/

f:id:ueponx:20210607221909p:plain

すでに、結構な方がRaspberry Pi Pico(以下Pico)のエントリーを書いていると思いますが、Picoの主な機能は次のようになっています。

  • RP2040 microcontroller chip designed by Raspberry Pi in the United Kingdom
  • Dual-core Arm Cortex M0+ processor, flexible clock running up to 133 MHz
  • 264KB of SRAM, and 2MB of on-board Flash memory
  • Castellated module allows soldering direct to carrier boards
  • USB 1.1 with device and host support
  • Low-power sleep and dormant modes
  • Drag-and-drop programming using mass storage over USB
  • 26 × multi-function GPIO pins
  • 2 × SPI, 2 × I2C, 2 × UART, 3 × 12-bit ADC, 16 × controllable PWM channels
  • Accurate clock and timer on-chip
  • Temperature sensor
  • Accelerated floating-point libraries on-chip
  • 8 × Programmable I/O (PIO) state machines for custom peripheral support

f:id:ueponx:20210607221929p:plain

あの値段でここまでの機能が搭載されていると思うと、本当に安いなあと思います。

www.switch-science.com

以下のリンクで機能詳細が記載されたpdfファイルがあるのでこちらもチェックです。

https://www.raspberrypi.org/documentation/rp2040/getting-started/static/64b50c4316a7aefef66290dcdecda8be/Pico-R3-SDK11-Pinout.svg

PicoMicroPythonの設定を行う

先程の参考のページ内のGetting started with MicroPythonのタブをクリックして作業を行います。

f:id:ueponx:20210607222026p:plain

PicoをUSB 経由でコンピューターに接続し、そこにファイルをドラッグ アンドドロップすることでPicoをプログラムできます。そのため、MicroPythonをより簡単にインストールできるように、ダウンロード可能なUF2ファイルをまとめました。

下のボタンをクリックして、MicroPython UF2 ファイルをダウンロードします。

f:id:ueponx:20210607222346p:plain

もし、最新版の環境をインストールを行う場合には公式のCircuitPythonページからダウンロードすることをおすすめします。 CircuitPythonとは?

circuitpython.org

f:id:ueponx:20210607225347p:plain

ダウンロードを行ったら、BOOTSELボタンを押したままにして、PicoをUSB接続します。Picoが接続されたら、BOOTSEL ボタンを離します。

f:id:ueponx:20210607222554p:plain

接続するとRPI-RP2という名前のストレージ デバイスとしてマウントが行われます。

f:id:ueponx:20210607223110p:plain

先程ダウンロードを行ったMicroPython UF2ファイルRPI-RP2ボリュームにドラッグ&ドロップ(コピー)します。コピーすると同時にPicoが再起動してMicroPythonが実行されます。

f:id:ueponx:20210607223253p:plain

再起動後にUSBシリアル経由でREPLにアクセスできるようになります。

f:id:ueponx:20210607223317p:plain

REPL環境への接続

シリアルポートにアクセスできるようなアプリを使用することでMicroPythonのREPL環境へのアクセスができます。

自分はWindowsRloginrlogin/telnet/ssh(クライアント)ターミナルソフト)というアプリをインストールしていたので、これを使ってアクセスしてみます。シリアルポートの設定は以下のようにしています。

f:id:ueponx:20210607231850p:plain

接続を行ってEnterキーを押すと以下のようにREPLが起動した事がわかります。

f:id:ueponx:20210607231949p:plain

もしターミナルソフトを持っていない場合には以下のChromeで使用できるSerialターミナルを使うのも手かもしれません。(自分はシリアルポートの設定がうまく行かずしようできませんでしたが…

https://googlechromelabs.github.io/serial-terminal/

f:id:ueponx:20210607232628p:plain

REPLでHello Worldを表示させてみました。

f:id:ueponx:20210607233212p:plain

また、以下のように入力を行うことでPico上のLEDを点滅することもできます。ソース中のGP25というPinがボードに搭載されているLEDにになります。

import digitalio
from board import *
import time

led = digitalio.DigitalInOut(GP25)
led.direction = digitalio.Direction.OUTPUT
while True:
    led.value = True
    time.sleep(0.1)
    led.value = False
    time.sleep(0.1)

f:id:ueponx:20210607233855p:plain

youtu.be

ちなみにREPL上で実行したプログラムはリセットなどを行うと実行されなくなるので注意が必要です。

おわりに

これでPico上でREPLでのMicroPythonの実行を行うことができました。次はRaspberry Piで開発環境を少し整えて目的のキーボード化をしていこうと思います。

/* -----codeの行番号----- */