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
ESP32 RX2 und TX2
27.12.2019, 20:37
Beitrag #1
ESP32 RX2 und TX2
Ich möchte die zweite serielle Schnittstelle meines ESP32 Devkit V1 zum Datenaustausch nutzen. RX2 liegt am GPIO16 und TX2 am GPIO17. Dazu habe ich im Sketch folgendes definiert:
Code:
Serial.begin(115200,SERIAL_8N1,16,17);

Aber das scheint so nicht korrekt zu sein. Wenn ich Probeweise folgende Zeile verwende, und dann mit dem seriellen Monitor des Arduino IDE Befehle sende, klappt as, halt nur über den falschen Port:
Code:
Serial.begin(115200,SERIAL_8N1);

Was mache ich falsch?
Danke für eure Hilfe!!


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
27.12.2019, 21:52
Beitrag #2
RE: ESP32 RX2 und TX2
..ich versuchs mal in Scheiben...

Code:
#define RXD2 16
#define TXD2 17

  // Note the format for setting a serial port is as follows: Serial2.begin(baud-rate, protocol, RX pin, TX pin);
  Serial2.begin(9600, SERIAL_8N1, RXD2, TXD2);
  Serial.println("Serial Txd is on pin: "+String(TX));  // Monitorausgabe
  Serial.println("Serial Rxd is on pin: "+String(RX));  // Monitorausgabe

okay war wohl nur eine Scheibe... aber was ich deutlich machen will ist das man einen anderen Namen als "Serial." verwendet damit eben jene für Terminalzwecke und das programmieren frei bleibt...wie bei den Arduinos auch.
lgbk


An alle Neuankömmlinge hier, wenn ihr Code(Sketch) hier posten wollte dann liest euch bitte diese Anleitung durch.

1+1 = 10 Angel ...und ich bin hier nicht der Suchmaschinen-Ersatz Dodgy...nur mal so als genereller Tipp..
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
27.12.2019, 22:23
Beitrag #3
RE: ESP32 RX2 und TX2
Hmmm, irgendetwas mach ich noch falsch. Hier mal ein Ausschnitt des Codes:

Code:
#define RXD2 16
#define TXD2 17
void setup() {
  tft.init();
  tft.setRotation(0);
  splash();
  // Note the format for setting a serial port is as follows: Serial2.begin(baud-rate, protocol, RX pin, TX pin);
  Serial2.begin(115200, SERIAL_8N1, RXD2, TXD2);
  Serial.println("Serial Txd is on pin: "+String(TX));  // Monitorausgabe
  Serial.println("Serial Rxd is on pin: "+String(RX));  // Monitorausgabe
  SPIFFSstart();  
  listFiles();
  xTaskCreatePinnedToCore(ScreenRefresh,"Screen Refresh",2500,NULL,30,&Task1,1);
  xTaskCreatePinnedToCore(SerialScan,"Serial Scan",2500,NULL,20,&Task2,0);
  //Serial1.begin(9600,SERIAL_8N1,1,3);
  //Serial1.println("Serial Started");
}

void ScreenRefresh(void *p){
  Serial2.println("Task 1 created");
  float i;
  tft.loadFont("micross20");
  Nav1.loadFont("micross15");
  Nav2.loadFont("micross50");
  while(1){
    //xSemaphoreTake(ScreenKeeper,1000);
    float angle=(E*22)+180;
    VarioNeedle(angle);
    DrawData("Avg.",E,1,85,80,true);
    DrawData("Alt.",1500,0,60,140,false);
    DrawData("Mc.",2,1,100,200,false);
    //delay(10);
  }
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
27.12.2019, 23:23
Beitrag #4
RE: ESP32 RX2 und TX2
Zitat:Ich möchte die zweite serielle Schnittstelle meines ESP32 Devkit V1 zum Datenaustausch nutzen.
ähm mit was willst du hier Daten austauschen ? Also mit welchem Device willst du da den ESP32 verbinden ?

Und wohin soll diese Message gehen, an das neue Device oder an den Monitor auf dem PC ?
Zitat:Serial2.println("Task 1 created");
Der Monitor liegt immer auf "Serial" ohne weitere Nummer.


An alle Neuankömmlinge hier, wenn ihr Code(Sketch) hier posten wollte dann liest euch bitte diese Anleitung durch.

1+1 = 10 Angel ...und ich bin hier nicht der Suchmaschinen-Ersatz Dodgy...nur mal so als genereller Tipp..
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
27.12.2019, 23:39 (Dieser Beitrag wurde zuletzt bearbeitet: 27.12.2019 23:47 von Gerdchen03.)
Beitrag #5
RE: ESP32 RX2 und TX2
An dem ESP32 ist ein paralleles Display angeschlossen. Dieses soll Steigwerte eines Segelflugzeugs anzeigen. Das ganze funktioniert schon, aber bisher nur, wenn ich die GPIO1 und GPIO3 zum Datenaustausch verwende. Diese möchte ich aber für Updates etc. mit dem PC frei halten. Daher bin ich auf GPIO16 und GPIO17 gewechselt, bzw. versuche es.

Die Daten kommen von einem Cubieboard als serielle Daten. Die Daten sehen z.B. so aus:
$POV,E,2.15*14
Wichtig ist der Wert 2.15, nach dem wird gesucht, und dieser dann im Display dargestellt. Hier ein Video, wie das ganze aussieht:
https://www.youtube.com/watch?v=zu_H_Gfo...e=youtu.be

Hier mal die alte Version des Sketches:
https://www.dropbox.com/s/uf1gg2g090y8tn...1.zip?dl=0

Und hier die neue:
https://www.dropbox.com/s/7nwkp84cilzorx...2.zip?dl=0
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
28.12.2019, 00:42
Beitrag #6
RE: ESP32 RX2 und TX2
ahja... also ein anderer Kontroller liefert da die Daten...
Dann sollte es auch kein Problem sein die Zweite Serielle Schnittstelle zu verwenden. Allerdings mußt dann im ganzen Sketch die Befehle auf Seriell2. ändern...
Btw. Sketche bitte hier direkt posten... ZIP's macht hier keiner auf.
lgbk


An alle Neuankömmlinge hier, wenn ihr Code(Sketch) hier posten wollte dann liest euch bitte diese Anleitung durch.

1+1 = 10 Angel ...und ich bin hier nicht der Suchmaschinen-Ersatz Dodgy...nur mal so als genereller Tipp..
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
28.12.2019, 00:49 (Dieser Beitrag wurde zuletzt bearbeitet: 28.12.2019 01:12 von Gerdchen03.)
Beitrag #7
RE: ESP32 RX2 und TX2
OK, wollte es übersichtlicher halten:

Code:
//****  Screen and SPIFFS Headers and Defines ****
//************************************************

//#include<HardwareSerial.h>
#include<TFT_eSPI.h>
#include<SPI.h>
#include "LogoJR.h"
#include "LogoOV.h"
#include "FS.h"
#include "SPIFFS.h"

#define BLACK   0x0000
#define BLUE    0x001F
#define RED     0xF800
#define GREEN   0x07E0
#define CYAN    0x07FF
#define MAGENTA 0xF81F
#define YELLOW  0xFFE0
#define WHITE   0xFFFF
#define GREY    0x18E3
#define RXD2 16
#define TXD2 17

//HardwareSerial Serial(1);
TFT_eSPI tft = TFT_eSPI();
TFT_eSprite needle = TFT_eSprite(&tft);
TFT_eSprite Nav1 = TFT_eSprite(&tft);
TFT_eSprite Nav2 = TFT_eSprite(&tft);


//******************************************
//****  FreeRTOS Headers and Variables  ****
//******************************************

#include"freertos/FreeRTOS.h"
#include"freertos/Task.h"
//#include"freertos/semphr.h"
#include"esp_system.h"
#include<stdio.h>
TaskHandle_t Task1,Task2;


#define OuterRadius 160
#define InnerRadius 130
#define xCenter 160
#define yCenter 160


extern const unsigned char logobunny[];
extern uint16_t logoOV[];
float E;


void setup() {
  tft.init();
  tft.setRotation(0);
  splash();
  // Note the format for setting a serial port is as follows: Serial2.begin(baud-rate, protocol, RX pin, TX pin);
  Serial2.begin(115200, SERIAL_8N1, RXD2, TXD2);
  Serial2.println("");
  Serial2.println("Serial Txd is on pin: "+String(TX));  // Monitorausgabe
  Serial2.println("Serial Rxd is on pin: "+String(RX));  // Monitorausgabe
  SPIFFSstart();  
  listFiles();
  xTaskCreatePinnedToCore(ScreenRefresh,"Screen Refresh",2500,NULL,30,&Task1,1);
  xTaskCreatePinnedToCore(SerialScan,"Serial Scan",2500,NULL,20,&Task2,0);
  //Serial1.begin(9600,SERIAL_8N1,1,3);
  //Serial1.println("Serial Started");
}

void ScreenRefresh(void *p){
  Serial2.println("Task 1 created");
  float i;
  tft.loadFont("micross20");
  Nav1.loadFont("micross15");
  Nav2.loadFont("micross50");
  while(1){
    //xSemaphoreTake(ScreenKeeper,1000);
    float angle=(E*22)+180;
    VarioNeedle(angle);
    DrawData("Avg.",E,1,85,80,true);
    DrawData("Alt.",1500,0,60,140,false);
    DrawData("Mc.",2,1,100,200,false);
    //delay(10);
  }
}

void SerialScan (void *p){
  Serial2.println("Task 2 Created");
  char Data;
  String DataString,Vario;
  int pos,i;
  while(1){
    if (Serial2.available()){
      Data =Serial2.read();
      if(Data=='$'){
        while (Data != 10){
          DataString += Data;
          Data=Serial2.read();
        }
      }
    }
    if (DataString.startsWith("$POV")){
      Serial2.println(DataString);
      pos=DataString.indexOf(',');
      DataString.remove(0,pos+1);
      Serial2.println(DataString);
      if(DataString[0]=='E'){
        pos=DataString.indexOf(',');
        DataString.remove(0,pos+1);
        Serial2.println(DataString);
        pos=DataString.indexOf('*');
        for (i=0;i<pos;i++){
         Vario+=DataString[i];
        }
      }
      Serial2.println(Vario);
      E=Vario.toFloat();
      Serial2.println(E);
      Vario="";
    }
    DataString="";
    vTaskDelay(20);
   }
}

void loop() {  
  delay(20);
}

//*************************
//****  Splash Screen  ****
//*************************

void splash(){
  Serial2.print("Splash Screen");
  tft.fillScreen(WHITE);
  tft.setWindow(20,91,20+199,91+136);
  tft.pushColors(logoOV,200*137);
  delay(3000);
  tft.fillScreen(GREY);
  tft.fillCircle(xCenter,yCenter,InnerRadius,BLACK);  
}

//*********************************
//****  Deg to Rad conversion  ****
//*********************************

float deg2rad(float* angle){
//  float tempangle=*angle;
  *angle=*angle/180*3.141516;
//  return angle;  
}

//*********************************
//****  Vario Needle Movement  ****
//*********************************

void VarioNeedle(float inangle){
  deg2rad(&inangle);
  
  int spriteH = 30; //Sprite Height
  int spriteW = 30; //Sprite Width
  needle.createSprite(spriteW,spriteH);
  needle.fillScreen(GREY);
  
  float MiddleRadius = ((OuterRadius-InnerRadius)/2)+InnerRadius; //Middle of Sliding Circle radius
  float SpritexCenter = MiddleRadius*cos(inangle)+xCenter; //X coordinate of the sprite's center referred to the TFT coordinates
  float SpriteyCenter = MiddleRadius*sin(inangle)+yCenter; //Y coordinate of the sprite's center referred to the TFT coordinates
  
  float xCenter1 = (spriteW/2)-MiddleRadius*cos(inangle); //x Needle Pivoting center coordinate referred to Sprite's coordinate system.
  float yCenter1 = (spriteH/2)-MiddleRadius*sin(inangle); //y Needle Pivoting center coordinate referred to Sprite's coordinate system.
    
  needle.fillCircle(xCenter1,yCenter1,InnerRadius,BLACK); //Sprite Background without needle
  
  //****  Needle Triangle point calculation  ****
    
  int x0 = 10*cos(inangle+3.14)+(spriteW/2);
  int y0 = 10*sin(inangle+3.14)+(spriteH/2);
  int x1 = 10*cos(inangle+0.4)+(spriteW/2);
  int y1 = 10*sin(inangle+0.4)+(spriteH/2);
  int x2 = 10*cos(inangle-0.4)+(spriteW/2);
  int y2 = 10*sin(inangle-0.4)+(spriteH/2);
  needle.fillTriangle(x0,y0,x1,y1,x2,y2,RED);
  //needle.drawLine(x0,y0,x1,y1,RED);
  
  needle.pushSprite(SpritexCenter-(spriteW/2),SpriteyCenter-(spriteH/2)); //Pushing Needle Sprite to TFT
  needle.deleteSprite();

  //****  Draw divisions and numbers  ****
  
  for(int i=70;i<=300;i+=22){
    float divangle=i;
    deg2rad(&divangle);
    int x0 = OuterRadius*cos(divangle)+xCenter;
    int y0 = OuterRadius*sin(divangle)+yCenter;
    int x1 = (MiddleRadius+10)*cos(divangle)+xCenter;
    int y1 = (MiddleRadius+10)*sin(divangle)+yCenter;
    tft.drawLine(x0,y0,x1,y1,WHITE);
  }
  tft.setTextColor(WHITE,GREY);
  tft.setCursor(12,152);
  tft.println("0");
  tft.setCursor(25,97);
  tft.println("1");
  tft.setCursor(53,52);
  tft.println("2");
  tft.setCursor(94,22);
  tft.println("3");
  tft.setCursor(148,9);
  tft.println("4");
  tft.setCursor(206,18);
  tft.println("5");
  tft.setCursor(25,203);
  tft.println("1");
  tft.setCursor(53,248);
  tft.println("2");
  tft.setCursor(94,280);
  tft.println("3");
  tft.setCursor(148,294);
  tft.println("4");
  tft.setCursor(206,287);
  tft.println("5");
}

//*******************************
//**** Draw NavBox and Data  ****
//*******************************

void DrawData(char title[],float data,int precision, int x,int y,bool sign){
  Nav1.createSprite(30,15);
  //Nav1.fillScreen(YELLOW);
  Nav1.setCursor(0,0);
  Nav1.setTextColor(CYAN,BLACK);
  Nav1.println(title);
  Nav2.createSprite(140,50);
  Nav2.setCursor(0,0);
  Nav2.setTextColor(WHITE,BLACK);
  if ((data>0) && (sign)){
    Nav2.print("+");
  }
  Nav2.println(data,precision);
  Nav1.pushSprite(x,y);
  Nav1.deleteSprite();
  Nav2.pushSprite(x+30,y);
  Nav2.deleteSprite();
}

// ************************************
// ****  Initialize SPIFFS memory  ****
// ************************************

void SPIFFSstart(){
  if (!SPIFFS.begin()){
    Serial2.println("SPIFFS initialisation failed!");
    while (1) yield(); // Stay here twiddling thumbs waiting
    }
  Serial2.println("\r\nInitialisation done.");
}

  
// ********************************************************
// ****  List files in ESP8266 or ESP32 SPIFFS memory  ****
// ********************************************************

void listFiles(void) {
  Serial2.println();
  Serial2.println("SPIFFS files found:");

#ifdef ESP32
  listDir(SPIFFS, "/", true);
#else
  fs::Dir dir = SPIFFS.openDir("/"); // Root directory
  String  line = "=====================================";

  Serial2.println(line);
  Serial2.println("  File name               Size");
  Serial2.println(line);

  while (dir.next()) {
    String fileName = dir.fileName();
    Serial2.print(fileName);
    int spaces = 25 - fileName.length(); // Tabulate nicely
    if (spaces < 0) spaces = 1;
    while (spaces--) Serial2.print(" ");
    fs::File f = dir.openFile("r");
    Serial2.print(f.size()); Serial2.println(" bytes");
    yield();
  }

  Serial2.println(line);
#endif
  Serial2.println();
  delay(1000);
}

#ifdef ESP32
void listDir(fs::FS &fs, const char * dirname, uint8_t levels) {
  Serial2.printf("Listing directory: %s\n", dirname);

  fs::File root = fs.open(dirname);
  if (!root) {
    Serial2.println("Failed to open directory");
    return;
  }
  if (!root.isDirectory()) {
    Serial2.println("Not a directory");
    return;
  }

  fs::File file = root.openNextFile();
  while (file) {

    if (file.isDirectory()) {
      Serial2.print("DIR : ");
      String fileName = file.name();
      Serial2.print(fileName);
      if (levels) {
        listDir(fs, file.name(), levels - 1);
      }
    } else {
      String fileName = file.name();
      Serial2.print("  " + fileName);
      int spaces = 32 - fileName.length(); // Tabulate nicely
      if (spaces < 1) spaces = 1;
      while (spaces--) Serial2.print(" ");
      String fileSize = (String) file.size();
      spaces = 8 - fileSize.length(); // Tabulate nicely
      if (spaces < 1) spaces = 1;
      while (spaces--) Serial2.print(" ");
      Serial2.println(fileSize + " bytes");
    }

    file = root.openNextFile();
  }
}
#endif
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
28.12.2019, 09:38 (Dieser Beitrag wurde zuletzt bearbeitet: 28.12.2019 09:38 von amithlon.)
Beitrag #8
RE: ESP32 RX2 und TX2
Hallo,

warum hast Du
//HardwareSerial Serial(1);
auskommentiert? Die legt das Objekt für die Hardware an.

Bei mir als Beipiiel für ein GPS-Modul:
Code:
HardwareSerial GPS(1);                
...
setup()
{
  GPS.begin(9600, SERIAL_8N1, 34, 12);
...


Gruß aus Berlin
Michael
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  ESP32 Lora Wetterdaten 4711engel 10 489 Heute 17:02
Letzter Beitrag: Bitklopfer
  ESP32 / DeepSleep / Akkulaufzeit ? Steinspiel 9 135 Heute 16:08
Letzter Beitrag: Quackebusch
  ESP32 über OTA luemar 67 2.999 23.02.2021 22:55
Letzter Beitrag: hotsystems
  ESP32 und HC05 gk_1 5 647 22.02.2021 10:53
Letzter Beitrag: gk_1
Question esp32 Cam Blynk Busterflex 1 161 21.02.2021 02:15
Letzter Beitrag: rev.antun
  ESP32: Sensor via GPIO deaktivieren DivingJoe 21 814 18.02.2021 22:15
Letzter Beitrag: hotsystems
  Erfahrungen mit ESP32 und WLAN/MQTT oder was ich beobachtet habe... Arduino4Fun 22 2.081 08.02.2021 15:34
Letzter Beitrag: ardu_arne
  ESP32 BT Master MarcelN 1 1.002 08.02.2021 01:34
Letzter Beitrag: Corvus
  ESP32 Mail Client stefan.hild@t-online.de 20 1.046 06.02.2021 22:16
Letzter Beitrag: Corvus
  ESP32-CAM - Snapshot als eMail Attachment stefan.hild@t-online.de 21 707 30.01.2021 19:49
Letzter Beitrag: stefan.hild@t-online.de

Gehe zu:


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