2018年11月30日金曜日

dmonitor & 専用Nextionディスプレイ

Back


  今年の末までに全国のリピータのゲートウェイソフトが新しくなり、周辺アプリケーションの構成も大きく変わります。
  今まで無線機(ユーザ側)からの電波を受けたリピータの受信機が、コントローラを経てゲートウェイPCからインターネットに繋がっていました。 つまり、コントローラ(ID-RP2C)の次に繋がるゲートウェイPC内の機能は、ゲートウェイソフト(dsgwd:アイコム社製)であった訳です。
  新システムに於いては、コントローラの次に繋がるゲートウェイPC内の機能は、D-STAR_xchangeアプリ(xchange:D-STAR委員会製)となり、その次がゲートウェイソフトとなります。 これらの詳細に付いては、「D-STAR リピータ・ゲートウェイ(dsgwd)のインストール(CentOS 7 対応)」をご覧戴くとして、次には大きな機能の追加が有りました。それが、multi_forward というアプリケーション(D-STAR委員会製)です。
  既存のゲートウェイの間に入った xchange から特定のポートを振ってもらい、通信内容が multi_forward に接続(リフレクタをお使いのユーザは同様にと考えてください)した、複数のユーザにポーリングされます。また、その接続しているあるユーザからの信号は、他のユーザと共に本流であるゲート越え・山掛け通信に割り込みます。つまり電波の届き得ないリピータの会話をワッチ出来るのみならず、そのリピータ配下の山掛け通信、そのリピータへエリアCQしてきたコールサインルーティングとも交信が可能となります。この接続に使用するユーザ側ソフトウェアが dmonitor です。(本記事のdmonitorインストールに関してはJARL D-STAR委員会発行の「dmonitor」を参照させて戴きました。



=MEMO=

dmonitor by JARL の最新版は V01.16 です。

 
(2019.10.15)
当記事の内容は Raspbian Buster に対応させるため全面的に変更いたしました。(2019.08.08)
Raspberry用のイメージがリリースされました。 ➡ dmonitorイメージ(Buster版)
上記イメージ及びインストールについてのドキュメントは ➡ http://app.d-star.info/doc/dmonitor.pdf
メージを使ったdmonitorの製作は ➡ FB News RaspberryPiを使ったdmonitorの製作 by JK3AZL
イメージを一旦焼いた後のアップデートは次のコマンドで可能です。
sudo apt update && sudo apt upgrade -y

D-STAR ゲートウェイ・テスト・サイトについて

dmonitorリピータリスト3エリアの最初に、JL3ZBS A が有りますがリピータのゲートウェイPCのみを稼働させたテスト用サイトです。 xchange, dprs, dstatus, multi_forward が稼働しています。従ってここに接続後、ID-51Plus2 などの無線機のURに、「ならやま JK3ZNB F」などの自動応答をセットしてゲート越え等のテストをして戴けます。RFは設備自体が無いので出せず迷惑にはなりません。またその様子を表示する D-STAR DASHBOARD も有りますのでご参照ください。http://JL3ZBS-A.ddns.net
なお、接続送信のテスト用ですので、dmonitor複数接続で会話も可能ですが短くお願いいたします。

=MEMO= D*MONITORバージョン1.4に更新しました。(2019.09.10)
変更点(4Mバージョン可)
  • SYSTEM COMMANDページにIPアド
      レス表示
  • 同ページに明るさスライドバー
      設置
  • 接続リピータをタップすると、
      接続ユーザリストを表示
  • Returnボタンを無くし操作性を
      統一(タイトルバーをタップ)
  • 管理サーバ認証dmonitor用最新ドライバは D*MONITOR v1.4.2 です


    ご意見・お問い合わせはこちらへお願いします。
    D-STAR Network FORUM
    実際にリピータへ接続しモニター及び交信するためのソフトの名称は、dmonitor by JARL D-STAR Commitee/7M3TJZ 安田OMD*MONITOR はNextion に表示するための別のソフトの名称です。

    準備するもの
    1. Nextion 2.4インチ(NX3224K024_011)ディスプレイ

    2. WEBブラウザ(PC又はスマホなど)を使用してコントロールする場合は不要です。 本記事後半の「Nextionを使用せずWEB cgi でコントロールする場合」をご参照ください。

      現在 dmonitor が接続可能なリピータ数は200までで、4MBメモリーの Nextion 2.4 で230軒まで読み込めるようにしてありますが、拡張に備え16MBバージョンをご検討ください。

    3. Raspberry Pi ZERO W 及び microSDカード(クラス10、8GB以上推奨)

    4. GPIO の②、⑥⑧⑩を使用しますが、ピンは必ずしも必要では有りません。また、大きさに問題なければB/B+タイプでも問題有りません。 ただし、ここではWiFi機能がオンボードであるとして説明します。

    5. Raspbian 最新版ダウンロード

    6. Index of /raspbian/images から最新版(最下部)を取得します。

    7. アイコム社製データ通信ケーブル OPC-2350LU

    8. アイコム社製ターミナル/アクセスポイントモード付き無線機


    Rasberry Pi にOSをインストールし環境を整えます
    1. microSD にダウンロードした 20yy-mm-dd-raspbian-buster-lite.img を焼きます。

    2. Windowsマシンに Win32 Disk Imager 等をインストールして焼き付けます。

    3. Pi ZERO に使用する前に Pi B/B+で立ち上げて次の作業をして置くと便利です。

    4. 残念ながら、Pi ZERO にディスプレイやキーボードを接続出来る環境にあれば良いのですが、でないと次のように立ち上げ後すぐWiFiが接続出来るようにしておくか、USBタイプのLANアダプターを使うしかありませんが、いずれにしてもSSHを有効に出来なければ作業が出来ません。


      =MEMO= WindowsパソコンとRaspberry Pi Zero W しかない場合の WiFi と SSH の設定の仕方についてはこちらをご参照ください。 初めてのRasPiがZero W.さぁどうする!?

      $ sudo systemctl enable ssh.service
      $ sudo systemctl enable wpa_supplicant.service
      $ sudo wpa_passphrase WARPSTAR-8FE884 0046D824FE72C
      network={
      ssid="WARPSTAR-8FE884"
      #psk="0046D824FE72C"
      psk=19f5f008061fd70d815cfa74377a73222e0e42df442f76225f73b30d9bd3fb18
      }
      
      wpa_passphrase の後は、ご自宅(又はスマホ等)の SSIDパスワード(13桁) です。

      上の結果を、wpa_supplicant.conf にコピーして自宅 WiFi に接続出来るようにしておきます。
      $ sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
      
        GNU nano 3.2         File: /etc/wpa_supplicant/wpa_supplicant.conf
      country=JP
      ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
      update_config=1
      
      network={
              proto=RSN
              key_mgmt=WPA-PSK
              pairwise=CCMP
              ssid="WARPSTAR-8FE884"
              psk=19f5f008061fd70d815cfa74377a73222e0e42df442f76225f73b30d9bd3fb18
      }
      
      

      Raspberry Pi ZERO W に microSD カードを差し替えて電源を入れます。

    5. Pi ZERO W の GPIO と Nextion がデータを送受信できるようにします。

    6. $ sudo apt install wiringpi
      
      wiringPi をインストールします。

      $ sudo nano /boot/cmdline.txt
      
        GNU nano 3.2         File: /boot/cmdline.txt
      #dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=PARTUUID=60e09218-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait
      dwc_otg.lpm_enable=0 console=tty1 root=PARTUUID=60e09218-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait
      
      太線部分を削除します。元の標記の上で [Ctrl]+[k]とするとその行が消えます。次に[Ctrl]+[u]とすると一旦消えた行が貼り付けできます。これをもう一度実行し、行を複写して置いて一行を編集し、元の行を # でコメントアウトしておくと便利です。

      $ sudo systemctl disable serial-getty@.service
      $ sudo nano /boot/config.txt
      
        GNU nano 3.2         File: /boot/config.txt
          :
          :  最終行に追加 ↓
      dtoverlay=pi3-disable-bt
      

    7. 日付・時間をローカルタイムにします。

    8. $ sudo dpkg-reconfigure tzdata
      
      グラフィカルな画面が出てきます。[Asia]→[Tokyo]と選択してください。


    dmonitorのインストール

    =MEMO= ここでは最小のOSを使って、このRaspberry本体としてはWEBを表示せず(他のPCにて表示は可能)、 従ってWEBサーバはインストールしますが、ブラウザはインストールしません。

    1. WEBサーバとWEB用プログラムモジュールのインストール
    2. $ sudo apt update
      $ sudo apt upgrade -y
      $ sudo apt install lighttpd perl CGI.pm
      
    3. USBシリアルデバイスを認識できるようにする

    4. $ sudo nano /etc/udev/rules.d/99-serial.rules
      
        GNU nano 3.2         File: /etc/udev/rules.d/99-serial.rules
      SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", SYMLINK+="IDxxPlus", MODE="0666"
      


      =MEMO= Nextionを接続するため無線機をシリアルポート接続することは出来ません。

    5. aptインストール出来るようにリポジトリを構成

    6. $ cd /etc/apt/sources.list.d
      $ sudo wget –N http://app.d-star.info/debian/buster/jarl.list
      
      $ cd /var/tmp
      $ sudo wget –N http://app.d-star.info/debian/buster/jarl-gpg.key
      $ sudo apt-key add jarl-gpg.key
      $ cd
      

    7. インストールの実行

    8. $ sudo apt clean
      $ sudo apt update
      $ sudo apt install dmonitor
      

    9. インストール後のアップデートについて

    10. $ sudo apt clean
      $ sudo apt update
      $ sudo apt upgrade -y
      $ sudo apt autoremove -y
      $ sudo reboot
      
      通常の定期的な更新作業でdmonitorも自動アップデートされます。
      D*MONITOR V1.2 からは[Update]ボタンで上記コマンドが一挙に実行されます。

    11. ログファイルに関する設定

    12. $ sudo touch /var/log/dmonitor.log
      $ sudo nano /etc/rsyslog.conf
      
        GNU nano 3.2         File: /etc/rsyslog.conf
         :
         :
      #
      # Emergencies are sent to everybody logged in.
      #
      *.emerg             :omusrmsg:*
      
      
      #
      # dmonitor
      #
      local0.* /var/log/dmonitor.log
      
      今まで、ログは /var/log/messages に出力されていました。専用のログファイルが設定されたことになります。 messagesには変わらず、dmonitorを含む各種のログが出力されていますので D*MONITOR は変更なくご使用戴けます。


    Nextionディスプレイ表示プログラムのインストール

    =MEMO= ここまでのOSのインストールや dmonitor のインストールをせず、すべてセットアップ済みのイメージをダウンロードして、Nextion 表示プログラム D*MONITOR のみをインストールする方法も有ります。冒頭の「dmonitorイメージ(Buster版)」からダウンロードしてください。

    1. まず、Nextion の画面やデータを表示するレイアウトイメージをWindowsマシンにダウンロードします。

    2. github.com のJE3HCZ_2.4_dmonitor_最新版
      ファイル名にud の付いているのはアップサイドダウン(上下反転版)です。

      Windowsに、Nextionディスプレイ購入時、説明のある Nextion Editor がインストールされていれば、拡張子 .HMI の方を読み込み込んで編集できます。 ファイル名に _e の付いているものは16MBの拡張版用です。


      =MEMO= 新たにインストールされる方は NEXTION EDITOR LTS をダウンロードしてください。VER 0.58 は最新版ですが今までの VER 0.53 で作成されたデータと互換性が有りません。LTS はその資産保全のために今後長期サポートを約束されたバージョンとなります。(追記 2019.07.21)
      また、経験上D*MONITORのデータにおいては、LTSで設計した方がメモリが効率良く利用できました。(2019.09.06)

      また、エディターが無い場合は、拡張子 .tft の方を、FAT32でフォーマットされたmicroSDにコピー(焼くのではなく通常コピーです)して、Nextion の下部スロットに差し込みます。 その上で電源5V(Raspberry GPIO の 2番(赤)6番(黒))を供給(実稼働時は8番(黄)10番(青)も必要)すると、イメージがメモリーに転送されます。 作業が済んだら、電源を切って microSD を抜いて置いてください。


      =MEMO= こちらも参考にして戴ければ幸いです。 MMDVMノード用、ネットワークモニター Nextion 2.4 「Nextion 表示用のグラフィックスをメモリーにアップロードする」

    3. 次は、Raspberryで、githubの当方のサイトよりアプリを取得してください。

    4. 下記サイトを開き、最上部にある「最新版 [Latest release]」のZIPファイルのリンクの上で右クリックして[リンクのアドレスをコピー]してください。

      github.comのリリース版ページ

      wgetの後ろにスペースを一つ空けてURLを貼り付けます。(nanoではカーソルキーで位置決めして、マウス右クリック。バージョンは時期により変わります。)

      $ wget https://github.com/ytodo/nextion/archive/v1.3.1.zip
      

    5. 解凍してそのフォルダ内で、ソースをコンパイルします。

    6. $ unzip v1.3.1.zip
      $ cd nextion-1.3.1
      $ make
      

    7. 各ファイルを所定のフォルダに配置してください。

    8. $ sudo mv nextion /usr/local/bin
      $ sudo mv nextion.ini /etc
      $ sudo mv nextion.service /etc/systemd/system
      $ sudo mv nextion.timer /etc/systemd/system
      

    9. 自動起動を有効にします。

    10. $ sudo systemctl enable nextion.timer
      

    11. 環境設定ファイルを編集します。

    12. $ nano /etc/nextion.ini
      
        GNU nano 3.2                       File: /etc/nextion.ini
      ######################################################
      #                                                    #
      # dmonitor (Copyright(C) JARL D-STAR Committee )を #
      # 使用する時純正のWEBではなくNextion Display にて #
      # コントロールするようにするアプリです。             #
      #                                                    #
      #   名称: Nextion4dmonitor の環境設定ファイル        #
      #                                                    #
      ######################################################
      
      # ターミナルモード: 個人コール、アクセスポイントモード: クラブコール
      ### コールサインが8文字未満の場合、後ろにスペースを付け8文字にしてください。
      STATION=JE3HCZ D
      
      # 初期接続リピータ(指定しない時は=の後を削除してください。)
      DEFAULT_RPT=JL3ZBS A
      
      # リピータリスト書き込みタイミング調整(マイクロ秒/デフォルト10msec)
      ### 当方のテストではPi Zero で下記が最も良い数値(大きくても< 30000)
      SLEEPTIME=10000
      
      

      コメント行の記述に従って設定を行ってください。

    13. sudo reboot します。


    Nextionを使用せずWEB cgi でコントロールする場合
    1. イメージでダウンロードした物は勿論、個別にインストールした場合も、すでにWEB表示の準備は整っています。

    2. Windowsマシンやスマホから、http://[Raspberry IP Address] を指定して使用します。 もちろんWEBでコントロールしてもNextionディスプレイのメイン画面には接続先、ラストハード等が同様に表示されます。 但し、Nextion を使用している時はGPIOシリアルポート(ttyAMA0)に接続しているため、無線機の接続にはUSBシリアル変換ケーブルしか使えません。

    3. Nextion使用を目的に、個別インストールした物には、軽量化のためにデスクトップ環境及びブラウザーが入っていません。

    4. dmonitor のインストールされた Raspberry Pi 自体のデスクトップで表示したい場合は、イメージ版をご利用になることをお勧めします。


    Nextion でのコントール方法
    • 起動直後の画面です。

    • 上部の <<>> はリピータリストの「最後のページ」、「最初のページ」へ移動します。 また D*MONITOR の文字は「システムコマンドのページ」へ移動するタッチボタンになっています。
      下部、STATUS AND LASTHEARD は2行ですが現在の状況と今カーチャンクした人のコールサインを表示します。初期は新ゲートウェイ導入リピータとして読み込んだ数を示しています。
      =MEMO= バッファの拡張・縮小機能に対応したコマンドボタンを追加しました。UP でバッファが50ずつ増え、DWN で50ずつ減ります。

    • >> をタッチしてリピータリストへ移動します。

    • 接続したいリピータを選択して、タッチします。メインページに戻って[LINK TO : JP1XXX A]の様に表示され、ステータスの行が一つ下へ送られ、上の行に[DMONITOR START V00.64]の様に表示されます。
      移動には最上部の文字がボタン代わりになります。[Multi]: 戻る、[Forwarded]: メインへ、[Gateway]: 次ページへ
    • システムコマンドが実行できます。

    • Restart はこのNextion用プログラムをリスタートします。
      Reboot は Raspberry自体を再起動します。
      Shutdown は RaspberryのOSを終了します。電源を切っても良い状態です。電源を切るまではNextionの表示は消えません。
      タイトルバー をタップすると単純にメインページへ戻ります。
      Update ボタンを追加しました。(V1.2より)
      ボタンを押すと次の様に動作します。
      1.    WAIT for reboot!    にボタン表示が変化
      2. sudo apt update
        sudo apt upgrade -y
        sudo apt autoremove -y を順に実行
      3.  REBOOTing now...!  にボタン表示が変化し自動再起動
      4. 画面が表示されるまで待つ。
      うまく再起動までできなかった場合は、一度コマンドで上記どおりに試してみてください。エラーが発生していれば表示されます。
      =MEMO= V1.3での追加は「IPアドレス」を表示させ、他のPC・タブレットなどからWEBを表示しやすくしました。 又、最下部にスライドバーを設置し、「画面の明るさ」を左(消灯)から右(dim=100)まで調整できるようにしました。真っ暗になって困ったときはバーの100%付近をタップしてください。 (左の方だと[Shutdown]してしまう可能性が有ります)

    • あなたが接続したリピータに接続する他のユーザを表示します。

    • メイン画面で接続リピータの表示部分をタップしてください。「戻る」時は、タイトルバーをタップします。



    Nextion と Pi Zero W のアッセンブル例
    Nextion を分解し同サイズのアクリ板を作っておきます。ビス穴も合わせて開けます。 Nextion の裏カバーに2ヶ所、基盤パーツに干渉しない方の対角位置に3mmの穴を開け、短いビスでワッシャ2枚をスペーサにして Pi Zero W を取り付けます。 作っておいたアクリ板を、充分USBと電源コネクタを挿した時の隙間が空くように、スペーサを挟んで取り付ければ完成です。




    Back



    73 J E 3 H C Z/XLX047 B/C

    4 件のコメント:

    1. お疲れさまです。
      情報を提供いただき助かっています。いつもありがたく利用させていただいてます。
      Nextionディスプレイ表示プログラムのインストール
      3.解凍して各ファイルを所定のフォルダに配置してください。

      のところで上から手順どおり進めていくと

      $ sudo mv nextion.* /etc/systemd/system
      $ sudo mv nextion.ini /etc

      となっていますが、逆の方が初心者(判らず上から順番に指示どおり入力)には判りやすいかと思いました。
      掲載いただいている手順ですと、/etc/systemd/system/ にワイルドカード(*)で移動した時点でnextion.iniも移動させてしまうので、次のコマンドを入力したらNotfoundになります。
      $ sudo mv nextion.ini /etc
      $ sudo mv nextion.* /etc/systemd/system
      だと想定どおりになるかと思います。

      返信削除
      返信
      1. ご指摘有り難うございます。今回のnextion.ini 追加で、単純にその移動も下に加行してしまいました。*ワイルドカードもご存じの方は自己判断でやって戴けると思い各ファイルごとに修正しました。今後ともどうかよろしくお願い致します。

        削除
    2. お世話になります。
      こちらのサイトを参考にdmonitorでの接続が可能になりました。
      早速nextionのモニターを購入しGPIO直結での表示もできる様になりました。
      次に、現在のraspberrypiのケースではGPIO直結の場合、蓋が取り付け出来ないため
      USBシリアルコンバータを購入し、USB接続でのモニター表示を試していたのですが
      知識不足のため表示に至っておりません。
      dmonitorの場合、通信ケーブルもUSBに刺す事になる事、現在はpi3で使用予定ですが
      pi2等wi-fi接続機能のないタイプではwi-fiドングルも使う事になるかと思われます。
      その場合ttyUSB?の設定等、どのようにしたら良いのか分かりません。
      DVMEGA等の基盤が乗っている物でdmonitorを動かしたい場合もありますので
      ご指導宜しくお願い致します。

      返信削除
      返信
      1. 大変申し訳ありません。少し時間が出来たらその辺の拡張もと考えていたのですが、未だ手が付けられません。

        従って全くテストも出来ていませんのでポートがちゃんと開いてくれるか分かりませんが、次のようにしてみて戴けませんでしょうか(テストさせるようで申し訳ありませんが)

        git clone した後、makeするまでに、main.cをエディタで開いて戴いて、次の定義を変更してみてください。その上でコンパイルして戴けませんでしょうか。

        char *SERIALPORT = "/dev/ttyAMA0";
              ↓ ↓ ↓
        char *SERIALPORT = "/dev/ttyUSB0";

        ただ、DVMEGA 等と併用される場合 モデムソフト(例 MMDVMHost, DStarRepeater)が、USBを取ろうとする場合(Nextionの設定が有効など)衝突しますので成功するかは分かりません。
        実は、この辺が単独でPi Zero + Nextion の利用形態にした理由でもあります。悪しからず、宜しくお願い致します。

        削除