にゃん太郎とアマチュア無線

メインクーンのにゃん太郎と趣味のアマチュア無線と電子工作の記録です。

aprs

yaac aprs に簡易whether BME280を追加

ちょっとジャンク箱を探してみるとBME280のセンサーを発見
これはAMAZONで1000円ちょいで買える温度 湿度 大気圧のセンサーですが、昔そういえばESP8266で昔 温度や湿度を測って遊んだことを思い出しました。
するとYAACでaprsの気象用でもサポートされていたのを発見 そこでraspbery-piでつないで簡易気象ステーションを作ってみました。aprsのサポートされている気象ステーションはいろいろあるけど昔の情報ばかりでしかも機器が高くて手が出ません。
BME280では大気圧 温度 湿度が取得できます。それにさらに安いBMP280というのがありますがこれは湿度が取得できません。ほかの雨量 風速 風向などは高価なほかの機器にお任せすることにして安価なこれだけで作ってみました。
接続もraspberry-piのI2Cに接続とお手軽です。問題はBME280自体を外に設置すればいいんだけど、とりあえずお手軽にraspberry-piに接続して室内でやってみます。ちゃんとやるのであれば外にBME280を室外に設置してください。
YAACにはWXNOW.TXTがサポートされているのでこれを取り込んでAPRSにアップロードしてみます。
とりあえずデータ取得にはIT女子のサイトを参考にさせてもらいました。ここのbme280_custom.pyをそのまま利用してデータを取得して、WXNOW.TXTに変換すればいけそうです。
bme280_custom.pyから取得できるreadData()は"1016.92,11.57,61.12"みたいな感じで取得できます。順序は 気圧 温度 湿度 みたいです。

WXNOW.TXTのデータフォーマットは下記です。

Feb 01 2009 12:34
272/010g006t069r010p030P020h61b10150

でもって取得できないデータは(風速 風向 雨量)0を返すようにしました。python初心者で初めて作ったんですが、わりと簡単にできました。

#coding: utf-8

 import bme280_custom
 import datetime
 import os
 dir_path = '/home/master'
 now = datetime.datetime.now()
 now1 = now.strftime('%a %d %Y %H:%M')

 wxnow = bme280_custom.readData()
 wxnow2 = (wxnow.replace('.','').replace(',',''))

#華氏 摂氏変換
 ondo =(wxnow[8:-9])
 celsius = int(ondo)
 ondo1 = (celsius * 1.8) + 32
 ondo2 = (str(ondo1))
 ondo3 = (ondo2[:2])

 press = (wxnow[0:6])
 press1 = (press.replace('.',""))

 hum = str(wxnow2[-4:-2])
 wxnow1 = ("000/"+"000" + "g000"+"t0"+(ondo3)+"r000"+"p000"+"P000" + "h"+(hum>
print (wxnow1)
if not os.path.exists('/home/master/data'):
     os.makedirs('/home/master/data')
 f = open('/home/master/data/wxnow.txt','w')

 f.write (str(now1+'\n'))
 f.write (str(wxnow1+'\n'))
 f.close()

これを実行すると、home/master/data配下に下記のwxnow.txtが作成されます。
Tue 09 2024 09:15
 000/000g000t051r000p000P000h61b10169

これをcrontabで10分に一回実行すれば、10分に1回取得できます。

 YAACの方はfile->config->expartmode->portsでwxnow.txtを新しいポートとして追加します。wxnow.txtファイルを指定します。あとはBEACON設定の方でReport Weatherをチェックするとサーバの方に温度 湿度 大気圧がuploadされます。


aprsをxastirからYAACに変えてみた

7年近くraspberry-piでxastirを使っているんですが、ちょっと思いたってYACCというjavaベースのソフトに変えてみました。javaなのでYAAC.zipを解凍して、java -jar YAAC.jarですぐに起動できます。
最初は設定がwizardが走るので楽に設定できると思います。
xastirと同じでguiですべて設定できるので楽ですが、地図がすごく軽いです。またTH-D72でKISSモードと9600のコマンドを送ってくれるので、前にかいたようなxastir で面倒なスクリプトを走らせる必要がないです。結構D72は電源の関係やなんかで、RESETされて内蔵TNCが1200になったりします。
ポートの設定で HB 9600 \rKISS ON\r\wRESTART\r と書くと起動時にKISS on 9600bpsに変えてくれます。また結構メンテナンスもされているみたいで、お勧めかも。
ただ設定を変更した場合、xでwindowsを閉じたり、ターミナルから強制停止させると、変更が反映されません。fileからexit programで、終了させてください。まあxastirでもconfigをsaveしてないと同じですけど、、
それから、TNC やサーバからのパケットのフィルタがxastirより高機能になっているので、少し面倒ですね。

ついでにこないだのRA-35をTH-D72についないでみました。D72は2波同時受信ができるので、144.640は内蔵のTNC-KISSモードで9600 144.66はdirewolf+RA35です。これで両方とも送受信可能になりました。
RA-35のdirewolf.confのdirewolf.confのPTT設定は前に書いたように私の環境では
PTT CM108 3 /dev/hidraw0でうごきました。
D72側はtncモードにして、144.64(9600 /dev/ttyUSB0)を選択する必要があります。前は144.66は受信専用だったんですが、送信もできます。これでリグ1台で9600/1200  2波同時、送受信I-GATE局が完成しました。やっぱりTH-D72はAPRS用では最強機種ですね。
なおYAACでのTNCはKISSポートしかサポートされていないので、1200側のポートはdirewolfを t 0だけのデフォルト起動ではagwpeポートとして設定します。単にkiss mode TNCと設定したいなら xastirのポート設定と同じで/tmp/kisstncとデバイス名を設定します。この場合direwowlfは -p -t 0 でkissモードで起動します。-t 0 はコンソールの文字色がうざいため指定してるだけです。

いずれにしてもxastirに比べて軽いですし、使い勝手もいいみたいなのでしばらくこれでいこうと思っています。

direwolfでRA-35+xastir

RA-35が到着しました。たぶんdirewolfのPTT対応で、オーディオインターフェース内臓としては最安($35)でしょう。2月16日に注文して到着したのが3月8日 さすがに送料が3000近くかかっているので早いです。ちゃんとした段ボールに入れてあり、中華のキットとは大違いです。 USBケーブルも付属していました。

IMG_20200309_155351


IMG_20200311_142948

でもって3時間ほどで完成 チップ部品を使ってないので作りやすいです。基盤のパターンとピン穴もしっかりしていて非常にきれいです。前に書いたようにCM119はちゃんと最初から半田つけされていて安心でした。
とりあえずwindows10のUSBにさすとUSB PnPオーディオのマイクとスピーカとして認識します。
raspberry-piにさすと、そのままでなにもしないでちゃんと認識しました。中央にある可変抵抗はマイク入力のレベル調整用です

とりあえずdirewolfでは最新版の1.5を入れます。
$ apt-get install git build-essential libasound2-dev libudev-dev alsa-utils rsyslog logrotate gpsd libgps-dev
もういれてたら sudo apt-get remove direwolfで削除します。
$ git clone http://github.com/wb2osz/direwolf
$ cd direwolf
$ make
$ sudo make install
で簡単に入ります。

てdirewolf.confのPTT設定は

PTT CM108 3 /dev/hidraw0

で動作しました。GPIOはCM119Aのピン13の出力なので、3になります。ls-l  /dev/hidraw*でデバイス番号を確認したほうがいいです。最初PTT CM108だけのデフォルト設定では、/dev/hidraw1になっていたのでPTTが動作せず少しはまりました。なお最新版の1.5にしないとPTT CM108はサポートしていないかも、、

RA-35ですが、さらに安価なRA-25 RA-30というのがでてるみたいです。オーディオ関連のオペアンプが省略されているようですが、RA-25では$25という値段です。送料より安い。アメリカのアマチュアのキットは再現性が高くいすれもいいものが多いです。Kevin Custer - W3KKCに感謝です。
デコード性能ですが、RTL-SDRとは1200でも9600でも段違いです。もっともSDRとFT-717ND+RA-35と比較すること自体間違っているような気がしますが、、、
これからFT-817NDでFT8あたりで試してみます。さーてダイレクトの音声入力と出力に対してどれくらい差があるか??
 
2020 12/22 追記
direwolfが1.7Aになってからbuild方法が変わったようです。
cd ~
git clone https://www.github.com/wb2osz/direwolf
cd direwolf
git checkout dev
mkdir build && cd build
cmake ..
make -j4
sudo make install
make install-conf

なおcmakeが必要ですのでない場合は sudo apt-get install cmakeで入れてください。

RTL-SDR+direwolf+xastirでのAPRSの運用

前にRTL-SDRを使ってFTDX3000のIF入力でcwskkimer運用をしていたのですが,その時にいろいろ購入したRTL-SDRが余っていたのでdirewolfでAPRSの受信専用で構築してみました。
前にかいたUSBsoundcardを使った送受信対応のdirewolfを使ったaprsのことを書きましたが、今回はそのsound cardではなくRTL-SDRを使って使って構築しようということです。

今は
$ sudo apt-get install rtl-sdr
で簡単に入ります。少し前まではmekeとかいろいろ面倒だったのですが、これですぐに使えます。

下記の内容をdirewolf用にsdr.confとして保存
#
# Sample configuration for SDR read-only IGate.
#
# We might not have an audio output device so set to null.
# We will override the input half on the command line.
ADEVICE null null
CHANNEL 0
# Put your callsign in place of xxx below.
MYCALL xxx
# Pick appropriate servers for your geographical region.
#
# noam.aprs2.net - for North America
# soam.aprs2.net - for South America
# euro.aprs2.net - for Europe and Africa
# asia.aprs2.net - for Asia
# aunz.aprs2.net - for Oceania
#
# Change the following line if you are not in North America.
IGSERVER noam.aprs2.net
# You also need to specify your login name and passcode.
# This is the same passcode you would use with any other IGate
# application. Contact the author if you can't figure out
# how to generate the passcode.
IGLOGIN xxx 123456
# That's all you need for a receive only IGate which relays
# messages from the local radio channel to the global servers.

IGSERVERは私の場合はxastirで指定してますので設定していません。受信のみの場合は設定しておいてください。なおpasscodeはコールサインを入れると下記からすぐに取得できます。
https://apps.magicbug.co.uk/passcode/

direwolfの起動は1200bpsの場合は

$ rtl_fm -f 144.66M - | direwolf -c sdr.conf -r 24000 -D 1 -

9600bosの場合は
$ rtl_fm –p 62 -f 144.64M -o 4 -s 48000 | direwolf -c sdr.conf -r 48000 -B 9600 –

ですぐに起動できます。いずれもRTLで音声をストリーミング再生して、それをパイプでdirewolfに渡しているだけです。正常に起動したターミナル上でモニターしたaprsのパケットが受信できるはずです。

direwolfはconfigを別にすることで複数起動可能ですので、TXできる別のdirewolfを構成すると、xastirでinterfaceを指定することで144.64は送受信可能 144.66は受信専用 serverportでIGATEする。こんな運用が可能です。

しかし残念ながらRTL-SDRはあまり感度がよくないです。手持ちのTCO安定型と普通のものを使ってみたのですが、やはり無線機(ハンディ機)の直接入力には結構負けているようです。今V3の新しいのをEBAYで注文したのでまた比較してみます。

raspberry-pi xastir 最新版へupgrade

いま現状のバージョンはi
@raspberrypi:~ $ uname -a
Linux raspberrypi 4.19.97-v7+ #1294 SMP Thu Jan 30 13:15:58 GMT 2020 armv7l GNU/Linux
になってします。
sudo apt-get install xastirで入るバージョンは2.1.0です。昔は最新バージョンにするのにarm環境ではなかなかコンパイルが大変で苦労した思い出があります。それでしばらくは楽な2.101を使っていたのですが、この際いろいろいじったこともあってバージョンアップすることにしました。

今はRaspbian Jessieでは、簡単にインストールできるスクリプトを作って公開されているようでえらく簡単にできるようになりました。

まずは現状の2.1.0をアンインストール
$ sudo apt-get remove xastir
スクリプトを入れる
$ wget http://www.175moonlight.com/xastir/raspbian-xastir-git-build.sh
$ chmod +x raspbian-xastir-git-build.sh
実行
$ ./raspbian-xastir-git-build.sh

これはmakeに必要なパッケージも全部入れてくれ、makeが完了したらインストールまで全自動でしてくれるすぐれものです。インストールされるパッケージはかなり多いです。
なお地図をバックアップするように書いてありますが、そのままokでした。設定は
/home/pi/.xastir/conf/xastir.cnf
にありそのまま残っているので、なにもせずに大丈夫です。
これでxastirは最新の2.1.5になりました。見た目は地図が同じなのであまり変わらないですけど、raspberry-pi4では地図の表示がえらく早いです。sdカードの性能にもよりますが、おそらくpi3の1.5倍くらいにはなっている感じです。xastirでは地図の拡大や縮小にストレスがあったのですが、このくらい早いとあまりストレスを感じません。


raspberry-piのdirewolfでaprsとxastir

久しぶりにaprsネタです。rasberry-pi3とTH-D72上でもう4年も稼働しているAPRSですが、今度raspberry-pi4に交換したので、ついでにメモリーも4Gもあるので、direwolfも入れて実験してみました。もともとdirewolf自体が仮想tncの役目をしているので簡単に構築できます。
インストールも簡単でsudo apt-get install direwolfでできます。Raspbianでは1.4が入ります。
最新版は1.5 ですが、これも簡単で

$ git clone http://github.com/wb2osz/direwolf
$ cd direwolf
$ make
$ sudo make install
これだけでRaspbianではエラーもなく最新の1.5が入ります。

必要なもの
USB接続サウンドカード これはジャンク箱の転がっていたsound braster playを使いました。たしか昔amazonで1000円ぐらいで買った? 実はこれが後述するCM119のサウンドチップを使っていました。raspberry-piのUSBポートに差すだけで簡単に認識してくれました。
お勧めはCM108のチップを使っているもので、しかもPTT信号が出せるためGPIO端子が引き出せそうなものみたいです。しかしなかなか日本では入手困難なようで、工作も結構大変だったりします。下記の海外のアマチュアが制作されているキットを購入するのがいいかもしれません。

$aplay -l

**** ハードウェアデバイス PLAYBACK のリスト ****
カード 0: U0x41e0x30d3 [USB Device 0x41e:0x30d3], デバイス 0: USB Audio [USB Audio]
  サブデバイス: 0/1
  サブデバイス #0: subdevice #0
カード 1: ALSA [bcm2835 ALSA], デバイス 0: bcm2835 ALSA [bcm2835 ALSA]
  サブデバイス: 7/7
  サブデバイス #0: subdevice #0
  サブデバイス #1: subdevice #1
  サブデバイス #2: subdevice #2
  サブデバイス #3: subdevice #3
  サブデバイス #4: subdevice #4
  サブデバイス #5: subdevice #5
  サブデバイス #6: subdevice #6
カード 1: ALSA [bcm2835 ALSA], デバイス 1: bcm2835 IEC958/HDMI [bcm2835 IEC958/HDMI]
  サブデバイス: 1/1
  サブデバイス #0: subdevice #0
カード 1: ALSA [bcm2835 ALSA], デバイス 2: bcm2835 IEC958/HDMI1 [bcm2835 IEC958/HDMI1]
  サブデバイス: 1/1
  サブデバイス #0: subdevice #0
カード 0: U0x41e0x30d3 [USB Device 0x41e:0x30d3], デバイス 0: USB Audio [USB Audio]

なお上記は標準のサウンドbcm2835の優先順位を変えています。

PTT制御用 RTS信号がでるUSBシリアル変換ケーブル またはDTR信号がでるUSBシリアル変換アダプタであればなんでもいいと思います。
direwolfで一番むずかしいのがこれでリグのPTT制御をどうするのかという問題があります。本来はちゃんと2SC1815あたりでちゃんとスイッチする必要があるんだけど、お手がるで実験用ということで、そのまま上記変換のRTSかDTRをPTT信号として、入力したらどちらでもちゃんと動作しました。

IMG_20200228_091105


上記を一気に解決するのが、下記の製品です。いずれもC-Media CM108/CM119 GPIOを利用してサウンドを内蔵してPTT制御も可能です。
DMK URI     
RB-USB RIM   
RA-35       
一番安い$35のRA-35を注文してみました。送料とか入れてpaypalで6900円くらいになりました。しかし日本で使ったレポートが皆無で少し心配です。人柱覚悟でやってみます。
キットですが、
U1 - CM119A (presoldered)
U2 - LM386 JRC386
U3 - LM386 JRC386
U4 - NE555
U5 - EEPROM (REV2 and later) (presoldered)
となっているので、
presolderedとなっているので、ちょっと心配なんでメールで問い合わせたらすぐにキットの基盤の写真を送ってくれました。さすがにCM119Aの半田つけはもうきついです。

ra35-top-board-only

到着して完成したらまたレポートします。送料が高いのが難点ですね。

今回はお試しで手元にあったもので構築してみました。
まずdirewolf.confの内容ですが、PTT制御は
PTT /dev/ttyUSB0 RTS    RTS信号を使う場合
PTT /dev/ttyUSB0 DTR DTR信号を使う場合
 
接続
SOUND   MIC------------RIG音声出力
SOUND   OUT------------RIG音声入力
USB変換  RTS---2.2k --RIG PTT(2.2Kの抵抗はハンディ機を使う場合はつけたほうがいいみたいです。)

起動はそのまま引数なしで起動したらxastir上でAGWPEとしてインターフェイスに追加します。direwolf.confのデフォルト設定ならばそのまま追加で設定すれば簡単に動きます。
direwolf -p で起動するとkissTNCとして動作します。kissTNCとしたらインターフェイスの設定はSerial KISS TNCとして追加して、tnc-portの部分は/tmp/kisstncとして記述します。当然ながら上記2つともdirewolfを起動してないとupになりません。
direwolfはそのまま起動するとターミナルでtxt colorが設定され環境によっては見にくいです。-t 0のオプションで起動するとcoloerが設定されず見やすくなります。
1200では、tnc-piよりもデコード率はいいみたいです。
今はTH-D72で運用中の9600ですが、リグをFT-817NDにして比較するとあまり変わらないみたいです。まあアンテナも違うのであまり比較にはならないですが、、、ARATEは48000にしています。96000にしてもあまり変わらないみたいです。9600に関しては9600専用のIN-OUTが必要で、ハンディ機は使えないのが難点ですね。

これのいいところは入手困難なTNCを使わなくていいことです。特に1200であれば、ハンディ機で簡単に構築できます。MIC端子をそのまま入力で使えるし、しかもデコード率も結構いいです。余っているハンディ機と、raspberry-piとシリアル変換モジュールがあればすぐに使えます。
あとUSBサウンドモジュールは、安価でAMAZONで入手できるSYBA SD-CM-UAUDがCM108のチップを使っているいたいです。なお私自身が検証してないのであくまで自己責任でお願いします。

さらにAPRS最強のTH-D72ですが、2波同時受信機能があるので、D72のスピーカ出力(2.5ミニジャック)をUSBサウンドカードの入力に利用すれば144.64での9600送受信運用と144.66の1200のdirewolfの受信専用ノードとして1台で利用できます。xastirのインターフェイスはサーバ接続と/dev/ttyUSBのD72用9600接続 さらにdirewolf用に/tmp/kisstncとして3つ設定します。

TH-D72でAPRS KISSモード9600BPS

久しぶりにAprsです。
もうだいぶ前にRaspberry-PiでTNC-PIを使ってXastirを動かす記事を書いたのですが、今はこれにTH-D72をつないで9600運用にしています。ところがTH-D72のTNCは設定のパラメータの保存ができず、電源を切ったりすると、TNCの設定をやり直す必要があります。つまり9600の設定とKISSモードの設定をいちいちやり直さなければいけないのです。
これ結構面倒なので、TNCをUPするときに使用するパラメータを利用して下記の内容のファイルを作成し、Intaerfaceに追加して最初に起動した時にUPするようにししました。
TNCの起動時のパラメータの設定は/usr/share/xastir/configの配下にあります。

##META <no-ctrl-c>
TC 1

##Pause for one second

##META <delay>

##META <delay>

##META <delay>

#Put the TNC in internal mode since this is where we want to end up

# Change the 1 to 0 to go to normal radio mode

#META <no-ctrl-c>
TN 2,0

# Pause for two seconds

##META <delay>

##META <delay>

##META <delay>

##META <delay>

#Turn off Terminal Control

##META <no-ctrl-c>

HID off

#AWlen 8

BBSMsgs ON

B E 0

LOC E 0

Echo off

FLow off

AUTOLF off

MCOM off

MON ON

MRPt on

PACLen 128

PASSALL off

#HBAUD 1200

TXDELAY 25

HEADERLN off

HB 9600

KISS ON

RESTART

このパラメータで問題なく動きました。
下記のようにInterfaceにTNCのパラメータセット用を準備してこれのUPした後に、
普通のKISS-TNCのInterfcaceをUPしします。

aprs


raspberry-pi2でxastirとtnc-piを動かす


昨年5月にTNC-Xというサイトからtnc-piというのを購入してaprsのGatewayを動かしています。(これが無線の再開局のきっかけだったりして) このTNC-Xというサイトは、今はTNCを手に入れる方法は中古品かこのサイトあたりからキットを購入するしかないです。上記のサイトは結構良心的な値段で送料も安くて気にいっています。

Raspberry-PiでのAprs運用ですが、さすがにLinux ものすごく安定していて、一回もとまったことがないです。

tnc-piはRespberry-Pi上で動くTNCでPiの上でI2C接続になり、XastirからはkissmodeのTNCに見えます。Xastir以外ではGPBPQのノードとかデジピータを構成することができるようです。
これのすばらしいところは5V単一電源 スマホの充電器(最低1A以上)で動くので、上記の構成ならば電気代が格段に安く済みます。
Raspberry-PiとXastirの構築についてはJR6PUEさんのサイトが詳しいです。ひじょうにきれいにまとめられていてものすごく参考になります。

今度Raspberry-Pi2が出たというこどでそれでに変えてみました。OSもバージョンアップされたみたいで、再インストールしたんでその忘備録です。

まずはTnc-Piのマニュアルを見て

/boot/cmdline.txtのconsole=ttyAMA0, 115200を削除。
/etc/inittabの最後の行にある T0:23:respawn:/sbi2c-devin/getty –L ttyAMA0 115200 vt100をコメントアウト

sudo apt-get install ax25-tools
sudo apt-get stall ax25-apps

でax25関係のツールを入れる
あとマニュアルには/etc/ax25/axportsの中の設定を書いてあるけど、これはKiss-Tncとしてスタンドアロンでのアクセスのようですが、とりあえず自分のコールを設定。

etc/modulesの中にi2c-devを追記
sudo apt-get install xastirでご本体を入れる。
あとはVNCサーバを入れてVNCクライアントからxastirを起動します。
あとはxastirの中のinterfaceでSirial-KISS-TNCを追加してデバイス名に/dev/ttyAMA0を入れます。
速度は19200にします。

前にはまったのが/dev/ttyAMA0がどうしてもUPにならず悩みましたが、ls -l  /dev/ ttyAMA0を見るとdialoutのグループになっています。
sudo adduser ユーザ名 dialaout
それでもダメで
sudo chmod a+rw /dev/ttyAMA0
これでなんとかUPになりました。なんだかこれはちょっと釈然としないけど、、ほんとはちゃんとmodprobeにかけばいいなけど、面倒だから、、ま 動いたからいいや

Pi2とTnc-Piの接続ですが、Pi2の方は拡張GPIOのピンが増えています。piと同じように基盤の端のピンに合わせて取り付ければ大丈夫です。すこし残念なのはPiと同じくケースが使えないことです。もうすこしピンが長ければいいのですが、、、

なおPIとの比較して速度はSDカードにもよるんですが、MAPの拡大 縮小なんかでは、約倍の速度にはなっているようです。 あとxastirの最新版2.06をコンパイルして入れてみたんですが、動かしたらOSMの地図が入ってない。いまそれで挫折中です。


R0010309

プロフィール

nyantaroblog

記事検索
QRコード
QRコード
アクセスカウンター
  • 今日:
  • 昨日:
  • 累計:

HamLife.jp
  • ライブドアブログ