既にパソコンと化した「ラズベリーパイ(Raspberry Pi)」
組み込み系が好きな私的には「コスパ最強ミニサーバー」という位置付けで「自宅サーバー」や「IoT」に使うものという理解で、一通り遊んでからかれこれ1年以上触ってません・・・。
制御系も色々できるものの「作ってる」というより「使ってる」という感じで面白みがなく、完全に遠ざかってましたが、ずっと気になってたラズパイのマイコンボード版「Raspberry Pi Pico/PicoW」
「Pico」はWi-Fi通信ができないのでWi-Fi機能付きの「Raspberry Pi Pico W」の販売(技適取得)を待ってましたが、2023/3ようやく「スイッチサイエンス」さんが技適取得品を販売してくれました。
基本的な使い方は「Pico」も「PicoW」も同じなため、基本的な使い方を詳しく紹介していきます。
「Raspberry Pi Pico 2」の初期設定や使い方については、以下のリンクで詳しく紹介しています。
基本的なプログラムや小型な「ラズパイPico」互換ボード「XIAO RP2040」の使い方も以下のリンクで詳しく紹介しています。
1.ラズパイ(Raspberry Pi)Pico/PicoWとは
2.外観(Pico と PicoW の違い)
・PicoWの「技適」について
3.基本仕様
4.端子配列
5.端子機能詳細(入出力/通信/ADC/ADC)
6.動作確認の準備
7.開発環境別初期設定、Lチカで動作確認
・Thonny(Python:MicroPython & CircuitPython)
・AruduinoIDE(C言語)
・PlatformIO(C言語)
8.まとめ
1.ラズパイ(Raspberry Pi)Pico/PicoWとは
「Raspberry Pi Pico/PicoW」とは、イギリスを拠点とする慈善団体によって若者のプログラミング学習を目的に開発されたもので、OSを搭載してパソコンのように使える他の「Raspberry Piシリーズ」とは異なり、OSを搭載する機能はありません。
その代わり、電源投入ですぐに使用でき、スイッチやLEDランプ、モーター、各種センサー、通信機器を接続して、それらを制御するプログラムを簡単に作成して動作確認できるため、組み込み(制御)系プログラミングの学習に最適です。
「Pico W」にはWi-Fi機能があり、Wi-Fi通信を利用したインターネット経由のデータ収集や遠隔操作等のアイデアを簡単に試すことができます。
メイン処理装置のマイコン(マイクロコントローラ)には同財団で開発された「RP2040」が使用されており、USBコネクタや電源回路、スイッチ、LED等と合わせて1枚の基板に実装されています。
このようにマイクロコントローラーと周辺回路が実装された基板をマイコンボードと呼びます。
2.外観(Pico と PicoW の違い)
「Raspberry Pi Pico/PicoW」の外観は下画像のようになります。
基板には以下のような機能を持った部品が実装されています。(赤文字は「Pico W」のみの機能)
- USB microB:プログラムの書込みと電源供給用
- LED(緑):プログラムで点灯/消灯を制御可(PicoとPicoWで端子番号が異なる)
Pico → 端子番号GP25
Pico W → 端子番号 WL_GPIO0(出力端子のGP0とは異なる) - BOOTボタン:書込みモードの切替
- 温度センサ:本体基板上の温度確認用(気温との差が大きい)
- 無線通信モジュール:PicoWのみ対応 Wi-Fi無線通信用(Bluetoothはまだソフト的に未対応)
基板両サイドには入出力端子(電源用等含む)として使用できる端子が40ピンと、基板上にデバッグ(ステップ実行やブレーク等)を行うための端子が3ピンあります。
端子番号は下画像のように基板裏面に表示されています。
Pico Wの「技適」について
Wi-Fi機能のある「Pico W」は「技適(技術基準適合証明)」が取得されていなかったため、日本国内で簡単に使用することができませんでしたが、ようやく「スイッチサイエンス」さんで「技適」付きで販売されました。
技適は、電気通信機器に関する法規制の一つであり、日本国内において販売(輸入品も含む)される電気通信機器が「技術基準適合証明」を受けたものであることを示すものです。
日本で使用される対象の電気通信機器は技適の取得が必要となります。
入出力端子のピン(ピンヘッダー)は基本的には付属も実装もされていませんので別途購入して以下のようにハンダ付けで実装する必要があります。
ハンダ付けが苦手な方は実装済みのものもありますのでそちらを購入しましょう。
入出力端子部に実装するピンヘッダーは上画像のようになります。
ピンヘッダー(細ピンがおすすめ)1列x20 2個
デバッグ端子を使用する場合は1列x3 1個(今回は使用しないので実装しません。)
上画像のようにピンヘッダーをブレッドボードに固定しておくとハンダ付けしやすいです。
上画像のようにはんだ付けします。
ブレッドボードで固定しておけば真っ直ぐハンダ付けできます。
3.基本仕様
「Raspberry Pi Pico/Pico W」の基本仕様は以下表のようになります。
項目 | 詳細 |
---|---|
コントローラ | RP2040 |
クロック | 最大133MHz (デュアルコア Arm Contrex M0+プロセッサ) |
Flash / SRAM | 2MB / 264kB |
電源電圧(VBUS) | DC5V±10% |
USB | Micro USB Type-B |
入出力 | 多機能GPIO x 26 |
通信機能 | UART x 2 / I2C x 2 / SPI x 2 |
無線通信機能 ※Pico Wのみ | Wi-Fi (2.4 GHz)/Bluetooth |
その他機能 | ADC(12bitアナログコンバータ) x 3 PWM x 16 |
動作温度範囲 | -20℃〜85℃(自己発熱含む) ※最大温度は推奨70℃ |
寸法 | 21 x 51 (mm) |
4.端子配列
端子配列は以下のようになります。(公式サイトより抜粋)
Picoの端子配列
Pico Wの端子配列
5.端子機能詳細(入出力/通信/ADC)
「4.端子配列」の中の各端子の機能について、端子記号ごとに以下表にまとめました。
記号 | 機能 | 詳細 |
---|---|---|
GP0〜22, 26〜28 | 入出力 | 入力端子、出力端子としてプログラムで設定できます。 プルアップ抵抗無し、プログラムでプルアップ指定可 |
ADC0〜2 | AD変換 | 12bit アナログデジタルコンバータ |
I2C0,1 | 同期通信 | I2C通信用端子で、以下の2つの信号線を使って通信を行います。 ・SDA:データ送受信用 ・SCL:クロック(通信タイミング)信号用 マスター側から送信したクロック信号のタイミングでスレーブ側と通信するため、 同期通信と呼ばれます。 |
SPI0,1 | 同期通信 | SPI通信用端子で、以下の4つの信号線を使った通信を行います。 ・TX:データ送信用 ・RX:データ受信用 ・SCK:クロック(通信タイミング)信号用 ・CSn:スレーブが複数ある場合の通信先選択用 通信したいスレーブ機器のCS(SS)端子をLowに制御して通信を行います。 I2Cと同じ同期通信ですが、データ信号線とクロック信号線が別なのでI2Cより高速な同期通信が可能です。 |
UART0,1 | 非同期通信 | UART通信用端子で、SPI/I2C通信とは異なり、通信タイミングに必要なクロック信号が無いため、非同期通信と呼ばれます。 UART通信では以下の2つの信号線を使って通信を行います。 ・TX:データ送信用 ・RX:データ受信用 2つのデバイス間で、送信端子と受信端子を互い違いに接続します。 I2CやSPI通信とは異なり、マスター/スレーブのような関係はありません。 クロック信号が無いので、送受信するデバイス間で同じ通信速度(ボーレート)を 設定しておく必要があります。 よく使用される通信速度は以下になります。 1200 /2400 /4800 /9600 /19200 /38400 /57600 /115200 (単位:bps) |
VBUS | USB電源 | USBのDC電圧が出力されます。 |
VSYS | 内部制御用3.3V 電源生成用電源 | 制御用の3.3V電源生成用の電圧(1.8V〜5.5V)を別電源から供給したい場合に使用。 内部バックブーストコンバータ(RT6150B-33GQW)の入力電源。 |
3V3_EN | 内部制御用3.3V 電源生成有効無効選択 | 未接続で有効、GNDに接続で無効。 |
3V3(OUT) | 内部制御用3.3V 電源外部出力 | 3.3Vの外部出力電源として使用可能。 (最大出力電流はRP2040負荷とVSYS電圧に依存します。このピンの負荷は300mA未満。) |
ADC _VREF | AD変換基準電圧 | アナログデジタル変換の基準電圧として使用可。 |
6.動作確認の準備
動作確認ではサンプルプログラムを使用して、内蔵のLED(緑)を点滅させる「Lチカ」の動作確認を行います。
これだけであれば、基板だけで(ピンヘッダーをハンダ付けしなくでも)できますが、せっかくなのでスイッチを追加して、スイッチONでLEDが点灯、スイッチOFFでLEDが消灯する動作も確認してみましょう。
このためには、下画像のように「ブレッドボード」と「ジャンパー線」を使用して「スイッチ」を外付けして準備しておきましょう。
ブレッドボードには画像のように穴がたくさん空いていて基板を差し込んで使用します。
空いている穴は上画像の場合、隣り合った縦1列(A〜F、G〜L)がそれぞれ内部で繋がっています。
このブレッドボードを使用して「Raspberry Pi Pico/Pico W」の出力端子「GP20」とスイッチ端子、「GND」とスイッチのもう片方の端子を接続します。これで準備完了です。
7.開発環境別初期設定、Lチカで動作確認
プログラムを書き込むためには開発環境を準備する必要があります。
「Raspberry Pi Pico/PicoW」の開発環境はいくつかありますがプログラミング言語として「Python(MicroPython & CircuitPython)」と2つの「C言語」での開発環境として以下の3種類の使用方法を紹介します。
・Thonny
プログラミング言語:Python(MicroPython & CircuitPython)
OS搭載のラズベリーパイに標準搭載されている開発環境です。
プログラムのコンパイル(書込み)が不要で作成したプログラムをすぐに動作確認できます。
・ArduinoIDE
プログラミング言語:C言語
マイコンボード「Arduino」の開発環境で「Raspberry Pi Pico/Pico W」でも同じように使用できます。
情報量も多く、これからC言語を勉強してみようって方にもおすすめです。
・ PlatformIO
プログラミング言語:C言語
いろいろなマイコンの統合開発環境です。準備が大変ですが個人的には最もおすすめです。
高機能エディタ「Visual Studio Code(VSCode)」の中で使用することができるため、
プログラムの編集機能が豊富で慣れてしまうと他の環境には戻れません。
何より書込み速度がダントツで速いのでストレスなくプログラムの作成に集中できます。
・Thonny(Python:MicroPython & CircuitPython)
「Thonny」を使用した「Python(MicroPython)」での開発環境の準備から「Lチカ」の動作確認まで紹介します。
「CircuitPython」の開発環境は以下のリンクで詳しく紹介しています。
「Thonny」で「MicroPython」を使用した開発環境の準備は以下のリンクでより詳しく1つの記事にまとめていますので、こちらも参照してください。(ファームウェアのダウンロード不要な方法)
①ファームウェアファイルのダウンロード
まずは以下のリンクをクリックして「Raspberry Pi」公式サイトの「MicroPython」のページにアクセスしてください。
以下のページが表示されるので、少し下にスクロールします。
以下のような画面の中の「Raspberry Pi Pico」の部分をクリックします。
「Pico W」を使用する場合は「Raspberry Pi Pico W」の方をクリックします。
ファイルのダウンロードが始まるので少し待ちます。
ダウンロードが終了したらファイルを開いたり、実行するのではなく、保存したフォルダを開きましょう。
下画像はブラウザが「Chrome」の場合の例です。
「ダウンロード」フォルダに保存されているので、直接「ダウンロード」フォルダを開いてもOKです。
下画像のようにダウンロードフォルダを開いたらファイル「rp2-pico-20220618-v1.19.uf2(バージョンの数字は異なる場合があります。)」があるのを確認します。
②ラズパイPicoとパソコンの接続
次に「Raspberry Pi Pico」とパソコンをUSBケーブルで接続します。
「BOOTSEL」ボタンを押しながら接続して、パソコンに認識されると下画像のように「RPI-RP2」フォルダが開きます。
フォルダが開いたら下画像のように「ダウンロード」フォルダから、先程ダウンロードしたファイルをドラッグ&ドロップで「RPI-RP2」フォルダにコピーします。
すると下画像のような表示が画面右下に表示されます。
ラズパイが認識されセットアップが始まるのでしばらく待ちましょう。(私の環境では1分以上待ちました。)
セットアップが完了すると上画像のような表示が画面右下に出ます。
この表示が確認できたらパソコンとの接続は完了です。
③開発環境「Thonny」のダウンロードと初期設定
次に「Thonny」をダウンロードしていきます。
まずは以下のリンクをクリックして、ダウンロードページを開きましょう。
下画像のようなページが表示されるので、画面上あたりの「Download」からパソコン環境に合わせてクリックしてダウンロードしてください。(WindowsならWindowsをクリック)
ファイルのダウンロードが始まるので少し待ちます。ダウンロードが終了したらファイルを開きましょう。
下画像はブラウザが「Chrome」の場合の例です。
「ダウンロード」フォルダに保存されているので、直接「ダウンロード」フォルダから実行してもOKです。
下画像のようなウインドウが開くので矢印の箇所をクリックします。
(クリックするのは「自分にだけインストール(推奨)」するというものです。全てのユーザーに対してインストールする場合はその下をクリックしてください。)
下画像のようにインストール画面が表示されますが基本的には「Next」をクリックしていくだけです。
上画像の画面ではチェックボックスをチェックして、アイコンをデスクトップに置くようにしましょう。
上画像の画面で「Install」をクリックするとインストールが始まります。
最後に「Finish」をクリックして終了です。
次に「デスクトップ」に下画像のようなアイコンがあるのでクリックします。
「Thonny」が起動するので下画像のように初期設定を行います。
「Language」を「日本語」に、「Initial settings」を「Raspberry Pi」に設定します。
上画像のように設定できたら「Let`s go!」をクリックします。
下画像のように「Thonny」の開発画面が表示されるので、右下の「Python 3.7.9(バージョンの数字は異なる場合があります。)」をクリックします。
下画像のようなメニューが表示されるので「MicroPython(Raspberry Pi Pico)」をクリックします。
下画像のようにウインドウの右下が「MicroPython(Raspberry Pi Pico)」になっていれば初期設定完了です。
④サンプルプログラムの実行、動作確認
開発環境の準備が整いましたので早速プログラムを実行していきましょう。
最初のプログラムとしてLEDを点滅させるサンプルプログラムを以下に準備しましたのでコピペ(コピー&ペースト)で「Thonny」に貼り付けましょう。
プログラムのコピーは下の黒塗り部の右上アイコンクリックでもできます。
from machine import Pin # 入出力モジュールを準備
import utime # タイマーモジュールを準備
led = Pin("LED", Pin.OUT) # LED端子をLedとして出力に設定
while True: # ずっと繰り返し
led.value(1) # LEDを点灯
utime.sleep(0.5) # 0.5秒待つ
led.value(0) # LEDを消灯
utime.sleep(0.5) # 0.5秒待つ
コピーしたら下画像のように「Thonny」に貼り付けましょう。
貼り付ける箇所をクリックして「Ctrl + V」で貼り付けられます。
貼り付けて[実行]ボタンを押すと下画像のようなウインドウが表示されます。(開かない場合は[Save]ボタンをクリックします。)
ここでは作成したファイルの保存先を指定します。
[This computer]を選択するとパソコンに保存され[Raspberry Pi Pico]を選択するとラズパイ基板に保存しておくことができます。
ここは好みですが今回は[Raspberry Pi Pico]を選択してみましょう。
下画像のようなファイルに名前をつけて保存するウインドウが表示されるので「File name」欄に「blink(何でもいいです)」と打ち込んで[OK]ボタンを押しましょう。
下画像のような画面になり実行完了です。
下画像のようにラズパイ基板上のLEDが0.5秒ごとに点滅するのが確認できると思います。
LED点灯
LED消灯
プログラムについては上コードのコメントを参照してください。
LEDを点灯させるプログラムについて簡単に紹介します。
カッコ内の数値が1で点灯、0で消灯です。
utime.sleep(0.5) # 0.5秒待つ
カッコ内の数値で待機時間を設定できるため、この数値を変更するとLEDの点滅間隔を設定できます。
「Raspberry Pi Pico」で使用できる「MicroPython」についての詳細は以下のサイトで確認できます。当サイトでも少しづつ紹介していきたいと思います。
次にボタンを押したらLEDが点灯するプログラムの動作を確認してみましょう。
まずは、今実行しているプログラムを[STOP]ボタンを押して停止させましょう。
停止したら[New]ボタンを押してください。
下画像のように新しく<untitled>タブが作成されます。
前回同様にサンプルプログラムを以下に準備しましたのでコピペ(コピー&ペースト)で「Thonny」に貼り付けましょう。
プログラムのコピーは下の黒塗り部の右上アイコンクリックでもできます。
from machine import Pin # 入出力端子モジュールを準備
led = machine.Pin("LED", machine.Pin.OUT) # LED端子をledとして出力に設定
sw = Pin(20, Pin.IN, Pin.PULL_UP) # GP20をswとして入力端子(プルアップ)に設定
while True: # ずっと繰り返し
if sw.value() == 0: # swがONなら
led.value(1) # LEDを点灯
else: # swがONでなければ
led.value(0) # LEDを消灯
コピーしたら下画像のように「Thonny」に貼り付けましょう。
貼り付ける箇所をクリックして「Ctrl + V」で貼り付けられます。
以降は前回と同じ作業で、貼り付けて[実行]ボタンを押すと下画像のようなウインドウが表示されますのでファイルの保存先を指定します。
下画像のように「File name」欄に「Lchika(何でもいいです)」と打ち込んで[OK]ボタンを押しましょう。
下画像のような画面になり実行完了です。
下画像のようにブレッドボード上のボタンを押すとラズパイ基板上のLEDが点灯するのが確認できると思います。
ボタンOFFでLED消灯
ボタンONでLED点灯
プログラムについては上コードのコメントを参照してください。
MicroPythonを使用したOLED表示器の使用方法については、以下のリンクで詳しく紹介しています。
・AruduinoIDE(C言語)
「ArduinoIDE」を使用した「C言語」での開発環境の準備から「Lチカ」の動作確認まで紹介します。
①ArduinoIDEのインストール
開発環境として設定するボードには公式の「Arduino Mbed OS RP2040 Boards」とPhilhower氏作の「Raspberry Pi Pico/RP2040」があります。
公式の方は初期状態でインストールできて手軽なため以下で紹介していますが、他のマイコンボードで作成したプログラムがそのままコンパイルできなかったり、修正も困難な場合があったため、使い勝手の良かったPhilhower氏作の方を別記事にインストール方法から詳しくまとめましたので、初めてインストールする方は以下のリンクを参照してください。
既にインストール済みの方は以下から公式のボード設定で手軽に確認する方法として紹介します。
②パソコンと「Raspberry Pi Pico」の接続
インストールが終わって「ArduinoIDE」を起動したら「Raspberry Pi Pico」とパソコンをUSBケーブルで接続します。
「BOOTSEL」ボタンを押しながら接続して、パソコンに認識されると下画像のように「RPI-RP2」フォルダが開きますが「ArduinoIDE」では使用しないので閉じておきます。
③ArduinoIDEの初期設定
次に「ArduinoIDE」で「Raspberry Pi Pico/PicoW」を使用するための初期設定を行なっていきます。
下画像のようなウインドウが開くので、上の検索窓に「pico」と入力しエンターを押します。
「Arduino Mbed OS RP2040 Boards」が表示されるので、右側の[インストール]をクリックします。
インストールが始まると途中で下画像のようなウインドウが2回表示されるので両方とも[インストール]をクリックします。
インストールが終わると下画像の部分に「INSTALLED」と表示されます。これでインストール完了したのでウインドウを閉じます。
下画像のように「ツール」→「ボード:(ここは環境によります)」→「Arduino Mbed OS RP2040 Boards」→「Raspberry Pi Pico」をクリックします。
再度「ツール」をクリックすると、「ボード:”Raspberry Pi Pico”」となっています。
これで「Raspberry Pi Pico」が使えるようになりました。
「Pico W」を使用する場合はボード選択で「Raspberry Pi Pico W」を選択しましょう。
次に通信設定をしていきます。
「ツール」→「シリアルポート:(COM番号は環境によります)」とクリックすると「COM番号」の横に「Raspberry Pi Pico」と書かれたポートがあれば、それが通信に使用するポートなので選択します。
④プログラムの書き込みと動作確認
これで開発環境の準備が整ったので、早速プログラムの書き込みをしていきましょう。
最初のプログラムとして「Python」の時と同じ、LEDを点滅させるサンプルプログラムを以下に準備しましたのでコピペ(コピー&ペースト)で「Arduino IDE」に貼り付けていきましょう。
プログラムのコピーは下の黒塗り部の右上アイコンクリックでもできます。
void setup() { // 初期設定
pinMode(LED_BUILTIN, OUTPUT); // LED端子を出力に設定
}
void loop() { // メイン処理(繰り返し)
digitalWrite(LED_BUILTIN, HIGH); // LEDを点灯
delay(500); // 0.5秒待つ
digitalWrite(LED_BUILTIN, LOW); // LEDを消灯
delay(500); // 0.5秒待つ
}
コピーしたら、下画像のようにArduinoIDEに貼り付けて書き込みましょう。
上画像のように元々書いてあるプログラムを消して貼り付けます。「Ctrl + V」で貼り付けられます。
貼り付けたら[→]ボタンをクリックして、書き込みを実行しましょう。
ファイルの保存を求められるので適当に名前をつけて保存しましょう。
ここでは「Lchika」としました。
書き込みが始まったらしばらく待ちます。
書き込みには数分かかる場合もあります。
書き込みが完了すると、下画像のようにラズパイ基板上のLEDが0.5秒ごとに点滅するのが確認できると思います。
LED点灯
LED消灯
プログラムについて、入出力端子の使い方は以下のリンクで詳しく紹介しています。
次に「Python」の時と同じ、ボタンを押したらLEDが点灯するプログラムの動作を確認してみましょう。
今の画面でそのまま作業してもいいですが、別ファイルとして残したい場合は下画像のように「ファイル」→「新規ファイル」をクリックすると新しくウインドウが立ち上がります。
サンプルプログラムを以下に準備しました。
先程と同じようにコピペ(コピー&ペースト)で「Arduino IDE」に貼り付けていきます。
プログラムのコピーは下の黒塗り部の右上アイコンクリックでもできます。
void setup() { // 初期設定
pinMode(20, INPUT_PULLUP); // スイッチ GP20を入力端子(プルアップ)に設定
pinMode(LED_BUILTIN, OUTPUT); // LED端子を出力に設定
}
void loop() { // メイン処理(繰り返し)
if (digitalRead(20) == LOW) { // スイッチがONなら
digitalWrite(LED_BUILTIN, HIGH); // LEDを点灯
} else { // スイッチがONなら
digitalWrite(LED_BUILTIN, LOW); // LEDを消灯
}
}
コピーしたら下画像のように「Arduino IDE」に貼り付けましょう。
貼り付けて前回同様に[→]ボタンをクリックすると書き込みできます。
書き込みが完了すると下画像のようにブレッドボード上のボタンを押すとラズパイ基板上のLEDが点灯するのが確認できると思います。
ボタンOFFでLED消灯
ボタンONでLED点灯
プログラムの中で使用している条件分岐プログラムの「if文」については以下のリンクで詳しく紹介しています。
C言語を使用したOLED表示器の使い方とWi-Fiを使用した遠隔操作、データ表示については、以下のリンクで詳しく紹介しています。
・PlatformIO(C言語)
「PlatformIO」を使用した「C言語」での開発環境の準備から「Lチカ」の動作確認まで紹介します。
「PlatformIO」は開発環境の準備が大変ですが、無料の高機能エディタ「Visual Studio Code(VSCode)」の中で使用することができ、プログラムの編集機能が豊富で慣れてしまうと他の環境には戻れません。
何より書込み速度が速いので特におすすめです。
「ArduinoIDE」を使用した「C言語」での開発環境の準備から「Lチカ」の動作確認まで紹介します。
①PlatformIOのインストール
「PlatformIO」のインストールについては以下のリンクで順番に紹介してますので順を追ってインストールしてください。
②パソコンと「Raspberry Pi Pico/PicoW」の接続
インストールが終わって「PlatformDE」を起動したら「Raspberry Pi Pico/PicoW」とパソコンをUSBケーブルで接続します。
「BOOTSEL」ボタンを押しながら接続して、パソコンに認識されると下画像のように「RPI-RP2」フォルダが開きますが「PlatformIO」では使用しないので閉じておきます。
③新規プロジェクトの作成
次に「PlatformIO」で新規プロジェクトを作成します。
下画像の画面で「New Project」をクリックしてください。
下画像のようなウインドウが表示されるので、何でもいいのでファイル名を入力(ここではRasPi _Pico_blink)を入力します。「Board:」の欄に「pico」と入力するとその下に「Raspberry Pi Pico」が表示されるので選択します。
下画像のように設定できたら[Finish]ボタンをクリックします。
下画像のようにプロジェクトの準備が始まるので待ちます。これには数分かかるので気長に待ちましょう。
下画像のように表示されたら準備完了です。
[はい]をクリックしましょう。
④初期設定
次に標準のボード設定を書き換えます。
ボード設定を変更するには「platformio.ini」ファイルを書き換えます。
下画像のように「platformio.ini」をクリックします。
「platformio.ini」ファイルの内容を以下のように使用するボードに合わせて書き換えます。
変更前
[env:pico]
platform = raspberrypi
board = pico
framework = arduino
変更後(Pico)
[env:pico]
platform = https://github.com/maxgerhardt/platform-raspberrypi.git
board = pico
framework = arduino
board_build.core = earlephilhower
変更後(Pico W)
[env:rpipicow]
platform = https://github.com/maxgerhardt/platform-raspberrypi.git
board = rpipicow
framework = arduino
board_build.core = earlephilhower
下画像のような状態になったら書き込みを行います。
いきなり以下のエラーが出る場合は「git」をインストールしてください。
この表示が出ない場合はここは飛ばしてください。
以下のサイトからダウンロードできます。
特に設定はなく「NEXT」連打です。
「git」をインストールが始まると下画像のように「PlatformIO:Loading tasks…」の状態が長時間続きます。終わるまで放置しましょう。(30分ぐらいかかった気がします。)
⑤プログラムの書き込みと動作確認
開発環境の準備が整ったので、プログラムの書き込みをしていきます。
下画像のように「main.cpp」をクリックします。
※この表示がない場合は左端に並んでいる一番上のファイルアイコンをクリックしてください。
最初のプログラムとして「ArduinoIDE」の時と同じ、LEDを点滅させるサンプルプログラムを以下に準備しましたのでコピペ(コピー&ペースト)で「PlatformIO」に貼り付けていきましょう。
プログラムのコピーは下の黒塗り部の右上アイコンクリックでもできます。
#include <Arduino.h>
void setup() { // 初期設定
pinMode(LED_BUILTIN, OUTPUT); // LED端子を出力に設定
}
void loop() { // メイン処理(繰り返し)
digitalWrite(LED_BUILTIN, HIGH); // LEDを点灯
delay(500); // 0.5秒待つ
digitalWrite(LED_BUILTIN, LOW); // LEDを消灯
delay(500); // 0.5秒待つ
}
コピーしたら下画像のように「PlatformIO」に貼り付けましょう。
貼り付けたら画面左下の[→]を押すことで書き込みできます。
無事書き込みが完了したら下画像のような表示になります。
もし書き込めない時は下画像のように、プログラムが保存されているフォルダ(場所は下画像参照)に「ファームウェアファイル(firmware.uf2)」が出来ているので、それを「BOOTSEL」ボタンを押しながら接続した時に表示される「RPI-RP2」フォルダの中にコピーしてから書き込んでみましょう。
書き込みが完了すると、下画像のようにラズパイ基板上のLEDが0.5秒ごとに点滅するのが確認できると思います。
LED点灯
LED消灯
次に「ArduinoIDE」の時と同じく、ボタンを押したらLEDが点灯するプログラムの動作を確認してみましょう。
先程貼り付けたプログラムを消去して、以下のサンプルプログラムを貼り付けて書き込みを行なってみましょう。
プログラムのコピーは下の黒塗り部の右上アイコンクリックでもできます。
void setup() { // 初期設定
pinMode(20, INPUT_PULLUP); // スイッチ GP20を入力端子(プルアップ)に設定
pinMode(LED_BUILTIN, OUTPUT); // LED端子を出力に設定
}
void loop() { // メイン処理(繰り返し)
if (digitalRead(20) == LOW) { // スイッチがONなら
digitalWrite(LED_BUILTIN, HIGH); // LEDを点灯
} else { // スイッチがONなら
digitalWrite(LED_BUILTIN, LOW); // LEDを消灯
}
}
貼り付けて前回同様に[→]ボタンをクリックすると書き込みできます。
書き込みが完了すると下画像のようにブレッドボード上のボタンを押すとラズパイ基板上のLEDが点灯するのが確認できると思います。
ボタンOFFでLED消灯
ボタンONでLED点灯
「Raspberry Pi Pico」標準のボード設定だと書き込みでエラーが出たので、④の初期設定で「platformio.ini」を「EarlePhilhower」コアの方に書き換えました。
以前は書き込みは出来ましたが再書き込みがうまくいかずに以下のリンクのように対処しました。
今は2023/4時点ではエラーは発生しませんでしたが、もしうまくいかない場合は以下のリンクを確認してみてください。
8.まとめ
「Raspberry Pi Pico/PicoW」の仕様や端子配列、機能から開発環境の準備、使い方、動作確認を3種類の方法で紹介しました。
「Raspberry Pi Pico/PicoW」とは、若者のプログラミング学習を目的に開発されたもので、他の「Raspberry Piシリーズ」とは異なり、OSを搭載する機能の無いマイコンボードと呼ばれるものです。
電源投入ですぐに使用でき、スイッチやLED等を接続してプログラムすることで簡単に動作確認できます。
本体だけ購入すれば基板上のLEDですぐに動作確認はできますが、スイッチ等を使ったプログラムの動作確認には基板端子へピンヘッダーのハンダ付けが必要です。
ピンヘッダーは基本的に付属も実装もされてませんので別途購入してハンダ付けする必要があります。
ハンダ付けが苦手な方は実装済みのものもありますのでそちらを購入しましょう。
開発環境はいくつかありますが「Python(MicroPython)」を使った環境としては「Thonny」、「C言語」の開発環境としては「ArduinoIDE」「PlatformIO」等があります。
「Python」はプログラムの文法がシンプルで「Thonny」を使用すると書き込みの手間がなく、すぐに動作確認できるため、手軽に始めることができます。
「Python」を使用した基本的なプログラムについては以下のリンクで詳しく紹介しています。
「C言語」は難しいイメージですが「ArduinoIDE」を使用すれば情報量の多い「Arduino」のコマンドが使用でき、複雑な動作はあらかじめ作成された「ライブラリ」を使用することで複雑な動作も簡単に実現できるため、動かしながら少しづつ理解を深めていけると思います。
コンピュータ内部の動きを理解するのにも「C言語」で学習した方が良いため、組み込み系のプログラムを学びたい方には「C言語」がお勧めです。
「C言語」で本格的にプログラミングを初めてみようという方は「PlatformIO」がおすすめです。
無料の高機能エディタ「Visual Studio Code(VSCode)」内で動作するため編集機能が豊富なことと、書き込み速度が早いため、ストレスなくプログラミングに集中できると思います。
プログラミング言語や環境には好みがありますので自分に合った環境を見つけて、いろいろなプログラムに挑戦してみましょう。
マイコンボードで「C言語」を学ぶなら小型でケース入り、Wi-Fi、Bluetooth通信も可能な「ATOM Lite」もおすすめです。
「ATOM Lite」については以下のリンクで詳しく紹介しています。
コメント
素晴らしく わかりやすいサイトを作ってくださり
ありがとうございます
本当に 具体的に解説してくださりありがとうございました
コメントありがとうございます。励みになります^^
少しでもお役に立てたのなら幸いです。
参考にさせていただきました。
途中のblink_c のソースですが、出力ピンに0を指定しているのですが
25としたほうがいいのかなと思いました。
もしくは、LED_BUILTIN にするとか。
ご指摘ありがとうございます。
他のボード(MAKER Pi RP2040)で動作確認していた時のまま修正忘れでした>< 早速修正しました。