ラズピコで2chシリアル入出力のテスト
ラズベリーパイ・ピコのシリアル入力は二つ。(USBを除いて)
これを使って2ch入力のシリアルデータロガーを実現できたら
エエなぁっと、ごそごそしてます。
Arduino UNOベースでは1ch入力のは作ってあり、
現用中です。
・Arduino-UNO + SDカードでシリアルデータロガー 完成形 今度こそ
ニッケル水素電池の放電データなどはこれで
記録しています。
なぜ2ch入力のが欲しいかというと、あれこれ測定した
計測データの集計です。
例えば、温度や照度や電圧、電流。
センサー側はシリアルデータとして出力できるように作って
あるのですが、それらを集計するとき、別の装置が出すデータ
との結合に困っちゃうのです。
例えば、4ch入力アナログデータロガー 。
これも、アナログ値の記録とともに、外部からのシリアル
データを取り込めるようにしています。
これが便利。
シリアルデータの結合がロガー内で実現できちゃうのです。
あれこれ計っていると、2ch以上のシリアル入力を持っていて、
それをうまいことログできる装置が「いるぞ!」っというのが
お試しの理由です。
ラズピコは2つのシリアル通信機能を持てっています。
それを生かして、2chのログをできないかと試したのが
今回のゴソゴソです。
まずはこんな回路。
↓ 左のピコ、裏返しはマズイぞと描き直しました
手っ取り早くでっち上げた実物回路がこれ。
ラズピコ基板が2枚。
GNDを共通にして、シリアルが2ch。
回路図左側のラズピコは、試しとなるシリアルデータを
出力するだけ。
1chは1秒おきに。 2chは乱数で送出周期を可変。
回路図右のラズピコはそれを受けて、USBに(PCに向けて)
出力するというテスト回路です。
ch1とch2の二つのデータを受けて集約して、USBに出力
するのです。
その集約方法、例えば・・・
こんなモードを考えました。
こんな具合に、受信データをまとめます。
mode0はそれぞれの受信データを別行にしてログ。
mode1は固定長のデータを1行にまとめて処理でき
るように。
mode2はデータの受信順序を確認できるように、
ch1を優先してch2は補助で。
PCを使ってこれをするのは、USB通信アダプタをつないで
できるように、こんなソフトを作ってあります。
※これは仕事で!
4chの入力まで対応しています。
通信があった日時情報とともにログします。
あちこちからやってくる通信データの内容確認、
整合性をチェックするのが目的です。
今回のは単純ログ。
受けた内容を取りこぼさずにログできればOKと。
その前段階のテストプログラムです。
・送信側
ダウンロード - tx_data_2ch1.txt
・受信側
ダウンロード - rx_data_2ch1.txt
これからもうちょい「身を付けて」(太らせて)
SDカードにログできるように手直しします。
もう一つ、こんなモードもいるかな。
ch1をマスター、ch2をスレーブに接続。
ch1がch2にコマンドを送って、ch2からの返答を
待つような通信だと、ch1の受信後、ch2を待って
から1行の電文にして出力。
mode0のように電文が別の行だと、後処理で
まとめなくてはなりません。
mode1のように1行が固定文字数だと、例えば
グラフ化のためGNUPLOTに食わすのも楽になります。
ATmega4809 だとシリアルが4本(40pin DIPだと3本)。
もっとチャンネルを増やせます。
それにしても、ラズピコの内部処理がつかみ切れません。
シリアル通信の割り込み、バッファを増やしたいんだけど、
・・・わからんまま。
Arduino IDEで使ってる環境のせい?
Earle F. Philhower, III 版だとどうだ?を
調べるほうがエエかも。
| 固定リンク
「ラズパイ・ピコ」カテゴリの記事
- トラ技2024年5月号に「3.3/65535」(2024.04.07)
- ラズピコだと1/65535が出現(2024.03.30)
- Help me! ラズピコ、Philhower版だとスケッチをアップロードできない(2023.04.12)
- Arduino IDEでのラズピコ開発環境 Philhower版が正解でしょう(2023.04.04)
- ラズピコのピン:自由になりそうだけど定義で固定されている(2023.04.03)
コメント