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
Odroid Go ESP32
17.10.2018, 13:41 (Dieser Beitrag wurde zuletzt bearbeitet: 17.10.2018 13:46 von amithlon.)
Beitrag #17
RE: Odroid Go ESP32
Hallo,

er hat eine Karte erkannt, kann sie aber nicht einbinden.
Ich hatte bisher nur ein selbstgemachtes Problem: eine Karte wollte er nicht lesen.
Er hatte recht, sie war NTFS formatiert...
Mit FAT32 ging bis jetzt mein 8GB und 16GB problemlos.
Mehr Karten zum Test habe ich nicht zur Hand.

Möglichst auch eine andere probieren, es sind nach Juli (dürfte auch der Stand Deiner Software sein) nochmal Änderungen zur Kompatibilität gemacht worden.

Gruß aus Berlin
Michael
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
21.10.2018, 18:29
Beitrag #18
RE: Odroid Go ESP32
Hallo,

habe mal zum Spaß den Odroid Go zum Cam-Viewer für die M5Stack Cam gemacht, irgendeinen Unsinn muß das alles ja haben...

   

Code:
#define SSID_NAME "ESP32-CAM"
#define SSID_PASSWORD ""
#define URL "http://192.168.4.1/jpg"

#include <WiFi.h>
#include <HTTPClient.h>
#include "TFT_eSPI.h"
#include <JPEGDecoder.h>

#define TFT_BL   14  // LED back-light

// Return the minimum of two values a and b
#define minimum(a,b)     (((a) < (b)) ? (a) : (b))

const int picBufferSize = 80*1024;
void *picBuffer = NULL;

TFT_eSPI tft = TFT_eSPI();

void setup()
{
//  pinMode(TFT_BL,OUTPUT);                                     // Backlight an
//  digitalWrite(TFT_BL,HIGH);

  ledcSetup(2, 10000, 8);
  ledcAttachPin(TFT_BL, 2);
  ledcWrite(2, 100);
  
  Serial.begin(115200);
  Serial.println("\r\nReset");

  tft.begin();
  tft.setRotation(1);
  
  picBuffer = malloc(picBufferSize);        // Stream-File-Buffer

  WiFi.begin(SSID_NAME, SSID_PASSWORD);
}

void loop()
{
  Serial.print("WiFi connect");
  if (WiFi.status() != WL_CONNECTED)
  {
    // wait for WiFi connection
    delay(500);
  }
  else
  {
    Serial.println("OK");
    HTTPClient http;

    Serial.print("[HTTP] begin...\n");
    http.begin(URL);

    Serial.print("[HTTP] GET...\n");
    int httpCode = http.GET();

    Serial.printf("[HTTP] GET... code: %d\n", httpCode);
    // HTTP header has been send and Server response header has been handled
    if (httpCode <= 0)
    {
      Serial.printf("[HTTP] GET... failed, error: %s\n", http.errorToString(httpCode).c_str());
    }
    else
    {
      if (httpCode != HTTP_CODE_OK)
      {
        Serial.printf("[HTTP] Not OK!\n");
      }
      else
      {
        // get lenght of document (is -1 when Server sends no Content-Length header)
        int len = http.getSize();
        Serial.printf("[HTTP] size: %d\n", len);

        if (len <= 0)
        {
          Serial.printf("[HTTP] Unknow content size: %d\n", len);
        }
        else
        {

          // get tcp stream
          WiFiClient * stream = http.getStreamPtr();

          // read all data from server
          uint8_t* p = (uint8_t*) picBuffer;
          int l = len;
          while (http.connected() && (l > 0 || len == -1))
          {
            // get available data size
            size_t size = stream->available();

            if (size)
            {
              int c = stream->readBytes(p, size);
              p += size;

              Serial.printf("[HTTP] read: %d\n", c);
            }
          }

          Serial.println();
          Serial.print("[HTTP] connection closed.\n");

          drawArrayJpeg((uint8_t*) picBuffer, len, 0, 0);
        }
      }
    }

    http.end();
  }
}

//################################################################################​####################
// Draw a JPEG on the TFT pulled from a memory array
//################################################################################​####################
void drawArrayJpeg(const uint8_t arrayname[], uint32_t array_size, int xpos, int ypos) {

  int x = xpos;
  int y = ypos;

  JpegDec.decodeArray(arrayname, array_size);
  
  jpegInfo(); // Print information from the JPEG file (could comment this line out)
  
  renderJPEG(x, y);
  
  Serial.println("#########################");
}

//################################################################################​####################
// Draw a JPEG on the TFT, images will be cropped on the right/bottom sides if they do not fit
//################################################################################​####################
// This function assumes xpos,ypos is a valid screen coordinate. For convenience images that do not
// fit totally on the screen are cropped to the nearest MCU size and may leave right/bottom borders.
void renderJPEG(int xpos, int ypos) {

  // retrieve infomration about the image
  uint16_t *pImg;
  uint16_t mcu_w = JpegDec.MCUWidth;
  uint16_t mcu_h = JpegDec.MCUHeight;
  uint32_t max_x = JpegDec.width;
  uint32_t max_y = JpegDec.height;

  // Jpeg images are draw as a set of image block (tiles) called Minimum Coding Units (MCUs)
  // Typically these MCUs are 16x16 pixel blocks
  // Determine the width and height of the right and bottom edge image blocks
  uint32_t min_w = minimum(mcu_w, max_x % mcu_w);
  uint32_t min_h = minimum(mcu_h, max_y % mcu_h);

  // save the current image block size
  uint32_t win_w = mcu_w;
  uint32_t win_h = mcu_h;

  // record the current time so we can measure how long it takes to draw an image
  uint32_t drawTime = millis();

  // save the coordinate of the right and bottom edges to assist image cropping
  // to the screen size
  max_x += xpos;
  max_y += ypos;

  // read each MCU block until there are no more
  while (JpegDec.read()) {
      
    // save a pointer to the image block
    pImg = JpegDec.pImage ;

    // calculate where the image block should be drawn on the screen
    int mcu_x = JpegDec.MCUx * mcu_w + xpos;  // Calculate coordinates of top left corner of current MCU
    int mcu_y = JpegDec.MCUy * mcu_h + ypos;

    // check if the image block size needs to be changed for the right edge
    if (mcu_x + mcu_w <= max_x) win_w = mcu_w;
    else win_w = min_w;

    // check if the image block size needs to be changed for the bottom edge
    if (mcu_y + mcu_h <= max_y) win_h = mcu_h;
    else win_h = min_h;

    // copy pixels into a contiguous block
    if (win_w != mcu_w)
    {
      uint16_t *cImg;
      int p = 0;
      cImg = pImg + win_w;
      for (int h = 1; h < win_h; h++)
      {
        p += mcu_w;
        for (int w = 0; w < win_w; w++)
        {
          *cImg = *(pImg + w + p);
          cImg++;
        }
      }
    }

    // calculate how many pixels must be drawn
    uint32_t mcu_pixels = win_w * win_h;

    // draw image MCU block only if it will fit on the screen
    if (( mcu_x + win_w ) <= tft.width() && ( mcu_y + win_h ) <= tft.height())
    {
      // Now set a MCU bounding window on the TFT to push pixels into (x, y, x + width - 1, y + height - 1)
      tft.setWindow(mcu_x, mcu_y, mcu_x + win_w - 1, mcu_y + win_h - 1);

      // Write all MCU pixels to the TFT window
      while (mcu_pixels--) {
        // Push each pixel to the TFT MCU area
        tft.pushColor(*pImg++);
      }

    }
    else if ( (mcu_y + win_h) >= tft.height()) JpegDec.abort(); // Image has run off bottom of screen so abort decoding
  }

  // calculate how long it took to draw the image
  drawTime = millis() - drawTime;

  // print the results to the serial port
  Serial.print(F(  "Total render time was    : ")); Serial.print(drawTime); Serial.println(F(" ms"));
  Serial.println(F(""));
}

//################################################################################​####################
// Print image information to the serial port (optional)
//################################################################################​####################
void jpegInfo() {
  Serial.println(F("==============="));
  Serial.println(F("JPEG image info"));
  Serial.println(F("==============="));
  Serial.print(F(  "Width      :")); Serial.println(JpegDec.width);
  Serial.print(F(  "Height     :")); Serial.println(JpegDec.height);
  Serial.print(F(  "Components :")); Serial.println(JpegDec.comps);
  Serial.print(F(  "MCU / row  :")); Serial.println(JpegDec.MCUSPerRow);
  Serial.print(F(  "MCU / col  :")); Serial.println(JpegDec.MCUSPerCol);
  Serial.print(F(  "Scan type  :")); Serial.println(JpegDec.scanType);
  Serial.print(F(  "MCU width  :")); Serial.println(JpegDec.MCUWidth);
  Serial.print(F(  "MCU height :")); Serial.println(JpegDec.MCUHeight);
  Serial.println(F("==============="));
}

//################################################################################​####################
// Show the execution time (optional)
//################################################################################​####################
// WARNING: for UNO/AVR legacy reasons printing text to the screen with the Mega might not work for
// sketch sizes greater than ~70KBytes because 16 bit address pointers are used in some libraries.

// The Due will work fine with the HX8357_Due library.

void showTime(uint32_t msTime) {
  //tft.setCursor(0, 0);
  //tft.setTextFont(1);
  //tft.setTextSize(2);
  //tft.setTextColor(TFT_WHITE, TFT_BLACK);
  //tft.print(F(" JPEG drawn in "));
  //tft.print(msTime);
  //tft.println(F(" ms "));
  Serial.print(F(" JPEG drawn in "));
  Serial.print(msTime);
  Serial.println(F(" ms "));
}

@Tommy56: was ist denn aus Deinem Odroid Go geworden?

Gruß aus Berlin
Michael
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
21.10.2018, 18:40
Beitrag #19
RE: Odroid Go ESP32
Der weigert sich weiterhin standhaft eine SD anzunehmen. Verschiedene Größen, verschiedene Formatierungsprogramme - nix. (Win 7 und Sd-Card.org, also das Referenzprogramm)
Ich werde ihn zurück schicken.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
21.10.2018, 21:06
Beitrag #20
RE: Odroid Go ESP32
Hallo,

eigenartig... Das Fehlerbild mit dem Kreuz sagt zumindest, daß er eine Karte als solche erkannt hat. Dateisystem oder falsche/fehlende Ordnerstruktur oder nötige Files darin führen auch zu dem Fehlerbild. Ich habe gerade mal mit meinem getstet, 16GB SD-Card, unter Win7 mit Standardeinstellungen als FAT32 formatiert, die beiden Ordner odroid und roms mit Inhalt raufkopiert, hatte ich ja schon zusammengestellt auf meiner HD.
Starte sauber und läuft. Kann man bei einer PM hier einen Anhang mitschicken? Ich habe nichts gefunden, ich würde Dir dann mal meine fertige Ordnerstruktur mit Inhalten für die SD-Card schicken.

Gruß aus Berlin
Michael
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
21.10.2018, 21:12
Beitrag #21
RE: Odroid Go ESP32
Du hast eine PN mit meiner Email.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
21.10.2018, 21:21
Beitrag #22
RE: Odroid Go ESP32
Hallo,

Mail ist raus.

Gruß aus Berlin
Michael
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
21.10.2018, 21:26 (Dieser Beitrag wurde zuletzt bearbeitet: 21.10.2018 21:26 von Tommy56.)
Beitrag #23
RE: Odroid Go ESP32
Ist angekommen. Danke Dir.
Du hast nochmal ne PN.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
22.10.2018, 13:32
Beitrag #24
RE: Odroid Go ESP32
Er zeigt jetzt ein Menü. Wenn ich Go-Play wähle kommt die Fehlermeldung no files.

Hast Du noch eine Idee?

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
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: U8x8 und SoftwareSerial gleichzeitig markusw129 2 41 Heute 12:06
Letzter Beitrag: markusw129
  ESP32 Webserver download mehrerer Dateien Eisvogel 1 152 11.06.2019 10:42
Letzter Beitrag: Tommy56
  Apple II Projekt Umzug von uno -> ESP32 / ESP8266 stevie72 22 1.213 30.05.2019 08:30
Letzter Beitrag: amithlon
  Boot-Schleife beim ESP32 - wie Lösbar? tho.schmidt 9 604 28.05.2019 20:24
Letzter Beitrag: Tommy56
Question ESP32 Daten per Bluetooth auf AppInventor App anzeigen mamo1234 2 396 23.05.2019 14:10
Letzter Beitrag: mamo1234
  ESP32 verbindet nicht mehr mit meiner Fritz Box spok1 12 875 21.05.2019 11:22
Letzter Beitrag: Hilgi
  MySQL mit ESP32 ohne PHP Waschbärbauch 8 1.178 02.05.2019 16:39
Letzter Beitrag: Tommy56
  ESP32 mittels Keypad-Interrupt aus Deepsleep aufwachen lassen jalu4601 1 555 19.04.2019 20:13
Letzter Beitrag: jalu4601
  ESP32 BIN von Arduino aufspielen Positiv 7 976 14.04.2019 18:13
Letzter Beitrag: Positiv
  ESP32 Batteriestatus Aredon 9 1.565 13.04.2019 21:44
Letzter Beitrag: Aredon

Gehe zu:


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