最終更新日:2022/3/15
作成日:2021/4/16
※2022年3月30日 Arduino-Picoのベンチテスト情報があるようです。 ※2022年3月15日 M5Stackの接続で嵌まりました。 ※2022年3月10日 PiPicoを入手しました。※Arduino PicoはArduino財団公式のモノでは無く Earle F. Philhower, III 氏によるプロジェクトです。
Arduino財団公式版といわれる Arduino Mbed OS RP2040 Boards とは異なります。Arduino財団は RP2040を搭載した公式開発ボードをいくつかリリースしています。
ArduinoIDEにPico用のボードマネージャが用意されArduino-Picoが実現しています。
https://github.com/earlephilhower/arduino-pico
ただ、モノが手元にありません。実際の動作確認まではもう少し時間が必要です。それと合わせて、GroveShieldもリリースされています。
2022年3月9日 マイコンはじめの一歩! Arduino IDEではじめるRaspberry Pi Pico: 1st Kindle版 と云う本がリリースされている事が判りました。Kindle版しかないようなので中身は確認出来ていません。
Arduino IDEでRaspberry Pi Picoを使う記事はCQ出版インターフェース2021年8月号に紹介されているのですが、MicroPythonを使った開発方法について解説されている事もあり、Arduino IDEについてはさらっと触れているだけです。
現在自分のArduinoIDE環境は1.8.19環境です。ボードマネージャに選択肢がありました。
ちょっとExampleがチープですね。秋月に注文済みのPiPicoが届き次第動作確認をしたいと思っています。
3/7に秋月電子通商に注文した品々が届きました。相当の注文残を抱えていたようで、発送が3/9の夕方になってました。それでも翌朝には手元に届いたのは有り難いです。
早速PCと接続してテストコードをダウンロードしようと思いましたが、幾つか躓いてしまいました。
- ボード接続後、COMポートが見えません。事前に得ていた情報通りです。
無視してUploadすれば自動で書き込むとありましたので実施したところ、確かに書込に成功したようです。
しかし温度計測のサンプルはシリアル出力で動作確認します。COMポートが認識されていないという事はシリアルモニタが開けません。
COMポートを強引にでも認識させる必要がありそうです。
COMポートは仮想ポートであるわけですので、強引にATMELの仮想ポートをインストールしてしまえばなんとかなるようです。
しかし、ポート名が頓珍漢になってしまいます。
もしかしたらMBEDベースの環境(Arduino MbedOS RP2040 Boards)を使えば仮想ポートが設定されたのかもしれません。
自分はEarle Philhower氏が開発したarduino-picoを選んだため失敗したのかもしれません。
ただ、仮想ポートのインストール自体はとりあえず実現出来ます。
- 『Fade』というサンプルスケッチがあります。このスケッチはビルトインLEDの明るさを変化させるExampleであり、シリアルモニタが無くても動作確認が可能です。こちらのサンプルコードを使うべきでした。
- スケッチを書き込むと、コンパイルが完了したら、PiPicoをUSBストレージ(RPI-RP2)がコネクトされ、バイナリコードが書き込まれるようです。その際にIDE上にはメッセージが残ります。
Resetting COM42 Caught exception during reset! Converting to uf2, output size: 130560, start address: 0x2000 Flashing I: (RPI-RP2) Wrote 130560 bytes to I:/NEW.UF2
そして、一旦接続されたRPI-RP2は切断されます。
この挙動はこれまでのArduinoIDEに接続したデバイスでは初めてかもしれません。事前に有る程度情報を得ていたとしても、実際に体験するとそれなりに違和感が有るモノです。- Serialポートがちゃんと認識されれば、temperatureのコードも動きます。
/* * 2022/03/15 T.Wanibe * PiPicoの動作確認の為にExampleをレタッチして実行確認しています。 * このスケッチはPicoに搭載されているサーミスタによる温度測定です。 * Released into the public domain * 最大2093056バイトのフラッシュメモリのうち、スケッチが58880バイト(2%)を使っています。 * 最大262144バイトのRAMのうち、グローバル変数が11132バイト(4%)を使っていて、ローカル変数で251012バイト使うことができます。 */ //------------ void setup() { Serial.begin(115200); } //------------ void loop() { Serial.printf("Core temperature: %2.1f[℃]\n", analogReadTemp()); delay(1000); }
![]()
2022年3月15日 M5StackのENV・VセンサをPiPico+GroveShield で使いたいと思いました。Groveコネクタのセンサを使う事で動作確認が容易になります。
実際に接続し動作確認をしたいと思いました。ENV・VセンサのサンプルスケッチがM5Stack社の製品紹介ページに用意されています。
https://docs.m5stack.com/en/unit/envIII?id=description
『ENV III Unit Test』というサンプルスケッチなのですが、コンパイルエラーが発生します。ESP32ベースの仕組みに従っているようでソースコードのレタッチは必須です。
※Example自体互換性無しの項にあります。インクルードの仕方が問題です。
#include <M5Stack.h>
#include "UNIT_ENV.h"
を変更して、
#include <Wire.h>
#include <SHT3x.h>
#include "QMP6988.h"
とします。
/* * 2022/03/15 T.Wanibe * PiPicoの動作確認の為にExampleをレタッチして実行確認しています。 * このスケッチはPicoをGroveShieldに装着し、I2C0にM5StackのセンサUNIT_ENV3を接続して * 温度、湿度、圧力計測するモノです。 * UNIT_ENV3にはI2C: SHT30(0x44), QMP6988(0x70)です。 * I2Cアドレスが指定出来るライブラリを使わないとうまくデータ取得出来ませんね。 * またQMP6988のライブラリは限られるようです。 * I2C0のポートに接続しましたが、Wire.setSDA(8);Wire.setSCL(9);の設定を怠るとデータが取得出来ません。 * ポート番号はSeeedStudioが提供するShield回路図を必ず確認する必要があります。 * * Released into the public domain * 最大2093056バイトのフラッシュメモリのうち、スケッチが58880バイト(2%)を使っています。 * 最大262144バイトのRAMのうち、グローバル変数が11132バイト(4%)を使っていて、ローカル変数で251012バイト使うことができます。 * 最大2093056バイトのフラッシュメモリのうち、スケッチが64128バイト(3%)を使っています。 * 最大262144バイトのRAMのうち、グローバル変数が11948バイト(4%)を使っていて、ローカル変数で250196バイト使うことができます。 */ #include <Wire.h> #include <SHT3x.h> #include "QMP6988.h" SHT3x sht30(0x44); QMP6988 qmp6988; float tmp = 0.0; //なぜかNaNが認められない float hum = 0.0; float pressure = 0.0; //-------------- void setup() { Serial.begin(115200); Wire.setSDA(8); Wire.setSCL(9); Wire.begin(); //ENV IIのgroveコネクタ接続pin設定 sht30.Begin(); //ワイヤ初期化、I2Cバスの追加。 qmp6988.init(0x70); Serial.println(F("ENV Unit III test")); } //-------------- void loop() { sht30.UpdateData(); delay(1000); pressure = qmp6988.calcPressure(); //qmp6988のデータを取得します。 tmp = sht30.GetTemperature(); //SHT30のデータを取得します。 hum = sht30.GetRelHumidity(); //SHT30から得られた湿度を代入します。 Serial.printf("Temp: %2.1f[℃]\nHumi: %2.0f[%%]\nPressure:%2.0f[Pa]\n", tmp, hum, pressure); //delay(1000); } |
GroveShieldはI2C0のポートアサインはSDA(8),SDL(9)、I2C1はSDA(6),SDL(7)です。RP2040をArduinoIDE利用するならば、この点は意識して明記する方が得策かと思います。
/* * 2022/03/15 T.Wanibe * UNIT_ENV3をI2C1に変更しての動作確認。折角なのでanalogReadTemp()も同時取得してみる * PiPicoの動作確認の為にExampleをレタッチして実行確認しています。 * このスケッチはPicoをGroveShieldに装着し、I2C0にM5StackのセンサUNIT_ENV3を接続して * 温度、湿度、圧力計測するモノです。 * UNIT_ENV3にはI2C: SHT30(0x44), QMP6988(0x70)です。 * I2Cアドレスが指定出来るライブラリを使わないとうまくデータ取得出来ませんね。 * またQMP6988のライブラリは限られるようです。 * I2C1のポートに接続しましたが、Wire.setSDA(6);Wire.setSCL(7);の設定を怠るとデータが取得出来ません。 * ポート番号はSeeedStudioが提供するShield回路図を必ず確認する必要があります。 * 最大2093056バイトのフラッシュメモリのうち、スケッチが65880バイト(3%)を使っています。 * 最大262144バイトのRAMのうち、グローバル変数が12024バイト(4%)を使っていて、ローカル変数で250120バイト使うことができます。 */ #include <Wire.h> #include <SHT3x.h> #include "QMP6988.h" SHT3x sht30(0x44); QMP6988 qmp6988; float tmp = 0.0; //なぜかNaNが認められない float hum = 0.0; float pressure = 0.0; float tmpOnPico = 0.0; //-------------- void setup() { Serial.begin(115200); Wire.setSDA(6); Wire.setSCL(7); Wire1.begin(); //ENV IIのgroveコネクタ接続pin設定 sht30.Begin(); //ワイヤ初期化、I2Cバスの追加。 qmp6988.init(0x70); Serial.println(F("ENV Unit III test")); } //-------------- void loop() { sht30.UpdateData(); delay(1000); tmpOnPico = analogReadTemp(); pressure = qmp6988.calcPressure(); //qmp6988のデータを取得します。 tmp = sht30.GetTemperature(); //SHT30のデータを取得します。 hum = sht30.GetRelHumidity(); //SHT30から得られた湿度を代入します。 Serial.printf("OnPicoTemp: %2.1f[℃]\nTemp: %2.1f[℃]\nHumi: %2.0f[%%]\nPressure:%2.0f[Pa]\n", tmpOnPico,tmp, hum, pressure); } |
2022年3月30日 Arduino-Picoのベンチテスト情報があるようです。
Arduino Support for the Pi Pico available! And how fast is the Pico? - https://youtu.be/-XHh17cuH5E
これによるとチップ単体の比較のようで開発環境も含めたモノではなさそうですね。
- VAX MIPS:
1970年代末頃から使われたベンチマーク基準指標
VAX 11/780の性能を「1 VAX MIPS」として、それとの性能比として表示
※100万命令毎秒とは異なるという意味- Single MIPS:
単精度実数の処理速度- Double MIPS:
倍精度実数の処理速度
免責事項
本ソフトウエアは、あなたに対して何も保証しません。本ソフトウエアの関係者(他の利用者も含む)は、あなたに対して一切責任を負いません。
あなたが、本ソフトウエアを利用(コンパイル後の再利用など全てを含む)する場合は、自己責任で行う必要があります。本ソフトウエアの著作権はToolsBoxに帰属します。
本ソフトウエアをご利用の結果生じた損害について、ToolsBoxは一切責任を負いません。
ToolsBoxはコンテンツとして提供する全ての文章、画像等について、内容の合法性・正確性・安全性等、において最善の注意をし、作成していますが、保証するものではありません。
ToolsBoxはリンクをしている外部サイトについては、何ら保証しません。
ToolsBoxは事前の予告無く、本ソフトウエアの開発・提供を中止する可能性があります。
商標・登録商標
Microsoft、Windows、WindowsNTは米国Microsoft Corporationの米国およびその他の国における登録商標です。
Windows Vista、Windows XPは、米国Microsoft Corporation.の商品名称です。
LabVIEW、National Instruments、NI、ni.comはNational Instrumentsの登録商標です。
I2Cは、NXP Semiconductors社の登録商標です。
その他の企業名ならびに製品名は、それぞれの会社の商標もしくは登録商標です。
すべての商標および登録商標は、それぞれの所有者に帰属します。