【備忘録】ArduinoIDE環境でW5500-EVB-PICOを使う サンプルスケッチ

最終更新日:2023/3/14

W5500-EVB-PICOを入手してもAruinoIDE環境ですぐに使えないという問題を経験しています。
備忘録として、AruinoIDE環境IDE環境下で W5500-EVB-PICOを使用したい方の資料を作成したいと思いました。

  1. AruinoIDE環境IDE環境下でW5500-EVB-PICOを使用するには
  2. W5500-EVB-PICOをPCに接続してAruinoIDE環境IDEからシリアルポートを設定しようとしても見つからない場合
  3. W5500-EVB-PICOでEthernet関連のスケッチをビルドして実行するも全く反応しない。
    そもそもPINGに反応がない
  4. W5500-EVB-PICO用のサンプルスケッチってないの?

AruinoIDE環境IDE環境下でW5500-EVB-PICOを使用するには】

W5500-EVB-PICOはCPUカテゴリでいうとRP2040搭載ボードです。ArduinoIDE環境で使用できることが判っています。
ArduinoIDE1.xでもArduinoIDE2.xでも使用できるようです。
開発環境の構築において手順等を示しています。こちらを参照してください。

環境が整備できたらターゲットボードとして
ツール>ボード>EaspberryPiRP2040Bouard(x.x.x)>WIZnet W5500-EVB-PICO
を選びます。

ツール>シリアルポート にて接続しているボードのシリアルポートを選択します。

W5500-EVB-PICOをPCに接続してAruinoIDE環境IDEからシリアルポートを設定しようとしても見つからない場合】

RP2040搭載のボードは、BOOLSELボタンを押しながら電源投入すると、フォルダがマウントされ、そこに、UF2ファイル(バイナリプログラムコード)を書き込み(コピー)して再起動するとプログラムが実行されるというのが基本動作です。

AruinoIDE環境の場合、接続されたボードに対し、仮想シリアルポートを介してスケッチをビルド後自動転送して、完了したらリセットを掛けてプログラムが起動するというスタイルが基本です。
ツール>シリアルポート にターゲットデバイスが見つからなくてもポート検索して見つかったボートに対してビルド後のバイナリコードを書き込み、フォルダがマウントされ、バイナリコードがコピーされて、プログラムが実行されることが期待できます。

ところがシリアルポートが見つからなくて書込に失敗することが多々ありますので対策が必要です。

方法論はいくつかあるのでしょうが、一例として紹介します。

  1. シリアルポートを認識させるためのUF2ファイル(Blink.ino.elf.uf2)を用意しておく
    https://content.arduino.cc/assets/Blink.ino.elf.uf2
  2. Pico用の仮想シリアルドライバファイル(pico-serial.inf)を用意しておく
    https://drive.google.com/drive/folders/15ub65XQQIVnaFDG6s73oI3qR4ZOZhQu6
  3. W5500-EVB-PICOをマウントし、Blink.ino.elf.uf2をドラッグアンドドロップする
  4. デバイスマネージャを開き、マウントされているシリアルポートに対してドライバの更新をする。
    その際にpico-serial.infを指定してインストールする。※この作業をしないとプログラムを書き込む度にBlink.ino.elf.uf2による初期化が必要になってしまう
  5. 次回以降見つからない場合はRUNボタンを押すとシリアルポートが認識されるはず。

PINGに反応がない】

W5500-EVB-PICOでEthernet関連のスケッチをビルドして実行するも全く反応しない場合、GP20(NICResetピン)がLOW状態に固定されてしまっている可能性が高いです。
そもそもResetPinはLowActiveであり、Highにプルアップされているのが一般かと思います。W5500のモジュール群は基本PullUpされているようです。
ところがW5500-EVB-PICOのNICResetに割付いているGP20は何らかの理由でPullUpされていません。
Openの状態で使用してもLOWに固定されてしまっているようで、プログラムを動かしてもNICResetがActiveのままのようです。そのため、PINGすら反応しません。

プログラム内でEthernet.begin()の前にdigitalWrite(GP20,HIGH)を実行することで解決するはずです。

W5500-EVB-PICO用のサンプルスケッチってないの?】

RP2040はMicroPythonで利用される方が主流なのか?ArduinoIDE用のスケッチを公開している方が少ないようです。
Arduinoの汎用スケッチも基本そのまま使えるという解釈なのかもしれませんが、細かな意識をされていないので単純な検証コードが動かないケースを見かけます。例えば、

  • RP2040の場合、ビルトインのLEDは基本GP25です。
    Arduinoの場合PC13だったりします。この違いと意識し、LED_BUILTIN という定数値が使われていればそのまま利用できますが、注意は必要です。
  • Picoは5つのアナログ入力があり、3つがユーザに開放されているかと思います。
    ADC(0) ユーザー GP26 31番ピン
    ADC(1) ユーザー GP27 32番ピン
    ADC(2) ユーザー GP28 34番ピン
    ADC(3) Vsys電源電圧
    ADC(4) 内蔵温度計
    ArduinoUNOが基本なのでA0..A5が対象だったりしているため そのままでは 0表示です。
  • 使用するライブラリも気にする必要があります。
    いろいろなCPUに対応するために内部で切り分けしているかと思うのですがRP2040用の切り分けをしていないとか、WIFIとEthernetが混在してうまく実現出来ないモノだとかがあります。

基本的なスケッチをW5500-EVB-PICOで動く様にレタッチして確認したモノを記録に残しておきたいと思いました。
追加ハードが必要なモノは兎も角単体で動作するものはレタッチし動作確認したモノを掲載したいと思いました。

  1. 01.Basics......
    1. AnalogReadSerial
    2. BareMinimum
    3. Blink
    4. DigitalReadSerial
    5. Fade
    6. ReadAnalogVoltage
  2. 02.Digital......
    1. BlinkWithoutDelay
    2. Button
    3. Debounce
    4. DigitalInputPullup
    5. StateChangeDetection
    6. toneKeyboard
    7. toneMelody
    8. toneMultiple
    9. tonePitchFollower
  3. 03.Analog......
    1. AnalogInOutSerial
    2. AnalogInput
    3. AnalogWriteMega
    4. Calibration
    5. Fading
    6. Smoothing
  4. 04.Communication......
    1. ASCIITable
    2. Dimmer
    3. Graph
    4. Midi
    5. MultiSerial
    6. PhysicalPixel
    7. ReadASCIIString
    8. SerialCallResponse
    9. SerialCallResponseASCII
    10. SerialEvent
    11. SerialPassthrough
    12. VirtualColorMixer
  5. 05.Control......
    1. Arrays
    2. ForLoopIteration
    3. IfStatementConditional
    4. switchCase
    5. switchCase2
    6. WhileStatementConditional
  6. 06.Sensors......
    1. ADXL3xx
    2. Knock
    3. Memsic2125
    4. Ping
  7. 07.Display......
    1. barGraph
    2. RowColumnScanning
  8. 08.Strings......
    1. CharacterAnalysis
    2. StringAdditionOperator
    3. StringAppendOperator
    4. StringCaseChanges
    5. StringCharacters
    6. StringComparisonOperators
    7. StringConstructors
    8. StringIndexOf
    9. StringLength
    10. StringLengthTrim
    11. StringReplace
    12. StringStartsWithEndsWith
    13. StringSubstring
    14. StringToInt
  9. 09.USB......主にArduino Leonardo向けのプログラム例
    1. Keyboard
    2. KeyboardAndMouseControl
    3. Mouse
  10. 10.StarterKit_BasicKit......StarterKit用のスケッチ
    1. p02_SpaceshipInterface
    2. p03_LoveOMeter
    3. p04_ColorMixingLamp
    4. p05_ServoMoodIndicator
    5. p06_LightTheremin
    6. p07_Keyboard
    7. p08_DigitalHourglass
    8. p09_MotorizedPinwheel
    9. p10_Zoetrope
    10. p11_CrystalBall
    11. p12_KnockLock
    12. p13_TouchSensorLamp
    13. p14_TweakTheArduinoLogo
    14. p15_HackingButtons
  11. 11.ArduinoISP......ArduinoをICSPライタとして使うためのスケッチ
    1. ArduinoISP
  12. Ethernet3......W5500モジュール用のスケッチ
    1. AdvancedChatServer
    2. BarometricPressureWebServer
      ※オリジナルはVTIテクノロジー社製気圧(絶対圧)センサSCP1000-D01のモジュールが必要
      ※このスケッチはM5ENV3に変更
    3. ChatServer
    4. DhcpAddressPrinter
    5. DhcpChatServer
    6. TelnetClient
    7. UdpNtpClient
    8. UDPSendReceiveString
    9. WebClient
    10. WebClientReadResponse
    11. WebClientRepeating
    12. WebServer
  13. TM1637......4桁7セグメントLED用のスケッチ
    1. ClockDisplay
    2. DisplayDecimal
    3. DisplayStr
    4. NumberFlow
    5. Stopwatch


戯言(nonsense)に戻る


問い合わせ頁の表示


免責事項

本ソフトウエアは、あなたに対して何も保証しません。本ソフトウエアの関係者(他の利用者も含む)は、あなたに対して一切責任を負いません。
あなたが、本ソフトウエアを利用(コンパイル後の再利用など全てを含む)する場合は、自己責任で行う必要があります。

本ソフトウエアの著作権は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社の登録商標です。
その他の企業名ならびに製品名は、それぞれの会社の商標もしくは登録商標です。
すべての商標および登録商標は、それぞれの所有者に帰属します。