Mega WiFi R3 Module ATmega2560+ESP8266 programmeren?

IDE gerelateerde berichten
Berichten: 6
Geregistreerd: 05 Jun 2020, 11:33

Mega WiFi R3 Module ATmega2560+ESP8266 programmeren?

Berichtdoor nickthienpont » 05 Mei 2021, 19:07

Ik heb tot hiertoe enkel geprogrammeerd op de UNO bordjes of op een Wemos D1. Nu heb ik me een Mega Wifi R3 module gekocht met ESP8266.

Ik heb al wat gezocht, maar kom niet echt tot een oplossing.
Ik heb een sketch gemaakt waarbij ik enerzijds een connectie maak met mijn WiFi netwerk en data ga opvragen van een weerwebsite. Die data wil ik dan via de API gaan gebruiken. Ik kan connecteren met mijn WiFi en ik kan die API data eruit halen. Daarna wil ik data en afbeeldingen op een scherm weergeven, maar ook dat zal wel lukken.

Ik zie echter niet hoe ik die Mega moet gaan programmeren .... moet ik mijn code opsplitsen en een deel wegschrijven naar die ESP8266 module / ander deel naar de Mega zelf of moet dat in 1 keer ... En zo ja, wat schrijf je waar weg?

Ik weet dat je die switches kan verzetten zodat alles zou moeten samenwerken, maar ik krijg mijn sketch niet weggeschreven ... Misschien is dit een heel domme vraag, maar ik zie het even niet ... hopelijk kunnen jullie me wat op weg helpen.

Ik heb de volgende code gemaakt:

Code: Alles selecteren

#include <ArduinoJson.h>

/**************************************************************************************
 
Internet tijd en Internet weerstation
Toe te voegen:
- scherm output
- Vingerafdruksensor
***************************************************************************************/
 
 
#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>  // http web access library
#include <Arduino_JSON.h>      // JSON decoding library
#include <NTPClient.h>        // Internet tijd
#include <WiFiUdp.h>          // Internet tijd

WiFiUDP ntpUDP;
NTPClient timeClient(ntpUDP, "be.pool.ntp.org",7200, 60000);  //BE tijdserver , 3600 = wintertijd, 7200 = zomertijd
//Week Days
String weekDays[7]={"Zondag", "Maandag", "Dinsdag", "Woensdag", "Donderdag", "Vrijdag", "Zaterdag"};

//Month names
String months[12]={"Januari", "Februari", "Maart", "April", "Mei", "Juni", "Juli", "Augustus", "September", "Oktober", "November", "December"};


const char *ssid     = "xxxx";
const char *password = "xxxxx";
 
void setup() {
 
  Serial.begin(115200);
  delay(500);
  Serial.print("Connecting.");
 
  WiFi.begin(ssid, password);   // access Wi-FI point
 
  while ( WiFi.status() != WL_CONNECTED ) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("connected\r\n");
 
}
 
void loop() {
 
  if (WiFi.status() == WL_CONNECTED) { //Check WiFi connection status
 
    HTTPClient http;  //Declare an object of class HTTPClient
 
    // specify request destination
    http.begin("http://api.openweathermap.org/data/2.5/weather?q=Serskamp,be&lang=nl&units=metric&APPID=xxxxxxxxxx");
 
    int httpCode = http.GET();  // send the request

String payload = http.getString();


 // Allocate the JSON document
    // Use arduinojson.org/v6/assistant to compute the capacity.
    const size_t capacity = JSON_ARRAY_SIZE(1) + JSON_OBJECT_SIZE(0) + 2*JSON_OBJECT_SIZE(1) + JSON_OBJECT_SIZE(2) + JSON_OBJECT_SIZE(4) + 2*JSON_OBJECT_SIZE(5) + JSON_OBJECT_SIZE(14) + 512;
    DynamicJsonDocument doc(capacity);


    // Parse JSON object
    DeserializationError error = deserializeJson(doc, payload);
    if (error) {
      Serial.print(F("deserializeJson() failed: "));
      Serial.println(error.c_str());
      return;
    }
       
    float weatherTemperature = doc["main"]["temp"].as<float>();
    int weatherHumidity = doc["main"]["humidity"].as<int>();
    int gevoelstemperatuur = doc["main"]["feels_like"].as<int>();
    int windsnelheid = doc["wind"]["speed"].as<int>();
    int bewolkingsgraad = doc["clouds"]["all"].as<int>();
    String(locatie) = doc["name"].as<String>();
    String(weerbeeld) = doc["weather"][0]["description"];

Serial.println();
Serial.println("**********************************************************");
Serial.println("*                                                        *");
Serial.println("*             Het weerbericht in xxxx *");
Serial.println("*                                                        *");
Serial.println("**********************************************************");

Serial.println();

// TIJD WEERGEVEN

timeClient.update();
unsigned long epochTime = timeClient.getEpochTime();
String formattedTime = timeClient.getFormattedTime();


  int currentHour = timeClient.getHours();
  int currentMinute = timeClient.getMinutes();
  int currentSecond = timeClient.getSeconds();
  String weekDay = weekDays[timeClient.getDay()];
  Serial.print(weekDay);
  Serial.print(" ");
 
  //Get a time structure
 
  struct tm *ptm = gmtime ((time_t *)&epochTime);
  int monthDay = ptm->tm_mday;
 
  int currentMonth = ptm->tm_mon+1;
  String currentMonthName = months[currentMonth-1];
  int currentYear = ptm->tm_year+1900;

  //Print complete date:
  String currentDate = String(monthDay) + "-" + String(currentMonth) + "-" + String(currentYear);
  Serial.println(currentDate);
  Serial.println(" ");

  Serial.println(timeClient.getFormattedTime());
  Serial.println();

// WEER AFDRUKKEN

    //Serial.println(F("Response"));
   
    Serial.print("Het weerbeeld in ");
    Serial.print(locatie);
    Serial.print(" is momenteel: ");
    Serial.println(weerbeeld); 

    Serial.print("De temperatuur is: ");
    Serial.print(weatherTemperature);
    Serial.print(" °C, maar voelt aan als ");
    Serial.print(gevoelstemperatuur);
    Serial.println(" °C .");
   
    Serial.print("Vochtigheidsgraad: ");
    Serial.print(weatherHumidity);
    Serial.println(" %.");
   
    Serial.print("Windsnelheid: ");
    Serial.print(windsnelheid);
    Serial.println(" m/s.");
   
    Serial.print("Bewolkingsgraad: " );
    Serial.print(bewolkingsgraad);
    Serial.println(" %.");
   
    http.end();   //Close connection

 // Kledingadvies

Serial.print("Kledingadvies: ");

 if (gevoelstemperatuur < 10) { Serial.println("Melding 1");  }
 else if (10 < gevoelstemperatuur < 15) { Serial.println("Melding 2"); }
 else if (15 < gevoelstemperatuur < 20) { Serial.println("Melding 3"); }
 else if (21 < gevoelstemperatuur < 25) { Serial.println("Melding 4"); }
 else if (gevoelstemperatuur > 25) { Serial.println("Melding 5"); }
 
 delay(30000);   // wait 0,5 minute
 
}}



Advertisement

Berichten: 6
Geregistreerd: 05 Jun 2020, 11:33

Re: Mega WiFi R3 Module ATmega2560+ESP8266 programmeren?

Berichtdoor nickthienpont » 07 Mei 2021, 14:47

Even een aanvulling ... Wat lukt me:
- de sketch waarin ik mijn lcd scherm gebruik kan ik uploaden naar de mega 2560
- de sketch waarin ik conectie maak met mijn wifi kan ik uploaden naar de ESP8266 module.

Die twee lijken echter niet met elkaar te "praten" .... Ik wil de waarden die ik uit de API heb gehaald kunnen verzenden naar mijn LCD scherm.
Als ik de twee sketches combineer kan ik deze noch naar de ESP8266 wegschrijven noch naar de Mega 2560.

Kan iemand me helpen ? Ik lees hier en daar wel iets over het flashen van de ESP8266 firmware maar daar heb ik geen ervaring mee.

Berichten: 287
Geregistreerd: 15 Apr 2021, 20:05

Re: Mega WiFi R3 Module ATmega2560+ESP8266 programmeren?

Berichtdoor ctunes » 31 Mei 2021, 02:15

Hallo, ik heb hier een vw golf, daar gooide ik altijd normale benzine in en die reed prima.
Nu heb ik een audi tt gekocht, maar die wil niet meer praten met mijn golf en op diesel liep die nog goed, maar op benzine lijkt het nergens naar.


"Doe ik wat fout"?

Berichten: 287
Geregistreerd: 15 Apr 2021, 20:05

Re: Mega WiFi R3 Module ATmega2560+ESP8266 programmeren?

Berichtdoor ctunes » 31 Mei 2021, 02:21

Wij missen (behoorlijk) wat informatie:

nickthienpont schreef:Ik wil de waarden die ik uit de API heb gehaald kunnen verzenden naar mijn LCD scherm.


Jaha! dat willen wij allemaal wel!


welke API?
wat voor LCD?

Hoe is het gekoppeld?
Aan welk apparaat?

Terug naar Arduino IDE

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 10 gasten