0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Raspberry Pi Pico WでWebMiteを使う〜Telnet、NTPを利用する

Posted at

はじめに

PicoMiteにはインターネット接続機能がないのでRaspberry Pi Pico WやPico 2 WのWi-Fiによるネットワーク接続を利用するにはPicoMiteの別バージョンのファームウェアWebMiteを利用する。(Raspberry Pi PicoでPicoMite(MMBasic)を使う〜インストール参照)
ファームウェアの書き換えは[[Raspberry Pi PicoでPicoMite(MMBasic)を使う〜インストール]]を参照。
ここではRaspberry Pi Pico 2 Wを利用してWebMiteの機能を確認する。

Wi-Fiアクセスポイントへの接続

WebMiteでWi-Fi機能を利用するにはOPRION WIFIコマンドを使う。このコマンドでWebMiteのWi-Fi機能が有効化され、WebMite(MMBasic)でネットワーク機能が利用できるようになる。

OPTION WIFIコマンドの構文は次の通り。

> OPTION WIFI ssid password
  • ssid : 接続するWi-Fiアクセスポイント(AP)のSSID文字列
  • password : APのパスワード文字列

ssidがAP-hogehoge、passwordはpasswordの場合は次のように入力する。ssidとpasswordは文字列なので"で囲むか、文字列型の変数を利用する。

> OPTION WIFI "AP-hogehoge", "password"
PICO0123456789A connecting to WiFi...
Connected 192.168.10.20
>

コマンドを実行するとRaspberry Pi Pico WまたはPico 2 Wは再起動し、APへの接続を試みるメッセージが表示される。上記のPICO0123456789Aの0123456789AはRaspberry Pi Pico WまたはPico 2 WのIDである(PRINT MM.INFO(ID)で確認できる)。

SSIDとパスワードが正しければ、APに接続され、上記のようにAPから割り当てられてたIPアドレスが表示される(上記の例では192.168.10.20)。

ssidやパスワードを間違ったりで接続に失敗した場合には下記のように接続失敗のメッセージが表示される。SSIDやパスワードを確認し、再度試す。

> OPTION WIFI "AP-hogehoge", "xxxxxxx"
PICO0123456789A connecting to WiFi...
failed to connect.
>

割り当てられたIPアドレスの確認

APからRaspberry Pi Pico WまたはPico 2 Wに割り当てられたIPアドレスはMM.INFO(IP ADDRESS)コマンドで取得できる。コマンドプロンプト下記のように実行する。

> PRINT MM.INFO(IP ADDRESS)
192.168.10.20

Telnetによるリモートコンソールアクセス

WebMiteはTelnetによるリモートアクセスをサポートしているが有効化されていないのでOPTION TELNET CONSOLEコマンドで有効化する。Telnetの有効化は次のコマンドを実行する。

> OPTION TELNET CONSOLE ON

このコマンドを実行するとWebMiteが再起動し、クライアントからの接続が可能になる。このコマンドは一度実行しておけば削除するまで消えない。

コマンドの引数はONONLYOFFのいずれかを指定する。それぞれの出力先を下表に示す。

引数 コンソール出力先
ON USBとTelnet
ONLY Telnetのみ
OFF USBのみ

TelnetクライアントはmacOSの場合、macOS 10.13 High Sierraから削除されたのでHomebrewなどで別途インストールする必要がある。Windowsの場合、TeraTermを利用すればよい。

$ brew install telnet

macOSでTelnetによるアクセス例を以下に示す。

$ telnet 192.168.10.20  <- MacからPicoへのアクセス
Trying 192.168.10.20...
Connected to 192.168.10.20.
Escape character is '^]'. <- Picoと接続を抜けるキー操作

> files
A:/
   <DIR>  .
   <DIR>  ..
00:00 01-01-2024          4  bootcount
18:58 09-04-2025          0  mand.bas
19:07 09-04-2025      38358  out.bmp
2 directories, 3 files, 2191360 bytes free
>     <- CTRL+]で切断
telnet> Connection closed. <- CTRL+DでTelnet終了
$ <- シェルに戻った
  1. telnetコマンドの引数にRaspberry Pi Pico WまたはPico 2 WのIPアドレスを指定する。
  2. Returnキーを押すとWebMiteのプロンプト>が表示される
  3. コマンドを実行
  4. CTRL+]でWebMiteとの接続を切断する
  5. CTRL+Dでtelnetコマンドを終了

USB接続に比べると入力操作などが少しもっさりとした感じです。

TFTPによるファイル転送

PicoMiteはXMODEMでのファイル転送のみだったがWebMiteではTFTPでのファイル転送も可能になっている。WebMiteはWi-Fiに接続するとTFTPサーバが起動するため特段の操作はありません。

※ TFTPはUDPを使用したコネクションレスの軽量なファイル転送プロトコルです。

TFTPサーバの無効化・有効化

WebMiteのTFTPサーバはOPTION TFTPコマンドで無効化・有効化できます。
TFTPサーバの無効化はコマンドの引数にOFFを指定します。

> OPTION TFTP OFF

TFTPサーバの有効化はコマンドの引数にONを指定します。ONがデフォルトで設定されています。

> OPTION TFTP ON

macOSにはtftpコマンドが標準でインストールされているのでインストール不要です。

TFTPによるファイル送受信はmacOS側の操作のみでできます。ただし、tftpコマンドにはローカルおよびWebMite内のファイル一覧を取得する機能がないのでlsコマンドやWebMite内のファイル一覧はUSBあるいはTelnet接続したコンソールでfilesコマンドを実行して取得する必要があります。

ファイルのアップロード(Mac → Pico)

MacからPico(WebMite)へのファイルのアップロードの手順は以下の通りです。USB接続コンソールを開いている場合は別のターミナルを開いて操作する。

  1. cdコマンドでカレントディレクトリをアップロードするファイルのあるディレクトリに移動
  2. tftpコマンドでWebMiteが動作しているRaspberry Pi Pico WまたはPico 2 Wに接続
  3. 転送モードをasciiに変更(改行コードを変換)
  4. putコマンドでファイルをアップロード
  5. quitコマンドでtftpコマンドを終了

接続先のIPアドレスは192.168.10.20、Macでファイルの保存先ディレクトリが~/Documents/PicoCalcKit/src、転送するファイルがASCII-Table.basの場合の実行例を示します。

$ put ~/Documents/PicoCalcKit/src
$ tftp 192.168.10.20
tftp> mode ascii
tftp> put ASCII-Table.bas
Sent 89 bytes during 0.0 seconds in 1 blocks
tftp> quit

ファイルアップロード時にUSB接続のコンソールを開いていると下記のファイル作成要求と転送完了のメッセージが表示される。

TFTP request to create ascii file : ASCII-Table.bas
TFTP transfer complete

TFTPでアップロードされたファイルはフラッシュファイルシステムに保存されるので実行するときはプログラムメモリにLOADコマンドでロードして実行か、RUNコマンドでファイル名を指定するか実行する。

> LOAD "ASCII-Table
> RUN

> RUN "ASCII-Table

ファイルのダウンロード(Pico → Mac)

Pico(WebMite)からMacへのファイルのダウンロードの手順は以下の通りです。getコマンド以外はアップロード時と同じ操作です。

  1. cdコマンドでカレントディレクトリをダウンロードするファイルを保存するディレクトリに移動
  2. tftpコマンドでWebMiteが動作しているRaspberry Pi Pico WまたはPico 2 Wに接続
  3. 転送モードをasciiに変更(改行コードを変換)
  4. getコマンドでファイルをダウンロード
  5. quitコマンドでtftpコマンドを終了

接続先のIPアドレスは192.168.10.20、Macでファイルの保存先ディレクトリが~/Documents/PicoCalcKit/src、転送するファイルがASCII-Table.basの場合の実行例を示します。

$ put ~/Documents/PicoCalcKit/src
$ tftp 192.168.10.20
tftp> mode ascii
tftp> get ASCII-Table.bas
Sent 82 bytes during 0.0 seconds in 1 blocks
tftp> quit

アップロードの場合と同様にファイルのダウンロード時にUSB接続のコンソールを開いていると下記のファイル読み出し要求と転送完了のメッセージが表示される。

TFTP request to read ascii file : hat_mm.bas
TFTP transfer complete

バイナリファイルの転送

ファイル転送の多くはMMBasicのプログラムのテキストファイルとなので転送モードはASCIIを指定するが画像などのバイナリファイルを転送する場合には転送モードをbinaryにする。

TFTP接続された状態でモードの変更、Pico上にあるビットマップファイルhat.bmpをダウンロードする例を示す。

tftp> mode binary
tftp> get hat.bmp
Received 38358 bytes during 0.4 seconds in 75 blocks

USB接続のコンソールには以下のメッセージが表示される。

TFTP request to read binary file : hat.bmp
TFTP transfer complete

NTPからの時刻取得

WebMiteはインターネットアクセスできるのでWEB NTPコマンドを使用してNTPサーバから時刻を取得しPicoの時刻を設定できる。

WEB NTPコマンドの構文は次の通り。

WEB NTP [timeoffset [,NTPserver$]
オプション 説明
timeoffset タイムゾーンの指定で、日本の場合は9(JST)を指定する。省略時はUTCとして設定される。
NTPserver$ 時刻取得に利用するNTPサーバのIPアドレスまたはサーバ名。省略時はpool.ntp.orgが使用される。

pool.ntp.orgのIPアドレスは世界中に分散したNTPサーバを仮想的にまとめて一つのプールとして提供されたものでWEB NTPコマンドを実行するたびに利用するNTPサーバが変わるようになっている。

タームゾーンを+9(JST)、NTPサーバは指定しない場合の実行例を示す。

> WEB NTP +9
ntp address 139.162.81.45
got ntp response: 24/05/2025 10:38:25

タイムゾーンを+9、NTPサーバをnpt.nict.jp(独立行政法人情報通信研究機構のNTPサーバ)を使う場合の実行例を示す。

> WEB NTP +9,"ntp.nict.jp"
ntp address 133.243.238.244
got ntp response: 24/05/2025 10:42:51

WEB NTPコマンドをMM.STARTUPサブルーチンに組み込んで日時を取得することはできないようです。MM.STARTUPサブルーチンがWi-Fiへの接続が確立する前に実行されることが原因のようだ。

手動で実行するか、実行するプログラムの冒頭に記述することになる。
プログラムレイト実行例を示す。

NTP-test.bas
Print 'Date & time test'
Print Date$;Time$
Print 'Get datetime from NTP'
WEB NTP +9
Print Date$;Time$

このプログラムを実行すると時刻が設定されることが分かる。

RUN

01-01-202400:00:07

ntp address 162.159.200.123
got ntp response: 24/05/2025 10:53:29
24-05-202510:53:29

参考サイトなど

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?