Arduino - Erste Schritte

Hallo,

ich habe noch keine Erfahrungen mit Arduino gemacht.

Um mich mit der Materie vertraut machen zu können, habe ich gemäss der folgenden Webseite eine Beispiel-Schaltung aufgebaut:

Abweichend zum Beispiel wird ein ESP32 verwendet: https://www.amazon.de/dp/B0BVQLW2S6

Die Software Arduino hat den Beispiel Code aus dem Tutorial fehlerfrei kompiliert und erfolgreich hochgeladen.

Dennoch wird nach dem Booten nichts ausgeführt.

Müssen zusätzlich noch weitere Schritte durchgeführt werden, um ein Programm zum Laufen bringen zu können?

Hallo ben2003a

Herzlich wiillkommen im weltbesten Arduinoforum der Welt.

Poste mal deinen aktuellen Sketch, damit wir sehen können wie wir helfen können.

Die mit den 2 LEDs?

Eher nein!
Bei manchen schlecht konstruierten Boards kann ein Druck auf den Reset Knopf nötig sein.

Das glaube ich eigentlich nicht.
Ich vermute, du hast die falschen Pins erwischt.

Probier mal LED_BUILTIN

void setup() {
  pinMode (LED_BUILTIN, OUTPUT);
  Serial.begin(115200);
  Serial.println("Hello, ESP32!");
}

void loop() {
  digitalWrite(LED_BUILTIN, (millis() & 0x200) >> 9);  // Ca. 1 Hz
}

LED kann man auch falschrum anschließen. Immerhin gehen sie davon nicht kaputt.

Kennt bei manchen ESP32 Modulen nicht :wink:
Jedoch Wemos D1 Mini ESP32 kann das
ob 8266 müsste testen jedoch ESP32 definitiv nicht.
ESP8266 kennt das ist ja Fest am Modul verlötet neben Antenne.

Der ESP32 nicht, wohl aber manche Boards der Arduino-IDE.

grafik

Beispielsweise oben nein, unten ja.

Danke,
Ja :wink: der Wemos D1 Mini ESP32 kann das.
Habe das Modul nur niemals das die LED direkt benutzt, die war zwar am leuchten nur hat mich das nicht interessiert, und ist sogar am GPIO2 so wie bei Node MCU

Wenn das nicht so wäre, würden wenigstens die smd-LEDs am Board entsprechend aufleuchten:

Der ESP32 ist auf einem "Freenove Breakout" installiert worden. Über diesen werden alle IO-Pins optisch mit einer LED angezeigt.

https://www.amazon.de/dp/B0CD2512JV

Mir ist aufgefallen, dass der Serieller Monitor lauter Steuerzeichen anzeigt. Ist das normal?

Ja und nein!
Normal ist es, wenn man die falsche Baudrate eingestellt hat.
Je nach quarz kommen die Debug Meldungen mit 115200 oder 74880 Baud.

1 Like

Selbstverständlich können die kaputt gehen. Viele haben nur eine Sperrspannung von 4-5V.

Ja, aber die musste auch erstmal mit einem ESP hin bekommen.

Das Programm von Smarthome Blogger stürzt bei mir mit der Meldung "Debug exception reason: Stack canary watchpoint triggered (IDLE)" ab.

Wenn Du die Baudrate des seriellen Monitors richtig eingestellt hast, bei mir 115200, dann siehst Du vermutlich die ständigen Neustarts ebenfalls.

Mit etwas mehr Speicherfreigabe blinkt es dann.

Blinkprogramm
const int greenLedPin = 22;
const int redLedPin = 21;

TaskHandle_t blinkTask;

int counter = 0;

void setup() { pinMode(redLedPin, OUTPUT);
  pinMode(greenLedPin, OUTPUT);
  xTaskCreatePinnedToCore(blink, "blink", 2048, NULL, 1, &blinkTask, 0);
}

void loop() {
  digitalWrite(greenLedPin, HIGH);
  delay(1000);
  digitalWrite(greenLedPin, LOW);
  delay(1000);
  if(counter == 10){
    vTaskDelete(blinkTask);
  }
  counter++;
}

void blink(void* parameter){
  (void) parameter;
  while(true){
    digitalWrite(redLedPin, HIGH);
    delay(750);
    digitalWrite(redLedPin, LOW);
    delay(750);
  }
}

Starte besser mit einem einfacheren Programm wie #4.

Um was klarzustellen:
Die ESP's sind keinen Arduino (Produkte der Firma Arduino bzw Produkte in Lizenz produziert). Die ESPs können durch eine Erweiterung mit der Arduino IDE programmiert werden.

Grüße Uwe

Wenn der Code verwendet wird, kann der Code nicht kompiliert werden.
LED_BUILDIN ist nicht definiert:

error: 'LED_BUILTIN' was not declared in this scope

Nun kann die Meldung vom Seriellen Monitor gelesen werden.

Nach dem Kompilieren werden beim Starten folgende Meldungen endlos gesendet:

Backtrace: 0x4037704a:0x3fceb180 0x40379b7d:0x3fceb1a0 0x4037f0e9:0x3fceb1c0 0x42005cbc:0x3fceb2f0 0x403769bb:0x3fceb320 0x403cd823:0x3fceb350 0x403cdae2:0x3fceb380 0x403c9929:0x3fceb4b0 0x40045c01:0x3fceb570 |<-CORRUPTED

ELF file SHA256: 58971e72cef6f932

E (162) esp_core_dump_flash: Core dump flash config is corrupted! CRC=0x7bd5c66f instead of 0x0

Rebooting...

ESP-ROM:esp32s3-20210327

Build:Mar 27 2021

rst:0xc (RTC_SW_CPU_RST),boot:0xb (SPI_FAST_FLASH_BOOT)

Saved PC:0x40376c58

SPIWP:0xee

mode:DIO, clock div:1

load:0x3fce3808,len:0x44c

load:0x403c9700,len:0xbe4

load:0x403cc700,len:0x2a68

entry 0x403c98d4

E (75) opi psram: PSRAM ID read error: 0x00000000, PSRAM chip not found or not supported, or wrong PSRAM line mode

E (76) spiram: SPI RAM enabled but initialization failed. Bailing out.

E (94) spi_flash: Detected size(8192k) smaller than the size in the binary image header(16384k). Probe failed.

assert failed: do_core_init startup.c:328 (flash_ret == ESP_OK)

Backtrace: 0x4037704a:0x3fceb180 0x40379b7d:0x3fceb1a0 0x4037f0e9:0x3fceb1c0 0x42005cbc:0x3fceb2f0 0x403769bb:0x3fceb320 0x403cd823:0x3fceb350 0x403cdae2:0x3fceb380 0x403c9929:0x3fceb4b0 0x40045c01:0x3fceb570 |<-CORRUPTED

Folgende Boardinformationen werden angezeigt:

BN: unbekanntes Board
VID: 0x1A86
PID: 0x55D3
SN: 54ED008736

Wenn im Seriellen Monitor die Meldungen nur so durch flitzen, kann man diese kaum lesen.

Habe bisher immer die Verbindung getrennt, um die einzelnen Meldungen lesen zu können.

Gibt es noch eine andere Methode um die Meldungen anzuhalten?

Falsches Board eingestellt.

Resetknopf drücken und festhalten.

Nachtrag:
Beim Kompilieren treten keine Fehlermeldungen auf:

Der Sketch verwendet 238825 Bytes (18%) des Programmspeicherplatzes. Das Maximum sind 1310720 Bytes.
Globale Variablen verwenden 18368 Bytes (5%) des dynamischen Speichers, 309312 Bytes für lokale Variablen verbleiben. Das Maximum sind 327680 Bytes.
esptool.py v4.5.1
Serial port COM3
Connecting...
Chip is ESP32-S3 (revision v0.2)
Features: WiFi, BLE
Crystal is 40MHz
MAC: 48:27:e2:17:98:c0
Uploading stub...
Running stub...
Stub running...
Changing baud rate to 921600
Changed.
Configuring flash size...
Flash will be erased from 0x00000000 to 0x00003fff...
Flash will be erased from 0x00008000 to 0x00008fff...
Flash will be erased from 0x0000e000 to 0x0000ffff...
Flash will be erased from 0x00010000 to 0x0004afff...
Compressed 15088 bytes to 10374...
Writing at 0x00000000... (100 %)
Wrote 15088 bytes (10374 compressed) at 0x00000000 in 0.3 seconds (effective 369.2 kbit/s)...
Hash of data verified.
Compressed 3072 bytes to 146...
Writing at 0x00008000... (100 %)
Wrote 3072 bytes (146 compressed) at 0x00008000 in 0.0 seconds (effective 612.9 kbit/s)...
Hash of data verified.
Compressed 8192 bytes to 47...
Writing at 0x0000e000... (100 %)
Wrote 8192 bytes (47 compressed) at 0x0000e000 in 0.1 seconds (effective 839.1 kbit/s)...
Hash of data verified.
Compressed 239184 bytes to 133117...
Writing at 0x00010000... (11 %)
Writing at 0x0001d43d... (22 %)
Writing at 0x000231e7... (33 %)
Writing at 0x000285ec... (44 %)
Writing at 0x0002db4a... (55 %)
Writing at 0x00033e96... (66 %)
Writing at 0x0003e4fc... (77 %)
Writing at 0x00043cc9... (88 %)
Writing at 0x00049abb... (100 %)
Wrote 239184 bytes (133117 compressed) at 0x00010000 in 2.2 seconds (effective 883.7 kbit/s)...
Hash of data verified.

Leaving...
Hard resetting via RTS pin...

Das ist mir mehr als nur klar, denn sonst würde das Programm gar nicht auf den ESP geladen werden.
Logisch oder?