<!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-14" / >
< title > APRS digipeater< / 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 digipeater< / h1 >
< p class = "subtitle" > with weather and PE1RXF telemetry server< / p >
< p class = "author" > M.T. Konstapel< / p >
< p class = "date" > 2024-02-14< / p >
< / header >
< main >
< article >
< p > < b > Abstract < / b > < p > 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.< / 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 >
< 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 = "more-than-brains-alone" > More than brains alone< / h2 >
< p > The Raspberry Pi with all the extra hardware is housed in a small
plastic housing. On the back panel behind the SMA connectors and the
power jack, I placed a copper strip. This acts as the star grounding
strip on which all other ground wires are connected. This prevents a lot
of RF and EMC problems.< / p >
< figure >
< img src = "./images/raspberry_pi_proto_small.jpg"
title="Inside the brains" alt="Inside the brains" />
< figcaption aria-hidden = "true" > Inside the brains< / figcaption >
< / figure >
< p > < a href = "./images/raspberry_pi_proto.jpg" > Large version of
photo< / a > < / p >
< figure >
< img src = "./images/raspberry_pi_proto_backside.jpg" title = "Back side"
alt="Back side" />
< figcaption aria-hidden = "true" > Back side< / 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 triplexer, making it possible to use one dual band
antenna for both radios. Why a triplexer? Well, I had one laying around.
I terminated the unused 1200MHz connector with a 50 Ohm load. But a
diplexer would have been sufficient, of course.< / p >
< figure >
< img src = "./images/triplexer.png" title = "Triplexer" alt = "Triplexer" / >
< figcaption aria-hidden = "true" > Triplexer< / 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 = "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 5 Watt output power< / li >
< li > 70 cm LoRa transceiver with 20 dBm output power< / li >
< li > Raspberry Pi Zero 2 W< / li >
< li > APRS cross band digipeater 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-14
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 >