« Arduino IDEでのラズピコ開発環境 | トップページ | ラズピコのピン:自由になりそうだけど定義で固定されている »

2023年3月30日 (木)

ラズピコで2chシリアル入出力のテスト

ラズベリーパイ・ピコのシリアル入力は二つ。(USBを除いて)
これを使って2ch入力のシリアルデータロガーを実現できたら
エエなぁっと、ごそごそしてます。

Arduino UNOベースでは1ch入力のは作ってあり、
現用中です。
  ・Arduino-UNO + SDカードでシリアルデータロガー 完成形 今度こそ
ニッケル水素電池の放電データなどはこれで
記録しています。

なぜ2ch入力のが欲しいかというと、あれこれ測定した
計測データの集計です。
例えば、温度や照度や電圧、電流。
センサー側はシリアルデータとして出力できるように作って
あるのですが、それらを集計するとき、別の装置が出すデータ
との結合に困っちゃうのです。

例えば、4ch入力アナログデータロガー
これも、アナログ値の記録とともに、外部からのシリアル
データを取り込めるようにしています。
 これが便利。
 シリアルデータの結合がロガー内で実現できちゃうのです。

あれこれ計っていると、2ch以上のシリアル入力を持っていて、
それをうまいことログできる装置が「いるぞ!」っというのが
お試しの理由です。

ラズピコは2つのシリアル通信機能を持てっています。
それを生かして、2chのログをできないかと試したのが
今回のゴソゴソです。

まずはこんな回路。
Ll1_20230330165801
  ↓ 左のピコ、裏返しはマズイぞと描き直しました
Ll51

手っ取り早くでっち上げた実物回路がこれ。
Ll00
ラズピコ基板が2枚。
GNDを共通にして、シリアルが2ch。

回路図左側のラズピコは、試しとなるシリアルデータを
出力するだけ。
1chは1秒おきに。 2chは乱数で送出周期を可変。

回路図右のラズピコはそれを受けて、USBに(PCに向けて)
出力するというテスト回路です。

ch1とch2の二つのデータを受けて集約して、USBに出力
するのです。
その集約方法、例えば・・・
Ll2_20230330165801
こんなモードを考えました。
こんな具合に、受信データをまとめます。
Ll3
mode0はそれぞれの受信データを別行にしてログ。

mode1は固定長のデータを1行にまとめて処理でき
るように。

mode2はデータの受信順序を確認できるように、
ch1を優先してch2は補助で。

Ll2_20230330165801

PCを使ってこれをするのは、USB通信アダプタをつないで
できるように、こんなソフトを作ってあります。
  ※これは仕事で!
Ll4

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 版だとどうだ?を
  調べるほうがエエかも。

|

« Arduino IDEでのラズピコ開発環境 | トップページ | ラズピコのピン:自由になりそうだけど定義で固定されている »

ラズパイ・ピコ」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




« Arduino IDEでのラズピコ開発環境 | トップページ | ラズピコのピン:自由になりそうだけど定義で固定されている »