Passende Librarys für den HC-12 Funkmodul und einem LCD/TFT Display

Hallo liebes Forum,

ich habe für eine Wetterstation vor mit Hilfe eines Arduino UNO und einem DHT22 Sensor die Wetterdaten (Von außerhalb des Hauses) mit Hilfe eines HC-12 Funkmoduls an einem Arduino MEGA zu senden. zusätzlich will ich am Arduino MEGA noch einen DHT22 Sensor anschließen, um die Wetterdaten von innerhalb des Hauses sowie die von außerhalb im folgenden Format Seriell anzeigen zu lassen:

OUT: 18.0 °C
OUT: 70 %RH
IN: 22.0 °C
IN: 60 %RH

Zudem nutze ich für den HC-12 Funkmodul die SoftwareSerial Library, dazu wollte ich wissen, ob eine alternative Library besser geeignet wäre.
Außerdem möchte ich Dieses Display verwenden.

Dazu wollte ich noch Fragen inwiefern des Sketches dafür angepasst werden müssen?

Der Sender (Arduino UNO)

#include <SoftwareSerial.h>
SoftwareSerial hc12(10, 11); // RX = Pin 10, TX = Pin 11
#include <INTERVAL.h>
#include <DHT.h>
#define DHTPIN 2 // Sensor = Pin 2
#define DHTTYPE DHT22 // Typ des Sensors: DHT22
DHT dht(DHTPIN, DHTTYPE); // Sensor wird mit „dht“ angesprochen

void setup()
{
    dht.begin(); // DHT22 starten
    Serial.begin(9600); 
    hc12.begin(9600);
}

void loop()
  {
    INTERVAL(180000UL)  // 3 Minuten Pause
{
    sendeTemperatur();
    delay(5);
    sendeLuftfeuchtigkeit();
  }
}

void sendeTemperatur()
{
    float Temperatur = dht.readTemperature(); // als "Temperatur" speichern
    if (!isnan(Temperatur)) // auf gültigkeit überprüfen
    {
        char msg[8]; // Puffer groß genug für eine 7-stellige Fließkommazahl
        dtostrf(Temperatur, 4, 1, msg); // In Zeichenkette konvertieren
        char result[30] = "OUT: ";
        strcat(result, msg);
        strcat(result, " °C");
        Serial.println(result);
        hc12.println(result); // Übertrage die Daten über HC-12
    }
    else
    {
        Serial.println("Fehler beim Lesen der Temperatur!");
    }
}

void sendeLuftfeuchtigkeit()
{
    float Luftfeuchtigkeit = dht.readHumidity(); // als "Temperatur" speichern
    if (!isnan(Luftfeuchtigkeit)) // auf gültigkeit überprüfen
    {
        char msg[8]; // Puffer groß genug für eine 7-stellige Fließkommazahl
        dtostrf(Luftfeuchtigkeit, 4, 1, msg); // In Zeichenkette konvertieren
        char result[30] = "OUT: ";
        strcat(result, msg);
        strcat(result, " %RH");
        Serial.println(result);
        hc12.println(result); // Übertrage die Daten über HC-12
    }
    else
    {
        Serial.println("Fehler beim Lesen der Luftfeuchtigkeit!");
    }
}

Der Empfänger (Arduino MEGA)

#include <SoftwareSerial.h>
SoftwareSerial hc12(10, 11); // Pin 10 = TX des HC-12 / Pin 11 ist = RX des HC-12-Transceivers
#include "DHT.h"
#define DHTPIN 2 // DHT-Sensor = Pin 2
#define DHTTYPE DHT22 // Typ des Sensors: DHT22
DHT dht(DHTPIN, DHTTYPE); // Sensor wird mit „dth“ angesprochen

void setup()
{
  Serial.begin(9600);
  hc12.begin(9600);
  dht.begin();
  Serial.println("Alles OK");
}

void readAndPrintSensorData()
{
  float Temperatur = dht.readTemperature(); // Als "Temperatur" Speichern
  float Luftfeuchtigkeit = dht.readHumidity(); // Als "Luftfeuchtigkeit" Speichern
  String sensorData = "IN: " + String(Temperatur, 1) + "°C - IN: " + String(Luftfeuchtigkeit, 1) + "%RH";
  // IN = Indoor (Ersetzbar durch z.B. Innen-Temperatur etc)
  Serial.println(sensorData);
}

void loop()
{
  if (hc12.available())
  {
    String receivedData = hc12.readString();
    Serial.print("Received Data: ");
    Serial.println(receivedData);
    readAndPrintSensorData(); // Sensorwerte lesen und ausgeben
  }
}

Zudem habe ich mir über das Layout des Displays Gedanken gemacht und es würde mich interessieren, inwiefern man das Layout individuell anpassen kann oder ob dies von der Library vorgegeben wird?
Falls ja, wie? und ggf. mit welcher Software?

Hier das Layout:
Unbenannt

Zudem wollte ich einen taster verwenden der das Display erwachen lässt und sich nach 10 Sek. abschaltet.

Schonmal vielen dank im Vorraus :blush:

EDIT: Zudem wird die SoftwareSerial Lib auf unterschiedlichsten Seiten im Netz des öfteren verwendet und wollte auf Grund dieser tatsache wissen ob die SoftwareSerial Lib die richtige ist?
Quelle 1 Quelle 2

Nöö!
Wobei der Mega das nicht braucht, der hat genug HardwareSerial.

KA, welche Lib du meinst.
Aber: Eher, nöö...

Und was genau möchtest du besser haben ?
Wurde ja schon geschrieben, aktuell gibt es da nichts besseres.
Für den Uno ok, für den Mega nutze die Hardware Serielle.

Ach so wenn ich das richtig verstehe SoftwareSerial nur für UNO und für MEGA HardwareSerial?

.

Zum dritten mal:
Ja, Softserial für die Boards, welche keinen freien Hardserial haben.

Ich hoffe, dass das dritte mal jetzt reicht.

Für welschen Display? 2,8" oder 3,95

Du darfst aber gern auch Fragen beantworten.

Ist wahrscheinlich arbeiten, jemand muss doch unsere Rente finanzieren :wink:
Und wen der TO auch Rentner ist dann weist du selber, Rentner haben sehr wenig Zeit :joy:

Zum Fragen stellen ist doch auch Zeit.

Ja sorry, man darf auch mal abunzu auf dem Schlauch stehen.
ich habe mir vom MEGA das Pinout angeschaut und dann auch verstanden wie HardwareSerial eigendlich funktioniert und dies entsprechent umgesetzt:

#include "DHT.h"
#define DHTPIN 2 // DHT-Sensor = Pin 2
#define DHTTYPE DHT22 // Typ des Sensors: DHT22
DHT dht(DHTPIN, DHTTYPE); // Sensor wird mit „dth“ angesprochen

void setup()
{
  Serial.begin(9600);
  Serial1.begin(9600); // Verwende Serial1 für HC-12 (RX 1 = Pin 19 TX1 = Pin 18)
  dht.begin();
  Serial.println("Alles OK");
}

void readAndPrintSensorData()
{
  float Temperatur = dht.readTemperature(); // Als "Temperatur" speichern
  float Luftfeuchtigkeit = dht.readHumidity(); // Als "Luftfeuchtigkeit" speichern
  String sensorData = "IN: " + String(Temperatur, 1) + "°C - IN: " + String(Luftfeuchtigkeit, 1) + "%RH";
  // IN = Indoor (Ersetzbar durch z.B. Innen-Temperatur etc)
  Serial.println(sensorData);
}

void loop()
{
  if (Serial1.available())
  {
    String receivedData = Serial1.readString(); //RX 1 = Pin 19 TX1 = Pin 18
    Serial.print("Received Data: ");
    Serial.println(receivedData);
    readAndPrintSensorData(); // Sensorwerte lesen und ausgeben
  }
}


Das Hier (ist auch oben verlinkt)

Ist OK :wink:

ich mach das in den Pausen :grin:

NEIN, ich kann im Unterricht schlecht am Handy daddeln, für das Forum nehme ich mir Zeit zum beantworten der Fragen. Ich mach sowas nicht neben her :wink:

Schön...dann lass es. Woher soll man das wissen ?

ich versteh nicht recht, ich habe halt nicht immer Zeit für das Forum. Aber wenn ich die Zeit habe nehme ich sie mir, dann will ich ja auch was lernen dabei

Ok, das ist auch kein Problem. Allerdings, hier habe ich eine Frage gestellt:

Die du in deinem darauf folgenden Post nicht beantwortet hast.
Nur darum geht es !
Also, wenn du keine Zeit hast, verstehe ich das gut.

Ach so sorry, dann hab ich das falsch verstanden

ich war mir nicht genau Sicher welche Alternative zur SoftwareSerial Lib ich verwenden sollte.
Zu dem Zeitpinkt wusste ich noch nicht wie einfach HardwareSerial eigendlich ist und man sich damit Pogrammcode spart.

Das Prinzip ist sehr Simpel und hier sehr gut beschrieben

Meine letztendlich Finale Frage ist eigentlich nur noch, kann man die Art und Weise (Das Layout des Displays) individuell anpassen, sodass Uhrzeit und Sensordaten wie folgt auf dem Display angezeigt werden?:
Präsentation1

und welche Lib sich dafür am besten verwenden lässt ?