概要
Arduinoでプログラムを書くとき、PCとArduinoをRS-232Cで接続したいことがあります。もちろんシリアルモニタでなんとかなる場合もありますが、そうじゃなくてもう一系統欲しいんだよ!という思いを解決します。
解決方法
MAX3232を間に挟むことで解決できます。AliExpressやawmazonでArduinoにRS-232Cを追加するためのモジュールとして普通に売っています。複数の商品がありますが、写真を見る限り同じように見えるので、どれを買っても同じだと思います。
例えば以下のパーツなんて5個で600円なので、びっくり安いです(5個もいらないですけど、私はこれを買いました)
ソフトウェアシリアルを用いた通信
MAX3232をArduinoで利用する方法はとても簡単で、以下の図のようにDIGITALのピンとRXD/TXDのピンを接続するのみです。
MAX3232は5Vで動作するので電源は5Vから取り、GNDはGNDに接続します。
あとは、接続したピンの情報をもとに、適当にスケッチを描くだけです。
以下のようにスケッチを描けば、1秒ごとに"cnt:1"などと表示されます。
#include <SoftwareSerial.h>
// 第1パラメータがRXDと接続したPIN、第2パラメータがTXDと接続したPIN
SoftwareSerial max3232Serial(7, 8);
unsigned int cnt = 0;
void setup() {
max3232Serial.begin(115200);
max3232Serial.listen();
}
void loop() {
++cnt;
char sprintfbuff[64] = {0};
sprintf(sprintfbuff,"cnt:0x%02X", cnt);
max3232Serial.println(sprintfbuff);
delay(1000);
}
TeraTerm上の表示が↓
さいごに
ということで、MAX3232を用いてソフトウェアシリアルでRS232Cを追加する方法を書きました。
パーツを買って繋げるだけで動くのですが、それだけの情報が意外と無くて、Arduino初心者の私は困ったのを覚えています。
このMAX3232モジュールも問題が無いわけではないのですが、普通に動いてくれているので、この値段であれば及第点かなと思っています。
私が気が付いた問題点
このMAX3232モジュールは、アダプタ部分にスペーサが付いています。そして、私が利用しているUSB-シリアル変換ケーブルにもスペーサが付いています。
故に、これらが干渉して繋がらない!現象が発生しました。
なんでやねん!と思いながらMAX3232モジュール側のスペーサを取り外したら、なんかフレームごと取れました。
これこそDIYだぜ!!!!最高!