Inhalt
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.
Eigentlich stand der ja schon ewig auf der „Will-Haben“ Liste drauf – schon alleine wegen der Dokumentation und der dazugepackten Software-Ausstattung. 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.
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)
- SDR# (SDRsharp)
- dl-fldigi (Spezialversion mit Anleitung für PITS)
- VAC – virtuelles Audiokabel (Wikipedia), zum Beispiel VBCALBE – The virtual Audio cable von VB-Audio Software
Eine Altternative mit vielen Optionen ist VB – Audio Voicemeeter von der gleichen Firma. - 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:
Im SDRSharp (Version 5/19/2014 von Adafruit verwenden, nicht von Airspy.com) findet man das Signal nach Anpassung einiger Einstellung sofort:
(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).
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.
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.
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).
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 😉
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.
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.
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:
- Near-Space Balloon Cam with Arduino and APRS Radio. In diesem Blog des Make Magazine wird auch das ganze Flugprozedere beschriben. Sie verwenden eine eigene Platine (Trackuino shield) mit einem GPS Modul und dem bekannten Radiometrix Modul.
- General APRS Balloon Configuration
- The ability of APRS to provide three-dimensional locating and tracking is a key component of high-altitude ballooning
- Es gibt sogar Twitter Kanäle für die Ballonverfolgung: https://twitter.com/aprsballoons.
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.
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.
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:
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
- The Hobbyist’s Guide to the RTL-SDR: Really Cheap Software Defined Radio. Carl Laufer, CreateSpace Independent Publishing Platform, ISBN 9781514716694
- RTLSDR Webseite
- Demodulation mit SDR erklärt: Explaining RTL-SDR and Demodulation Theory
- Sound Card Paket mit AGWPE
- Home von fldigi mit online Help und Audio-Aufnahmen
Update: 20161218/20170410/20170721/20170922