受信の動作について

このトピックには 8 返信 、 2 ボイス が含まれます。 最終更新 by  Naka 2 年 前.

表示中の投稿 1 (合計 9 中)
  • 著者
    投稿
  • #2110

    Naka

    親機( Lazurite Sub-GHz , 受信してからすぐ送信の動作 ) x 1台
    子機( Lazurite Sub-GHz , 親機への送信動作のみ ) x 20台

    を考えております。親機は、多数の信号を受信して、すぐに別の親機へ送信する予定です。
    この構成の場合、親機は、rxCallback で割り込み処理にしていますが、
    rxCallback 実行中は、子機からの受信信号は、すべて無視される、、と考えてよいでしょうか?

    つまり子機から多くの信号を受信する場合、rxCallback の実行中は、
    受信しても、バッファーなどにため込まれず、単に無視する形でしょうか?
    それとも、バッファーにため込まれて、順番に、取りこぼしなく、受信していく、、という形でしょうか?

    子機の送信タイミングをずらして、負荷を減らした方がいいのか、考えたいので、アドバイスください。
    逆に、「Lazuriteの開発者」様でしたら、どういった形にしますか?

    #2111

    Naka

    追加で、、

    受信と、送信は、半2重でしょうか?
    受信しつつ、送信は、可能でしょうか?

    Sub-GHzを、
    2台つかって、1台は、受信専門 –> シリアル接続 –> 2台目は、送信専用。

    とでも、した方がいいでしょうか?

    #2118

    Lazuriteの開発者 1号
    キーマスター

    直接的な回答になっていませんが、ご了承願います。

    SubGHzは半二重の通信です。
    また、設定した周波数を使える送信機は一つです。1台が送信していると、それ以外の機器は送信をすることができません。
    送信を開始する前に他の無線機が信号を出していないか確認するCCAという処理が入っており、他の無線機が送信しようとした周波数を使用しているとFailが発生してエラーが返ってきます。

    それ以外にも様々な要因によって無線が受信機に届かないケースがあります。無線や有線にかからわず、通信では送信機が受信機が返すACKを確認できたら正しく受信できたと判断し、そうでない場合は送信機がもう一度データを再送するという仕組みが一般的です。

    その再送するタイミングをランダムにすることで他の機器との衝突を回避する「ランダムバックオフ」という仕組みが良く用いられます。

    この無線の基本的なところについては、近々ブログに掲載させていただきます。

    #2119

    Naka

    なるほど。。。 
    とすると、困りましたなあ。

    送信側が、バラバラな周波数を使うとします。
    たとえば、20台が、40–60ch の周波数を、1つずつ、使うとして、
    受信側の1台は、このすべての周波数を受信するようには、できませんか?

    [受信側]
    SUBGHZ_MSG SubGHz.begin( ALL_FREQ , 0x1234, SUBGHZ_100KBPS, SUBGHZ_PWR_20MW);

    といった感じで。。。内部的には、受信は、しているが、捨てているだけだと思うので、
    なんとか、ならないでしょうか?

    #2122

    Lazuriteの開発者 1号
    キーマスター

    受信機は一つの周波数しか受信することができません。

    正しく伝わっていなかった可能性がありますので補足しますと、920MHzはNaka様のみが使用している周波数ではなく、スマートメーターをはじめとする市販されている機器も同じ周波数を使用します。その間は通信することができません。機器ごとに周波数を変えるというのはご自身の機器の干渉を回避しただけです。

    また、1対20の通信をすると親機の方に負荷がかかるのでLazuriteでは動作速度の速いRaspbery Piを活用したゲートウェイの提供を行っています。

    #2126

    Naka

    SUBGHZ_TX_ACK_FAIL を受け取った場合には、自動では、再送されず、
    自分で、再送する形を組むのでしょうか?

    #2128

    Lazuriteの開発者 1号
    キーマスター

    設定することができるAPIを公開しましたので参考にしてください。
    リファレンスのページの中で
    SubGHz.getSendModeとSubGHz.setSendModeが追加したAPIになります。

    SubGHz.setSendModeのページに3回再送する場合のサンプルプログラムも記載しました。

    #2140

    Naka

    CCAエラー

    送信を開始する前に他の無線機が信号を出していないか確認するCCAという処理が入っており、他の無線機が送信しようとした周波数を使用しているとFailが発生してエラーが返ってきます。

    ということですが、送信時に、CCA エラーである、というのは、どうやって判定すればよいでしょうか?
    単純に、SUBGHZ_TX_FAIL でしょうか?
    あるいは、SUBGHZ_TX_COMP_FAIL でしょうか?

    #2141

    Naka

    おっと、、

    SUBGHZ_TX_CCA_FAIL

    を見つけました。。。

表示中の投稿 1 (合計 9 中)

フォーラム「Lazurite Basic/Sub-GHzのソフトウエアについて」は閉鎖されていて、新しいトピックも返信もできません。