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>
 | 
