This project is a collection of former (and some new) projects connected together to make an APRS digipeater, which doubles as an APRS weather station, with PE1RXF telemetry server capabilities.
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.

306 lines
14 KiB

10 months ago
<!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>
10 months ago
<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>
10 months ago
<li>
<a href="https://git.meezenest.nl/marcel/aprs_digipeater_weather_telemetry">Git repo</a>
10 months ago
</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>
10 months ago
<p class="subtitle">with weather and PE1RXF telemetry server</p>
<p class="author">M.T. Konstapel</p>
<p class="date">2024-02-27</p>
10 months ago
</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
10 months ago
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>
10 months ago
<h2 id="peripherals">Peripherals</h2>
10 months ago
<p>The Raspberry Pi needs some extra hardware for interfacing the
various peripherals, like the transceiver, the ModBus and the Rnode
modem.</p>
10 months ago
<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>
10 months ago
<p>As a ham, I use the 433 MHz version, of course.</p>
10 months ago
<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: &lt; 0.2dB</li>
<li>Port isolaion (2m to 70cm): &gt; 55dB</li>
<li>Port isolation (70cm to 2m): &gt; 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>
10 months ago
<figure>
<img src="./images/diplexer_inside.jpg" title="Diplexer prototype"
alt="Diplexer prototype" />
<figcaption aria-hidden="true">Diplexer prototype</figcaption>
10 months ago
</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>
10 months ago
<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>
10 months ago
<li>Raspberry Pi Zero 2 W</li>
<li>APRS igate software</li>
10 months ago
<li>Weather station via ModBus</li>
<li>Rnode TCP/IP over 70 cm LoRa for internet</li>
</ul>
<h1 id="license">License</h1>
10 months ago
<p>Copyright (C) 2024 M.T. Konstapel</p>
10 months ago
<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>&copy;
2024-02-27
10 months ago
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>