eepooのアイコン画像
eepoo 2021年03月06日作成
製作品 製作品 閲覧数 1887
eepoo 2021年03月06日作成 製作品 製作品 閲覧数 1887

シリアルモニター

シリアルモニター

マイコンのシリアル出力をそのまま受け取って表示するハードウェアがあると便利かも、、 と思って作ってみました。
外観
トップカバーを外した状態
OLED ディスプレイを外した状態

藤色の部品はボトムカバー。pro miniは締結用の穴などないので、ボトムカバーに対しては厚めの両面テープで止めています。

使ったマイコンは Pro mini 168 5V
買ったときには168と328があるとは知らず、適当に買ったら、168で Adafruitのライブラリを使うとメモリが足りず動かなかったので、軽量なライブラリを探し、SSD1306Ascii にしました。

■パーツリスト
pro mini 168 5V
ピンソケット
SSD1306( OLED 128x64 モノクロ I2C display)
タクトスイッチx2 (キャップは適当に)
タクトスイッチ用基板(ユニバーサル基板を加工)
筐体 3D CADで設計し 3D printerで出力

■結線
pro mini SSD1306
A4     SDA
A5     SCL
VCC      VCC
GND    GND

タクトスイッチはそれぞれ片方を GNDに
片方を D2,D3に接続。

ピンソケットはDTR,TX,RXなどの方に 6pin のピンソケットを立てる。

ソースは以下の通り

bool halt = false; #define HALTPIN 2 #define BRCHANGE 3 unsigned long nextButton = 0; #define CMASK 200 #define LED 13 #define VER 1.0 unsigned long currBR = 9600;//9600を115200をトグル #include <Wire.h> #include "SSD1306Ascii.h" #include "SSD1306AsciiWire.h" #define I2C_ADDRESS 0x3C SSD1306AsciiWire oled; void setup() { Serial.begin(currBR); Wire.begin(); Wire.setClock(400000L); oled.begin(&Adafruit128x64, I2C_ADDRESS); oled.setFont(System5x7); oled.setScrollMode(SCROLL_MODE_AUTO); pinMode(HALTPIN, INPUT_PULLUP); pinMode(BRCHANGE, INPUT_PULLUP); pinMode(LED, OUTPUT); digitalWrite(LED, HIGH); oled.print("Serial Monitor ver:"); oled.println(VER); } void loop() { if (Serial.available() > 0) { // 受信したデータが存在する char aByte = Serial.read(); // 受信データを読み込む if (!halt) { oled.print(aByte); } } if (digitalRead(HALTPIN) == LOW) { if (millis() > nextButton) { halt = ! halt; if (!halt) { digitalWrite(LED, HIGH); } else { digitalWrite(LED, LOW); } nextButton = millis() + CMASK; } } if (digitalRead(BRCHANGE) == LOW) { if (millis() > nextButton) { switch (currBR) { case 9600: currBR = 115200; break; case 115200: currBR = 9600; break; } Serial.end(); oled.print("***** "); oled.println(currBR); Serial.begin(currBR); nextButton = millis() + CMASK; } } }

見てわかる通り、D3に繋いだ方のタクトスイッチを押すことでシリアル通信のスピードを変更します。今回は 9600と115200をトグルするだけにしましたが、容易に増やせますね、、
D2に繋いだボタンを押すと表示更新を止めます。
見たいところで止められる機能というわけです。
わかりやすいところにLEDを引き出しておくべきでしたが、まぁ、スペースもないことで、pro miniの オンボードLEDの光が隙間から見えるので、これでモニター中かストップ中か判別することにします。

接続は GND,VCCと対象のマイコンのTXをこちらのRXに繋ぐだけです。
対象のマイコンが Serialに書き出したものをせっせと表示します。
このライブラリはスクロールモードというのがあって、すごく簡単にスクロールしてくれるので楽でした。

実物の稼働状態はこんな感じです。

3Dプリントの仕上がりが雑で恥ずかしいです。

送信側は

Serial.println(millis());
delay(1000);

という感じです。

ちなみに、 FTDIボードをこんな風にさしてFWのバージョンアップを行えます。
キャプションを入力できます

最初FTDIボードを裏返しに差し込んで、書き込めないなぁ~ と悩みました。
裏返しに差し込んでも壊れないということがわかりました。

6
eepooのアイコン画像
プログラミング大好きな本業メカ屋 arduinoからマイコンに手を出し、BluePillやESP32などでいろいろ作っています。 HUB75のLED Matrix Panelのライブラリを作ったりもしています。
  • eepoo さんが 2021/03/06 に 編集 をしました。 (メッセージ: 初版)
ログインしてコメントを投稿する