HOME | Raspberry Pi | ビジネス書籍紹介 | 2026-05-25 (Mon) Today's Access : 182 Total : 1341674. Since 10 Sep. 2019

Raspberry Pi Pico 開発環境構築
2021.02.09


YouTube でも紹介しています。画像をクリックすると再生できます。

Raspberry Pi Picoは、Raspberry Pi財団が独自に開発したARM Cortex M0+デュアルコアのRP2040マイコンを搭載した開発基板です。C/C++およびMicroPythonで開発が可能です。 既存のRaspberry Piとは異なりLinux OSは搭載できません。 C/C++ SDK、もしくは公式に提供されているMicroPythonインタプリタを使って開発が可能です。 MicroPythonはPython 3ベースの組み込み用プログラミング言語です。USBをPCに接続すると表示されるドライブ(マスストレージ)にドラッグアンドドロップすることでプログラムを書き込むことができます。
開発環境構築では、C/C++のビルド環境を整備します。

■特徴

・Raspberry Pi(UK)設計のRP2040マイコン搭載
・デュアルコア ARM Cortex M0+プロセッサ、最大動作周波数 133 MHz
・SRAM:264KB、フラッシュメモリ:2MB
・端面スルーホールを備えているため直接キャリアボードへのはんだづけが可能
・USB 1.1 ホスト/デバイス両対応
・低消費電力スリープモードおよびドーマントモードが利用可能
・USBを介しマスストレージを使ったドラッグアンドドロップによるプログラムの書き込みが可能
・26 x 多機能GPIOピン
・2 x SPI、2 x I2C、2 x UART、3 x 12 bit ADC、16 x PWMチャンネル
・正確なクロックとタイマーを搭載
・温度センサ搭載
・高速な浮動小数点ライブラリを搭載
・8 x プログラマブルI/O(PIO)

■PinOut


■開発環境

Zero へは Wifi経由で、TeraTermによりSSH接続しています。

■Quick Pico Setup ※使いません
$ wget https://raw.githubusercontent.com/raspberrypi/pico-setup/master/pico_setup.sh
$ ./pico_setup.sh
$ sudo reboot
pico_setup.sh スクリプトを実行すると、環境が整います。

■Pico Manual Setup
Quick Setup では Visual Studio Code など余計なものがインストールされてしまいます。
当方はコマンドラインでの開発が好きなので、セットアップ用スクリプトは使用せずに環境を整えていきます。

SDK(ソフトウェア開発キット)の取得

ホームディレクトリーに、pico ディレクトリーを作成します。
$ mkdir ~/pico

pico ディレクトリーに移動して、SDKをコピーします。
$ cd ~/pico
$ git clone -b master https://github.com/raspberrypi/pico-sdk.git

pico-sdk ディレクトリーができるので、そこに移動して、サブモジュールをアップデートします。
$ cd pico-sdk
$ git submodule update --init

pico ディレクトリーに戻って、サンプルプログラムをコピーします。
$ cd ..
$ git clone -b master https://github.com/raspberrypi/pico-examples.git

pico-examplesディレクトリーが作られ、その中にサンプルプログラムのサブディレクトリーができます。
$ ls pico-examples
CMakeLists.txt              flash                  pwm
LICENSE.TXT                 gpio                   reset
README.md                   hello_world            rtc
adc                         i2c                    spi
blink                       ide                    system
clocks                      interp                 timer
cmake                       multicore              uart
divider                     pico_sdk_import.cmake  usb
dma                         picoboard              watchdog
example_auto_set_url.cmake  pio
Toolchain(プログラミングツール) のインストール

パッケージリストを更新します。
$ sudo apt update

コンパイラーなどの、Toolchainをインストールします。
$ sudo apt install cmake gcc-arm-none-eabi libnewlib-arm-none-eabi build-essential

環境変数の設定

$ vi ~/.bashrc
export PICO_SDK_PATH=~/pico/pico-sdk

$ source ~/.bashrc

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

オンボードLEDを点滅させるサンプルコードをビルドしてみます。
Ref.raspberrypi/pico-examples

pico-examplesディレクトリーの中に、blink というディレクトリーがあります。 ここには、picoのオンボードLEDを点滅させるサンプルコードがはいっています。
pico-examplesディレクトリーに移動して、blinkディレクトリーを、ホームの下にある、picoディレクトリーにコピーします。
$ cd ~/pico/pico-examples
$ cp -r blink ~/pico

コピーしたblinkディレクトリーに移動して、pico-sdkのexternalディレクトリーにある、pico_sdk_import.cmake ファイルをここにコピーします。
$ cd ~/pico/blink
$ cp -p ~/pico/pico-sdk/external/pico_sdk_import.cmake .

blink ディレクトリーには3つのファイルがあることがわかります。
$ ls
CMakeLists.txt blink.c pico_sdk_import.cmake

サンプルコードをちょっと覗いてみると、雰囲気的になにをやっているのか、大体創造できると思います。
$ vi blink.c
#include "pico/stdlib.h"

int main() {
  const uint LED_PIN = 25;
  gpio_init(LED_PIN);
  gpio_set_dir(LED_PIN, GPIO_OUT);
  while (true) {
    gpio_put(LED_PIN, 1);
    sleep_ms(50);
    gpio_out(LED_PIN, 0);
    sleep_ms(250);
  }
}
まずは、ソースディレクトリーを汚さないように、サブディレクトリーを作成します。
$ mkdir build

buildディレクトリーに移動して、cmake します。
$ cd build
$ cmake ..
-- Configuring incomplete, errors occurred!
See also "/home/pi/pico/blink/build/CMakeFiles/CMakeOutput.log".
そうすると、早速エラーを吐いてしまいました。
そんなときは、CMakeLists.txt にこんな感じ↓で追記してみてください。
$ vi ../CMakeLists.txt
cmake_minimum_required(VERSION 3.12)

include(pico_sdk_import.cmake)

project(blink)

pico_sdk_init()

add_executable(blink
    blink.c
)

pico_add_extra_outputs(blink)

target_link_libraries(blink pico_stdlib)
まずは、先ほどのcmakeでできたbuildディレクトリーの中のごみを削除します。
$ rm -r *
cmake、続いて、make します。
$ cmake ..
$ make
$ ls
CMakeCache.txt  blink.elf            elf2uf2
CMakeFiles      blink.elf.map        generated
Makefile        blink.hex            pico-sdk
blink.bin       blink.uf2
blink.dis       cmake_install.cmake
makeすると、次の2つのファイルが生成されます。
blink.elf : デバッグ用に使われます
blink.uf2 : マイコン書き込み用ファイル


BOOTSELボタンを押しながら、Raspberry PiにUSBケーブルを挿すのは難しいので、まずはRaspberry PiにUSBケーブルを繋げます。
PicoのBOOTSELを押しながら、USBケーブルをPicoに挿します。
すると、なんとRaspberry Piがリブートされてしまいます。 TeraTermとの接続が切れるので再度ログインします。
Raspberry Pi Zeroが再起動してしまう要因ですが、PicoをUSB接続した際の突入電流により、 ZeroWHの5V系電源が4.7V以下になり低電圧検出リセットが動作してしまったようです。 Raspberry Piの仕様に明記されていませんが -5%(4.75V)が限界のようです。
Ref. Zero WHにUSBハブを挿すと再起動されてしまいます


これは単に、Picoをラズパイに挿したときにもリブートしてしまいますが、 PicoのVBUSに5V給電して稼働している状態でラズパイに挿した場合は、リブートは発生しません。
ただし、VBUS給電では、PicoがUSBホストになってしまい、ラズパイにmountすることはできません。

リブートはしてしまうものの、ラズパイが起動後には、Picoがデバイスとして認識されます。
$ sudo fdisk -l
....
Device     Boot Start    End Sectors  Size Id Type
/dev/sda1           1 262143  262143  128M  e W95 FAT16 (LBA)

$ sudo mkdir -p /mnt/pico
$ sudo mount /dev/sda1 /mnt/pico
$ ls /mnt/pico/
INDEX.HTM INFO_UF2.TXT
mountすると、すでにpicoの中に2つのファイルが存在しますが、これはこのままで構いません。

$ sudo cp blink.uf2 /mnt/pico
uf2ファイルをコピーした瞬間にプログラムが実行されます。
また、自動的に umount され、Picoとの接続が切られます。
一応、作法として明示的に umount しましょう。
$ sudo umount /mnt/pico

■プログラムの書き換え
Raspberry Piに、PicoをBOOTSELを押しながら接続すると、プログラムが消去されます。
あとは再起動後に、再度マウントして、新たにプログラムを書き込みます。

■Picoの実行

Picoは、ラズパイからUSB給電を受けて、動作することもできますが、 先ほど触れたように、VBUSからの5V給電で実行することが可能です。
さらに、PicoのmicroUSBを使用しない場合には、VSYSからの給電(3.5~5.5V)も可能です。

■追記
今回は、BOOTSELボタンを押した際にリブートされてしまいましたが、Raspberry Pi 3 model B では問題なくマウントできます。 とは言え、これでは不便なので、後日突入電流対策をしたいと思います。

■参考文献
Raspberry Pi Picoスタートガイド
How to blink an LED with Raspberry Pi Pico in C
Raspberry Pi Picoの仕様書を読んでみる
RP2040マイコン用C/C++開発環境(ライブラリ、ツール)
Raspberry Pi(ラズベリー パイ)は、ARMプロセッサを搭載したシングルボードコンピュータ。イギリスのラズベリーパイ財団によって開発されている。
2021.02.09 Raspberry Pi Pico 開発環境構築
2021.04.04 Raspberry Pi Pico Explorer Base
2021.06.07 Adafruit QT Py RP2040
2021.06.15 IchigoJam BASIC RPiで遊ぶ
2024.07.08 UPS HAT 18650

KEYESTUDIO Micro:bit V2ロボットスターターキット (マイクロビットなし) MakecodeとPython用
動き、光と音の使い方、障害物の検知と回避方法、線をたどり、IRリモコンとアプリでコントロールする方法を学びます。

Maqueen Lite V5 micro:bit ロボットキット STEM用(ライントレース&障害物回避)
Maqueen Lite V5 STEMロボットは、事前調整済みのライントレースアルゴリズム、耐衝撃モーター、開封即使用可能な設計で、ストレスを解消します。

たいていのことは100日あれば、うまくいく。長田英知著
「時間がなくて、なかなか自分のやりたいことができない」 「一念発起して何かを始めても、いつも三日坊主で終わってしまう」 「色んなことを先延ばしにしたまま、時間だけが過ぎていく」 そこで本書では、そんな著者が独自に開発した、 まったく新しい目標達成メソッド「100日デザイン」について、 その知識と技術を、余すところなくご紹介します。

まんがで納得ナポレオン・ヒル 思考は現実化する
OLとして雑務をこなす日々に飽き足らず、科学者だった父が残した薬品を商品化すべく、起業を決意した内山麻由(27)。彼女はセミナーで知り合った謎の女性からサポートを得ながら、彼女と二人三脚でナポレオン・ヒルの成功哲学を実践し、さまざまな問題を乗り越えていく。 ヒル博士の<ゴールデンルール>に従い、仕事に、恋に全力疾走する彼女の、成功への物語。

今日は人生最悪で最高の日 1秒で世界を変えるたったひとつの方法 ひすいこたろう著
偉人の伝記を読むと、最悪な日は、不幸な日ではなく、新しい自分が始まる日であることがわかります。最悪な出来事は、自分の人生が、想像を超えて面白くなる兆しなのです。偉人伝を読むことで、このときの不幸があったおかげで、未来にこういう幸せがくるのかと、人生を俯瞰する視線が立ち上がるのです。

ご飯は私を裏切らない heisoku著
辛い現実から目を背けて食べるご飯は、いつも美味しく幸せを届けてくれる。 29歳、中卒、恋人いない歴イコール年齢。バイト以外の職歴もなく、短期バイトを転々とする日々。ぐるぐると思索に耽るけど、ご飯を食べると幸せになれる。奇才の新鋭・heisokuが贈るリアル労働グルメ物語!

【最新版Gemini 3に対応!】できるGemini (できるシリーズ)
Geminiを「最強の知的生産パートナー」として使いこなすための、実践的なノウハウを凝縮した一冊です。 基本的な操作方法から、具体的なビジネスシーンでの活用、日々の業務を自動化するGoogle Workspaceとの連携、さらには自分だけのオリジナルAIを作成する方法まで余すところなく解説します。

Rustプログラミング完全ガイド 他言語との比較で違いが分かる!
Rustの各手法や考え方を幅広く解説! 500以上のサンプルを掲載。実行結果も確認。 全24章の包括的なチュートリアル。

ポチらせる文章術
販売サイト・ネット広告・メルマガ・ブログ・ホームページ・SNS… 全WEB媒体で効果バツグン! カリスマコピーライターが教える「見てもらう」「買ってもらう」「共感してもらう」すべてに効くネット文章術

小型で便利な Type-C アダプター USB C オス - USB3.1 オスアダプター
Type-C端子のマイコンボードをこのアダプタを介して直接Raspberry Piに挿すことができます。ケーブルなしで便利なツールです。

Divoom Ditoo Pro ワイヤレススピーカー
15W高音質重低音/青軸キーボード/Bluetooth5.3/ピクセルアート 専用アプリ/USB接続/microSDカード

電源供給USBケーブル スリム 【5本セット】
USB電源ケーブル 5V DC電源供給ケーブル スリム 【5本セット】 電源供給 バッテリー 修理 自作 DIY 電子工作 (100cm)

Copyright © 2011-2027 Sarako Tsukiyono All rights reserved®.