ポケコンを最近のマイコンと接続する
ポケコン 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 なら直結しても問題ありません。
スケッチの例
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
:デフォルト値 (他のピンにつないだ場合は変更してください) -
invert
:true
としています。ポケコンのシリアル I/O は UARTと論理が反対になっています。
第5引数で true
を指定しないと通信ができません。
Arduino の場合 (こんな目的で Mega を使う人はいないでしょうから、) ハードウェアシリアルが1系統しかありません。
そこでSoftwareSerial
を使います。
SoftwareSerial
でも論理の反転ができます。次のように宣言してください。
#include <SoftwareSerial.h>
SoftwareSerial Serial2(rxPin, txPin, true);
void setup(){
Serial2.begin(9600);
}
ポケコン側
通信する前にポケコンで設定が必要です。
TEXT
→Sio
→Format
と操作して設定画面に入ってください。
次のように設定します。
項目 | 設定値 |
---|---|
baud | 9600 |
data bit | 8 |
stop bit | 1 |
parity | none |
end of line | CR LF |
end of file | 1A |
line number | 任意 |
flow | none |
BASIC
→BASIC
と操作して 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で送信します。