MachiKania

MachiKania type P ver 1.3 で、ネット接続

2023年9月29日

MachiKania type P の ver 1.3 を、2023年9月30日(日本時間)に公開しました。これにより、Raspberry Pi Pico W を利用して、WiFi 経由でネットに接続できるようになりました。

公式ページはこちら
GitHubリリースページはこちら

ReadMeに記載した更新履歴は、次の通りです。
・Raspberry Pi Pico W を用いた WiFi 接続に対応。次の命令・関数を追加: 
 DNS$(), IFCONFIG$(), NTP, TCPACCEPT(), TCPCLIENT, TCPCLOSE, TCPRECEIVE, 
 TCPSEND, TCPSERVER, TCPSTATUS, TLSCLIENT, WIFIERR(), WIFIERR$()
・GCOLOR()関数の不具合を修正
・一部USBキーボードでのキー入力不具合に対応
・EOFの時、FGETC()関数が-1を返すようにした
・embed用にXIAO RP2040, RP2040-Zero, and Tiny-2040に対応
・SPIの対応ポートをINIファイルで指定出来るようにした
・SERIALステートメントの第3引数を省略した時の不具合を修正
・例外をトラップして画面表示するようにした
・CORETIMERが電源投入後およそ2000秒後から不具合を起こす事を修正
・ILI9488に対応
・RTC(Real Time Clock)をサポート。次の命令・関数を追加: 
 GETTIME$(), SETTIME. STRFTIME$()
・ファイル保存時の日時設定をサポート
・NTPサーバーによるRTCのセットをサポート
・SYSTEM 201 呼び出しにより、ボード付属のLEDのオン・オフを出来るようにした
・メモリーアロケーションの不具合を修正
・FREMOVE/SETDIR等のファイル関連命令を使用時の、ガベージコレクション不具合を修正
・WAVEプレーヤーの安定性を改善
・クラスのスタティックメソッド呼び出し不具合を修正
・FFINGD$(), FINFO(), FINFO$()の3つの関数を追加。ファイル一覧の作成が可能に
・REM 文に「"」を含む際のコンパイル時の不具合を修正


WiFi 接続機能

ver 1.3 で追加された目玉機能は、WiFi 接続です。WiFi 対応の Raspberry Pi Pico W で MachiKania を利用する事により、インターネットに接続して情報を得たり、イントラネットでサーバーを構築して他の機器と接続したりすることができるようになりました。まずは、ドキュメントのwifi.txtをお読みください。

WiFi接続用のBASIC命令群が多数追加されています。ただし、これらを直接利用してネット接続するコードを書くのは骨が折れるので、ネット接続を容易に行えるクラスを用意しました。

・WGET クラス。インターネットのhttp、httpsサイトから情報を得ることができる。
・HTTPDクラス。http サーバーを構築することができる。

これらに関しては、別途記事を書きましたので、そちらを参照してください(WGETの記事はこちらHTTPDの記事はこちら)。

WiFi機能を使用する場合は、次の点に注意して下さい。

1.Raspberry Pi Pico Wを使用する(Raspberry Pi Picoでは不可)。
2.Raspberry Pi Pico W用のuf2ファイル(pico_w_ili9341/phyllosoma.uf2等)をロードする。
3.MACHIKAP.INIで、WiFi を使うように設定する(「USEWIFI」を有効にする)。
4.MACHIKAP.INIでWiFi接続用のSSIDとパスワードを指定する(「WIFISSID=」及び「WIFIPASSWD=」)。
5.MACHIKAP.INIで、国情報を設定する(日本の場合は、「WIFICOUNTRY=JP」)
6.リアルタイムクロックを利用する場合(下記参照)は、MACHIKAP.INIで「INITIALNTP」を有効にする。

なお、5.のWIFICOUNTRYは、cyw43のソースコード(cyg43-driver/src/syw43_country.h)の60行目辺りからを参考にしてください。

設定がうまく行けば、起動時に次のような表示になります。ただし、「192.168.1.156」と「macserver」の部分は、環境によって異なります。
2023-09-23-MachiKaniaWiFi.jpg
このような表示が確認できれば、MachiKaniaでWiFiを使う準備が整いました。

リアルタイムクロック

リアルタイムクロック(Real Time Clock; RTC)が使えるようになりました。現在時刻は、プログラム中で指定する事も、ネット上のNTPサーバーから取得して設定する事も出来ます。また、ファイル保存時に、作成時刻・日時を設定する事が出来るようになりました。

NTPサーバーを利用して現在時刻を取得する方法で、リアルタイムクロックを使用する場合は、次の点に注意してください。

1.Raspberry Pi Pico Wを使う。
2.Pi Pico W 用のuf2ファイルをロードする。
3.MACHIKAP.INIで、WiFi を使うように設定する(「USEWIFI」を有効にする)
4.MACHIKAP.INIで、タイムゾーンを設定する(日本なら、TIMEZONE=9)
5.MACHIKAP.INIで、起動時にNTPサーバーに接続する様に設定する(「INITIALNTP」を有効にする)

RTCを扱う命令・関数として、GETTIME$(), SETTIME, STRFTIME$() の3つを用意しました。これらの使い方の詳細は、help.txtを参照してください。なお、一連の命令・関数では、日付・時刻を扱うために、ISO-8601 形式の文字列を使います。 ISO-8601 文字列は、次の例のような書式です(日付と時刻の間に「T」が挟まれています)。

2023-09-01T13:00:00(2023年9月1日午後1時0分0秒の場合)

XIAO RP2040, RP2040-Zero, Tiny-2040などの、小型RP2040ボードに対応

Ver 1.2までは、Raspberry Pi Picoや、ピンに互換性のあるYD-RP2040などが対象でしたが、Ver 1.3からは、XIAO RP2040, RP2040-Zero, Tiny-2040といった、ピン数の少ない小型互換ボードでも使えるようになりました。ただし、ピン数がRaspberry Pi Picoより少ないため、組込み機能(embed)での対応です。

RP2040-Zero, Tiny-2040で使う場合、デフォルトではSPI用のポートが取れないので、MACHIKAP.INIでSPI用のポートを設定できるようにしました。多くの場合、以下のように設定すれば使えるようになります。
SPIMISO=4
SPIMOSI=7
SPICLK=6
このように設定すれば、MISOがGP4で、MOSIがGP7で、CLKがGP6で使えるようになります。その他の使い方は、Ver1.2と同じです。上記のように設定したMACHIKAP.INI以外にBASICプログラムを含むMACHIKAP.BASを用意して、convert.phpもしくはconvert_kb.phpを実行してください。

Seeed XIAO RP2040の場合、GP5が使えないため、専用のuf2ファイルを用意しました。machikap-p2-130-RC3.zipに含まれている「xiao_embed」ディレクトリーのものを使用してください。なお、I/Oの割り当ては、下の通りです。

・GP0 I/O bit0 / UART TX / PWM3
・GP1 I/O bit1 / UART RX / SPI CS / PWM2
・GP2 I/O bit2 / SPI SCK / PWM1
・GP3 I/O bit3 / SPI MOSI
・GP4 I/O bit4 / SPI MISO
・GP6 I/O bit6 / I2C SDA
・GP7 I/O bit7 / I2C SCL

ILI9488液晶に対応

ILI9341の2倍の大きさの、ILI9488に対応しました。キャラクター表示の場合60x40文字、グラフィック表示の場合480x320ピクセルの表示が可能です。machikap-p2-130-RC3.zipに含まれている「pico_ili9488」ディレクトリーもしくは「pico_w_ili9488」のものを使用してください。それぞれ、Raspberry Pi Pico用と、Raspberry Pi Pico W用(WiFi用)です。

その他

その他、バグ修正と、色々追加機能があります。

CPUが例外を起こした場合、例外原因などを画面に表示するようにしました。何が不具合が起きた時の原因を調べやすくなりました。

Raspberry Pi PicoとRaspberry Pi Pico Wのボード搭載LEDの制御が、SYSTEMステートメントで行えるようになりました。「SYSTEM 201,1」でオン、「SYSTEM 201,0」でオフです。

MMC/SDカードに存在するファイルの一覧を、BASICプログラム中で得ることができるようになりました。FFINGD$(), FINFO(), FINFO$()の3つの関数を追加しています。使用方法は、help.txtを参照してください。

コメント

コメントはありません

コメント送信