はじめに
『MSX0 Stack』付属の IoT BASIC サンプルを『Turbo Pascal』へ移植してみます。
See also:
サンプルプログラム
オリジナルの IoT BASIC サンプルは、microSD 内の DSK\SAMPLE.DSK
に格納されています。
サンプルの説明は DOC\SAMPLE.TXT
にあります。
まずは BASIC サンプルでオリジナルの動作を確認してみる事をオススメします。
移植リスト
移植したサンプルのリストです。サンプルのリンク先はソースコードではなく独立した記事となっています。
サンプル | 本体 | 説明 |
---|---|---|
ACCEL.PAS | 〇 | Battery Bottom2 の加速度センサの値を取得して表示します。 |
ANALOG_G.PAS | × | Port B (黒) のピン 36 からのアナログ入力信号で簡単なグラフを描きます。 |
DHT_KNJ.PAS | × | 温度湿度センサから取得した値を表示します。 |
I2C.PAS | × | DHT20 に対して直接 I2C アクセスを行い温度を取得します。 |
INFO.PAS | 〇 | システムメニューにある MSX0 Stack 情報 と同等のプログラムです。 |
LED.PAS 1 | 〇 | Face Bottom Base や Battery Bottoms に搭載されている 10 個の LED を iotput 命令を使って制御します。 |
PERFORMC.PAS | 〇 | 仮想 Z80 の周波数を振ってオーバークロック余力を測定します。 |
RCONSOLE.PAS | 〇 | リモートコンソールに文字列を送信します。 |
SEND2NET.PAS | × | 温度湿度センサーから値を取得しサーバーへ送信します。 |
TOUCH_G.PAS | 〇 | 本体の LCD タッチパネルを使って簡単なお絵描きができます。 |
TREE.PAS | 〇 | ノードを再帰的にスキャンしてリスト表示します。 |
WIFILVL.PAS | 〇 | 接続中の Wi-Fi AP の RSSI (受信信号強度) 値を表示します。 |
比較対象として BASIC で実行した結果も掲載してあります。Turbo Pascal に興味がなくても何かの参考にはなるかもしれません。
※ ×
になっているものは外部センサーが必要です。
その他のサンプルリスト
IoT BASIC サンプルにないサンプルのリストです。
サンプル | 本体 | 説明 |
---|---|---|
BLINK.PAS | × | いわゆる L チカを行います。 |
BUZZER.PAS | × | パッシブブザーを鳴らします。 |
※ ×
になっているものは外部センサーが必要です。
外部センサー
サンプルプログラムには『MSX0 Stack』に内蔵されていないセンサーを使ったものがあります。
Grove Beginner Kit
外部センサーは Seeed 社の 『Grove Beginner Kit for Arduino』 が想定されています。
中央の『Seeeduino Lotus (Arduino UNO R3 互換)』をプログラミングする事で、各種センサーがそのまま使える製品となっています (画像の状態ですべてのセンサーが結線されています)。
クラウドファンディング版『MSX0 Stack』に付属するのは『Grove Beginner Kit for Arduino』のカスタム品である 『Grove Beginner Kit for MSX0』 です。
Grove コネクタの位置が裏表になっている以外の差異はありませんので、当記事および関連記事ではオリジナルの方の画像を使っています。
切り離す or 切り離さない?
センサーモジュールを切り離してセンサー単体で使う事もできますが、単体で使う場合には付属の Grove ケーブルで結線する必要があります。もちろん一度切り離したセンサーを元に戻すのは不可能です。
・切り離して使う場合の注意点
センサーモジュールを切り離して使う場合、ビア (穴) でカットしないで下さい。ビアでカットしてしまった場合には、切断面をきれいにして短絡を防止してください。
センサーモジュールと MSX0 を Grove ケーブルで直接接続して使います。
・切り離さないで使う場合の注意点
センサーモジュールを (物理的に) 切り離して使わない場合、『Seeeduino Lotus』に空のスケッチを転送して制御 (デモプログラム) を殺しておく必要があります。
これを行わないと、センサーが動作しないか正しい値を返しません。Wiki にある Arduino IDE の使い方を参考にして空のスケッチを書き込んでください。デモプログラム (初期ファームウェア) を書き込んで元の状態に戻す事も可能です。
MSX0 とは普通に接続してもいいのですが、『Grove Beginner Kit for MSX0』だと Grove コネクタが裏にあるのでそのままでは接続しづらいです。中央の『Seeeduino Lotus』の Grove コネクタに接続しましょう。
I2C タイプのモジュールを挿せる所が 2 つあります。DHT20 等の I2C センサーを使う際にはいずれかに接続してください。
See also:
- Grove Beginner Kit for Arduino (Switch Science)
- Grove Beginner Kit for Arduino (秋月電子)
- Grove Beginner Kit For Arduino Wiki ページ (seeedstudio.com)
- Grove Beginner Kit for Arduino ユーザーマニュアル (seeedstudio.com) 2
- Grove Beginner Kit for Arduino 初期ファームウェア (seeedstudio.com) 2
- Arduino (ht-deko.com)
LTE 通信モジュール
クラウドファンディング版『MSX0 Stack』Plan E に付属する通信モジュールです。
LoRaWAN 通信モジュール
クラウドファンディング版『MSX0 Stack』Plan F に付属する通信モジュールです。
PoE 通信モジュール
クラウドファンディング版『MSX0 Stack』Plan G に付属する通信モジュール (有線 LAN + PoE モジュール) です。
- M5Stack 用 W5500 搭載 LAN モジュール (PoE 対応) (Switch Science)
- M5Stack 用 W5500 搭載 LAN モジュール (Switch Science)
- M5Stack Core2 用ポート拡張モジュール (Switch Science)
UART モジュール
『MSX0 Stack』の PortC に接続して使うユニットです。
Turbo Pascal
MSX-DOS/2 では CP/M-80 用の『Turbo Pascal』が動作します。CP/M-80 で動作する『Turbo Pascal』の最終バージョンは 3.01A です。
ここに MSX 固有の機能を使うためのライブラリを整備して、IoT BASIC サンプルを移植しています。
必要なライブラリは各移植記事の中にも記述してあります。
See also:
おわりに
記事中のソースコードは GitHub でも公開されています。