RaspberryPi Picoの激安互換基板RP2040-Aを使う

コンピュータ、組み込み

Raspberry Pi Pico互換基板RP2040-Aを入手しました。
RP2040搭載基板では最安の互換基板です。
Arduino環境で使用する方法とフラッシュメモリのサイズアップをしてみます。

紹介するもの

RP2040-A

特徴

Raspberry Pi Picoの互換基板です。
主な違いは、RESETボタンが付いたくらいです。
フラッシュメモリが1MByteしかないので、CircuitPythonのuf2ファイルではArduino環境で動かすことができません。
使用方法は後述します。

RP2040-ARaspberryPi Pico
CPURP2040 ARM Cortex M0+ 133MHzRP2040 ARM Cortex M0+ 133MHz
接続Micro B
USB1.1 ホスト/デバイス両対応
Micro B
USB1.1 ホスト/デバイス両対応
MemorySRAM 264KB
フラッシュメモリ 1MB
SRAM 264KB
フラッシュメモリ 2MB
ロジックレベル3.3V3.3V
GPIO2626
PWM26 (8bit 0 ~ 255, 3.3V)26 (8bit 0 ~ 255, 3.3V)
ADC3 (10bit 0 ~ 1023, 3.3V)3 (10bit 0 ~ 1023, 3.3V)
UART22
I2C22
SPI22
LED赤(GPIO25)緑(GPIO25)
そのほかリセットボタン
入手性※Ali Expresで数店舗
送料込み \350~\400
国内販売店 在庫多数
送料込みで \800~\900
※入手性、価格は参考です。
情勢、為替などにより変動します。

その他のRP2040搭載基板の一覧

Raspberry Pi Pico の記事

ピン配置

ピン配置はRaspberry Pi Picoと一致しています。

外観

Raspberry Pi Pico と比較しました。
左側がRP2040-A、右側がRaspberryPi Picoです。

機能的な違いはリセットボタンが付いています。
実装部品はサイズの大きいものを使っているためか、大分ごちゃついています。

搭載しているフラッシュメモリは1MByteです。
これまで当サイトで掲載しているように、CircuitPython化してArduino環境で動作させることができません。

使ってみて

もともとコスパの良いRaspberry Pi Pico ですが、同じRP2040を搭載しながらさらに安いジェネリックが出てきました。
購入はAli Expressで送料込みでも\350ほどでした。(Aug/2023)
10枚セットでは1枚当たり200円台での購入もできそうです。
安くて互換がありリセットボタンまで付いていますが、国内での流通は少ないです。

フラッシュメモリのサイズは1MByteです。
これまでRP2040搭載基板で紹介していたCircuitPython uf2ファイルは容量不足のために書き込みができません。
困ることはBOOTボタンを押して起動したときにパソコンにCOM認識されないので、Arduino環境からシリアル書き込みできないことです。

解決方法は2つあります。
①Arduino環境で空のuf2ファイルを生成して、ドラッグ&ドロップする。
②フラッシュメモリの載せ替え。

①の方法ではこれまで紹介してきたCircuitPython uf2ファイルを使用しないで、新たに空スケッチをコンパイルしたuf2ファイルを書き込みます。
この方法は他のRP2040搭載基板でも使用できます。

②の方法は、フラッシュメモリIC(8pin)を取り外すための用具や技量が必要となります。
メモリも準備しなければならないので手間がかかりますが、安価にフラッシュメモリの増強ができるメリットがあります。
他のRP2040搭載基板でも同じ作業でメモリ拡大することができると思います。(未確認)
中国製の基板の多くがSOP8(1.27mmピッチ)のICを使っていることが多いので、このサイズのものなら作業できる範囲だと思います。

①の方法だけで解決できますが、②を実施してから①の方法に気が付いたので両方記載しました。

最近では国内の通販サイトでも取り扱いがあるようですが、RaspberryPi Picoの互換基板が大量に必要であれば探して購入する価値があると思います。

安価で簡単にRaspberyPi Pico互換基板を使いたい場合は、入手性の良い上位互換 YD-RP2040 RP2040-Pico-Bootなどがあります。

その他のRaspberry Pi Pico互換基板

準備

フラッシュメモリの載せ替え

<<RP2040-Aを使用するために必須の作業ではありません。>>

RP2040-Aはフラッシュメモリが1MByteしか搭載されていないため、CircuitPython化してArduino環境からシリアルを使ってスケッチの書き込みができません。

フラッシュメモリの載せ替えを行い、Arduino環境からシリアルでスケッチを書きこむまでの手順と使用した部品を紹介します。

※当サイトではIC部品の取り外し方法は掲載していません。
作業は自己責任で行ってください。

部品

今回使用したのはRP2040で搭載できる最大サイズの16MByteです。

部品説明
Winbond製
W25Q128JVSIQ
16MByte フラッシュメモリ

補足 : もともと搭載されていた部品は SY25Q80 (1MByte)です。

手順

基板に搭載されているフラッシュメモリの取り外します。
(IC部品の取り外し方法について正しく安全に取り外す方法を示すことができないので、動画検索 
などで調べてください。)

画像は作業前です。赤丸の部品を取り外します。

とりはずしたら、新しいフラッシュメモリICを基板に置いてカプトンテープで位置決めをします。
ICの取り付け方向を確認します。



片側を半田します。
もし半田ブリッジしても後ではんだ吸い取り線で回収するのでそのままにします。
ICがパッドパターンとズレていないことを確認します。

両サイドの半田が終わったら外観を確認します。
半田ブリッジがあれば、はんだ吸い取り線で回収します。

「UF2ファイルの作成とシリアル認識」でuf2ファイルの書き込みができれば完了です。

ライブラリ

ボードライブラリ

Arduino IDEのボードマネージャからRP2040-A用のライブラリのインストールとボードの選択をし
ます。

コンパイルを行う前にボードを選択しますが、Generic RP2040を選択します。

追加のボードマネージャのURLhttps://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json
検索RP2040
ボードライブラリRaspberry Pi RP2040 Boards(x.x.x)※
選択するボードRaspberry Pi RP2040 Boards(x.x.x) > Generic RP2040
※動作確認はバージョン 3.1.0です

モジュールライブラリ

モジュールを使用しない場合インストールの必要はありません。

機能/モジュールライブラリ名検索確認時のバージョン
SSD1306Adafruit SSD1306 by AdafruitSSD13062.5.1
ST7735Adafruit ST7735 and ST7789
Library by Adafruit
ST77351.9.3
関連
SSD1306
ST7735
Adafruit GFX Library by AdafruitGFX1.11.3

UF2ファイルの作成とシリアル認識

Arduino環境で空のuf2ファイルを作成し、RP2040搭載基板に書き込みます。
この作業を行うことでArduino環境のシリアルからスケッチの書き込みができるようになります。

<<この作業はArduino環境にRP2040ボードライブラリがインストールされている必要があります>>

1.ArduinoIDEを起動し「新規スケッチ」を開き、そのまま「名前を付けて保存」します。

2. ボードには Raspberry Pi Pico/RP2040 > Raspberry Pi Pico を選択します。

3.「コンパイル済みバイナリをエクスポート」を実行します。
コンパイルが終わると、保存したフォルダの下位階層に [blank.ino.uf2]が作成されます。

4. RP2040-A のBOOT SELボタンを押しながら、USBケーブルをパソコンに接続します。

5.パソコンの画面では、RP2040-A をストレージとして認識します。

6.先に作成した[blank.ino.uf2]をRP2040-Aにドラッグ&ドロップします。

以上の作業でRP2040-A はCOM認識されます。

CircuitPythonのuf2ファイルを使用する違いは、CircuitPythonの場合ファイル容量が1.3MByteあり、RP2040-Aのフラッシュメモリ容量1MByteを超えてしまいます。
空のuf2ファイルの場合130KByteほどなので書き込みができます。

今回作成したuf2ファイルは、保存しておいてください。
RP2040-A を初期化したいとき(今何のファームウエアが書かれているかわからなくなったとき)には、このuf2ファイルを書き込むことで初期化することができます。

UF2ファイルの書き込み

Arduino環境ではスケッチをシリアルから書き込む以外に、コンパイル済みファイルをuf2ファイルに出力して、RP2040をストレージ認識させた状態から書き込むことができます。

シリアルから書き込む方法の場合、毎回スケッチのコンパイルを行うため時間がかかりますが、uf2ファイルを書き込む方法はストレージ認識させたRP2040にドラッグ&ドロップするだけで書き込みができます。

1.スケッチを任意のフォルダに保存します。
2.メニュー>スケッチ>コンパイル済みバイナリをエクスポート を実行します。

3.1で保存したフォルダの下位フォルダにuf2ファイルが生成されます。
4.RP2040基板のBOOTボタンを押下しながらパソコンにUSB接続します。
5.uf2ファイルをストレージ認識されたRP2040基板にドラッグ&ドロップします。

参考基本スケッチ

RP2040搭載基板でのサンプルは以下の記事を参考にしてください。

コメント

  1. anonymous より:

    Aliexpressですと、コイン(アプリ限定の割引手段)を使える状況なら10枚(据付用ピンヘッダ添付)で送料込み2400円程度と、AE-RP2040の6割引という破格な数字が出てきました(ただしコイン割引は運が絡む)。
    小さなプログラムで済むMicropython用途向けという感じがいたします。

    • tamanegi より:

      コメントありがとうございます。
      10枚セット見ました。
      大きな開発は難しいですが破格ですよね。

  2. anonymous より:

    小道具で簡単なプログラム&たくさん作るという用途ならば圧倒的なコスパで、他のRP2040系ボードとの差額で別の部品が買えてしまいます(例えばサーボモーターとか、LEDとか)。そういった点で注目しております。
    つかぬことを伺いますが、Micropythonのuf2は導入できそうですか?パッケージファイルが600k位あるので、1MBだと怖いですね…。

    • tamanegi より:

      容量の理論では導入できそうな気がしますね。
      参考程度になりますが、RaspberryPi Picoで使っていたCircuitPython のuf2 は、ファイルサイズが1.2MBで導入できませんでした。
      arduinoIDEから生成するRP2040のサンプルスケッチは、uf2を生成するとほとんどが150kByte以下だったので書き込むことができました。
      ご期待に沿える回答になっていなくて申し訳ないです。

  3. Anonymous より:

    ご報告ついでに資料としてご返信します。
    先ほど、AP2040-Aに公式のuf2ファイル、
    2023年4月26日版 v1.20.0(624kb)を
    インストールし、Lチカできましたので、お知らせします。

    やはり、Micropython前提っぽいですね。
    ではでは。

    • tamanegi より:

      ご報告ありがとうございます。
      Micropythonでの動作ができた情報、これからの知見にさせていただきます。

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