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インストールに関しては2018.10.15付けJARL D-STAR委員会発行の「dmonitor」を参照させて戴きました。



=MEMO= D*MONITORバージョン1.1に更新しました。
230件のリピータ読み込み、自局設定出来るようにしました。件数は現在のリピータ数からするとギリギリとなりますが、現在旧システムでしか動かすことが出来ないコントローラID-RP1が存在していて少し時間的余裕が有ること(現在新ゲートウェイ150サイト)、またNextion 2.4インチ 4MBタイプを使用しているためメモリーをフルに使用していること(グラフィックを使用せずテキストで対応)などの理由で、このタイプのNextionでは限界とご辛抱ください。(230件を越えてもエラーにはなりません。)なお、2.4インチタイプに16MBタイプもありますので、それで余裕を持たせグラフィックも使用したものにしようと注文中です。 (2019.01.03)
=MEMO= D*MONITORバージョン1.1 修正版をアップしました。
リピータの読み込み数が140軒以上になるとその分が読み込めない現象を修正しました。(2019.01.16)
=MEMO= dmonitor by JARL の最新版は V00.36 です。(2019.06.14)
バージョン00.24からRaspberry用のイメージがリリースされました。 ==> D-STAR技術情報
イメージを一旦焼いた後のアップデートは次のコマンドで可能です。
sudo apt update && sudo apt upgrade -y
ご意見・お問い合わせはこちらへお願いします。
D-STAR Network FORUM トピック:Nextion for dmonitor Ver1.1 リリース
実際にリピータへ接続しモニター及び交信するためのソフトの名称は、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 にダウンロードした 201y-mm-dd-raspbian-stretch-lite.img を焼きます。

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

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

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

    $ 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 2.7.4         File: /etc/wpa_supplicant/wpa_supplicant.conf
    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
    }
    
    

  5. wlan0 を有効にするためのファイルを編集します。

  6. $ sudo nano /etc/network/interfaces.d/ifcfg
    
      GNU nano 2.7.4         File: /etc/network/interfaces.d/ifcfg
    auto lo
    iface lo inet loopback
    
    auto eth0
    iface eth0 inet dhcp
    
    auto wlan0
    allow-hotplug wlan0
    iface wlan0 inet dhcp
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
    
    

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

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

  8. $ sudo nano /boot/cmdline.txt
    
      GNU nano 2.7.4         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 2.7.4         File: /boot/config.txt
        :
        :  最終行に追加 ↓
    dtoverlay=pi3-disable-bt
    


dmonitorのインストール
  1. USBシリアルデバイスを認識できるようにする

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

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

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

  5. インストールの実行

  6. $ sudo apt clean all
    $ sudo apt update
    $ sudo apt install dmonitor
    

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

  8. $ sudo apt update
    $ sudo apt upgrade -y
    
    通常の定期的な更新作業でdmonitorも自動アップデートされます。



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

  2. github.com のJE3HCZ_2.4_dmonitor_v1.1
    github.com のJE3HCZ_2.4ud_dmonitor_v1.1(上下反転タイプ)

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

    また、エディターが無い場合は、拡張子 .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.1.2.zip
    

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

  6. $ unzip v1.1.2.zip
    $ cd nextion-1.1.2
    $ 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 2.7.4                       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 でコントロールする場合
JARLインストールマニュアルより転記します。
  1. 環境としてWEBアプリ apache2 をインストール

  2. $ sudo apt install apache2
    

  3. インストール後、cgi が実行できるように下記の設定をおこないます。

  4. $ sudo ln -s /etc/apache2/mods-available/cgi.load /etc/apache2/mods-enabled/cgi.load
    

    $ sudo nano /etc/apache2/sites-available/000-default.conf
    
      GNU nano 2.7.4         File: /etc/apache2/sites-available/000-default.conf
    <VirtualHost *:80>
       :
       :
        #Include conf-available/serve-cgi-bin.conf 有効にする
       ↓
        Include conf-available/serve-cgi-bin.conf
    
    <VirtualHost>
    

  5. perl のインストールとweb 用モジュールのインストール

  6. $ sudo apt install perl
    $ sudo apt install CGI.pm
    
    $ sudo reboot
    

    Windowsマシンやスマホから、http://[Raspberry IP Address]/cgi-bin/repeater_mon を指定して使用します。 もちろんWEBでコントロールしてもNextionディスプレイのメイン画面には接続先、ラストハード等が同様に表示されます。


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

  • 上部の <<>> はリピータリストの「最後のページ」、「最初のページ」へ移動します。 また D*MONITOR の文字は「システムコマンドのページ」へ移動するタッチボタンになっています。
    下部、STATUS AND LASTHEARD は2行ですが現在の状況と今カーチャンクした人のコールサインを表示します。初期は新ゲートウェイ導入リピータとして読み込んだ数を示しています。
  • >> をタッチしてリピータリストへ移動します。

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

  • Restart はこのNextion用プログラムをリスタートします。
    Reboot は Raspberry自体を再起動します。
    Shutdown は RaspberryのOSを終了します。電源を切っても良い状態です。電源を切るまではNextionの表示は消えません。
    Return は単純にメインページへ戻ります。



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 の利用形態にした理由でもあります。悪しからず、宜しくお願い致します。

      削除