3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ポケットコンピュータ PC-G850VS を最近のマイコンと接続する

Posted at

ポケコンを最近のマイコンと接続する

ポケコン PC-G850VS に備え付けられている 11ピン I/O を使うと、
Arduino や ESP32 など、UART があるマイコンとシリアル通信できるようになります。

以下は ESP32 の場合で説明しますが、他のマイコンでもプログラムやピンを変えれば
対応できるはずです。

ポケコン⇔ESP32の双方向通信をUARTで

信号線が3本あれば、ポケコンとESP32の双方向通信が可能です。

結線

ポケコンの画面左側にある11ピン端子から接続します。
ピン番号は画面の読める方からみて、上から1番です。

PC-G850 方向 ESP32
2 VCC 5V
3 GND GND
6 RXD 17 TX2
7 TXD 16 RX2

5V線の接続はオプショナルです。
接続すると、ポケコンの電池からESPを駆動できます。
電池消耗を防ぐために、別電源でESPを動かすときは接続しないようにしましょう。

Devkit の機種によってはRX2、TX2が露出していないかもしれません。
スケッチで任意のピンを指定できますので問題ないはずです。

実験目的なら直結しても大丈夫ですが、ポケコンのロジックレベルは5Vなので
長期的な使用では TXD - RX2 間にロジックレベルコンバータか分圧抵抗をかませて
3.3Vに落としてやったほうがいいでしょう。

5V の Arduino なら直結しても問題ありません。

スケッチの例

ESP32
HardwareSerial Serial2(2);
void setup(){
  Serial.begin(115200);
  Serial2.begin(9600, SERIAL_8N1, -1, -1, true);
}

void loop(){
  if(Serial.available()){
    Serial2.write(Serial.read());
  }
  if(Serial2.available()){
    Serial.write(Serial2.read());
  }
}

ミソは Serial2.begin です。ライブラリのヘッダファイルを見てみましょう。

void begin(unsigned long baud, uint32_t config=SERIAL_8N1, int8_t rxPin=-1, int8_t txPin=-1, bool invert=false);

今回のコードでは

  • baud:9600ボー
  • config:データビット 8bit、ストップビット 1bit
  • rxPin txPin:デフォルト値 (他のピンにつないだ場合は変更してください)
  • inverttrue

としています。ポケコンのシリアル I/O は UARTと論理が反対になっています。
第5引数で true を指定しないと通信ができません。

Arduino の場合 (こんな目的で Mega を使う人はいないでしょうから、) ハードウェアシリアルが1系統しかありません。
そこで SoftwareSerial を使います。
SoftwareSerial でも論理の反転ができます。次のように宣言してください。

Arduino
#include <SoftwareSerial.h>
SoftwareSerial Serial2(rxPin, txPin, true);

void setup(){
    Serial2.begin(9600);
}

ポケコン側

通信する前にポケコンで設定が必要です。
TEXTSioFormat と操作して設定画面に入ってください。

次のように設定します。

項目 設定値
baud 9600
data bit 8
stop bit 1
parity none
end of line CR LF
end of file 1A
line number 任意
flow none

BASICBASIC と操作して PRO MODE に入り、NEW で書き始めます。

10 OP."COM1:
20 IFNOT EOF1 I.#1,IN$:P.IN$:G.20
30 IFINK.I.IN$:P.#1,IN$:G.20

Qiita ってBASICのシンタックスハイライトはないんですね(笑)

10行目はシリアル全二重通信を指定します。
OPEN "COM:とすると半二重通信になり、受信はできますが送信はできなくなります。
なお、行末のダブルクオーテーションは省略できます。 1

20行目は、受信バッファがなくなるまで1行ごとに入力を読み取り、画面に表示します。
これが1行で書けちゃうBASICは凄いですね!!!

ちなみに変数名が2文字の文字列型変数は16文字までしか保持できませんので、
これを超えたぶんは切り捨てられます。 2

ESP32と接続し、PCでシリアルコンソールを開いてから RUN してください。
なにかキーを押すと入力モードになり、Enterで送信します。

  1. 省略可能なのは行末のもののみです。行末まで文字列として扱われ、他のステートメントやコメントを続けることはできません。CASIO系のポケコンではできなかった記憶があります。CASIO Fx-870Pではたとえ他のステートメントを続ける場合でも閉じカッコ)が省略可能でしたが、PC-G850VSにこの機能はありません。

  2. 文字列配列を用いることで、255文字まで使用可能になります。冒頭でDIM S$(0)*255と宣言し、IN$S$(0)に書き換えます。

3
4
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
3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?