Commando’s vanuit de Arduino Mega naar de ESP8266

De communicatie tussen de Arduino Mega 2560 en het ESP8266 shield gaat via de eerste communicatiepoort van de Arduino naar de UART van de ESP8266. De Arduino Mega wordt via deze communicatiepoort ook voorzien van nieuwe software, dus wil je nieuwe software in de Arduino Mega schieten dan dien je de twee schakelaartjes op het blauwe blokje op het ESP8266 shield op OFF te zetten. Anders krijg je de Arduino niet geflashed.

In de Bascom-AVR code wordt middels een eenvoudige PRINT, op 9600 baud, een commando naar het ESP8266 shield gestuurd en deze zal ook een ‘reply’ sturen.

De complete commando-set bestaat uit het volgende:

Print “SID=AirPort Extreme”
het SSID van het Access Point waarmee verbinding moet worden gemaakt

Print “PSW=GEHEIMWOORD”
het wachtwoord dat gebruikt wordt op dit Access Point

Print “CMD=WiFi.connect”
het commando om verbinding te maken met dit Access Point

Print “API=fe2635<dummy API>dad525b0cd872e”
de API-key die ontvangen is van Darksky.net na aanmelding

Print “LON=5.00”
de longitude van de locatie waarvan de weergegevens weergegeven moeten worden

Print “LAT=51.5”
de latitude van de locatie waarvan de weergegevens weergegeven moeten worden

En nu volgen een reeks commando’s die bij elkaar horen om de weergegevens op te vragen

Print “CMD=GetWeather” – vraag de huidige weergegevens op
Call Parse_current_weatherinfo()

Print “CMD=GetPressure” – weekvoorspelling luchtdruk
Call Parse_pressure_weatherinfo()

Print “CMD=GetHumidity” – weekvoorspelling luchtvochtigheid
Call Parse_humidity_weatherinfo()

Print “CMD=GetMoonphase” – weekvoorspelling maanfase
Call Parse_moonphase_weatherinfo()

Print “CMD=GetCloudcover” – weekvoorspelling bewolking
Call Parse_cloudcover_weatherinfo()

Print “CMD=GetOzone” – weekvoorspelling ozon
Call Parse_ozone_weatherinfo()

Print “CMD=GetTemperature” – weekvoorspelling minimum en maximum temperaturen
Call Parse_temperature_weatherinfo()

Print “CMD=GetWind” – weekvoorspelling windsnelheid en windrichting
Call Parse_wind_weatherinfo()

Print “CMD=GetVisibility” – overzicht huidige zichtbaarheid
Call Parse_visibility_weatherinfo()

Print “CMD=GetPrecip” – weekvoorspelling kans op neerslag en in welke vorm
Call Parse_precip_weatherinfo()

Print “CMD=GetSun” – weekvoorspelling zonsop- en zonsondergang
Call Parse_sun_weatherinfo()

Elke keer dat je een CMD=Getxxx doet, is dat een Call richting Darksky.net en gaat van je maximum van 1000 calls per dag af. Wat er in feite gebeurt is dat er een filter wordt geplaatst op de 240 regels die binnen komen en alleen de regels waar bijvoorbeeld “Wind” in voor komen worden opgeslagen. De Parse routines zorgen er voor dat de opgeslagen regels netjes in de juiste volgorde op het scherm worden gezet. Er komt meer weerinformatie binnen dan dat ik nu verwerk, zo is er bijvoorbeeld “DewPoint” het dauwpunt. Je zou eventueel de commando- en parse-set hierop kunnen uitbreiden.

Tussen de diverse schermen die je opvraagt kun je middels WAIT sec bepalen hoe lang er gewacht moet worden voordat het volgende scherm wordt opgevraagd. Het ‘script’ bevindt zich in een oneindige lus.

Hou er ook rekening mee dat elke CMD=Getxxxx door de ESP8266 automatisch wordt afgesloten met een Wifi.disconnect dus je zult telkens de verbinding op moeten bouwen met Print “CMD=WiFi.connect”