Heater algoritm now 10/10min, was 5/15min
This commit is contained in:
205
article/weather_station_article.html
Normal file
205
article/weather_station_article.html
Normal file
@@ -0,0 +1,205 @@
|
||||
<!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>
|
Reference in New Issue
Block a user