ラズパイPico/PicoWの使い方を3つの開発環境Python、ArduinoIDE、PlatformIOで紹介

ラズパイ(Raspberry Pi) Pico/Pico W アイキャッチ

既にパソコンと化した「ラズベリーパイ(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」の初期設定や使い方については、以下のリンクで詳しく紹介しています。

ラズパイPico2の使い方:MicroPython編
Raspberry Pi Pico 2でPythonを使用した開発環境(Thonny)のインストールから初期設定、サンプルプログラムの動作確認方法まで詳しく紹介
ここでは「Raspberry Pi Pico/PicoW」の開発環境として「Python(MicroPython)」と「C言語(Arduino)」両方の言語での開発環境の構築方法から使い方を紹介しています。
動作確認として、LEDを点灯させる基本の「Lチカ」までできるようになるので、お好きな言語で一緒にやっていきましょう。

基本的なプログラムや小型な「ラズパイPico」互換ボード「XIAO RP2040」の使い方も以下のリンクで詳しく紹介しています。

ラズパイPico基本プログラムPython編(Lチカ,入出力,アナログ,PWM)
Raspberry Pi Picoの基本的なLチカや入出力,アナログ入力(ADC),PWM出力を行うPythonのコピペ用サンプルプログラムをまとめました。
ラズパイPICO互換ボード XIAO RP2040の使い方
XIAO RP2040のピン配置や端子機能、使い方をMicroPythonとCircuitPythonのサンプルプログラム(ADC,NeoPixel,OLED,PWM,UART)で詳しく紹介します。
スポンサーリンク

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/Pico Wの使い方、機能
「Pico」と「Pico W」の違いはWi-Fi機能の有無です。
(LEDの端子番号も変更されています)

基板には以下のような機能を持った部品が実装されています。(赤文字は「Pico W」のみの機能

  • USB microB:プログラムの書込みと電源供給用
  • LED(緑):プログラムで点灯/消灯を制御可(PicoとPicoWで端子番号が異なる)
     Pico → 端子番号GP25
     Pico W → 端子番号 WL_GPIO0(出力端子のGP0とは異なる)
  • BOOTボタン:書込みモードの切替
  • 温度センサ:本体基板上の温度確認用(気温との差が大きい)
  • 無線通信モジュール:PicoWのみ対応 Wi-Fi無線通信用(Bluetoothはまだソフト的に未対応)

基板両サイドには入出力端子(電源用等含む)として使用できる端子が40ピンと、基板上にデバッグ(ステップ実行やブレーク等)を行うための端子が3ピンあります。
端子番号は下画像のように基板裏面に表示されています。

ラズパイPico/Pico Wの使い方、端子配列
「Pico」と「Pico W」で端子配列は同じです。

Pico Wの「技適」について

Wi-Fi機能のある「Pico W」は「技適(技術基準適合証明)」が取得されていなかったため、日本国内で簡単に使用することができませんでしたが、ようやく「スイッチサイエンス」さんで「技適」付きで販売されました。

「技適」取得品には下写真のようにパッケージのフィルムに「技適」マークと番号が表示されています。捨てないように本体と一緒に大事に使用、保管しましょう。
ラズパイPico W外観、技適表示

技適は、電気通信機器に関する法規制の一つであり、日本国内において販売(輸入品も含む)される電気通信機器が「技術基準適合証明」を受けたものであることを示すものです。
日本で使用される対象の電気通信機器は技適の取得が必要となります。

「技適」を取得していない電気通信機器の販売や使用は、法律で禁止されていて、罰則も設けられているので、個人使用でも必ず「技適」取得品を購入して使用するようにしましょう。

入出力端子のピン(ピンヘッダー)は基本的には付属も実装もされていませんので別途購入して以下のようにハンダ付けで実装する必要があります。
ハンダ付けが苦手な方は実装済みのものもありますのでそちらを購入しましょう。

ラズパイ(Raspberry Pi) Pico 端子ハンダ付け

入出力端子部に実装するピンヘッダーは上画像のようになります。
ピンヘッダー(細ピンがおすすめ)1列x20 2個
デバッグ端子を使用する場合は1列x3 1個(今回は使用しないので実装しません。)

ラズパイ(Raspberry Pi) Pico 端子ハンダ付け

上画像のようにピンヘッダーをブレッドボードに固定しておくとハンダ付けしやすいです。

ラズパイ(Raspberry Pi) Pico 端子ハンダ付け

上画像のようにはんだ付けします。

ラズパイ(Raspberry Pi) Pico 端子ハンダ付け

ブレッドボードで固定しておけば真っ直ぐハンダ付けできます。

スポンサーリンク

3.基本仕様

「Raspberry Pi Pico/Pico W」の基本仕様は以下表のようになります。

項目詳細
コントローラRP2040
クロック最大133MHz
(デュアルコア Arm Contrex M0+プロセッサ)
Flash / SRAM2MB / 264kB
電源電圧(VBUS)DC5V±10%
USBMicro 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)
基板製造ならPCBgogoバナー2

4.端子配列

端子配列は以下のようになります。(公式サイトより抜粋

「Pico」と「Pico W」で端子配列は同じで、LEDの端子番号のみ異なります。

Picoの端子配列

ラズパイ(Raspberry Pi) Pico 端子配列

Pico Wの端子配列

ラズパイPico/Pico Wの端子配列
基板製造ならPCBgogoバナー2_1

5.端子機能詳細(入出力/通信/ADC)

「4.端子配列」の中の各端子の機能について、端子記号ごとに以下表にまとめました。

記号機能詳細
GP0〜22,
26〜28
入出力入力端子、出力端子としてプログラムで設定できます。
プルアップ抵抗無し、プログラムでプルアップ指定可
ADC0〜2AD変換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)
VBUSUSB電源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 _VREFAD変換基準電圧アナログデジタル変換の基準電圧として使用可。

6.動作確認の準備

動作確認ではサンプルプログラムを使用して、内蔵のLED(緑)を点滅させる「Lチカ」の動作確認を行います。
これだけであれば、基板だけで(ピンヘッダーをハンダ付けしなくでも)できますが、せっかくなのでスイッチを追加して、スイッチONでLEDが点灯、スイッチOFFでLEDが消灯する動作も確認してみましょう。

このためには、下画像のように「ブレッドボード」と「ジャンパー線」を使用して「スイッチ」を外付けして準備しておきましょう。

ラズパイ(Raspberry Pi) Pico Lチカ動作確認
写真では「Pico」を使用していますが「Pico W」でも同じです。

ブレッドボードには画像のように穴がたくさん空いていて基板を差し込んで使用します。
空いている穴は上画像の場合、隣り合った縦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搭載のラズベリーパイに標準搭載されている開発環境です。
プログラムのコンパイル(書込み)が不要で作成したプログラムをすぐに動作確認できます。

・MicroPythonとはマイクロコントローラ上で最適に動作するように開発された「Python3」と高い互換性を持つプログラミング言語です。
・CircuitPythonとはMicroPythonから派生してAdafruit社が開発を支援している言語で、マイコンボードをUSBメモリのように認識してデータの操作ができることが特徴です。

・ArduinoIDE
プログラミング言語:C言語
マイコンボード「Arduino」の開発環境で「Raspberry Pi Pico/Pico W」でも同じように使用できます。
情報量も多く、これからC言語を勉強してみようって方にもおすすめです。

・ PlatformIO
プログラミング言語:C言語
いろいろなマイコンの統合開発環境です。準備が大変ですが個人的には最もおすすめです。
高機能エディタ「Visual Studio Code(VSCode)」の中で使用することができるため、
プログラムの編集機能が豊富で慣れてしまうと他の環境には戻れません。
何より書込み速度がダントツで速いのでストレスなくプログラムの作成に集中できます。


・Thonny(Python:MicroPython & CircuitPython)

「Thonny」を使用した「Python(MicroPython)」での開発環境の準備から「Lチカ」の動作確認まで紹介します。

「CircuitPython」の開発環境は以下のリンクで詳しく紹介しています。

ラズパイPicoの使い方 CircuitPython&開発環境Thonny
Raspberry Pi PicoでCircuitPythonを使ったプログラミング方法を開発環境Thonnyを使用してインストールからライブラリの追加、サンプルプログラム(コピペ)による動作確認(液晶表示SSD1306を例に)まで詳しく紹介します。

MicroPythonの開発環境を準備する流れは以下のようになります。
①ファームウェアファイルのダウンロード。
②パソコンと「Raspberry Pi Pico/PicoW」を接続しファイルを「ドラッグ&ドロップで「Raspberry Pi Pico/Pico W」内にコピーしてセットアップが完了するのを待ちます。
③開発環境「Thonny」をダウンロードして初期設定を行います。
④サンプルプログラムを実行して動作確認します。

「Thonny」で「MicroPython」を使用した開発環境の準備は以下のリンクでより詳しく1つの記事にまとめていますので、こちらも参照してください。(ファームウェアのダウンロード不要な方法)

ラズパイPicoの使い方 MicroPython&開発環境Thonny、SSLエラーの対処方法も紹介
Raspberry Pi Picoので開発環境Thonnyを使用した「Python(MicroPython)」でのプログラミング方法について初期設定からパッケージ(ライブラリ)の追加、動作確認の方法まで詳しく紹介します。

①ファームウェアファイルのダウンロード

まずは以下のリンクをクリックして「Raspberry Pi」公式サイトの「MicroPython」のページにアクセスしてください。

以下のページが表示されるので、少し下にスクロールします。

ラズパイ(Raspberry Pi) Pico Python準備

以下のような画面の中の「Raspberry Pi Pico」の部分をクリックします。
「Pico W」を使用する場合は「Raspberry Pi Pico W」の方をクリックします。

ラズパイ(Raspberry Pi) Pico Python準備

ファイルのダウンロードが始まるので少し待ちます。
ダウンロードが終了したらファイルを開いたり、実行するのではなく、保存したフォルダを開きましょう。
下画像はブラウザが「Chrome」の場合の例です。
「ダウンロード」フォルダに保存されているので、直接「ダウンロード」フォルダを開いてもOKです。

ラズパイ(Raspberry Pi) Pico Python準備

下画像のようにダウンロードフォルダを開いたらファイル「rp2-pico-20220618-v1.19.uf2(バージョンの数字は異なる場合があります。)」があるのを確認します。

ラズパイ(Raspberry Pi) Pico Python開発環境準備

②ラズパイPicoとパソコンの接続

次に「Raspberry Pi Pico」とパソコンをUSBケーブルで接続します。

接続する時は下画像のように「BOOTSEL」ボタンを押しながら接続しましょう。
接続したらちょっと(数秒)待ってからボタンを離しましょう。
ラズパイ(Raspberry Pi) Pico Python開発環境準備

「BOOTSEL」ボタンを押しながら接続して、パソコンに認識されると下画像のように「RPI-RP2」フォルダが開きます。

ラズパイ(Raspberry Pi) Pico Python開発環境準備

フォルダが開いたら下画像のように「ダウンロード」フォルダから、先程ダウンロードしたファイルをドラッグ&ドロップで「RPI-RP2」フォルダにコピーします。

ラズパイ(Raspberry Pi) Pico Python開発環境準備

すると下画像のような表示が画面右下に表示されます。

ラズパイ(Raspberry Pi) Pico Python開発環境準備

ラズパイが認識されセットアップが始まるのでしばらく待ちましょう。(私の環境では1分以上待ちました。)

ラズパイ(Raspberry Pi) Pico Python開発環境準備

セットアップが完了すると上画像のような表示が画面右下に出ます。
この表示が確認できたらパソコンとの接続は完了です。

うまくいかない場合はUSBケーブルを抜いて再度「BOOTSEL」ボタンを押しながらUSBを接続するところからやり直してみましょう。
それでもダメなら、既にセットアップが完了しているかもしれませんので「BOOTSEL」ボタンを押さずにUSBでパソコンと接続して次に進みましょう。
この作業は基本的に最初の1回だけ行います。次回以降は「BOOTSEL」ボタンを押さずにUSBを接続すれば使用できます。
使用できない場合はもう一度ここの工程をやり直してみましょう。

③開発環境「Thonny」のダウンロードと初期設定

次に「Thonny」をダウンロードしていきます。

まずは以下のリンクをクリックして、ダウンロードページを開きましょう。

下画像のようなページが表示されるので、画面上あたりの「Download」からパソコン環境に合わせてクリックしてダウンロードしてください。(WindowsならWindowsをクリック)

ラズパイ(Raspberry Pi) Pico Thonnyのインストール

ファイルのダウンロードが始まるので少し待ちます。ダウンロードが終了したらファイルを開きましょう。
下画像はブラウザが「Chrome」の場合の例です。
「ダウンロード」フォルダに保存されているので、直接「ダウンロード」フォルダから実行してもOKです。

ラズパイ(Raspberry Pi) Pico Thonnyのインストール

下画像のようなウインドウが開くので矢印の箇所をクリックします。
(クリックするのは「自分にだけインストール(推奨)」するというものです。全てのユーザーに対してインストールする場合はその下をクリックしてください。)

ラズパイ(Raspberry Pi) Pico Thonnyのインストール

下画像のようにインストール画面が表示されますが基本的には「Next」をクリックしていくだけです。

デスクトップにショートカットを置くためのチェックはしておいた方が良いので5ページ目のチェックボックスはチェックしてから進めましょう。
ラズパイ(Raspberry Pi) Pico Thonnyのインストール
ラズパイ(Raspberry Pi) Pico Thonnyのインストール
ラズパイ(Raspberry Pi) Pico Thonnyのインストール
ラズパイ(Raspberry Pi) Pico Thonnyのインストール
ラズパイ(Raspberry Pi) Pico Thonnyのインストール

上画像の画面ではチェックボックスをチェックして、アイコンをデスクトップに置くようにしましょう。

ラズパイ(Raspberry Pi) Pico Thonnyのインストール

上画像の画面で「Install」をクリックするとインストールが始まります。

ラズパイ(Raspberry Pi) Pico Thonnyのインストール
ラズパイ(Raspberry Pi) Pico Thonnyのインストール

最後に「Finish」をクリックして終了です。


次に「デスクトップ」に下画像のようなアイコンがあるのでクリックします。

ラズパイ(Raspberry Pi) Pico Thonnyの使い方

「Thonny」が起動するので下画像のように初期設定を行います。

ラズパイ(Raspberry Pi) Pico Thonnyの使い方

「Language」を「日本語」に、「Initial settings」を「Raspberry Pi」に設定します。

ラズパイ(Raspberry Pi) Pico Thonnyの使い方

上画像のように設定できたら「Let`s go!」をクリックします。

下画像のように「Thonny」の開発画面が表示されるので、右下の「Python 3.7.9(バージョンの数字は異なる場合があります。)」をクリックします。

ラズパイ(Raspberry Pi) Pico Thonnyの使い方

下画像のようなメニューが表示されるので「MicroPython(Raspberry Pi Pico)」をクリックします。

ラズパイ(Raspberry Pi) Pico Thonnyの使い方

下画像のようにウインドウの右下が「MicroPython(Raspberry Pi Pico)」になっていれば初期設定完了です。

ラズパイ(Raspberry Pi) Pico Thonnyの使い方

④サンプルプログラムの実行、動作確認

開発環境の準備が整いましたので早速プログラムを実行していきましょう。

最初のプログラムとして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」で貼り付けられます。

ラズパイ(Raspberry Pi) Pico Thonnyの使い方

貼り付けて[実行]ボタンを押すと下画像のようなウインドウが表示されます。(開かない場合は[Save]ボタンをクリックします。)
ここでは作成したファイルの保存先を指定します。
[This computer]を選択するとパソコンに保存され[Raspberry Pi Pico]を選択するとラズパイ基板に保存しておくことができます。

ここは好みですが今回は[Raspberry Pi Pico]を選択してみましょう。

下画像のようなファイルに名前をつけて保存するウインドウが表示されるので「File name」欄に「blink(何でもいいです)」と打ち込んで[OK]ボタンを押しましょう。

単体で電源を入れた時に自動実行させたい場合は「main.py」として保存しましょう。
ラズパイ(Raspberry Pi) Pico Thonnyの使い方

下画像のような画面になり実行完了です。

ラズパイ(Raspberry Pi) Pico Thonnyの使い方

下画像のようにラズパイ基板上のLEDが0.5秒ごとに点滅するのが確認できると思います。

LED点灯
(Raspberry Pi) Pico Lチカ動作確認
LED消灯
ラズパイ(Raspberry Pi) Pico Lチカ動作確認

プログラムについては上コードのコメントを参照してください。
LEDを点灯させるプログラムについて簡単に紹介します。

led.value(1) # LEDを点灯
 カッコ内の数値が1で点灯、0で消灯です。
utime.sleep(0.5) # 0.5秒待つ
 カッコ内の数値で待機時間を設定できるため、この数値を変更するとLEDの点滅間隔を設定できます。

「Raspberry Pi Pico」で使用できる「MicroPython」についての詳細は以下のサイトで確認できます。当サイトでも少しづつ紹介していきたいと思います。

Quick reference for the RP2 — MicroPython latest documentation

次にボタンを押したらLEDが点灯するプログラムの動作を確認してみましょう。

まずは、今実行しているプログラムを[STOP]ボタンを押して停止させましょう。
停止したら[New]ボタンを押してください。

ラズパイ(Raspberry Pi) Pico Thonnyの使い方

下画像のように新しく<untitled>タブが作成されます。

ラズパイ(Raspberry Pi) Pico Thonnyの使い方

前回同様にサンプルプログラムを以下に準備しましたのでコピペ(コピー&ペースト)で「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」で貼り付けられます。

ラズパイ(Raspberry Pi) Pico Thonnyの使い方

以降は前回と同じ作業で、貼り付けて[実行]ボタンを押すと下画像のようなウインドウが表示されますのでファイルの保存先を指定します。

下画像のように「File name」欄に「Lchika(何でもいいです)」と打ち込んで[OK]ボタンを押しましょう。

単体で電源を入れた時に自動実行させたい場合は「main.py」として保存しましょう。
ラズパイ(Raspberry Pi) Pico Thonnyの使い方

下画像のような画面になり実行完了です。

ラズパイ(Raspberry Pi) Pico Thonnyの使い方

下画像のようにブレッドボード上のボタンを押すとラズパイ基板上のLEDが点灯するのが確認できると思います。

ボタンOFFでLED消灯
(Raspberry Pi) Pico Lチカ動作確認
ボタンONでLED点灯
(Raspberry Pi) Pico Lチカ動作確認

プログラムについては上コードのコメントを参照してください。

これで「Thonny」を使った「MycroPython」の開発環境が整いました。
今後はこの環境を使ってOLED表示器やフルカラーLED、サーボモーター、ブザー等の使い方も紹介していきたいと思います。

MicroPythonを使用したOLED表示器の使用方法については、以下のリンクで詳しく紹介しています。

ラズパイPicoでSSD1306有機ELディスプレイの使い方 MicroPython編
液晶表示器のないRaspberry Pi PicoでOLED SSD1306の使い方をMicroPythonのサンプルプログラムで紹介。開発環境はTonnyを使用します。
Pythonの開発環境は作成したプログラムをすぐに実行できるため便利ですが、パソコンと接続していないと実行できません。
プログラム作成中は便利ですが、最終的には単体で電源を入れた時に自動実行させたいと思います。
この場合はファイル名を「main.py」としてラズパイ内に保存しましょう。
(「MicroPython」の場合は「main.py」ですが、「CircuitPython」の場合は「code.py」です。)

興味のある方は以下の「C言語」でのプログラミングにもチャレンジしてみてください。

・AruduinoIDE(C言語)

「ArduinoIDE」を使用した「C言語」での開発環境の準備から「Lチカ」の動作確認まで紹介します。

作業の流れは以下のようになります。
①ArduinoIDEのインストール
②パソコンと「Raspberry Pi Pico」の接続
③ArduinoIDEの初期設定
④プログラムの書き込みと動作確認

①ArduinoIDEのインストール

開発環境として設定するボードには公式の「Arduino Mbed OS RP2040 Boards」とPhilhower氏作の「Raspberry Pi Pico/RP2040」があります。

公式の方は初期状態でインストールできて手軽なため以下で紹介していますが、他のマイコンボードで作成したプログラムがそのままコンパイルできなかったり、修正も困難な場合があったため、使い勝手の良かったPhilhower氏作の方を別記事にインストール方法から詳しくまとめましたので、初めてインストールする方は以下のリンクを参照してください。

ラズパイPico/Pico2/PicoWのArduinoIDE2のインストール方法や使い方紹介
Raspberry Pi Pico/Pico2/PicoWのC言語での開発環境 ArduinoIDE2のインストールから初期設定、使い方、Lチカで動作確認まで詳しく紹介

既にインストール済みの方は以下から公式のボード設定で手軽に確認する方法として紹介します。

②パソコンと「Raspberry Pi Pico」の接続

インストールが終わって「ArduinoIDE」を起動したら「Raspberry Pi Pico」とパソコンをUSBケーブルで接続します。

接続する時は下画像のように「BOOTSEL」ボタンを押しながら接続しましょう。
接続したらちょっと(数秒)待ってからボタンを放しましょう。
ラズパイ(Raspberry Pi) Pico Python開発環境準備

「BOOTSEL」ボタンを押しながら接続して、パソコンに認識されると下画像のように「RPI-RP2」フォルダが開きますが「ArduinoIDE」では使用しないので閉じておきます。

ラズパイ(Raspberry Pi) Pico Python開発環境準備

③ArduinoIDEの初期設定

次に「ArduinoIDE」で「Raspberry Pi Pico/PicoW」を使用するための初期設定を行なっていきます。

ラズパイ(Raspberry Pi) Pico でのArduinoIDEの使い方

下画像のようなウインドウが開くので、上の検索窓に「pico」と入力しエンターを押します。
「Arduino Mbed OS RP2040 Boards」が表示されるので、右側の[インストール]をクリックします。

ラズパイ(Raspberry Pi) Pico でのArduinoIDEの使い方

インストールが始まると途中で下画像のようなウインドウが2回表示されるので両方とも[インストール]をクリックします。

ラズパイ(Raspberry Pi) Pico でのArduinoIDEの使い方
ラズパイ(Raspberry Pi) Pico でのArduinoIDEの使い方

インストールが終わると下画像の部分に「INSTALLED」と表示されます。これでインストール完了したのでウインドウを閉じます。

ラズパイ(Raspberry Pi) Pico でのArduinoIDEの使い方

下画像のように「ツール」→「ボード:(ここは環境によります)」→「Arduino Mbed OS RP2040 Boards」→「Raspberry Pi Pico」をクリックします。

ラズパイ(Raspberry Pi) Pico でのArduinoIDEの使い方

再度「ツール」をクリックすると、「ボード:”Raspberry Pi Pico”」となっています。
これで「Raspberry Pi Pico」が使えるようになりました。
「Pico W」を使用する場合はボード選択で「Raspberry Pi Pico W」を選択しましょう。

ラズパイ(Raspberry Pi) Pico でのArduinoIDEの使い方

次に通信設定をしていきます。
「ツール」→「シリアルポート:(COM番号は環境によります)」とクリックすると「COM番号」の横に「Raspberry Pi Pico」と書かれたポートがあれば、それが通信に使用するポートなので選択します。

ラズパイ(Raspberry Pi) Pico でのArduinoIDEの使い方
最初はポートを認識していないかもしれません。表示されないようであればそのまま次に進んでプログラムの書き込みを行なってください。
1度書き込みを行えば認識して選択できるようになると思います。
それでも通信できないようであればUSBケーブルを抜き再度「BOOTSEL」ボタンを押しながら差し込んで書き込みしてみてください。

④プログラムの書き込みと動作確認

これで開発環境の準備が整ったので、早速プログラムの書き込みをしていきましょう。

最初のプログラムとして「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に貼り付けて書き込みましょう。

ラズパイPico/Pico Wの使い方、ArduinoIDE(C言語)

上画像のように元々書いてあるプログラムを消して貼り付けます。「Ctrl + V」で貼り付けられます。

ラズパイPico/Pico Wの使い方、ArduinoIDE(C言語)

貼り付けたら[→]ボタンをクリックして、書き込みを実行しましょう。
ファイルの保存を求められるので適当に名前をつけて保存しましょう。
ここでは「Lchika」としました。

ラズパイPico/Pico Wの使い方、ArduinoIDE(C言語)

書き込みが始まったらしばらく待ちます。

[→]ボタンを押しても変化が無いかもしれませんが、何度も押さず書き込みが始まるのをしばらく待ちましょう。
ラズパイPico/Pico Wの使い方、ArduinoIDE(C言語)

書き込みには数分かかる場合もあります。

個人的に書き込みの遅さが「ArduinoIDE」の欠点と思ってます。この後で紹介する「PlatformIO」なら書き込みは早いのでおすすめです。

書き込みが完了すると、下画像のようにラズパイ基板上のLEDが0.5秒ごとに点滅するのが確認できると思います。

LED点灯
(Raspberry Pi) Pico Lチカ動作確認
LED消灯
ラズパイ(Raspberry Pi) Pico Lチカ動作確認

プログラムについて、入出力端子の使い方は以下のリンクで詳しく紹介しています。

入出力端子の使い方(Arduinoプログラミング)「Lチカ」プログラムで詳しく紹介
マイコンボードの端子は電源や通信等用等ありますが、ほとんどが「入出力端子」として使用できます。 「入力端子」は外部の状態を本体に取り込むことができ「出力端子」は本体で処理した結果を外部へ出力することができます。 これらの使い方を紹介します。

次に「Python」の時と同じ、ボタンを押したらLEDが点灯するプログラムの動作を確認してみましょう。

今の画面でそのまま作業してもいいですが、別ファイルとして残したい場合は下画像のように「ファイル」→「新規ファイル」をクリックすると新しくウインドウが立ち上がります。

ラズパイ(Raspberry Pi) Pico でのArduinoIDEの使い方

サンプルプログラムを以下に準備しました。
先程と同じようにコピペ(コピー&ペースト)で「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」に貼り付けましょう。

ラズパイPico Wの使い方 ArduinoIED

貼り付けて前回同様に[→]ボタンをクリックすると書き込みできます。

書き込みが完了すると下画像のようにブレッドボード上のボタンを押すとラズパイ基板上のLEDが点灯するのが確認できると思います。

ボタンOFFでLED消灯
(Raspberry Pi) Pico Lチカ動作確認
ボタンONでLED点灯
(Raspberry Pi) Pico Lチカ動作確認

プログラムの中で使用している条件分岐プログラムの「if文」については以下のリンクで詳しく紹介しています。

動かして学ぶC言語「if文(条件分岐)」の使い方を基本から詳しく紹介
「C言語」の「if文」について紹介します。「if文」は条件によって実行するプログラムを分岐させたい時に使用します。 基本の書き方や使い方を「Lチカ」プログラムで実際に動かしながら楽しく学びましょう♪
これで「ArduinoIDE」を使った「C言語」の開発環境が整いました。
今後はこの環境を使ってOLED表示器やフルカラーLED、サーボモーター、ブザー等の使い方も紹介していきたいと思います。

C言語を使用したOLED表示器の使い方とWi-Fiを使用した遠隔操作、データ表示については、以下のリンクで詳しく紹介しています。

ラズパイPicoでSSD1306有機ELディスプレイの使い方 C言語編
液晶表示器のないRaspberry Pi PicoでOLED SSD1306の使い方を詳しく紹介。まずはArduinoIDEを使用したC言語での使用方法を紹介します。
ラズパイPicoW Wi-Fi通信、遠隔操作&表示 C言語(Arduinoコマンド)編
Wi-Fi通信機能を使用してPicoWをサーバーに設定して遠隔操作&表示する方法を詳しく紹介します。動作確認のブラウザページはChatGPTに全部書いてもらいましょう。
「ArduinoIDE」は手軽にプログラミングができてとても便利ですが、編集(エディタ)機能が物足りないのと、書き込み速度が遅いので、本格的にやるなら次で紹介する「PlatformIO」をお勧めします。

・PlatformIO(C言語)

「PlatformIO」を使用した「C言語」での開発環境の準備から「Lチカ」の動作確認まで紹介します。

「PlatformIO」は開発環境の準備が大変ですが、無料の高機能エディタ「Visual Studio Code(VSCode)」の中で使用することができ、プログラムの編集機能が豊富で慣れてしまうと他の環境には戻れません。
何より書込み速度が速いので特におすすめです。

「ArduinoIDE」を使用した「C言語」での開発環境の準備から「Lチカ」の動作確認まで紹介します。

作業の流れは以下のようになります。
①PlatformIOのインストール
②パソコンと「Raspberry Pi Pico」の接続
③新規プロジェクトの作成
③初期設定
④プログラムの書き込みと動作確認

①PlatformIOのインストール

「PlatformIO」のインストールについては以下のリンクで順番に紹介してますので順を追ってインストールしてください。

プログラミング
Visual Studio Code (VSCode)のインストールと日本語化から基本設定まで紹介
プログラムを書くために必要なエディタのインストールをします。他のプログラミングにも便利な定番エディタです。
pythonのインストール
pythonのダウンロードからインストール方法の紹介
次にインストールするPlatformIOをインストールするために必要なプログラム言語のpythonをインストールします。
PlatformIOでプログラミング
PlatformIO のダウンロードからインストールの紹介。Arduino IDEより速い!高性能!
プログラミングを行うためのIDE(統合開発環境)のインストールです。

②パソコンと「Raspberry Pi Pico/PicoW」の接続

インストールが終わって「PlatformDE」を起動したら「Raspberry Pi Pico/PicoW」とパソコンをUSBケーブルで接続します。

初めて接続する時は下画像のように「BOOTSEL」ボタンを押しながら接続しましょう。
接続したらちょっと(数秒)待ってからボタンを放しましょう。
「ArduinoIDE」で既に書き込み済みの場合はそのまま接続すれば認識するはずです。
ラズパイ(Raspberry Pi) Pico Python開発環境準備

「BOOTSEL」ボタンを押しながら接続して、パソコンに認識されると下画像のように「RPI-RP2」フォルダが開きますが「PlatformIO」では使用しないので閉じておきます。

ラズパイ(Raspberry Pi) Pico Python開発環境準備

③新規プロジェクトの作成

次に「PlatformIO」で新規プロジェクトを作成します。

下画像の画面で「New Project」をクリックしてください。

ラズパイ(Raspberry Pi) Pico でのPlatformIOの使い方

下画像のようなウインドウが表示されるので、何でもいいのでファイル名を入力(ここではRasPi _Pico_blink)を入力します。「Board:」の欄に「pico」と入力するとその下に「Raspberry Pi Pico」が表示されるので選択します。

「Board:」には「Pico(Raspberry Pi)」と「Pico W(Raspberry Pi)」も選択できるかもしれませんが、エラーになるので「Raspberry Pi Pico」を選択しましょう。
ラズパイ(Raspberry Pi) Pico でのPlatformIOの使い方

下画像のように設定できたら[Finish]ボタンをクリックします。

ラズパイ(Raspberry Pi) Pico でのPlatformIOの使い方

下画像のようにプロジェクトの準備が始まるので待ちます。これには数分かかるので気長に待ちましょう。

ラズパイ(Raspberry Pi) Pico でのPlatformIOの使い方

下画像のように表示されたら準備完了です。
[はい]をクリックしましょう。

ラズパイ(Raspberry Pi) Pico でのPlatformIOの使い方

④初期設定

次に標準のボード設定を書き換えます。
ボード設定を変更するには「platformio.ini」ファイルを書き換えます。

下画像のように「platformio.ini」をクリックします。

ラズパイPico/Pico Wの使い方、PlatformIO(C言語)

「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

下画像のような状態になったら書き込みを行います。

ラズパイ(Raspberry Pi) Pico でのPlatformIOの使い方

いきなり以下のエラーが出る場合は「git」をインストールしてください。
この表示が出ない場合はここは飛ばしてください。

ラズパイ(Raspberry Pi) Pico でのPlatformIOの使い方

以下のサイトからダウンロードできます。

下画像のページが表示されるので、ダウンロードしてインストールします。
特に設定はなく「NEXT」連打です。
ラズパイ(Raspberry Pi) Pico でのPlatformIOの使い方

「git」をインストールが始まると下画像のように「PlatformIO:Loading tasks…」の状態が長時間続きます。終わるまで放置しましょう。(30分ぐらいかかった気がします。)

ラズパイ(Raspberry Pi) Pico でのPlatformIOの使い方
「git」のインストールが完了したら「VSCode」を一旦閉じて開き直しましょう。
以下の書き込みがうまくいかない場合はパソコンを再起動してから確認してみましょう。

⑤プログラムの書き込みと動作確認

開発環境の準備が整ったので、プログラムの書き込みをしていきます。
下画像のように「main.cpp」をクリックします。
※この表示がない場合は左端に並んでいる一番上のファイルアイコンをクリックしてください。

ラズパイ(Raspberry Pi) Pico でのPlatformIOの使い方

最初のプログラムとして「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」に貼り付けましょう。
貼り付けたら画面左下の[→]を押すことで書き込みできます。

ラズパイ(Raspberry Pi) Pico でのPlatformIOの使い方

無事書き込みが完了したら下画像のような表示になります。

ラズパイ(Raspberry Pi) Pico でのPlatformIOの使い方

もし書き込めない時は下画像のように、プログラムが保存されているフォルダ(場所は下画像参照)に「ファームウェアファイル(firmware.uf2)」が出来ているので、それを「BOOTSEL」ボタンを押しながら接続した時に表示される「RPI-RP2」フォルダの中にコピーしてから書き込んでみましょう。

ラズパイ(Raspberry Pi) Pico でのPlatformIOの使い方

書き込みが完了すると、下画像のようにラズパイ基板上のLEDが0.5秒ごとに点滅するのが確認できると思います。

LED点灯
(Raspberry Pi) Pico Lチカ動作確認
LED消灯
ラズパイ(Raspberry Pi) Pico Lチカ動作確認

次に「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消灯
(Raspberry Pi) Pico Lチカ動作確認
ボタンONでLED点灯
(Raspberry Pi) Pico Lチカ動作確認
「ArduinoIDE」を使ったことのある方は書き込み速度の違いが体感できたと思います。
プログラムの編集も「Visual Studio Code(VSCode)」のエディタ機能が使えるのでプログラムの規模が大きくなった時にとても便利に使えます。

「Raspberry Pi Pico」標準のボード設定だと書き込みでエラーが出たので、④の初期設定で「platformio.ini」を「EarlePhilhower」コアの方に書き換えました。
以前は書き込みは出来ましたが再書き込みがうまくいかずに以下のリンクのように対処しました。
今は2023/4時点ではエラーは発生しませんでしたが、もしうまくいかない場合は以下のリンクを確認してみてください。

ラズパイPicoでPlatformIO使えるけど、まだまだ謎?だらけ
ラズパイPicoでもPlatformIO(C言語)を使いたい。標準ボード設定Raspberry Pi PicoはイマイチでEarlePhilhowerコアを使おうと試してみたけどファームウェアの書き込みの癖が強い?作業メモとして残します。

8.まとめ

「Raspberry Pi Pico/PicoW」の仕様や端子配列、機能から開発環境の準備、使い方、動作確認を3種類の方法で紹介しました。

「Raspberry Pi Pico/PicoW」とは、若者のプログラミング学習を目的に開発されたもので、他の「Raspberry Piシリーズ」とは異なり、OSを搭載する機能の無いマイコンボードと呼ばれるものです。

電源投入ですぐに使用でき、スイッチやLED等を接続してプログラムすることで簡単に動作確認できます。

本体だけ購入すれば基板上のLEDですぐに動作確認はできますが、スイッチ等を使ったプログラムの動作確認には基板端子へピンヘッダーのハンダ付けが必要です。

ピンヘッダーは基本的に付属も実装もされてませんので別途購入してハンダ付けする必要があります。
ハンダ付けが苦手な方は実装済みのものもありますのでそちらを購入しましょう。

開発環境はいくつかありますが「Python(MicroPython)」を使った環境としては「Thonny」、「C言語」の開発環境としては「ArduinoIDE」「PlatformIO」等があります。

「Python」はプログラムの文法がシンプルで「Thonny」を使用すると書き込みの手間がなく、すぐに動作確認できるため、手軽に始めることができます。

「Python」を使用した基本的なプログラムについては以下のリンクで詳しく紹介しています。

ラズパイPico基本プログラムPython編(Lチカ,入出力,アナログ,PWM)
Raspberry Pi Picoの基本的なLチカや入出力,アナログ入力(ADC),PWM出力を行うPythonのコピペ用サンプルプログラムをまとめました。

「C言語」は難しいイメージですが「ArduinoIDE」を使用すれば情報量の多い「Arduino」のコマンドが使用でき、複雑な動作はあらかじめ作成された「ライブラリ」を使用することで複雑な動作も簡単に実現できるため、動かしながら少しづつ理解を深めていけると思います。

コンピュータ内部の動きを理解するのにも「C言語」で学習した方が良いため、組み込み系のプログラムを学びたい方には「C言語」がお勧めです。

「C言語」で本格的にプログラミングを初めてみようという方は「PlatformIO」がおすすめです。
無料の高機能エディタ「Visual Studio Code(VSCode)」内で動作するため編集機能が豊富なことと、書き込み速度が早いため、ストレスなくプログラミングに集中できると思います。

プログラミング言語や環境には好みがありますので自分に合った環境を見つけて、いろいろなプログラムに挑戦してみましょう。


マイコンボードで「C言語」を学ぶなら小型でケース入り、Wi-Fi、Bluetooth通信も可能な「ATOM Lite」もおすすめです。
「ATOM Lite」については以下のリンクで詳しく紹介しています。

定番の Lチカ!(ATOM LITE編)で遊びながら自然と身につくプログラミング
プログラミング初心者ならとりあえず「Lチカ」やりましょう!LEDを点灯、消灯(チカチカ)させるものです。サンプルプログラムをコピペでとりあえず動作確認。LEDの色は数値を変えるだけ。いろいろ試して遊びながら学びましょう♪

コメント

  1. 吉田 純造 より:

    素晴らしく わかりやすいサイトを作ってくださり
    ありがとうございます

    本当に 具体的に解説してくださりありがとうございました

  2. zio より:

    参考にさせていただきました。
    途中のblink_c のソースですが、出力ピンに0を指定しているのですが
    25としたほうがいいのかなと思いました。
    もしくは、LED_BUILTIN にするとか。

    • logikara より:

      ご指摘ありがとうございます。
      他のボード(MAKER Pi RP2040)で動作確認していた時のまま修正忘れでした>< 早速修正しました。

タイトルとURLをコピーしました