【Seeeduino XIAO】RS232cから受信した信号をUSB HIDで送信してみる。
前回に引き続きRS232cからBluetoothのHIDプロファイルで送れるようにしてみました。
マイコンは無線使わないので小さくて安いSeeeduino XIAOを選定してみました。
フリスクのケースに入れたかったのですが、RS232cのコネクタが大きくてケースに入らなかった...
どうしたもんかと思いコンビニ探したらちょっと大きいロ○テのキシリトールタブレットのケースが
あったのでそれに入れました。
見た感じはこんな感じです。
機器仕様
・PCとBluetoothでペアリングすることで利用可能(パスワードなし)
・RS232cの信号のレベルをTTLレベルに変換し、非同期シリアル通信(UART)で受信したデータを
マイコンで受けて蓄積し、改行コードを受信したら文字列をUSB HIDでデータ送信。
HIDだったらキーボード入力と同じように扱えるから、Excelに取り込後に関数やVBAで
文字列データ処理する。
予備知識
Ardoino IDEにSeeeduino XIAOのボードライブラリをインストールする。
以下にセットアップ方法があります。
wiki.seeedstudio.com
接続
UART(HardwareSerial)
UART1(RX:GPIO7 TX:GPIO6)受信(RX)のみ使用
ボーレート:9600
ビット長:8ビット、パリティ:なし、ストップビット:なし(SERIAL_8N1)
送信側→本機
3.3V-3.3V
GND -GND
TX -GPIO7(RX)
ブレッドボード
回路図
USB HID仕様
#include <Keyboard.h> //#define bps0 115200 //bps UART0(USB) #define bps1 9600 // bps UART1 String strDATA = "No Data"; // 送信する文字列 volatile bool strConplete = true; void setup() { strDATA.reserve(128); // strDATAの文字列の格納領域を128byte数確保 Keyboard.begin(); // USB HID接続開始 // Serial.begin(bps0); // UART0 Serial1.begin(bps1); // UART1 delay(500); // Keyboard.println("USB HID"); } void loop() { while (Serial1.available() > 0) { // 受信したデータバッファが1バイト以上存在する場合 if (strConplete == true) { // 新たなデータを取得したときにデータ初期化 strConplete = false; // フラグ初期化 strDATA = ""; // データ初期化 } char inChar = (char)Serial1.read(); // Serial1からデータ読み込み if (inChar == '\n') { // 改行コード(LF)がある場合の処理 strConplete = true; // フラグを更新 Keyboard.println(strDATA); // USB HIDでデータ送信 } else if (inChar != '\r') { // CRの改行コードの場合は結合しない strDATA += inChar; // 読み込んだデータを結合 } } delay(1); }