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 Ethernet shrimps 10 227 16.01.2019 18:45
Letzter Beitrag: derdemo
  ESP32 mit Wifi Positiv 8 179 15.01.2019 11:36
Letzter Beitrag: Tommy56
  ESP32 v1.0.1 amithlon 1 108 12.01.2019 23:16
Letzter Beitrag: Fips
  ESP32 Deepsleep und FRITZ!Box 7590 WiFi probleme. MeisterQ 42 2.911 08.01.2019 09:33
Letzter Beitrag: Hoffmakl
  Eqiva EQ3-Bluetooth Heizungsthermostat ESP32 MeisterQ 3 239 07.01.2019 08:51
Letzter Beitrag: amithlon
  Esp32 1.0.0 geändert ?? Fips 4 311 29.12.2018 08:04
Letzter Beitrag: Fips
  Suche Programmierer für ESP32-Projekt rychard 12 1.431 11.12.2018 15:58
Letzter Beitrag: Tommy56
  ESP32 (AzureIoT + BLE in keine Header-Dateien) ChrisL 7 684 01.12.2018 13:45
Letzter Beitrag: ChrisL
  ESP32 - welches Board / 5V - 3,3V I2C Staind 9 1.113 30.11.2018 11:10
Letzter Beitrag: Tommy56
  ESP32 - Ist der I2C-Bug noch aktuell ? Stargazer 32 3.322 29.11.2018 02:38
Letzter Beitrag: Bitklopfer

Gehe zu:


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