理系的な戯れ

理工学系とくにロボットやドローンに関する計算・プログラミング等の話題を扱って、そのようなことに興味がある人たちのお役に立てればと思っております。

Raspberry Pi PicoでLチカ

PicoでLチカ

はじめに

Raspberry Pi Pico(以下Pico)を購入したので、C言語でLチカできるまでを紹介します。

USBメモリとして認識される

PicoはPCに接続するとUSBメモリととして認識されます。

接続する際に、下図のBOOTSELボタンを押しながら接続することで外付けドライブとして認識されます。 BOOTSELを押さないで接続した場合は、以前のプログラムが実行されます。 BOOTSELを押しながら接続した際には、以前のプログラムは消えてしまうようです。

BOOTSELボタン
BOOTSELボタン

プログラムの書き込み

プログラムのビルドに関しては後述しますが、Picoにプログラムを書き込む際は、先に述べましたようにUSB接続して見える外部ドライブとしてのPicoにビルドして出来上がったファイルをドラッグ&ドロップまたはコピペするだけとなります。

専用のソフト等は要らず、非常にシンプルです。

M1 Mac Book Proに開発環境を整える

開発はC言語で行うことを考えます。

ARMのGCCをインストールする必要があります。またcmakeもインストールする必要がありますが、そのためにHomebrewを使います。 ところがM1 MacはappleシリコンになったためそれまでのIntelプロセッサ対応のHomebrewではうまくいかない事があり、Homebrewのインストールから始めるのが良いです。

Homebrewをインストールする

現時点は過渡期で、今までのIntelプロセッサ向けとAppleシリコン向けのHomebrewが共存しているので、Appleシリコン向けは別のディレクトリにインストールしてPATHを通して使います。

手順は以下の通りです。シェルを開いて以下の手順を踏みます

cd ~
cd /opt
mkdir homebrew
curl -L https://github.com/Homebrew/brew/tarball/master | tar xz --strip 1 -C homebrew

ホームに戻り適当なエディタで.bashrc等に以下を追加

export PATH=/opt/homebrew/bin:$PATH

一度、.bashrcを実行してupdateもしておく

cd ~
source .bushrc
brew update

cmake,GCCインストール

Homebrewが入ってしまえば、あとは以下のコマンドを実行すればcmakeとGCCがインストールされます。

brew install cmake
brew tap  ArmMbed/homebrew-formulae
brew install arm-none-eabi-gcc

SDKとサンプルプログラムの導入

SDKがないとレジスタ直接叩くしか手がなくなるので、SDKをインストールするのとサンプルが豊富なので、そちらも持ってきます。

cd ~
mkdir pico
cd pico
git clone -b master https://github.com/raspberrypi/pico-sdk.git
cd pico-sdk
git submodule update --init
cd ..
git clone -b master https://github.com/raspberrypi/pico-examples.git

ホームに戻り適当なエディタで.bashrc等に以下を追加

export PICO_SDK_PATH=~/pico/pico-sdk

一度、.bashrcを実行しておく

cd ~
source .bushrc

サンプルコードblinkのビルド

Lチカをするサンプルblinkをビルドします。

プログラムのビルドはcmakeでmakefileを作って、makeでビルドする。 cmakeの作法を正しく理解していないので、ここからは完全に受け売りになります。

buildディレクトリの作成

ソースコードが入っているディレクトリがある同じ階層にbuildディレクトリを作ります。 僕の環境なら先ほど導入したサンプルプログラムの入っているディレクトリpico-examplesになります。

cd ~
cd /pico/pico-examples
mkdir build

ビルドの実行

作ったbuildディレクトリに移動してcmakeを実行します。その後、blinkフォルダに移動してmake実行してソースをコンパイルしてリンクしてもらいます。

cd build
cmake ..
cd blink
make

makeには-j4オプションをつけて高速化を適宜します。(数値へ並列可能数以内にする)

書き込み

ビルドが終わると、拡張子がuf2のblink.uf2ファイルができています。

PicoをBOOTSELボタンを押しながらUSB接続すると、以下のようなドライブが現れれます。

Picoのドライブ
Picoのドライブ

ドライブの中は次のようになっていて、そこに先程のblink.uf2をドラッグ&ドロップすることがプログラムを書き込むことになります。

Picoドライブの中身
Picoドライブの中身

書き込みが終わると、自動的にアンマウントになります。このとき、勝手にドライブ外すなとOSに怒られますが。Picoの動作には問題ないようです。

動作している様子が以下です。


Raspberry Pi Picoサンプルプログラムblinkの動作

おわりに

発売されて間もない、Raspberry Pi Picoのソースをビルドして書き込んで実行できるまでを紹介しました。

ほぼ同じ内容を、YouTube動画にしてみましたので、よかったらそちらもご覧ください。


Raspberry Pi PicoでLチカ

おまけ動画ですが、Lチカだけなら、USBから電源が供給されて、ボード上のLEDで確認できるので必要ないですが、他に使う際はヘッダピンのはんだ付けが必要なので、はんだ付け動画をつくってみました。


Raspberry Pi Pico にヘッダーピンをハンダ付

それでは、また!