Internet-weerbericht op microcontroller

Laat andere lezers zien hoe jij het hebt opgelost

Postby marc v » Fri Nov 20, 2009 12:00 am

Ik heb gemerkt dat er hier wel meer mensen zijn die zich bezig houden met het weer en het meten ervan met behulp van elektronica. Het onderwerp heeft mij ook altijd bezig gehouden, alhoewel je je de laatste tijd kunt afvragen of het zelf bouwen van een weerstation nog wel zin heeft met al die in de handel verkrijgbare en toch wel erg gesofistikeerde weerstations.

Een andere manier om het weer bij je thuis op een scherm te krijgen is de informatie gewoon van het internet plukken. Ik heb het hier meerbepaald over METAR(meteorological aerodrome report)- en TAF(terminal aerodrome forecast)-gegevens, afkomstig van luchthavens verspreid over de wereld. De informatie die hier beschikbaar wordt gesteld is betrouwbaar, gedetailleerd en up-to-date. De meeste stations voorzien weersvoorspellingen die tot maximum 30 uur vooruit kijken. Deze voorspellingen zijn doorgaans ook erg betrouwbaar.

Mijn project hierrond is begonnen rond de tijd dat de Digibutler gepubliceerd werd. Ik was reeds in het bezit van een Freescale M52233DEMO bordje dat ik bedoeld had als basis voor een zelfbouw-internet-weerstation, maar zoiets programmeren zonder voldoende achtergrond-kennis rond netwerken is niet zo evident. De informatie die ik vond in de Digibutler-artikels, met name application note AN3518, heeft daar echter verandering in gebracht.

(wordt vervolgd...)
marc v
 
Posts: 16
Joined: Thu Jan 02, 2014 3:39 pm

Postby schueler » Fri Nov 20, 2009 12:00 am

Leuk initiatief.
Ben erg benieuwd naar jouw oplossing.


Ben
schueler
 
Posts: 1433
Joined: Thu Jan 02, 2014 10:40 am

Postby marc v » Fri Nov 20, 2009 12:00 am

(...vervolg)

Application note AN3518 beschrijft een internet-RSS-reader waarbij de van het internet afkomstige informatie op een 4x20 LCD-scherm wordt weergegeven. Het is, net zoals de software in de Digibutler, gebaseerd op de Coldfire Lite stack van InterNiche. De informatie wordt van het internet gehaald door middel van een HTML-client in de Coldfire software. Deze application note was dus 100% geschikt als basis voor mijn weerstation.

Hieronder zie je een voorbeeld van de weergave van het weerbericht op het LCD-scherm. De weergave is een scrollende tekst:


Ik heb zelf 2 opstellingen van het weerstation gebouwd. Eentje is opgebouwd rond het M52233DEMO bord van Freescale en is gekoppeld met een groot 4x20 karakter LCD-scherm met 9mm karakterhoogte. Zo'n groot scherm is leuk, het is leesbaar vanop meters afstand. Dit is een foto van de opstelling. Het LCD zit aan de achterkant...


De andere opstelling is opgebouwd rond de nieuwere M52259DEMOKIT. Deze kit is kleiner, de CPU krachtiger dan de 52233 en vooral... dit bord is een stuk goedkoper dan het andere! Deze opstelling heb ik in een kastje ingebouwd:


(wordt alweer vervolgd...)'
marc v
 
Posts: 16
Joined: Thu Jan 02, 2014 3:39 pm

Postby marc v » Fri Nov 20, 2009 12:00 am

(...vervolg)

Het weerstation kan de informatie weergeven van slechts 1 locatie. Dat is jammer natuurlijk, vermits er informatie beschikbaar is van zo'n 4000 locaties! De weergegeven locatie kan echter gewijzigd worden. Hiervoor heb ik een Windows-tool geschreven...



Hier kan je rechtsboven de gewenste locatie kiezen. De aktuele gegevens voor deze locatie worden in het linkse window weergegeven. Als dit nu de locatie is die je op het weerstation wil laten verschijnen klik je op "naar weerstation". Het programma stuurt nu via een UDP-berichtje de parameters door naar het weerstation, dat prompt naar de nieuwe locatie overschakelt.

Het gekozen station wordt eveneens opgeslagen in de Windows registry, zodat de keuze behouden blijft na het afsluiten van het programma.

De tool kan echter nog veel meer dan dat! Stel dat je op vakantie gaat naar wie weet elke exotische bestemming en je wilt weten hoe het weer daar is. Maar je hebt geen idee wat het dichtstbijzijnde weerstation is. Geef de coördinaten van je bestemming in in de daarvoor voorziene vakjes en klik op "zoek dichtste station". Het programma produceert nu een lijst van stations gesorteerd volgens afstand tot de gekozen coördinaten.
Je kan deze locatie nu zelf een naam geven, en vervolgens naar de microcontroller sturen met de knop "eigen locatie zenden". De coördinaten worden eveneens meegestuurd, deze worden gebruikt om de tijden van zonsopgang en zonsondergang te berekenen.
Tenslotte kan je ook nog de tijdverschuiving ingeven. Standaard wordt de west-europese tijd weergegeven. Daarbij wordt rekening gehouden met zomer- en wintertijd. Kies je zelf een tijdzone, dan wordt er met zomer- en wintertijd geen rekening gehouden.

(wordt vervolgd...)'
marc v
 
Posts: 16
Joined: Thu Jan 02, 2014 3:39 pm

Postby marc v » Fri Nov 20, 2009 12:00 am

(...vervolg)

Naast de tool heb ik ook nog een simulatie-programma gemaakt voor Windows. Dit programma geeft exact weer wat er op het LCD-scherm van de microcontroller getoond wordt.



Ik heb zowel de tool als het LCD-simulatie-programma in attachment toegevoegd aan dit bericht zodat je dat indien gewenst kan bekijken. Er moet niets geïnstalleerd worden; het zijn gewoon 2 exe bestanden die meteen gerund kunnen worden.

In een volgend bericht ga ik wat verder uitwijden over de controller-hardware.

Nog even vermelden dat, wanneer je een firewall op je computer aktief hebt staan, je een melding kan krijgen bij het starten van de tool. Dat komt omdat dat programma een UDP-poort opent om te kunnen communiceren met de microcontroller. Dit is volstrekt ongevaarlijk en kan zonder probleem toegelaten worden.

(wordt vervolgd...)'
Attachments
metaf.zip
(571.89 KiB) Downloaded 85 times
marc v
 
Posts: 16
Joined: Thu Jan 02, 2014 3:39 pm

Postby marc v » Fri Nov 20, 2009 12:00 am

Zoals beloofd hier iets meer over de controller-hardware. Het schema hiervan zit in het bijgevoegde PDF-document. Veel stelt het infeite niet voor. Het controller-bord wordt met een aantal lijnen verbonden met het LCD. Hoewel dit type LCD meestal gespecifieerd is om te werken op 5 volt, wordt het hier gevoed met 3,3V vanuit het controller-bord en dat werkt zonder problemen. Wel is het nu noodzakelijk om een negatieve bias-spanning op te wekken aangezien VDD-VO zo'n 4V moet zijn (bij grote LCD's met 9mm karakterhoogte moet het spanningsverschil nog groter zijn). De gebruikte spanningsomvormer hiervoor is U3, een MAX660.

De backlight van het LCD wordt ook door de microcontroller aangestuurd. De bedoeling is dat de backlight overdag op volle kracht brandt en 's nachts op een laag pitje brandt. De waarde voor de serieweerstand van de backlight is experimenteel bepaald. Het door mij gebruikte type LCD is van een onbekend type (recuperatie). De backlight ervan kan zonder serieweerstand werken op 5V. Bij andere LCD-types kan het noodzakelijk zijn dat er altijd een serieweerstand aanwezig is. Opletten dus, de schakeling moet hier mogelijk aangepast worden!

Verder staat er in het schema nog een Microchip 24AA02E48 (U2). Het is zo dat ieder apparaat dat op een netwerk wordt aangesloten voorzien moet zijn van een uniek MAC-adres. De MCF52233 microcontroller heeft niet van zichzelf zo'n adres ingebouwd gekregen. De originele verie van iNiche Coldfire Lite heeft een MAC adres ingebouwd in software, maar als iedereen dezelfde software gaat gebruiken heeft iedereen ook identiek hetzelfde MAC adres en dat is verboden.
De 24AA02E48 is een eeprom waarvan een aantal locaties gebruikt worden om een uniek MAC adres in op te slagen. Ik heb Coldfire Lite aangepast om niet het adres in software te gebruiken maar wel het in de 24AA02E48 opgeslagen adres.
De adreslijnen van de 24AA02E48 hoeven niet te worden aangesloten.

De schakeling dient enkel nog voorzien te worden van een 5V-voeding.
Attachments
METAF.pdf
(12.48 KiB) Downloaded 81 times
marc v
 
Posts: 16
Joined: Thu Jan 02, 2014 3:39 pm

Postby marc v » Fri Nov 20, 2009 12:00 am

Ter info : deze post wordt niet weergegeven zoals bedoeld. Ik wilde hier HTML-code tonen. De browser laat die code echter niet zien maar interpreteert ze gewoon. Daarom in attachment de oorspronkelijke HTML-code.
-----------------------------------------------------------------------
Iets meer over METAR en TAF informatie nu. De informatie die de microcontroller van het internet ontvangt is in feite een HTML-geformatteerd document. Er is dus wel wat gepuzzel in software nodig om de eigenlijke informatie uit de HTML te halen.

Er zijn 2 servers vanwaar de weerberichten kunnen gedownload worden:
http://adds.aviationweather.gov/
en
http://weather.aero/

Een weerbericht ziet er bijvoorbeeld zo uit:




ADDS - METARs form results






Aviation Digital Data Service (ADDS)

Output produced by METARs form (1636 UTC 20 November 2009)
found at http://adds.aviationweather.gov/metars/index.php  





EHAM 201625Z 21014KT 7000 -RA FEW008 SCT010 BKN013 13/12 Q1016 BECMG 8000 BKN015

EHAM 201358Z 2012/2118 21015G25KT 9999 SCT025 OVC060
PROB40
TEMPO 2013/2016 6000 -RA SCT015 BKN020
BECMG 2100/2103 19005KT 4500 BR
PROB30 2103/2109 2000 SCT002 BKN004
BECMG 2108/2111 18010KT 9999 NSW SCT012
BECMG 2115/2118 15012KT CAVOK








De informatie waarnaar we op zoek zijn is hier in kleur weergegeven.
Allereerst de datum en tijd waarop het bericht is gedownload, hier in rood weergegeven. Overigens worden alle tijden in het bericht weergegeven in universele tijd (UT, Zulu, GMT).
Vervolgens vinden we het METAR-bericht in groen. Het METAR-bericht bevat informatie over het actuele weer. Bij vele stations wordt dit om het half uur geupdate. Wat staat er zoal in?
EHAM de ICAO-code van het station, in dit geval Amsterdam
201625Z datum en tijd van de waarneming, hier de 20ste van de maand om 16h25 Zulu
21014KT wind vanuit 210 graden aan 14 knopen
7000 zichtbaarheid 7000m
-RA lichte regen
FEW008 few clouds op hoogte 800 voet
SCT010 scattered clouds op hoogte 1000 voet
BKN013 broken clouds op 1300 voet
13/12 temperatuur 13 graden C, dauwpunt 12 graden C
Q1016 luchtdruk 1016 mBar
BECMG geleidelijk...
8000 zicht 8000m
BKN015 broken clouds op 1500 voet

Het TAF-bericht dat de voorspelling bevat, vertoont veel gelijkenis met het metar bericht. Een greep uit de codes...
2012/2118 geldig van de 20ste om 12 uur tot de 21ste om 18 uur (Zulu tijd)
21015G25KT wind uit 210 graden aan 15 knopen, pieken tot 25 knopen
PROB40 40% kans (weergegeven als "mogelijk" door controller)
TEMPO tijdelijk
BR nevel
PROB30 30% kans (weergegeven als "een kleine kans" door controller)
NSW no significant weather
CAVOK clearance and visibility OK

Er is op het internet een massa informatie te vinden over METAR en TAF. Ik heb echter geen enkel document gevonden dat echt alle informatie bevat. Bovendien is er ook een verschil tussen gebruikte codes, bijvoorbeeld in de USA en Australie gebruikt men codes die bij ons niet gebruikt worden. Wat ik ook gemerkt heb tijdens het vele testen is dat het soms lijkt alsof METAR- en TAF-berichten met de hand gecodeerd worden, uitgaande van de fouten die je er soms in vindt. Zo heb ik bijvoorbeeld eens "TEMPO" gezien waarbij de "O" was vervangen door een "0" (nul).'
Attachments
metartaf.txt
(1.23 KiB) Downloaded 88 times
marc v
 
Posts: 16
Joined: Thu Jan 02, 2014 3:39 pm

Postby marc v » Fri Nov 20, 2009 12:00 am

Iets over Interniche Coldfire Lite nu. Coldfire lite heeft ook voor de nodige problemen gezorgd, te wijten aan bugs in het operating systeem.

In de loop van de ontwikkeling van het weerstation heb ik achtereenvolgens gebruik gemaakt van CF Lite versies 2.0, 3.0 en 3.2. Ondanks dat CF Lite intussen dus aan versie 3.2 is zitten er toch nog steeds een aantal belangrijke problemen in.

In de eerste maanden dat ik met CF Lite werkte was een belangrijk probleem dat het systeem regelmatig vast liep. Erg vervelend, en lastig om het probleem op te sporen als je niet weet waarnaar te zoeken. Uiteindelijk ben ik er toch in geslaagd om enkele belangrijke bugs op te sporen en te elimineren. Het resultaat is dat de microcontroller nu wekenlang draait zonder vastlopen.

Ik ben er in geslaagd om 2 belangrijke problemen in CF Lite op te lossen. Het eerste probleem bevond zich in de TCP client, het 2de bevond zich in de DNS-client. Beide problemen konden vastlopen van de CPU veroorzaken.

En dan is er de compatibiliteit tussen CF Lite en de M52259DEMOKIT. Ondanks het feit dat de CF-Lite-code een target bevat voor de 52259 en de code referenties bevat naar de demokit toe, blijkt dat alleen de 52259EVB echt ondersteund wordt. Het probleem hier was dat de EVB een andere PHY-chip gebruikt dan de DEMOKIT. Beide PHYs zijn niet compatibel op register-niveau, met als gevolg dat de demokit vast loopt tijdens het opstarten. Maar ook dat probleem is nu opgelost.

Ik heb geprobeerd mijn aanpassingen de communiceren naar Freescale toe, maar ik heb de indruk dat ze niet echt geinteresseerd zijn om de verbeteringen over te nemen. Ik heb mijn eigen versie, met alle patches en bug fixes, dan maar zelf on-line gezet. Je vindt het hier, mocht je geinteresseerd zijn...
http://www.mvdh.be/ColdFire_Lite_3.2_patched_Marc_VDH_20091012.zip
marc v
 
Posts: 16
Joined: Thu Jan 02, 2014 3:39 pm

Postby marc v » Fri Nov 20, 2009 12:00 am

En verder...

Mijn streefdoel is om voor dit project een PCB te ontwerpen. De print zou dezelfde afmetingen moeten hebben als het gebruikte LCD, om zo een sandwich-constructie te vormen. Dat lijkt me de meest efficiente oplossing.
De PCB ontwerpen is op zich geen probleem, maar voor dergelijk ontwerp heb je al gauw een 4-laags multilayer nodig. Een dergelijke print in prototype laten produceren wordt al snel een kostelijke zaak voor een hobbyist. We houden het voorlopig dus maar bij de demo-bordjes...

Wat de firmware voor de microcontroller betreft... die is beschikbaar op eenvoudige aanvraag. Het is een Codewarrior 7.1.2-project met targets voor de 52233DEMO (en 52235EVB) en 52259DEMOKIT.
De teksten verschijnen standaard in het nederlands op het scherm, maar de taal kan via conditionele compilatie omgeschakeld worden. Engels is reeds voorzien en er is reeds structuur aanwezig voor frans en duits. Ik heb me echter nog niet gewaagd aan de vertaling naar die twee talen...
marc v
 
Posts: 16
Joined: Thu Jan 02, 2014 3:39 pm

Postby marc v » Fri Nov 20, 2009 12:00 am

Wat de weergegeven informatie op het weerstation betreft: de meeste weergegeven informatie is rechtstreeks afkomstig uit de METAR- en TAF-berichten. Bepaalde gegevens worden echter door de microcontroller berekend uit die gedownloade data.

Zo wordt bijvoorbeeld de tijd van zonsopgang en -ondergang berekend op basis van de actuele datum/tijd en van de coordinaten van de locatie. De relatieve vochtigheid wordt berekend aan de hand van de temperatuur en het dauwpunt.

Ook de gevoelstemperatuur wordt door de controller berekend. De "heat index" wordt berekend aan de hand van de temperatuur en luchtvochtigheid, terwijl de "wind chill" wordt bepaald uit de temperatuur en windsnelheid.

Als laatste wordt ook de barometer-trend berekend, dit op basis van een lineaire regressie op de 9 laatste updates.

Er wordt dus nog behoorlijk wat "afgerekend" door de microcontroller!
marc v
 
Posts: 16
Joined: Thu Jan 02, 2014 3:39 pm

Next

Return to Stel je eigen schakeling voor

Who is online

Users browsing this forum: No registered users and 1 guest