206 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			206 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
<!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>
 |