AmateurfunkRaspberry Pi

Pi-in-the-Sky I: Mission in die Stratosphäre

Pi-in-the-Sky

Quasi als pflichtbewusste Vorbereitung zum Vortrag über Wettersonden in der Stratosphäre bei HB9F habe ich mir vor aus dem unendlich grossen Budget für Hobbybelange einen Pi-in-the-Sky („PITS“) gekauft.

PS. pie in the sky = Luftschloss, unrealistische Hoffnung.

pits-alleine-small

Eigentlich stand der ja schon ewig auf der „Will-Haben“ Liste drauf – schon alleine wegen der Dokumentation und der dazugepackten Software-Aus­stattung. Dieses Drumherum ist nämlich schon für sich eine Fundgrube. Die Radiometrix Module hatte ich schon vor langem als für mich ideale Kleinsender erkannt; die waren gut versteckt im Internet. Damit alleine hat man noch lange kein funktionierendes System…

Dieses Kit besteht aus 3 Raspberry Pi Aufsteckplatinen (Shields)

  • einem GPS Tracker/Telemetrie Shield mit einem 10mW FM Sender im 434 MHz Bereich für RTTY
  • einem APRS Tracker Zusatz mit einem 300mW APRS Sender (144.800 MHz)
  • einem LoRa Shield mit 2 Plätzen für LoRa Module (siehe Blog)

Die ersten 2 Module sehen zusammengebaut so aus, vorne separat das LoRa Shield. An der  PITS Platine steckt eine Dummy Load, am VHF Transmitter eine Gummiantenne vom Handfunkgerät.

meinPITS-small

Die GPS Antenne sollte man möglichst weit entfernt von den Sendeantennen wegrichten.

Zusätzlich wurde noch eine Pi Noir Camera angesteckt (die Version ohne IR Filter). Das original Flachband-Kabel ist auch bei Vollausbau des Stapels lang genug, ein längeres steht auf der Einkaufsliste.

 

Zusammenbau und Konfiguration des PITS

Im wesentlichen ist das Manual völlig ausreichend, auch wenn sich einige kleinere Fehler eingeschlichen haben. Ich verzichte hier darauf, jeden einzelnen Punkt durchzugehen. Im Minimum braucht man die folgende Kernprogramme auf einem PC (Windows/Linux)

  1. SDR# (SDRsharp)
  2. dl-fldigi (Spezialversion mit Anleitung für PITS)
  3. VAC – virtuelles Audiokabel (Wikipedia), zum Beispiel VBCALBE – The virtual Audio cable von VB-Audio Software
    vb-cable1Eine Altternative mit vielen Optionen ist VB – Audio Voicemeeter von der gleichen Firma.
  4. direwolf für APRS (optional)

 

Über das Manual hinausgehen würde ich folgende Software und Werkzeuge bereitstellen:

  • Win32DiskImager, um die Speicherkarten zu beschreiben und zu sichern
  • PuTTY für SSH Fernwartung
  • alternativ zu PuTTY: SmarTTY :  SmarTTY is a free multi-tabbed SSH client that supports copying files and directories with SCP on-the-fly and editing files in-place
  • Filezilla für den Dateitransfer über SSH (siehe Anleitung Dateitransfer)
  • Portscanner, wenn man den Pi „headless“ mit DHCP konfiguriert hat und nicht mehr im Netz findet…
  • das PITS Konfigurationstool hilft bei der Erstellung der Konfiguration (Datei pisky.txt)

Mein PITS startet mit dieser Konfiguration:

RASPBERRY PI-IN-THE-SKY FLIGHT COMPUTER
=======================================
RPi Hardware : BCM2708
RPi Revision : 0010
RPi Model A+ or B+ or B V2
PITS+ Board
Device Tree is enabled
RTTY Payload ID = 'PI9TSS'
Radio baud rate = 300
GPS Logging enabled
Telemetry Logging enabled
External DS18B20 Enabled
Camera (CSI - raspistill) Enabled
Adding custom camera parameters '' to raspistill calls
Image size changes at 2000m
RTTY Low image size 320 x 240 pixels
RTTY High image size 640 x 480 pixels
RTTY: 1 Telemetry packet every 4 image packets
RTTY: 60 seconds between photographs
Full Low image size 640 x 480 pixels
Full High image size 2592 x 1944 pixels
Full size: 60 seconds between photographs
GPS Power Saving = OFF
Switching GPS to flight mode above 1000 metres
APRS enabled for callsign HB9TSS:11 every 5 minutes with offset 17s
APRS path above 1500 metres is (none); below that it is WIDE1-1, WIDE2-1
APRS Pre-emphasis is OFF
APRS Telemetry is ON
Frequency 434.250
MTX2 Frequency to be set to 434.2500MHz
MTX2 command is @PRG_410E76A0
Frequency 434.250
MTX2 Frequency to be set to 434.2500MHz
MTX2 command is @PRG_410E76A0
V2.4 or later board with I2C ADC
Interface eth0 has IP Address: 192.168.17.229
Found file /home/pi/pits/tracker/images/RTTY/21_02_02.jpg to convert
SDA/SCL = 2/3
Opened I2C GPS Port

 

Beispielkonfiguration (/boot/pisky.txt)

Diese Konfiguration richtet den PITY für RTTY und APRS ein. Weggelassen wurden die Einstellungen für LoRa (auskommentiert). Siehe PITS Konfiguration.

payload=PI9TSS
disable_monitor=N
frequency=434.250
baud=300
camera=Y
low_width=320
low_height=240
high=2000
high_width=640
high_height=480
image_packets=4
enable_bmp085=N
external_temperature=1
logging=GPS,Telemetry
Disable_RTTY=N
info_messages=2
full_low_width=640
full_low_height=480
full_high_width=2592
full_high_height=1944
full_image_period=60
landing_prediction=N
cd_area=0.66
payload_weight=1.0
prediction_id=XX
APRS_Callsign=HB9TSS
APRS_ID=11
APRS_Period=5
APRS_Random=15
APRS_Offset=17
APRS_Altitude=1500
APRS_Telemetry=Y

 

 

Empfang von RTTY mit SDR-Stick und SDRSharp

Als Empfänger verwende ich einen RTL-SDR Stick (Danke an Fritz Dellsperger) mit der Software SDR Sharp. Die Empfindlichkeit ist so hoch, dass am PITS eine Dummy Load eingesetzt werden musste und gar keine Antenne am RTL-Stick nötig ist. Das Signalspektrum sieht so aus:

pits-rtty

Im SDRSharp (Version 5/19/2014  von Adafruit verwenden, nicht von Airspy.com) findet man das Signal nach Anpassung einiger Einstellung sofort:

sdr-rtty-settings0

sdr-rtty-settings1

sdr-rtty-settings2

(Update: mit Correct IQ kann man den Peak in der Anzeigemitte des Spektrums unterdrücken).

Und hier das empfangene Signal. Mach achte darauf, dass der Empfänger nicht übersteuert wird (Splatter).

sdrsharp-rtty-ok-small

Decodierung von Telemetrie mit dl-fldigi

Mit einem virtuellen Audiokabel („VAC“, siehe Einleitung) gebe ich die Audiosignale an dl-fldigi weiter und kann dort die decodierten RTTY Meldungen sehen. Neben Zeit, Position und Telemetriedaten sendet die Software auch gleichzeitig Bilder, sofern eine Kamera angeschlossen ist und die Übertragung aktiviert wird.

Die Konfiguration von dl-fldigi umfasst vor allem die Festlegung der Audioformate (Shift und Filterbandbreite) und der RTTY Einstellung. Die richtigen RTTY Einstellungen sind 300 Baud/8 bit/keine Parity/2 Stopbits. Allerdings klappte es bei mir gerade mit 7 Bit, aber nicht mit 8 Bit (Auflösung des Rätsel unten beim Empfang von SSDV Bildern).

Leider werden die Einstellungen nicht wirklich sauber abgespeichert. Bei jedem Neustart von dl-fldigi muss ich mindestens die Receive filter bandwidth wieder auf 300Hz stellen.

pits-dl-fldigi-rtty-ok-small-2

pits-dl-fldigi-rtty-ok-small

Für Hilfe zur Konfiguration von dl-fldigi siehe Decoding with dl-fldigi. Übrigens bedeutet „DL“ = distributed listener, also eine crowd/cloud fähige Software, die Signale von anderen Empfangsstationen mit den eigenen zusammenführen kann(!)

Dl-fldigi ist eine sehr komplexe und umfangreiche Software mit vielen Einstellmöglichkeiten, Für den Anfang reichen die folgenden Konfigurationen aus:

  • RTTY Einstellungen wie oben
  • Operator HAM Call soweit vorhanden
  • Audio Einstellungen
  • (optional, aber empfohlen) Anbindung an das HABhub-Netzwerk, siehe Fortsetzung dieses Blogs.

 

Decodierung von Bildern (SSDV) mit dl-fldigi

Für den Empfang von SSDV Bilder sei nichts weiter nötig, dl-fldigi habe eine Menuoption für die Anzeige. Ja, es kommt aber kein Bild.

In allen Beschreibungen steht, dass 300 Baud/8 bit/keine Parity/2 Stopbits (nicht 7 Bit) die richtigen Einstellungen sind, da ssdv nur mit 8bit funktioniere. Der Empfang von RTTY gelang mir aber nur mit 300 Baud/7 bit/keine Parity/2 Stopbits. HMMMMMM….nach längerem Rumspielen in den RTTY Einstellungen funktionierte es plötzlich: nachdem ich vorübergehend auf 5bit (baudot) gestellt hattte, funktionierte der RTTY Empfang plötzlich mit 8bit (aber dafür nicht mehr in der 7bit Einstellung) und die Bildern erschienen…also vermutlich ein Bug in dl-fldigi.

sdr-rtty-ssdv-ok

Für die Details von ssdv siehe

Bilder beschriften, exif Felder

Der Tracker Code sieht auch vor, Daten in die exif Felder der Bilder zu schreiben. Dazu braucht man noch das exiv2 Paket (Download):

sudo apt-get install exiv2

Ohne weitere Anpasssungen werden nur die Felder unten ausgefüllt und im Kommentarfeld im wesnetlichen die Koordinaten. Man könnte z.B. weitere Telemetrie Daten (Messwerte) in das Kommentarfeld schreiben (Forumsdiskussion dazu).

exif-1

Diese Informationen können direkt in das Bild geschrieben werden. Die Anleitung ist hier relativ knapp. Kernstück ist ein Script process_image, das vom Code (tracker.c respektive snapper.c) aufgerufen wird, sofern vorhanden.

installiere zuerst imagemagick:

sudo apt-get install imagemagick

installiere noch eine fehlende Schrift:

sudo apt-get install fonts-dosis

mache eine Kopie vom Script process_image.sample als process_image

mache es ausführbar (sudo chmod +x)

passe es an, z.B. die Schriftgrösse.

Teste alles durch einen Aufruf. Hierbei muss der sog. Channel angegeben werden (0=RTTY, 1=APRS…)

./process_image 0 /home/pi/pits/tracker/images/RTTY/16_39_50.jpg


Die Einblendung eines Logos habe ich noch nicht hingekriegt, obwohl das im Code vorgesehen ist und entsprechende Logos auch da sind.

An die Bilder kommt man mit Filezilla via SSH heran. Alternativ kann man direkt die SDCard lesen (Reading Flight Images on a PC).

 

Updates – der Kamera Tod!

Vorsicht ist geboten bei Raspberry Pi Updates, insbesondere auf neue Kernel-Versionen!

Meine RPi Noir Camera Version 1.3 wurde plötzlich nicht mehr erkannt und konnte trotz tagelanger Suche und aller erdenklicher Tricks nicht mehr benutzt werden. Die Flut der Treffer mit Google (man suche mal nach „Camera Bricked After Firmware Update“) beweisen mir, dass nicht die Kamera kaputt ist. Als Lösung wird von einigen empfohlenen, mit Updates auf den neusten Kernel zu gehen (update/upgrade/dist-upgrade/rpi-update). Danach ging die Kamera trotzdem nicht, dafür auch die wiringpi nicht mehr, weil die Pi Hardware anders erkannt wurde. Wiringpi musste mit der neuen Version von github neu kompiliert werden (siehe Bild). Als Fallstrick geschieht beim Download vom github Link ein redirect an eine andere Stelle – mit einem offensichtlichen Tippfehler….

Eine neu gekaufte Kamera (Noir V.2) geht problemlos.

Links:

  • https://www.raspberrypi.org/forums/viewtopic.php?f=28&t=61922&p=477860&hilit=enospc#p478550
  • http://raspberrypiguide.de/howtos/raspberry-pi-firmware-update/
  • https://www.datenreise.de/raspberry-pi-firmware-update/https://www.raspberrypi.org/forums/viewtopic.php?t=155971&p=1018773

 

Dekodierung auf Android Smartphone und Handfunkgerät

Im PITS Manual ist eine Android App erwähnt, die auch von den Engländern geschrieben worden ist (https://ukhas.org.uk/projects:hab_modem): (App leider derzeit nicht verfügbar)

Der Funktionsumfang ist eindrücklich und soll hier per copy-paste wiedergegeben werden. Nur mit Bildern  kann die App nicht umgehen.

  • Ground tracking app for high altitude balloons, complete with RTTY modem, offline mapping, online distributed listener integration, chase car location reporting and more.
  • Connecting a SSB radio to the audio in of your device will allow for payloads transmitting RTTY to be decoded and displayed on the map. The decoded data is uploaded where it can be also viewed at http://spacenear.us/tracker/ along with data from other listeners. Positions from other listeners are also downloaded so that balloons can be tracked without being able to receive the radio signals. When enabled, the location of the user can also be uploaded and displayed on the online map.
  • The app supports multiple balloons at once, and includes graphing for received data. The modem is automatic, only the baud rate needs setting, while signal is located and tracked automatically.
  • Offline mapping is provided by mapsforge, and maps can be downloaded from http://download.mapsforge.org/maps/
  • Most devices allow audio input via the combined headset connector. A cable is needed to convert between the combined headset connector and a connector for audio input. Suitable cables are hard to come by, and so it may be easiest to make a cable manually. For a pinout of the combined headset connector referring to
    http://pinoutsguide.com/HeadsetsHeadphones/samsung_moment_pinout.shtml
  • For help and support ask on IRC channel #highaltitude on freenode.net . Webchat – http://webchat.freenode.net/?channels=highaltitude

Als Empfänger kann ich leider mein Icom IC-92D Handfunkgerät nicht verwenden, da dieses VHF/UHF Duoband Gerät nur FM und AM bietet und kein SSB. Als Alternative nehme ich den AOR 8600 Mk II Scanner. Das nötige Audiokabel (standard Stereo 3 Pin 3.5mm auf 4 Pin 3.5mm evtl mit Widerständen) ist gerade nicht greifbar, so lege ich einfach ein paar Handy- Ohrhöher auf den Lautsprecher – grenzwertig, aber ein paar Pakete konnten immerhin dekodiert werden 😉

habmodem-aor-ht2

Ein für mein HTC Handy passendes Kabel ist bei Digitec erhältlich (Roline Headset-Adapter, Art-Nr 256705, CHF 7.80).

  • die Steckerbelegung ist dabei (von der Spitze aus nach hinten): Links – Rechts – Masse – Mikrofon
  • der Stecker ist schwergängig und muss mit Druck ganz eingerastet werden

Mit dieser Anbindung ist eine tadellose Dekodierung möglich. Video Empfang RTTY mit Android HAB App.

aor-htc-rtty

Der HAB Tracker wertet Koordinaten und Höhe aus und berechnet daraus weitere Daten wie maximale Höhe und Geschwindgkeit.

Schliesslich wird die Habitat Datenbank nach der Payload  abgefragt. Ist dort die Payload bekannt und ein Flight Document vorhanden, werden die die Daten hochgeladen und mit allenfalls vorhandenen Daten von anderen Stationen kombiniert.

aor-htc-rtty-pos-habitat

 

Dekodierung auf Android Smartphone mit RTL-SDR Stick

Mit der App SDRTouch (Android) kann ein RTL-SDR Stick direkt angeschlossen werden. Somit ist kein externes Empfangsgerät mehr nötig. Die App dekodiert FM+RDS, NFM, AM, LSB, USB und CW. Es gibt keine Spezialfunktionen für Ballonsmissionen, aber sonst einige nützliche Zusatzfunktionen wie Aufnahme von Audio oder IQ Baseband (nur in der PRO $ Version).

Anleitung und Tips: RTL-SDR unter Android nutzen

  • Ein Mobiltelelefon mit USB Host Mode Unterstützung. Wenn man grosses Pech hat, fehlt dieses vollständig. Mit etwas Glück kann man das Gerät rooten. Die glücklichen brauchen vielleicht nichts zu tun.
  • OTG Kabel: Micro USB Stecker (Seite Smartphone) nach USB A Buchse (Seite RTL-Stick).
    Am besten als Y-Kabel, damit der RTL Stick autonom mit Strom versorgt werden kann (so eines bei Amazon)
  • Treiber (RTL2832U Driver von Martin Marinov)

Mit meinem Smartphone HTC Desire 626 hatte ich keinen Erfolg.

  • Diskussion hier
  • Analyse mit dem OTG / USB Host Troubleshooter von Homesoft (im Play Store): USB Host Modus ist unterstützt
  • trotzdem keine OTG Verbindung (2 Kabel, 4 USB Devices)

Ursachen? Sind beide Kabel schlecht oder kann das HTC626 die USB Devices nicht mit Strom versorgen (Vermutung, da mein Memory Stick nicht aufleuchtet)? Ein OTG-Y Kabel habe ich nicht zur Hand, also Abbruch der Übung hier.

 

Empfang von APRS

Eine kurze allgemeine Erklärung des APRS Systems und der Einsatz bei Ballonmissionen ist hier zu finden:

Die Konfiguration von APRS ist im PITS Manual und hier gut beschrieben.

Das APRS Shield sendet nach Aktivierung im /boot/pisky.txt ebenfalls. Man sollte unbedingt die Kadenz der ausgesandten APRS Telegramme reduzieren; die Voreinstellung ist ein Telegramm pro Minute. Die Konfiguration eines zufälligen Versatzes und der Startzeit sollte ebenfalls angepasst werden. Die Verwendung eines gültigen Funk-Rufzeichens ist obligatorisch. Eine APRS Aussendung ohne Besitz des Amateurfunk-Fähigkeitsausweis und gültiger Konzession vom BAKOM ist illegal, auch mit reduzierter Leistung von 300mW. Es ist weiterhin zu beachten, dass APRS offenbar in gewissen Ländern überhaut nicht in Luftfahrzeugen (Ballons) verwendet werden darf. Abklärungen mit dem BAKOM sind noch im Gange.

Weitere Detaileinstellungen betreffen den Signalpfad in grosser Höhe (WIDE2-1) und wurden nicht verändert.

ballon-1

Auf einer Wanderung mit dem PITS im Rucksack wurde das Signal in Genf empfangen. Die Stromversorgung mit einem handelsüblichen LiPo-Pack (3S, 11.1V, 2100mAh) aus dem Modellbau reichte problemlos für 6 Stunden Betrieb bei ca. 200mA Stromverbrauch. Das Shield kann mit einer Versorgung von 2.8-15V arbeiten. Bei der Wanderung auf den Dent de Corjon wurde pausenlos mit RTTY gesendet und alle 5 Minuten ein APRS Telemetrie Packet.

Allerdings kam diese Verbindung wirklich erst auf dem Gipfel zustande; die Abdeckung mit APRS Gateways ist weiter unten im Gelände schlichtweg nicht vorhanden. Nur zuhause habe ich ein APRS IGATE direkt im Dorf (betrieben durch HB9CZV Werner Büchli), der die Signale vom PITS auffängt.

hb9tss-11-corjon

APRS IGATE (Windows PC Version)

Den Aufbau eines IGATES auf einem Raspberry Pi habe ich noch nicht fertig gestellt (Beitrag kommt).

Auf meinem PC ist mithilfe der TNC Software Dire Wolf schnell eine IGATE eingerichtet. Direwolf erhält wie oben beschrieben seinen Input vom SDR-Stick via SDRsharp und virtuellem Audiokabel. Geplant ist natürlich schon, einen Raspberry Pi einzusetzen (z.B. einen zweiten PITS, Dave Akermann hat da schon die ganze Vorarbeit geleistet) und den auf einem guten Standort zu platzieren. Ich weiss schon wo….

So sieht Direwolf auf dem Windows System dann beim Empfang von Paketen des PITS aus:

direwolf-hb9tss-11

Die wesentlichen Konfigurationseinstellungen für Direwolf (Datei direwolf.txt) sind

# for Virtual Audio Cable and SDRsharp. For the name see properties in the audio dialog (you renamed it)
 ADEVICE "SDR VAC" 0
 ARATE 48000
 CHANNEL 0
 MYCALL HB9TSS
 MODEM 1200
 AGWPORT 8000
 KISSPORT 8001
#######################################################
# INTERNET GATEWAY #
#######################################################
IGSERVER noam.aprs2.net
IGLOGIN HB9TSS-11 20903

Das IGATE hat dann seinen Dienst in Konkurrenz zu Werners Gateway aufgenommen. Als Sender hier mein Opentracker am FT817:

2016-11-19 19:39:07 CET: HB9TSS-1>APOT2A,WIDE2-2,qAR,HB9TSS:/191839z4641.46N/00740.18E- 15C Andreas Opentracker Home
2016-11-19 19:40:09 CET: HB9TSS-1>APOT2A,WIDE2-2,qAR,HB9CZV-4:/191840z4641.46N/00740.11E-/A=-00157 15C Andreas Opentracker Home
2016-11-19 19:41:21 CET: HB9TSS-1>APOT2A,WIDE2-2,qAR,HB9CZV-4:/191841z4641.46N/00740.11E-/A=-00157 15C Andreas Opentracker Home
2016-11-19 19:42:58 CET: HB9TSS-1>APOT2A,WIDE2-2,qAR,HB9TSS:/191842z4641.45N/00740.11E-/A=-00157 15C Andreas Opentracker Home
2016-11-19 19:44:00 CET: HB9TSS-1>APOT2A,WIDE2-2,qAR,HB9CZV-4:/191844z4641.46N/00740.08E-/A=-00157 16C Andreas Opentracker Home

und der PITS als zweiter aktiver Sender:

2016-11-19 18:35:32 CET: HB9TSS-11>APEHAB,WIDE1-1,WIDE2-1,qAR,HB9CZV-4:!/6r3yPH^qO /A=001883|!#!&"EPM|http://www.pi-in-the-sky.com
2016-11-19 18:35:33 CET: HB9TSS-11>APEHAB,qAR,HB9CZV-4::HB9TSS-11:PARM.Satellites,Temperature,Battery
2016-11-19 18:35:34 CET: HB9TSS-11>APEHAB,qAR,HB9CZV-4::HB9TSS-11:EQNS.0,1,0, 0,1,-100, 0,0.001,0, 0,1,0, 0,0,0
2016-11-19 18:40:21 CET: HB9TSS-11>APEHAB,WIDE1-1,WIDE2-1,qAR,HB9CZV-4:!/6r4tPH_BO /A=002040|!$!&"FPM|http://www.pi-in-the-sky.com
2016-11-19 18:40:21 CET: HB9TSS-11>APEHAB,qAR,HB9CZV-4::HB9TSS-11:PARM.Satellites,Temperature,Battery
2016-11-19 18:40:23 CET: HB9TSS-11>APEHAB,qAR,HB9CZV-4::HB9TSS-11:EQNS.0,1,0, 0,1,-100, 0,0.001,0, 0,1,0, 0,0,0
2016-11-19 19:50:32 CET: HB9TSS-11>APEHAB,TCPIP*,qAC,T2TEXAS:!/6r4?PH]tO /A=001922|!%!("DPM|http://www.pi-in-the-sky.com
2016-11-19 19:50:33 CET: HB9TSS-11>APEHAB,TCPIP*,qAC,T2TEXAS::HB9TSS-11:PARM.Satellites,Temperature,Battery
2016-11-19 19:50:34 CET: HB9TSS-11>APEHAB,TCPIP*,qAC,T2TEXAS::HB9TSS-11:UNIT.Sats,deg.C,Volts
2016-11-19 19:50:35 CET: HB9TSS-11>APEHAB,TCPIP*,qAC,T2TEXAS::HB9TSS-11:EQNS.0,1,0, 0,1,-100, 0,0.001,0, 0,1,0, 0,0,0

(Lesehilfe für die Logs: APRS q Constructs)


Weitere Referenzen und Quellen


Update: 20161218/20170410/20170721/20170922

 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.