HOME | Raspberry Pi | ビジネス書籍紹介 | 2026-01-04 (Sun) Today's Access : 239 Total : 1260937. Since 10 Sep. 2019

Pico Explorer Base
2021.04.04


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

今回は、Pimoroni の新製品 Pico Explorer Base を使ってみました。
Raspberry Pi Pico の基本的な使い方は
Raspberry Pi Pico 開発環境構築
を参照してください。

■Features

この Pico Explorer Base 左上には、ヘッダーピンをはんだ付けしたRaspberry Pi Pico を挿し込むためのスロットがあります。 その右に、ピエゾ・ブザーを挟んで、Pimoroni Breakout Garden製品用の2つのI2Cソケット、 右下に、240x240のLCD、中央に2つのモータードライブと GPIO、ADC 用のピンヘッダー。 左下に、小さなブレッドボードが付いています。
・Pico Explorer Base
・Piezo speaker
・1.54" IPS LCD screen (240 x 240)
・Four user-controllable switches
・Two Half-Bridge motor drivers (with over current indicator LED)
・Easy access GPIO and ADC pin Headers
・Two Breakout Garden I2C sockets
・Mini breadboard
・Rubber feet
・Compatible with Raspberry Pi Pico.
・No soldering required (as long as your Pico has header pins attached).
・Dimensions: approx 117mm x 63mm x 20mm (L x W x H, assembled)
・C/C++ and MicroPython libraries

■ソースコードのダウンロード

ここでは、Pimoroni の GitHub にあるサンプルコードを動かしてみます。

C/C++ and MicroPython libraries
https://github.com/pimoroni/pimoroni-pico

Pimoroni Pico のGitHub は、頻繁に更新されていますので、参考程度にみてください。

examples をクリックします。


pico_explorer をクリックします。

https://github.com/pimoroni/pimoroni-pico/tree/main/examples/pico_explorer

$ mkdir ~/pico/explorer
$ cd ~/pico/explorer
ここに下記のファイルをダウンロードして配置します。
・CMakeLists.txt
・demo.cpp
・fox.tga
・image_data.cpp

$ cat CMakeLists.txt
add_executable(
  explorer
  demo.cpp
)

add_resource(explorer fox.tga)

# Pull in pico libraries that we need
target_link_libraries(explorer pico_stdlib pico_explorer msa301)

# create map/bin/hex file etc.
pico_add_extra_outputs(explorer)
pico-sdkの標準ライブラリーの他に、pico_explorer と msa301 というライブラリーを参照していることがわかります。


https://github.com/pimoroni/pimoroni-pico/tree/main/libraries/pico_explorer

$ mkdir ~/pico/explorer/pico_explorer
ここに下記のファイルをダウンロードして配置します。
・CMakeLists.txt
・pico_explorer.cpp
・pico_explorer.hpp

$ cat ~/pico/explorer/pico_explorer/CMakeLists.txt
target_link_libraries(pico_explorer INTERFACE pico_stdlib hardware_pwm hardware_adc st7789 pico_graphics)

st7789 と pico_graphics というライブラリーを参照しています。


https://github.com/pimoroni/pimoroni-pico/tree/main/drivers/msa301

$ mkdir ~/pico/explorer/msa301
ここに下記のファイルをダウンロードして配置します。
・CMakeLists.txt
・msa301.cpp
・msa301.hpp


https://github.com/pimoroni/pimoroni-pico/tree/main/libraries/pico_graphics

$ mkdir ~/pico/explorer/pico_graphics
ここに下記のファイルをダウンロードして配置します。
・CMakeLists.txt
・font_data.cpp
・pico_graphics.cpp
・pico_graphics.hpp
・types.cpp


https://github.com/pimoroni/pimoroni-pico/tree/main/drivers/st7789

$ mkdir ~/pico/explorer/st7789
ここに下記のファイルをダウンロードして配置します。
・CMakeLists.txt
・st7789.cpp
・st7789.hpp

このようにCMakeLists.txtに記載されているリンクを辿り、必要なソースを収集して使いやすいように配置しました。
<~/pico/explorer>
 ・CMakeLists.txt
 ・demo.cpp
 ・fox.tga
 ・image_data.cpp
 <pico_explorer>
  ・CMakeLists.txt
  ・pico_explorer.cpp
  ・pico_explorer.hpp
 <msa301>
  ・CMakeLists.txt
  ・msa301.cpp
  ・msa301.hpp
 <pico_graphics>
  ・CMakeLists.txt
  ・font_data.cpp
  ・pico_graphics.cpp
  ・pico_graphics.hpp
  ・types.cpp
 <st7789>
  ・CMakeLists.txt
  ・st7789.cpp
  ・st7789.hpp

■相対パスの変更

使いやすいように勝手にファイルの配置を変えたので、相対パスの変更を行います。

$ vi ~/pico/explorer/pico_explorer/pico_explorer.hpp
#include "../../drivers/st7789/st7789.hpp"
#include "../../libraries/pico_graphics/pico_graphics.hpp"
 ↓変更
#include "../st7789/st7789.hpp"
#include "../pico_graphics/pico_graphics.hpp"

■MakeLists.txt への追記

$ cmake --version
cmake version 3.13.4

$ cd ~/pico/explorer

CMakeLists.txt の先頭にお決まりのコードとサブディレクトリーを追記します
$ vi CMakeLists.txt

cmake_minimum_required(VERSION 3.13)

# Pull in SDK (must be before project)
include(pico_sdk_import.cmake)

project(pico_examples C CXX ASM)
set(CMAKE_C_STANDARD 11)
set(CMAKE_CXX_STANDARD 17)

# Initialize the SDK
pico_sdk_init()

add_subdirectory(st7789)
add_subdirectory(pico_graphics)
add_subdirectory(pico_explorer)
add_subdirectory(msa301)

add_executable(
explorer
demo.cpp
)

add_resource(explorer fox.tga)

# Pull in pico libraries that we need
target_link_libraries(explorer pico_stdlib pico_explorer msa301)

# create map/bin/hex file etc.
pico_add_extra_outputs(explorer)

$ cp -p ~/pico/pico-sdk/external/pico_sdk_import.cmake .
$ mkdir build
$ cd build
$ cmake ..
CMake Error at CMakeLists.txt:23 (add_resource): Unknown CMake command "add_resource".

マクロを追加します。 このマクロでは、UF2(USB Flashing Format)ファイルにtgaイメージをバンドルしています。
$ vi ~/pico/explorer/CMakeLists.txt

function(add_resource target file)
  get_filename_component(NAME ${ARGV1} NAME_WE)
  set(FILENAME ${ARGV1})

  add_custom_command(
    OUTPUT ${NAME}.o

    COMMAND ${CMAKE_COMMAND} -E copy
            ${CMAKE_CURRENT_SOURCE_DIR}/${FILENAME}
            ${CMAKE_CURRENT_BINARY_DIR}

    COMMAND arm-none-eabi-ld -r -b binary -o ${NAME}.o ${FILENAME}
    DEPENDS ${FILENAME}
  )

  target_sources(${ARGV0} PRIVATE ${NAME}.o)
endfunction(add_resource)


add_resource(explorer fox.tga)

# Pull in pico libraries that we need
target_link_libraries(explorer pico_stdlib pico_explorer msa301)

# create map/bin/hex file etc.
pico_add_extra_outputs(explorer)
これにより、画像ファイル fox.tga が、実行ファイル explorer.uf2 にバンドルされます。

※補足:
cmake_minimum_required(VERSION 3.13)^M
のように表示されて気になるときはは、改行コードを変更します。
$ sed -i 's/\r//' CMakeLists.txt

◇CMakeで設定されているすべての変数を出力する

上記マクロの変数値を確認するために、CMakeLists.txt の末尾に下記を追加します。
$ vi ~/pico/explorer/CMakeLists.txt
message(STATUS "*** dump start cmake variables ***")
get_cmake_property(_variableNames VARIABLES)
list (SORT _variableNames)
foreach (_variableName ${_variableNames})
    message(STATUS "${_variableName}=${${_variableName}}")
endforeach()
message(STATUS "*** dump end ***")
$ rm -rf *
$ cmake ..
..........
-- CMAKE_CURRENT_BINARY_DIR=/home/pi/pico/explorer/build
-- CMAKE_CURRENT_LIST_DIR=/home/pi/pico/explorer
-- CMAKE_CURRENT_LIST_FILE=/home/pi/pico/explorer/CMakeLists.txt
-- CMAKE_CURRENT_SOURCE_DIR=/home/pi/pico/explorer
..........
add_resource の中を展開してみると、下記のようになります。
function(add_resource target file)
  get_filename_component(NAME "fox.tga" NAME_WE)
  set(FILENAME "fox.tga")

  add_custom_command(
    OUTPUT fox.o

    COMMAND /usr/bin/cmake -E copy
            /home/pi/pico/explorer/fox.tga
            /home/pi/pico/explorer/build

    COMMAND arm-none-eabi-ld -r -b binary -o fox.o fox.tga
    DEPENDS fox.tga
  )

  target_sources(explorer PRIVATE fox.o)
endfunction(add_resource)

$ make

BOOTSELボタンを押しながら、Raspberry Pi Picoを接続します。
$ sudo mkdir -p /mnt/pico
$ sudo mount /dev/sda1 /mnt/pico
$ sudo cp explorer.uf2 /mnt/pico
$ sudo umount /mnt/pico



■補足:TGA (Truevision Graphics Adapter)
TGA (Truevision Graphics Adapter) ファイルフォーマットはTruevision社が開発したラスター画像のファイルフォーマット。
TGAファイルは元々Truevision社のBrad Pillowによって1984年に定められた。現在のバージョン (2.0) は(サムネイルとしてよく知られている)ポステージスタンプ(訳注:郵便切手)、アルファチャンネル、ガンマ値、テクスチャのメタデータなどの拡張を含み、Truevision社のDavid Spoelstraによって1989年に定められた。
色深度の制限にもかかわらず、TGAはアニメーションとビデオ産業の全域に渡って未だ使われている。
Ref.フリー百科事典『ウィキペディア(Wikipedia)』

プログラムに組み込まれたTGAの取り扱いはとても簡単です。 先頭18バイトのヘッダー情報に続くBGRの画像データを取り出して、描画用の関数にセットします。

画像編集アプリの多くが、TGAフォーマットへの画像変換もサポートしています。

サンプルプログラムから画像表示部分のみを抜き出してみました。 縦横240の画面一杯のTGAをバンドルしようとすると、RAMがオーバーフローしてしまいました。
$ make
/usr/lib/gcc/arm-none-eabi/7.3.1/../../../arm-none-eabi/bin/ld: explorer.elf section `.bss' will not fit in region `RAM'
/usr/lib/gcc/arm-none-eabi/7.3.1/../../../arm-none-eabi/bin/ld: region RAM overflowed
/usr/lib/gcc/arm-none-eabi/7.3.1/../../../arm-none-eabi/bin/ld: region `RAM' overflowed by 34304 bytes
collect2: error: ld returned 1 exit status

210x210のTGAファイルの場合はビルドが可能で、Picoで正常に動作しました。
$ ls -l YoRHa2B.tga
-rw-r--r-- 1 pi pi 132318 4月 2 02:16 YoRHa2B.tga
$ ls -l explorer.*
-rwxr-xr-x 1 pi pi 159692 4月 2 02:18 explorer.bin
-rw-r--r-- 1 pi pi 1708303 4月 2 02:18 explorer.dis
-rwxr-xr-x 1 pi pi 347324 4月 2 02:18 explorer.elf
-rw-r--r-- 1 pi pi 189026 4月 2 02:18 explorer.elf.map
-rw-r--r-- 1 pi pi 449261 4月 2 02:18 explorer.hex
-rw-r--r-- 1 pi pi 319488 4月 2 02:18 explorer.uf2



Adafruit Feather RP2040

Adafruit からも RP2040 を搭載した Feather ボードが発売されました。 チップ上のロゴに惹かれて、たまらず買ってしまいました。

■参考文献
C/C++ and MicroPython libraries
Rendering Images on the Pimoroni Pico Display
Raspberry Pi Pico - API Documentation
CMakeで設定されているすべての変数を出力する
cmakeプロジェクトの設定項目一覧を表示させる
CMake: 便利なコマンド・変数
第4回 ビルド時に実行されるコマンドの依存関係
raspberrypi / pico-bootrom
Raspberry Pi メモ (52) - Raspberry Pi Pico
Truevision TGA
Raspberry Pi(ラズベリー パイ)は、ARMプロセッサを搭載したシングルボードコンピュータ。イギリスのラズベリーパイ財団によって開発されている。
2021.02.09 Raspberry Pi Pico 開発環境構築
2021.04.04 Raspberry Pi Pico Explorer Base
2021.05.30 PicoをArduino環境で使う
2021.06.07 Adafruit QT Py RP2040
2021.06.15 IchigoJam BASIC RPiで遊ぶ
2024.07.08 UPS HAT 18650

たいていのことは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®.