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.
205 lines
10 KiB
205 lines
10 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-03" />
|
|
<title>APRS weerstation</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="#weerstation"
|
|
id="toc-weerstation">Weerstation</a></li>
|
|
<li><a href="#aprs" id="toc-aprs">APRS</a></li>
|
|
<li><a href="#hamnet" id="toc-hamnet">HamNet</a></li>
|
|
<li><a href="#meer-informatie" id="toc-meer-informatie">Meer
|
|
informatie</a></li>
|
|
<li><a href="#verantwoording"
|
|
id="toc-verantwoording">Verantwoording</a></li>
|
|
</ul>
|
|
</li>
|
|
<li>
|
|
<a href="./weather_station_article.pdf">PDF version</a>
|
|
</li>
|
|
<li>
|
|
<a href="https://git.meezenest.nl/marcel/weather_station">Git repo</a>
|
|
</li>
|
|
<li>
|
|
<a href="https://meezenest.nl/mees/weather_station.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 weerstation</h1>
|
|
<p class="subtitle">met hamnet verbinding</p>
|
|
<p class="author">M.T. Konstapel</p>
|
|
<p class="date">2024-02-03</p>
|
|
<p><a href="./weather_station_article.pdf"><i>PDF version</i></a></p>
|
|
</header>
|
|
<main>
|
|
<article>
|
|
<p><b>Abstract </b><p>Ik maak veel gebruik van het APRS netwerk:
|
|
positiebepaling, telemetry en berichten versturen; ik doe het allemaal.
|
|
Dit kan omdat ik dicht bij de Duitse grens woon: anders dan in Nederland
|
|
waar het APRS netwerk dankzij lastige regelgeving nagenoeg is verdwenen,
|
|
is in Duitsland het netwerk nog springlevend. Ik maak gebruik van Duitse
|
|
digipeaters en iGates, die gewoon berichten vanaf het internet mogen
|
|
doorzenden. Wat een geluk! Het enige wat ik nog niet kon, was
|
|
weergegevens delen via het netwerk. Om daar verandering in te brengen
|
|
heb ik een weerstation ontworpen dat elke 10 minuten een weerbericht kan
|
|
uitzenden via het APRS netwerk. En omdat het systeem zo’n 100 meter van
|
|
mijn huis in de acchtertuin staat, heb ik er ook een 5 GHz hamnet
|
|
verbinding naar toe gemaakt, zodat ik het systeem op afstand kan
|
|
bedienen. Het hamnet gebruik ik ook om de weermetingen naar mijn Grafana
|
|
dashboard te sturen. Oh, en omdat twee beter is dan een heb ik er ook
|
|
een 20KB/s hamnet link over 70cm LoRa als backup in geknutseld.</p></p>
|
|
<h1 id="weerstation">Weerstation</h1>
|
|
<p>Als uitgangspunt van het weerstation gebruik ik de SparkFun Weather
|
|
Meter. Dit is een kit met drie sensors: een windvaan, een anemometer en
|
|
een regenmeter. Deze kit heb ik aangevuld met sensors voor temperatuur,
|
|
luchtdruk en luctvochtigheid. Al deze sensors zijn rechtstreeks
|
|
aangesloten op een Arduino Mini Pro. Ik heb daar een RS-485 driverchip
|
|
en een ompoolbeveiliging aan toegevoegd. Het uiteindelijke schema is
|
|
hieronder te zien. Ingewikkeld is de hardware niet, want alle
|
|
fuctionaliteit zit in de software.</p>
|
|
<figure>
|
|
<img src="./images/weather_station_schematic.svg" title="Schema"
|
|
alt="Schema" />
|
|
<figcaption aria-hidden="true">Schema</figcaption>
|
|
</figure>
|
|
<p>Het weerstation is uit te lezen via een ModBus interface. Dit is een
|
|
industriestandaard, dus er zijn legio mogelijkheden om met het
|
|
weerstation te communiceren. De ModBus registers bevatten de meetwaarden
|
|
van de sensors en worden elke twee seconde ververst. Dit bepaald dus de
|
|
maximale uitleesfrequentie. De volgende gegevens zijn beschikbaar:</p>
|
|
<ul>
|
|
<li>Windrichting in graden</li>
|
|
<li>Gemiddelde wind snelheid van de laatste 10 minuten in m/s</li>
|
|
<li>Maximale windstoot van de laatste 10 minuten in m/s</li>
|
|
<li>Hoeveelheid regen in het afgelopen uur in mm</li>
|
|
<li>Hoeveelheid regen in de afgelopen 24 uur in mm</li>
|
|
<li>Temperatuur in graden C</li>
|
|
<li>Luchtvochtigheid in %</li>
|
|
<li>Luchtdruk in hPa</li>
|
|
</ul>
|
|
<p>Daarnaast zijn er nog een aantal statusregisters beschikbaar. Deze
|
|
worden besproken in de uitgebreide bouwbeschrijving die beschikbaar is
|
|
op mijn website.</p>
|
|
<p>De luchtvochtigheidssensor kan bij een hoge luchtvochtigheid
|
|
verzadigd raken en zo blijven steken op 100%. Om dit te voorkomen is het
|
|
mogelijk om de sensor automatisch te laten verwarmen wanneer de
|
|
luchtvochtigheid langer dan een uur boven de 96% is. De verwarming wordt
|
|
dan elke 20 minuten voor 5 minuten aangezet. In de 15 minuten die
|
|
overblijven koelt de sensor weer af tot de omgevingstemperatuur. Dit
|
|
proces wordt heraald totdat de sensor weer een waarde beneden de 96%
|
|
aangeeft. Tijdens het opwarmen en afkoelen kan de luchtvochtigheid en
|
|
temperatuur maar eens in de 20 minuten worden gemeten. Dit is de prijs
|
|
die betaald moet worden wanneer we een goedkope luchtvochtigheidssensor
|
|
gebruiken.</p>
|
|
<h1 id="aprs">APRS</h1>
|
|
<p>Om de weermetingen te kunnen uitzenden via het APRS netwerk is er een
|
|
2 meter FM zender (een oude Alinco portofoon) en een 1200baud modem (een
|
|
variant op het MicroModem van markqvist) nodig. En een computer om de
|
|
gegevens via de ModBus uit het weerstation te lezen en door te sturen
|
|
naar het modem. Een Raspberry Pi Zero 2W is daar perfect geschikt voor.
|
|
Deze is goedkoop, klein en verbruikt weinig energie. Omdat een APRS
|
|
weerstation ook zijn positie en tijd moet doorgeven om op de kaart gezet
|
|
te kunnen worden is er een GPS module via USB aangesloten op de
|
|
Raspberry Pi. Strikt genomen is de tijd niet noodzakelijk en omdat het
|
|
station vast is opgesteld kan de positie ook handmatig worden ingesteld,
|
|
maar een gps module voegt weer extra complexiteit toe en dat maakt het
|
|
project net weer wat interessanter. Een eenvoudig Python programma leest
|
|
het weerstation uit, vraagt de positie en de tijd van de gps ontvanger
|
|
op en construeerd het APRS frame dat uitgezonden moet worden. Dit frame
|
|
wordt vervolgens via de Linux AX.25 stack naar het modem gestuurd.</p>
|
|
<p>Omdat APRS over LoRa op de 70cm band steeds poulairder wordt heb ik
|
|
ook een LoRa module op de Raspberry Pi aangeloten. Het weerbericht kan
|
|
zo ook via LoRa worden uitgezonden. De software hiervoor is een in
|
|
Python geschreven KISS interface. Via deze software kan de LoRa module
|
|
gekoppeld worden aan de AX.25 stack. De Raspberry Pi ziet het modem als
|
|
elk ander KISS compatible modem.</p>
|
|
<p>Met een diplexer worden de signalen van beide zenders samengevoegd en
|
|
gaan zo naar een dualband antene.</p>
|
|
<h1 id="hamnet">HamNet</h1>
|
|
<p>Het syteem kan autonoom werken, maar het is handig (en noodzakelijk)
|
|
om het systeem van afstand te kunnen bedienen en wanneer dat nodig is
|
|
ook uit te kunnen schakelen. Daarvoor heb ik een 5GHz HamLink tussen het
|
|
huis en het weerstation aangelegt. Op deze manier heb ik een snelle
|
|
netwerkverbinding naar de Raspberry Pi en kan ik via telnet inloggen en
|
|
het systeem bedienen. De verbindig wordt ook gebruikt om verbindig te
|
|
maken met het APRS-IS netwerk op het internet. Zo doet mijn weerstation
|
|
ook dienst als RX-only iGate voor zowel traditioneel APRS als LoRa APRS.
|
|
De HamNet link maakt gebruik van commercieel verkrijgbare schotels. Ik
|
|
gebruik apparatuur van Unifi Ubiquiti, maar apparatuur van Mikrotik is
|
|
even goed geschikt.</p>
|
|
<p>De snelle netwerkverbinding is handig, maar wanneer het systeem
|
|
autonoom werkt is het wel een beetje een overkill, want de verbinding
|
|
wordt dan enkel gebruikt om APRS berichten door te sturen naar het
|
|
APRS-IS netwerk. Daarom heb ik ook nog een lage snelheid
|
|
netwerkverbinding geintegreerd. Deze heeft een doorvoersnelheid van iets
|
|
meer dan 20KB/s, wat genoeg is voor de toepassing. Het is zelfs mogelijk
|
|
om via deze langzame verbinding in te loggen via telnet. Dat gaat dan
|
|
wat trager, maar als backup is het prima geschikt. Zo heb ik twee
|
|
manieren om het systeem van afstand te beheren. De verbinding gaat over
|
|
LoRa via de 70cm band. Hiervoor gebruik ik een kant en klaar board, een
|
|
LilyGO TTGO T3 LoRa32 433MHz V1.6.1 ESP32. Hierop heb ik de Rnode
|
|
firmware van unsigned.io gezet. Met de bijbehorende Linux software
|
|
(tncattach) wordt dit een netwerkinterface onder Linux waarover ik het
|
|
netwerkverkeer kan leiden.</p>
|
|
<h1 id="meer-informatie">Meer informatie</h1>
|
|
<p>Dit artikel is slechts een introductie van het APRS weerstation. Meer
|
|
informatie is te vinden op mijn website https://meezenest.nl/mees Daar
|
|
vind je uitgebreide documentatie en alle ontwerpbestanden en broncode
|
|
die je nodig hebt om zelf aan deslag te gaan.</p>
|
|
<h1 id="verantwoording">Verantwoording</h1>
|
|
<p><a
|
|
href="https://www.meezenest.nl/mees-elektronica/projects/weather_station/build_doc/weather_station.html">Bouwbeschrijving
|
|
weerstation:
|
|
https://www.meezenest.nl/mees-elektronica/projects/weather_station/build_doc/weather_station.html</a></p>
|
|
<p><a
|
|
href="https://www.meezenest.nl/mees-elektronica/packetmodem_nano.html">1200bd
|
|
modem:
|
|
https://www.meezenest.nl/mees-elektronica/packetmodem_nano.html</a></p>
|
|
<p><a href="https://git.meezenest.nl/marcel/RPi-LoRa-KISS-TNC">LoRa KISS
|
|
software: https://git.meezenest.nl/marcel/RPi-LoRa-KISS-TNC</a></p>
|
|
<p><a
|
|
href="https://www.meezenest.nl/mees-elektronica/RPi_LoRa_shield.html">Raspberry
|
|
Pi met LoRa module:
|
|
https://www.meezenest.nl/mees-elektronica/RPi_LoRa_shield.html</a></p>
|
|
<p>Copyright (C) 2023, 2024 M.T. Konstapel - PE1RXF</p>
|
|
<p><a
|
|
href="https://meezenest.nl/mees/">https://meezenest.nl/mees/</a></p>
|
|
<p>This work is licensed under a Creative Commons Attribution-ShareAlike
|
|
4.0 International License.</p>
|
|
<hr>
|
|
</article>
|
|
</main>
|
|
<footer>
|
|
<p>©
|
|
2024-02-03
|
|
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>
|
|
|