はじめに
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が再起動し、クライアントからの接続が可能になる。このコマンドは一度実行しておけば削除するまで消えない。
コマンドの引数はON
、ONLY
、OFF
のいずれかを指定する。それぞれの出力先を下表に示す。
引数 | コンソール出力先 |
---|---|
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終了
$ <- シェルに戻った
- telnetコマンドの引数にRaspberry Pi Pico WまたはPico 2 WのIPアドレスを指定する。
- Returnキーを押すとWebMiteのプロンプト>が表示される
- コマンドを実行
-
CTRL+]
でWebMiteとの接続を切断する -
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接続コンソールを開いている場合は別のターミナルを開いて操作する。
-
cd
コマンドでカレントディレクトリをアップロードするファイルのあるディレクトリに移動 -
tftp
コマンドでWebMiteが動作しているRaspberry Pi Pico WまたはPico 2 Wに接続 - 転送モードを
ascii
に変更(改行コードを変換) -
put
コマンドでファイルをアップロード -
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
コマンド以外はアップロード時と同じ操作です。
-
cd
コマンドでカレントディレクトリをダウンロードするファイルを保存するディレクトリに移動 -
tftp
コマンドでWebMiteが動作しているRaspberry Pi Pico WまたはPico 2 Wに接続 - 転送モードを
ascii
に変更(改行コードを変換) -
get
コマンドでファイルをダウンロード -
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への接続が確立する前に実行されることが原因のようだ。
手動で実行するか、実行するプログラムの冒頭に記述することになる。
プログラムレイト実行例を示す。
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