You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
305 lines
14 KiB
305 lines
14 KiB
<!DOCTYPE html>
|
|
<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
|
|
<head>
|
|
<meta charset="utf-8" />
|
|
<meta name="generator" content="pandoc" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
|
|
<meta name="author" content="M.T. Konstapel" />
|
|
<meta name="dcterms.date" content="2024-02-27" />
|
|
<title>APRS igate</title>
|
|
<link rel="stylesheet" href="./css/mvp.css" />
|
|
<style type="text/css">
|
|
:root {
|
|
--width-content: 1080px;
|
|
}
|
|
|
|
nav {
|
|
justify-content: space-around;
|
|
}
|
|
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<header id="title-block-header">
|
|
<nav id="TOC">
|
|
<ul>
|
|
<li>
|
|
<a href="#">Index</a>
|
|
<ul>
|
|
<li><a href="#the-story" id="toc-the-story">The
|
|
story</a></li>
|
|
<li><a href="#the-design" id="toc-the-design">The
|
|
design</a></li>
|
|
<li><a href="#the-build" id="toc-the-build">The
|
|
build</a></li>
|
|
<li><a href="#the-specifications"
|
|
id="toc-the-specifications">The specifications</a></li>
|
|
<li><a href="#license" id="toc-license">License</a></li>
|
|
</ul>
|
|
</li>
|
|
<li>
|
|
<a href="https://git.meezenest.nl/marcel/aprs_digipeater_weather_telemetry">Git repo</a>
|
|
</li>
|
|
<li>
|
|
<a href="https://meezenest.nl/mees/aprs_digipeater.html">Back</a>
|
|
</li>
|
|
</ul>
|
|
|
|
<a href="https://www.meezenest.nl/mees/"><img alt="Logo" src="./images/mees_logo.svg" height="70"></a>
|
|
</nav>
|
|
<h1 class="title">APRS igate</h1>
|
|
<p class="subtitle">with weather and PE1RXF telemetry server</p>
|
|
<p class="author">M.T. Konstapel</p>
|
|
<p class="date">2024-02-27</p>
|
|
</header>
|
|
<main>
|
|
<article>
|
|
<p><b>Abstract </b><p>This project is a collection of former (and some
|
|
new) projects brought together to make an APRS digipeater, which doubles
|
|
as an APRS weather station, with PE1RXF telemetry server
|
|
capabilities.</p></p>
|
|
<figure>
|
|
<img src="./images/block_diagram_overview.svg"
|
|
title="Block diagram ofdigipeater" alt="Block diagram of digipeater" />
|
|
<figcaption aria-hidden="true">Block diagram of digipeater</figcaption>
|
|
</figure>
|
|
<h1 id="the-story">The story</h1>
|
|
<p>For several years I operate an APRS iGate on both 2 meter and 70 cm
|
|
LoRa. I added my own PE1RXF telemetry support (see: <a
|
|
href="https://www.meezenest.nl/mees-elektronica/aprs_telemetry.html">https://www.meezenest.nl/mees-elektronica/aprs_telemetry.html</a>).
|
|
This worked fine, but I already had designed an updated version of the
|
|
iGate. The prototype worked, but had some issues. So I kept using the
|
|
old iGate and forgot all about the new version.</p>
|
|
<p>Some time ago I started to design a weather station (<a
|
|
href="https://www.meezenest.nl/mees-elektronica/weather_station.html">https://www.meezenest.nl/mees-elektronica/weather_station.html</a>)
|
|
which I located in the back garden. Because it was out of reach of my
|
|
wifi network, I used the APRS iGate prototype to send the weather data
|
|
via its build in LoRa modem to my PE1RXF telemetry server.</p>
|
|
<p>Than the idea of relocating my existing iGate to the location of my
|
|
weather station emerged. The weather station had all the hardware I
|
|
needed build in. And it made sense to combine the two systems, as both
|
|
handle APRS traffic. Besides, both systems use energy so shutting one
|
|
down seems sensible.</p>
|
|
<p>But the reason I used the APRS iGate prototype in the first place,
|
|
namely the absence of wifi, became a problem again. An APRS iGate has to
|
|
have access to the internet, that’s the whole point! But the amount of
|
|
data it sends is small, so I didn’t need lots of bandwidth. And at that
|
|
point another dormant project woke up: I always wanted to experiment
|
|
with TCP/IP over the air. In the past I did some experiments with TCP/IP
|
|
over AX.25 (packet radio), but the 1200 baud modems were simply too
|
|
slow. I also had build a 5GHz HamNet link, but 350 Mbit/s is quite the
|
|
overkill. I needed a link speed between 15kB/s to 500kB/s. The Rnode
|
|
project from <a
|
|
href="https://unsigned.io/hardware/RNode.html">https://unsigned.io/hardware/RNode.html</a>
|
|
seemed perfect.</p>
|
|
<h1 id="the-design">The design</h1>
|
|
<h2 id="weather-station">Weather station</h2>
|
|
<p>This project started with a weather station. I designed it as a stand
|
|
alone weather station with an RS-484 ModBus interface. It can measure
|
|
wind speed, wind direction, rain fall, humidity, air pressure and
|
|
temperature. The complete build document of the weather station can be
|
|
found here: <a
|
|
href="https://www.meezenest.nl/mees-elektronica/projects/weather_station/build_doc/weather_station.html">https://www.meezenest.nl/mees-elektronica/projects/weather_station/build_doc/weather_station.html</a></p>
|
|
<figure>
|
|
<img src="./images/weather_station_sensors_small.jpg"
|
|
title="Weather station" alt="Weather station" />
|
|
<figcaption aria-hidden="true">Weather station</figcaption>
|
|
</figure>
|
|
<h2 id="brains">Brains</h2>
|
|
<p>Although stand alone in operation, to read the measurements the
|
|
weather station must be connected to a host via RS-485. This host is a
|
|
Raspberry Pi LoRa shield I designed to be the successor of my first APRS
|
|
iGate. It is a simple PCB with room for a Raspberry Pi Zero 2 W, a LoRa
|
|
transceiver, a real time clock and a power supply.</p>
|
|
<figure>
|
|
<img src="./images/RPi-LoRa-shield_prototype.jpg"
|
|
title="Raspberry Pi LoRa shield prototype"
|
|
alt="Raspberry Pi LoRa shield prototype" />
|
|
<figcaption aria-hidden="true">Raspberry Pi LoRa shield
|
|
prototype</figcaption>
|
|
</figure>
|
|
<figure>
|
|
<img src="./images/RPi-LoRa-shield_schematic.png"
|
|
title="Raspberry Pi LoRa shield schematic"
|
|
alt="Raspberry Pi LoRa shield schematic" />
|
|
<figcaption aria-hidden="true">Raspberry Pi LoRa shield
|
|
schematic</figcaption>
|
|
</figure>
|
|
<p><a href="./images/RPi-LoRa-shield_schematic.pdf">PDF version of
|
|
schematic</a></p>
|
|
<p>To make this board work for this build, all the power button stuff
|
|
has to go. That is all the transistors and the surrounding resistors,
|
|
capacitors and diodes. And the 555 timer must also be removed. The RTC
|
|
should be mounted on the bottom of the board instead of the top. After
|
|
that, a Waveshare ethernet/USB hat is sandwiched between the pcb of the
|
|
shield and the Raspberry Pi.</p>
|
|
<figure>
|
|
<img src="./images/eth-usb-hub-hat.jpg"
|
|
title="Waveshare ethernet/USB hat" alt="Waveshare ethernet/USB hat" />
|
|
<figcaption aria-hidden="true">Waveshare ethernet/USB hat</figcaption>
|
|
</figure>
|
|
<h2 id="peripherals">Peripherals</h2>
|
|
<p>The Raspberry Pi needs some extra hardware for interfacing the
|
|
various peripherals, like the transceiver, the ModBus and the Rnode
|
|
modem.</p>
|
|
<h3 id="usb-hub">USB hub</h3>
|
|
<p>As the Raspberry Pi only has one USB port, a hub is essential. I used
|
|
an old one I had laying around. Taken out of its case, it fits
|
|
perfectly.</p>
|
|
<h3 id="rs-485-dongle">RS-485 dongle</h3>
|
|
<p>To interface with the weather station a USB to RS-485 dongle is
|
|
needed. A cheap one from Joy-IT (<a
|
|
href="https://joy-it.net/en/products/SBC-TTL-RS485">https://joy-it.net/en/products/SBC-TTL-RS485</a>)
|
|
is fine.</p>
|
|
<figure>
|
|
<img src="./images/rs-485_dongle.webp" title="RS-485 dongle"
|
|
alt="RS-485 dongle" />
|
|
<figcaption aria-hidden="true">RS-485 dongle</figcaption>
|
|
</figure>
|
|
<h3 id="baud-aprs-modem">1200 baud APRS modem</h3>
|
|
<p>This modem I also had laying around. It is called “Packet modem nano
|
|
2” and it is based on the Micromodem from unsigned.io (<a
|
|
href="https://unsigned.io/hardware/MicroModem.html">https://unsigned.io/hardware/MicroModem.html</a>).
|
|
The design files for this modem are part of this project and can be
|
|
found in the git repository.</p>
|
|
<figure>
|
|
<img src="./images/packetmodem_nano2_pcb_small.jpg"
|
|
title="Packet modem nano 2" alt="Packet modem nano 2" />
|
|
<figcaption aria-hidden="true">Packet modem nano 2</figcaption>
|
|
</figure>
|
|
<figure>
|
|
<img src="./images/packetmodem_nano2_rev2.png"
|
|
title="Packet modem nano 2 schematic"
|
|
alt="Packet modem nano 2 schamatic" />
|
|
<figcaption aria-hidden="true">Packet modem nano 2
|
|
schamatic</figcaption>
|
|
</figure>
|
|
<p><a href="./images/packetmodem_nano2_rev2.pdf">PDF version of
|
|
schematic</a></p>
|
|
<h3 id="rnode-modem">Rnode modem</h3>
|
|
<p>For the low speed network link I use the Rnode project from <a
|
|
href="https://unsigned.io/hardware/RNode.html">https://unsigned.io/hardware/RNode.html</a>.
|
|
This is an amazing project and I only use a small part of the features
|
|
available. In my ow project is works as a KISS compatible LoRa modem.
|
|
Together with the tncattach program (<a
|
|
href="https://unsigned.io/software/tncattach.html">https://unsigned.io/software/tncattach.html</a>)
|
|
it forms a Linux network adapter over which I can route all the network
|
|
traffic. The maximum speed is just above 20 KB/s, which is enough for
|
|
APRS-IS traffic. For archival reasons, I included the source code of
|
|
tncattach as well as rns (the firmware and configuration utility) in the
|
|
git repository.</p>
|
|
<p>The hardware on which the Rnode firmware is flashed is a LilyGO
|
|
LoRa32 v2.1 (also known as TTGO T3 v1.6.1). Of course you need at least
|
|
two boards to form a network. With a good antenna, the range is easily
|
|
100 meters (and probably more than 1 km), which is plenty enough for
|
|
what I need.</p>
|
|
<p>As a ham, I use the 433 MHz version, of course.</p>
|
|
<figure>
|
|
<img src="./images/lilygo-ttgo-lora32.jpg" title="LilyGO LoRa32"
|
|
alt="LilyGO LoRa32" />
|
|
<figcaption aria-hidden="true">LilyGO LoRa32</figcaption>
|
|
</figure>
|
|
<h2 id="external-hardware">External hardware</h2>
|
|
<h3 id="meter-transceiver">2 meter transceiver</h3>
|
|
<p>The 2 meter transceiver is an old Alinco DJ-580 hand held radio with
|
|
an output power of 5 Watt. It is connected to both the 5 pin DIN
|
|
connector and the 12 Volt barrel jack on the Raspberry Pi.</p>
|
|
<figure>
|
|
<img src="./images/alinco_dj580t.jpg" title="Alinco DJ-580"
|
|
alt="Alinco DJ-580" />
|
|
<figcaption aria-hidden="true">Alinco DJ-580</figcaption>
|
|
</figure>
|
|
<h3 id="diplexer">Diplexer</h3>
|
|
<p>The LoRa APRS transceiver (70cm) and the APRS transceiver (2m) are
|
|
connected to a diplexer, making it possible to use one dual band antenna
|
|
for both radios. The diplexer is designed specially for this project.
|
|
The port isolation is not great, but because of the small transmit power
|
|
of the two transceivers, this is not a big deal. And even so: it
|
|
outperforms a commercial Diamond triplexer on the 70cm band.</p>
|
|
<p>All the inductors are made from 1mm copper wire (preferably silver
|
|
plated) and wind around a 6mm rod (a screw driver or a drill bit for
|
|
example).</p>
|
|
<h4 id="adjustment-procedure">Adjustment procedure:</h4>
|
|
<ul>
|
|
<li>Connect a dummy load to the combined 2m/70 cm port</li>
|
|
<li>Connect an SWR meter and a 70cm transmitter to the 70cm port</li>
|
|
<li>Adjust C1, C2 and C3 for the best SWR</li>
|
|
<li>Connect the SWR meter and a 2 meter transmitter to the 2m port</li>
|
|
<li>Adjust C4 and C5 for the best SWR</li>
|
|
<li>Repeat the two steps, as both ports influence each other</li>
|
|
</ul>
|
|
<h4 id="specifications">Specifications</h4>
|
|
<ul>
|
|
<li>Insertion loss: < 0.2dB</li>
|
|
<li>Port isolaion (2m to 70cm): > 55dB</li>
|
|
<li>Port isolation (70cm to 2m): > 30dB</li>
|
|
<li>Maximum power: 30W</li>
|
|
</ul>
|
|
<figure>
|
|
<img src="./images/diplexer.svg" title="Diplexer schematic"
|
|
alt="Diplexer schematic" />
|
|
<figcaption aria-hidden="true">Diplexer schematic</figcaption>
|
|
</figure>
|
|
<figure>
|
|
<img src="./images/diplexer_inside.jpg" title="Diplexer prototype"
|
|
alt="Diplexer prototype" />
|
|
<figcaption aria-hidden="true">Diplexer prototype</figcaption>
|
|
</figure>
|
|
<h3 id="antenna">Antenna</h3>
|
|
<p>This is a simple 2m/70cm dual band antenna from Diamond, the X30.</p>
|
|
<figure>
|
|
<img src="./images/diamond-x30.jpg" title="Antenna" alt="Antenna" />
|
|
<figcaption aria-hidden="true">Antenna</figcaption>
|
|
</figure>
|
|
<h1 id="the-build">The build</h1>
|
|
<h2 id="hardware">Hardware</h2>
|
|
<p>To make the system easy to handle and somewhat robust, it is
|
|
assembled on a piece of MDF board, which can be bolted in a 19” open
|
|
frame housing.</p>
|
|
<figure>
|
|
<img src="./images/assembled_prototype_annotated.jpg"
|
|
title="Assembled prototype" alt="Assembled prototype" />
|
|
<figcaption aria-hidden="true">Assembled prototype</figcaption>
|
|
</figure>
|
|
<p><a href="./images/assembled_prototype.jpg">Large version of
|
|
photo</a></p>
|
|
<h2 id="software">Software</h2>
|
|
<p>The instalation of all the needed software on the Raspberry Pi is
|
|
complicated, so I wrote a separate document: <a
|
|
href="./installation_pe1rxf_aprs_weather_server.html">installation_pe1rxf_aprs_weather_server.html</a></p>
|
|
<h1 id="the-specifications">The specifications</h1>
|
|
<ul>
|
|
<li>2 meter transceiver with 37dBm (5W) output power</li>
|
|
<li>70 cm LoRa transceiver with 20 dBm (100mW) output power</li>
|
|
<li>Raspberry Pi Zero 2 W</li>
|
|
<li>APRS igate software</li>
|
|
<li>Weather station via ModBus</li>
|
|
<li>Rnode TCP/IP over 70 cm LoRa for internet</li>
|
|
</ul>
|
|
<h1 id="license">License</h1>
|
|
<p>Copyright (C) 2024 M.T. Konstapel</p>
|
|
<p><a
|
|
href="https://meezenest.nl/mees/">https://meezenest.nl/mees/</a></p>
|
|
<p>The software is published as open-source software (GPL). The hardware
|
|
is published as open-source hardware (OSH).</p>
|
|
<h2 id="software-1">Software</h2>
|
|
<p>This program is free software: you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by the
|
|
Free Software Foundation, either version 3 of the License, or (at your
|
|
option) any later version.</p>
|
|
<h2 id="hardware-and-documentation">Hardware and documentation</h2>
|
|
<p>This work is licensed under a Creative Commons Attribution-ShareAlike
|
|
4.0 International License.</p>
|
|
<hr>
|
|
</article>
|
|
</main>
|
|
<footer>
|
|
<p>©
|
|
2024-02-27
|
|
M.T. Konstapel
|
|
<a href="https://meezenest.nl/mees/">https://meezenest.nl/mees/</a>
|
|
</p><p>This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/">Creative Commons Attribution-ShareAlike 4.0 International License</a>.
|
|
</p>
|
|
</footer>
|
|
</body>
|
|
</html>
|
|
|