INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Arduino Nano, Sensoren und Nextion
23.08.2018, 06:37 (Dieser Beitrag wurde zuletzt bearbeitet: 23.08.2018 08:43 von MotD.)
Beitrag #1
Arduino Nano, Sensoren und Nextion
Moin,

ich bin neu hier im Forum und lese schon etwas quer.

Beschäftige mich seit einiger Zeit mit den Wemos d1 mini Teilchen und bin da schon begeistert.

Nun habe ich mich an mein erstes Arduino Nano Projekt gemacht.
Ziel war es, 2-3 Temperaturwerte und die Uhrzeit / Datum einzbinden.

Nach vielem lesen, testen und anderer Hilfe (Vielen Dank), habe ich es geschafft, das mir die richtigen Werte auf dem Seriel Monitor (Arduino IDE) angezeigt werden.

Bin stolz wie Bolle Big Grin das ich sowas geschafft hab, wo ich nicht wirklich Ahnung davon hatte.

Zweite Herrausforderung stellt sich momentan.
Und zwar möchte ich diese Werte auf einem 2,8" Nextion darstellen.
Dieses soll, erstmal, nur als Anzeige dienen.

Was mir noch nicht ganz klar ist, ist die PIN verteilung. Hatte Was gelesen, das am Nano RX / TX und D0 / D1 nicht geeignet sind.
Könnt ihr das so bestätigen? Welche wären dann die beste Option?

Habe jetz schon 2-3 Tage quer gelesen und Videos geschaut und auch bei Böcker Systeme mich umgesehen. Weiß aber nicht ob ich es richtig verstanden hab.

Ich soll das ganze über SoftwareSerial laufen lassen, weil die Nextion lib nicht toll sein soll. ok.

Könnt ihr mir sagen, ob mein Sketch so sinnvoll ist, bitte in betracht der ausgabe für das Nextion. Wink
Es ist mein erstes Sketch und bestimmt nicht perfekt. Aber es läuft Tongue Auch wurde mir millis() empfohlen, aber da steig ich noch nicht ganz durch.
Serial.print erst einmal ausgeklammert.

Am Nextion habe ich dann erst mal n paar "Number" eingefügt mit den jeweiligen beschriftungen (temp1, temp2, temp3, tag etc.)

Für Anregungen und Ideen bin ich natürlich offen. Dafür ist das ganze ja da hier Smile

Schönen Tag allen und besten Dank

Code:
#include <SoftwareSerial.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include <Wire.h>
#include "DS3231.h"

RTClib RTC;

SoftwareSerial serial2(10, 11); // RX, TX. Mir noch nicht bekannt, welche Digital-Pins es auf dem nano sind

#define MESSFUEHLER1 A0  
#define MESSFUEHLER2 A1  
#define ONE_WIRE_BUS 2 //DS18b20
#define EINZELMESSUNGEN1 25  
#define EINZELMESSUNGEN2 25  
#define A_2 1.422473621e-03   // A-Koeffizient des Messfühlers
#define B_2 2.334585171e-04   // B-Koeffizient des Messfühlers
#define C_2 1.215612867e-07   // C-Koeffizient des Messfühlers

#define FESTWIDERSTAND_2 3000.0  


OneWire oneWire(ONE_WIRE_BUS); //DS18b20

DallasTemperature sensors(&oneWire); //DS18b20

uint16_t SUM_EM_2[EINZELMESSUNGEN1];
uint16_t SUM_EM_3[EINZELMESSUNGEN2];


uint8_t i = 0;
float DURCHSCHNITT_2 = 0.0;
float DURCHSCHNITT_3 = 0.0;
float TEMP_2 = 0.0;
float TEMP_3 = 0.0;
float R2_2 = 0.0, lnR2_2 = 0.0;
float R2_3 = 0.0, lnR2_3 = 0.0;

void setup(void)
{
  sensors.begin();  //DS18b20
  Wire.begin();
  serial2.beginn(9600);
  Serial.begin(9600);
}


void loop(void) {

  
DateTime now = RTC.now();



  DURCHSCHNITT_2 = 0.0;
  DURCHSCHNITT_3 = 0.0;

  for (i = 0; i < EINZELMESSUNGEN1; i++) {
    SUM_EM_2[i] = analogRead(MESSFUEHLER1);
    DURCHSCHNITT_2 += SUM_EM_2[i];

    // weiter optimiert
    DURCHSCHNITT_3 += analogRead(MESSFUEHLER2);


  }
  DURCHSCHNITT_2 /= EINZELMESSUNGEN1;
  DURCHSCHNITT_3 /= EINZELMESSUNGEN1;



  R2_2 = FESTWIDERSTAND_2 * (1023.0 / (float)DURCHSCHNITT_2 - 1.0);
  lnR2_2 = log(R2_2);
  TEMP_2 = (1.0 / (A_2 + B_2 * lnR2_2 + C_2 * lnR2_2 * lnR2_2 * lnR2_2));
  TEMP_2 =  TEMP_2 - 273.15;

  R2_3 = FESTWIDERSTAND_2 * (1023.0 / (float)DURCHSCHNITT_3 - 1.0);
  lnR2_3 = log(R2_3);
  TEMP_3 = (1.0 / (A_2 + B_2 * lnR2_3 + C_2 * lnR2_3 * lnR2_3 * lnR2_3));
  TEMP_3 =  TEMP_3 - 273.15;

  
        Serial2.print("temp1.val=");
        Serial2.print(TEMP_2);
        Serial.write(0xff);
    Serial2.write(0xff);
    Serial2.write(0xff);

    Serial2.print("temp2.val=");
        Serial2.print(TEMP_3);
        Serial.write(0xff);
    Serial2.write(0xff);
    Serial2.write(0xff);

    Serial2.print("temp3.val=");
        Serial2.print(sensors.getTempCByIndex);
        Serial.write(0xff);
    Serial2.write(0xff);
    Serial2.write(0xff);

    Serial2.print("tag.val=");
        Serial2.print(now.day_2);
        Serial.write(0xff);
    Serial2.write(0xff);
    Serial2.write(0xff);

    Serial2.print("monat.val=");
        Serial2.print(now.month);
        Serial.write(0xff);
    Serial2.write(0xff);
    Serial2.write(0xff);

    Serial2.print("h.val=");
        Serial2.print(now.hour);
        Serial.write(0xff);
    Serial2.write(0xff);
    Serial2.write(0xff);

    Serial2.print("s.val=");
        Serial2.print(now.minute);
        Serial.write(0xff);
    Serial2.write(0xff);
    Serial2.write(0xff);

    //Serial.print("WT:  ");
    //Serial.print(TEMP_2);          
    //Serial.println(" °C");
    //Serial.print("LT1: ");
    //Serial.print(TEMP_3);        
    //Serial.println(" °C");
    //sensors.requestTemperatures();
    //Serial.print("LT2: ");
    //Serial.print(sensors.getTempCByIndex(0));
    //Serial.println(" °C");
    //Serial.print(now.day(), DEC);
    //Serial.print('.');
    //Serial.println(now.month(), DEC);
    //Serial.print(now.hour(), DEC);
    //Serial.print(':');
    //Serial.print(now.minute(), DEC);
    //Serial.println();
        

delay(5000);
  }
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
23.08.2018, 07:25 (Dieser Beitrag wurde zuletzt bearbeitet: 23.08.2018 07:29 von hotsystems.)
Beitrag #2
RE: Arduino Nano, Sensoren und Nextion
Um es kurz zu machen, muss gleich weg....
Du hast das mit dem Nextion richtig verstanden und auch SoftwareSerial richtig eingebunden.
Dein delay() am Ende solltest du entfernen und statt dessen mit der Library "SimpleTimer" arbeiten.
Damit rufst du deine Funktionen entsprechend der gewünschten Zeit auf.

Was ich allerdings bei deiner SoftwareSerial vermisse, ist die Datarate, die gehört in die Begin-Anweisung.

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
23.08.2018, 08:00
Beitrag #3
RE: Arduino Nano, Sensoren und Nextion
das klingt doch gut.

ja mir würde es auch reichen, wenn sich die werte alle 30 sekunden oder jede minute aktualisieren.

das mit der SimpleTimer schaue ich mir mal an. Danke

Welche Datarate wäre zu empfehlen dabei ? oder frei wählbar.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
23.08.2018, 08:01
Beitrag #4
RE: Arduino Nano, Sensoren und Nextion
(23.08.2018 08:00)MotD schrieb:  das klingt doch gut.

ja mir würde es auch reichen, wenn sich die werte alle 30 sekunden oder jede minute aktualisieren.

das mit der SimpleTimer schaue ich mir mal an. Danke

Welche Datarate wäre zu empfehlen dabei ? oder frei wählbar.

Das Nextion ist standardmäßig auf 9600 Baud, also auf 9600 stellen.

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
23.08.2018, 08:43
Beitrag #5
RE: Arduino Nano, Sensoren und Nextion
danke. erledigt.

welche pins könnte ich nun am Nano wählen?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
23.08.2018, 10:46
Beitrag #6
RE: Arduino Nano, Sensoren und Nextion
(23.08.2018 08:43)MotD schrieb:  welche pins könnte ich nun am Nano wählen?

Die Frage verstehe ich nicht.

Du hast doch Pins für das Nextion eingesetzt.
Du kannst jeden digitalen Pin außer D0 und D1 verwenden.

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
23.08.2018, 10:55 (Dieser Beitrag wurde zuletzt bearbeitet: 23.08.2018 10:56 von MotD.)
Beitrag #7
RE: Arduino Nano, Sensoren und Nextion
okay besten dank.
dann kann ich das so lassen, passt ja.

hie rnochmal der Code inkl SimpleTimer.

Code:
#include <SoftwareSerial.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include <Wire.h>
#include "DS3231.h"
#include <SimpleTimer.h>


RTClib RTC;

SoftwareSerial serial2(10, 11); // RX, TX

#define MESSFUEHLER1 A0  
#define MESSFUEHLER2 A1  
#define ONE_WIRE_BUS 2 //DS18b20
#define EINZELMESSUNGEN1 25  
#define EINZELMESSUNGEN2 25  
#define A_2 1.422473621e-03   // A-Koeffizient des Messfühlers
#define B_2 2.334585171e-04   // B-Koeffizient des Messfühlers
#define C_2 1.215612867e-07   // C-Koeffizient des Messfühlers

#define FESTWIDERSTAND_2 3000.0  


OneWire oneWire(ONE_WIRE_BUS); //DS18b20
DallasTemperature sensors(&oneWire); //DS18b20
SimpleTimer timer;

uint16_t SUM_EM_2[EINZELMESSUNGEN1];
uint16_t SUM_EM_3[EINZELMESSUNGEN2];


uint8_t i = 0;
float DURCHSCHNITT_2 = 0.0;
float DURCHSCHNITT_3 = 0.0;
float TEMP_2 = 0.0;
float TEMP_3 = 0.0;
float R2_2 = 0.0, lnR2_2 = 0.0;
float R2_3 = 0.0, lnR2_3 = 0.0;

void repeatMe()
{
    Serial.print("Uptime (s): ");
    Serial.println(millis() / 1000);
}

void setup(void)
{
  sensors.begin();  //DS18b20
  Wire.begin();
  timer.setInterval(1000, repeatMe);
  serial2.beginn(9600);
  Serial.begin(9600);
}


void loop(void) {

  
DateTime now = RTC.now();



  DURCHSCHNITT_2 = 0.0;
  DURCHSCHNITT_3 = 0.0;

  for (i = 0; i < EINZELMESSUNGEN1; i++) {
    SUM_EM_2[i] = analogRead(MESSFUEHLER1);
    DURCHSCHNITT_2 += SUM_EM_2[i];

    // weiter optimiert
    DURCHSCHNITT_3 += analogRead(MESSFUEHLER2);


  }
  DURCHSCHNITT_2 /= EINZELMESSUNGEN1;
  DURCHSCHNITT_3 /= EINZELMESSUNGEN1;



  R2_2 = FESTWIDERSTAND_2 * (1023.0 / (float)DURCHSCHNITT_2 - 1.0);
  lnR2_2 = log(R2_2);
  TEMP_2 = (1.0 / (A_2 + B_2 * lnR2_2 + C_2 * lnR2_2 * lnR2_2 * lnR2_2));
  TEMP_2 =  TEMP_2 - 273.15;

  R2_3 = FESTWIDERSTAND_2 * (1023.0 / (float)DURCHSCHNITT_3 - 1.0);
  lnR2_3 = log(R2_3);
  TEMP_3 = (1.0 / (A_2 + B_2 * lnR2_3 + C_2 * lnR2_3 * lnR2_3 * lnR2_3));
  TEMP_3 =  TEMP_3 - 273.15;

  
        Serial2.print("temp1.val=");
        Serial2.print(TEMP_2);
        Serial.write(0xff);
    Serial2.write(0xff);
    Serial2.write(0xff);

    Serial2.print("temp2.val=");
        Serial2.print(TEMP_3);
        Serial.write(0xff);
    Serial2.write(0xff);
    Serial2.write(0xff);

    Serial2.print("temp3.val=");
        Serial2.print(sensors.getTempCByIndex);
        Serial.write(0xff);
    Serial2.write(0xff);
    Serial2.write(0xff);

    Serial2.print("tag.val=");
        Serial2.print(now.day_2);
        Serial.write(0xff);
    Serial2.write(0xff);
    Serial2.write(0xff);

    Serial2.print("monat.val=");
        Serial2.print(now.month);
        Serial.write(0xff);
    Serial2.write(0xff);
    Serial2.write(0xff);

    Serial2.print("h.val=");
        Serial2.print(now.hour);
        Serial.write(0xff);
    Serial2.write(0xff);
    Serial2.write(0xff);

    Serial2.print("s.val=");
        Serial2.print(now.minute);
        Serial.write(0xff);
    Serial2.write(0xff);
    Serial2.write(0xff);

    //Serial.print("WT:  ");
    //Serial.print(TEMP_2);          
    //Serial.println(" °C");
    //Serial.print("LT1: ");
    //Serial.print(TEMP_3);        
    //Serial.println(" °C");
    //sensors.requestTemperatures();
    //Serial.print("LT2: ");
    //Serial.print(sensors.getTempCByIndex(0));
    //Serial.println(" °C");
    //Serial.print(now.day(), DEC);
    //Serial.print('.');
    //Serial.println(now.month(), DEC);
    //Serial.print(now.hour(), DEC);
    //Serial.print(':');
    //Serial.print(now.minute(), DEC);
    //Serial.println();
        

timer.run();
  }

richtig eingebaut? in dem Beispiel ist es auf 1 Sekunde gesetzt richtig? 30000 wäre der Wert für 30 Sekunden!?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
23.08.2018, 12:42
Beitrag #8
RE: Arduino Nano, Sensoren und Nextion
(23.08.2018 10:55)MotD schrieb:  .....
richtig eingebaut? in dem Beispiel ist es auf 1 Sekunde gesetzt richtig? 30000 wäre der Wert für 30 Sekunden!?
Ja, das sieht richtig aus.

Du kannst den Timer auch mehrfach einsetzen, musst nur einen anderen Instanz-Namen wählen.

Dann kannst du z.B. deine Uhr pro sek. (1000) anzeigen und alles weitere alle 30 sek. (30000).
Dazu musst du nur die in einzelne Funktionen packen, die du dann aufrufst.

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  In-door Sensoren für OpenHab oder ähnliches? ansorgj 11 567 10.02.2019 23:03
Letzter Beitrag: ansorgj
  Projekt zur Ermittlung der Dauerbetriebseigenschaften unterschiedlicher Sensoren Hayley_Hay 5 1.318 14.05.2018 17:06
Letzter Beitrag: ardu_arne
  Steuerung Servomotor mit zwei Sensoren und Tabelle Günther S. 0 1.570 14.04.2017 19:18
Letzter Beitrag: Günther S.
  Arduino mit Nextion komunizieren lassen Steve1604 4 5.510 01.08.2016 21:56
Letzter Beitrag: hotsystems
  "SunFounder Smart Car Kit for Arduino"...Roboterauto mit Sensoren arduinofan 2 3.339 15.01.2016 11:14
Letzter Beitrag: arduinofan
  Laser mit arduino nano TTL modulieren Wranox 0 2.573 30.07.2015 15:38
Letzter Beitrag: Wranox
  Linienfolger mit Arduino Nano reenoh 16 9.672 27.05.2015 11:04
Letzter Beitrag: reenoh
  Sensoren Einbau bergfrei 3 3.091 13.05.2015 10:36
Letzter Beitrag: SkobyMobil
Wink DSLR mit Arduino Nano steuern. Eichner 12 10.021 25.03.2015 17:27
Letzter Beitrag: Eichner
Rainbow RC Beleuchtungsmodul mit Arduino Nano Kyrill 7 5.698 15.03.2015 14:02
Letzter Beitrag: querkopf71

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste