質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
シリアルポート

シリアルポートは一度に一ビットごと移行される物理的なインターフェイスです。一般的には、9ピンのd-subコネクタであるRS-232を指します。

Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

マイコン

マイクロコンピュータの略で、CPUにマイクロプロセッサを用いたコンピュータのこと。家電製品、電磁機器などの制御に用いられています。単体でコンピュータとしての機能を一通り備えています。 現代のパーソナルコンピュータに近く、同時期のメインフレームやミニコンピュータと比べ、小さいことが特徴です。

Q&A

解決済

2回答

1433閲覧

Arduinoで不定期にシリアル情報を抜き取る

uimaro

総合スコア14

シリアルポート

シリアルポートは一度に一ビットごと移行される物理的なインターフェイスです。一般的には、9ピンのd-subコネクタであるRS-232を指します。

Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

マイコン

マイクロコンピュータの略で、CPUにマイクロプロセッサを用いたコンピュータのこと。家電製品、電磁機器などの制御に用いられています。単体でコンピュータとしての機能を一通り備えています。 現代のパーソナルコンピュータに近く、同時期のメインフレームやミニコンピュータと比べ、小さいことが特徴です。

0グッド

1クリップ

投稿2020/06/09 05:46

編集2020/06/09 23:51

ArduinoProMiniを使用しているのですが、
プログラムを実行中に不定期のタイミングでシリアル情報を抜き取ることは可能でしょうか?

具体的には、
・動作中のArduinoに対して物理的に接続を行い、それをトリガーとして動作中の情報をシリアル通信で受け取るというような。
・イメージとしては2~3日程度、継続して動作しているArduinoに、ケーブルを接続すると今までこのぐらい動かしましたという情報を教えてくれるといった具合です。

可否や方法、参考サイト等ご存じでしたらご教示ください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

thkana

2020/06/09 05:59 編集

> 物理的に接続 ってのはあんまり具体的な説明になっていないような。「抜き取る」というのも。 なんか面白そうなので、もう少し説明していただけませんか。
dodox86

2020/06/09 06:03 編集

確かに何か面白そうですね(笑) ハードウェア上の結線状態を監視して、シリアルケーブルを物理的に繋げたらそれをトリガーに動き始める、みたいなかんじでしょうか。
dodox86

2020/06/09 06:06

端子の電圧の変化で割込みとして入力。外部に回路組めばできそうな。(私はできませんけど)
uimaro

2020/06/09 23:39

thkana様  > 物理的に接続  これはdodox86様がおっしゃっているように、ケーブルが差し込まれたらそれをトリガーとしてシリアルを出力するといった意味合いです。  現状、Arduinoで常にSerial.printで情報を吐き出しているので、Arduino上の「TXD」「GND」にロボットケーブルでPCと接続してteratermで情報を見るという方法で実施しています。
ozwk

2020/06/09 23:46

ケーブルの抜き差しである必要はないんですよね?ボタン押すとか
uimaro

2020/06/09 23:52

ozwk様 できればケーブルの抜き差しのみで実施したいです。 イメージとしては2~3日程度、継続して動作しているArduinoに、ケーブルを接続すると今までこのぐらい動かしましたという情報を教えてくれるといった具合です。
ozwk

2020/06/10 00:25 編集

> 現状、Arduinoで常にSerial.printで情報を吐き出しているので、Arduino上の「TXD」「GND」にロボットケーブルでPCと接続してteratermで情報を見るという方法で実施しています。 これが何かしら不満だから今の質問なのだとは思いますが、何が不満なんでしょうか? 電源を入れたままのケーブルの抜き差し(活線挿抜)はそういうハードウェア設計(GNDが最初に挿さる、最後に抜ける)になっていないと危ないので挿しっぱなしで対応できるならそっちのほうが良いんですが。
uimaro

2020/06/10 03:47

ozwk様 現状で、見たい情報は見れているのでそこまで不満はありません。 ただ、今の状態だと、常にArduino側でシリアルを吐き出すようなコードにしなくてはならないので、 できるようなら、必要な時だけSerial.printを実行したいという思いです。
guest

回答2

0

ベストアンサー

ちょっと考えてみたけれど

■「ケーブルを挿す」というのは切り口はどこを考えていますか?
USB-シリアル変換をArduino側にぶら下げておいてUSBコネクタを抜き差しするとすると、
・PC側でデータを記録するソフトを立ち上げておかないといけない。ケーブルを繋げたとたんにデータが流れ出すと(あるいは多少の時間を置いたとしてもそれまでに準備が完了しないと)取りこぼす
・しかし、多くのソフトは、存在しないCOMポートをオープンすることは出来ず、つまりUSBコネクタを挿してからでないとCOMポートに繋げない。

変換した側をArduinoと付け外しする場合は、RX/TX端子よりGND端子が確実に先に接続される必要がある。そうしないとArduinoやUSB-シリアル変換器が壊れる可能性がある。どうやってそれを担保するか?

ということで、確実にデータを取り込むためには、ケーブル等は確実に接続を行った後に、データ収集のトリガはスイッチなどでかけるか、あるいは繋いだシリアルでデータ要求の(Arduinoへの)送信コマンドを発行するか、というほうがよいかと思います。
USB-シリアル変換のRTS端子あたりでそんな検出ができないかと思って手持ちの変換器で見てみましたけれど、あまり安定した検出には使えそうにありませんでした。

■「2~3日程度、継続して動作」とのことですが、その間に貯まるデータの量はどのくらいを目論んでいますか? たった2KBしかRAMが載っていないArduino PRO Miniではその辺がとても心配です。

ESP32で、BluetoothやWiFiをつなげたらデータを吐き出す、とかだといろいろ遊べそうな気もしますが。

投稿2020/06/10 11:25

thkana

総合スコア7629

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

シリアルの受信を監視して、特定のキーワードが受信されたら何らかの情報を返す、というコードを組めば何でも可能ですね

投稿2020/06/09 06:09

y_waiwai

総合スコア87747

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

uimaro

2020/06/09 23:41

特定のキーワードを受信側から送信しないパターンは難しいでしょうか? 難しいようであればVBA使って、ご指摘のようなコードを組んで実装したいと思います。
y_waiwai

2020/06/09 23:54 編集

ケーブルの接続有無は信号の状態見てればわかりますが、それであらゆる情報を送るというのは現実的ではないですね そこでなにかコマンド送ってそのレスポンスを得るってことになります #結局一緒 どういうものをイメージしてるんでしょうか。
uimaro

2020/06/10 03:52

具体的なイメージとしては、繰り返し動作を行っているプログラムがあって、これを確認したいときにケーブル接続して閲覧するといった形です。 別途コメント欄でも別の方に向けて返信しておりますが、TXD・GNDにケーブルを指してPCと接続し、テラタームでシリアルを読み取る方法で何とか実現はしています。
y_waiwai

2020/06/10 04:00

まあ、常時動作ログを垂れ流しておいて、つないだら見れる、ってていどでいいんではないかと。 こちらからなんかコマンドを与えたら、ログを一時停止して、そのレスポンスと返す、とかすりゃいいんじゃないかと。 こういうのはよくやるテですね
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問