Arduino NanoESP32 Pinmapping

Hallo Gemeinde.

Als erstes ein Frohes Fest noch Wünsche.

Ich habe ein kleines Problem mit dem Pin Mapping des ArduinoNanoESP32.

Normal arbeite ich mit der Bezeichnung “GPIO_NUM_2” Gpio 2 Pin D18 beim NanoESP.

#define V_FI GPIO_NUM_2 // D18

Aber sobald ich

pinMode(V_FI, OUTPUT); / digitalWrite(V_FI, LOW); nutze bleibt der Pin auf LOW wenn ich ihn auf HIGH setze. Wenn ich aber

pinMode(18, OUTPUT); / digitalWrite(18, LOW); schreibe kann ich ihn auf High setzen.

Was soll der Blödsinn wenn ich GPIO nutze und nicht die pinbezeichnung? liegt das an der Arduino umgebung? ich habe deswegen extra driver/gpio.h geladen dafür.

Gibt es eine andere Lösung so das ich die bezeichnung nutzen kann oder geht das bei Arduino pinMode generell nicht? oder gibt es eine idif lösung dafür?

danke wenn ihr eine Antwort habt

Das gehört in die Vergangenheit.

Warum verwendest du nicht die Pinbezeichnungen, wie sie in der pins_arduino.h definiert sind?

ich finde die aussagen immer klasse. warum hast du nicht. Aber gleich hier schreiben geht nicht?. Ok ich werde schauen. Aber danke für den Hinweiß

Vielleicht ist genau das das Problem.

Ich habe eine Frage:
Kannst Du mir eine vollständige Ausgabe des Compilers geben?
Dazu in den Einstellungen unter
DATEI - VOEREINSTELLUNGEN

mindestens das so einstellen:
grafik

Alles was beim compilieren angezeigt wird, bringt dann ggfls. Licht ins Dunkel.

Ich denke, dass eine nicht passende GPIO-Beschreibung genutzt wird.
Aber das bekommt man nur raus, wenn man sieht, was da tatsächlich verwendet wird.

1 Like

Hallo,

wenn man die GPIO Nummern statt Arduino Nummern verwendet, muss man in der IDE die verwendete Nummerierung umstellen.
Menü > Werkzeuge > Pin Numbering

hallo XY, ich nutze PaltformIO und nicht mehr diese vergammelte IDE die zwar ganz ok war aber nicht für größere Projekte geeignet ist. Ich habe keine Fehlermelungen oder dergleichen bekommen beim Kompelieren. Die Pins werden einfach nicht gesetzt wenn ich sie GPIO_NUM_3 oder so benenne. ich habe mir dann doch die pin_arduino.h angeschaut und die bezeichnung von dort benutzt. Ok bei normalen digital pins funktioniert es aucdh, aber sobald I2C oder RX/TX für Display oder Canbus ins spiel kommt dann scheitern diese Kläglich. sie funktionieren unzuverlässig. auch ist das ganze Arduino gedönst voll mit Bugs die nicht unbedingt für ein ESP32 ausgelegt sind vorallem wenn es darum geht beide Core zu nutzen. Wire und Serial die besten Kandidaten dafür wenn ich Serial1 nutzen muss wegen Display dann kommt es zum OVERLOADE Core0 bei Wire kannst du keine GPIOs nutzen der will nur arduino Bezeichnung. Mischmodus ist ein Nogo. Daher war ja die frage ob es etwas in der idif gibt für PinMode oder digitalRead. ich musste nun den Kompromiss eingehen und doch mischen GPIO_NUM mit Arduino Bezeichnungen. ist nicht sauber aber anderst geht es nicht.

Wie gesagt der Compiler mekkert nicht rum du merkst es nur wenn du ein pin auf high setzen willst oder ihn lesen das da nichts ankommt, da hilft eine debug ausgabe auch nicht wirklich du siehst halt nur das es nicht gelesen oder gesetzt wurde. aber hier die ausgabe des compiler

Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/espressif32/arduino_nano_esp32.html
PLATFORM: Espressif 32 (6.12.0) > Arduino Nano ESP32
HARDWARE: ESP32S3 240MHz, 320KB RAM, 16MB Flash
DEBUG: Current (cmsis-dap) External (cmsis-dap, dfu, esp-bridge, esp-builtin, esp-prog, iot-bus-jtag, jlink, minimodule, olimex-arm-usb-ocd, olimex-arm-usb-ocd-h, olimex-arm-usb-tiny-h, olimex-jtag-tiny, tumpa)
PACKAGES:
 - framework-arduinoespressif32 @ 3.20017.241212+sha.dcc1105b
 - tool-dfuutil-arduino @ 1.11.0
 - tool-esptoolpy @ 2.40900.250804 (4.9.0)
 - tool-mkfatfs @ 2.0.1
 - tool-mklittlefs @ 1.203.210628 (2.3)
 - tool-mkspiffs @ 2.230.0 (2.30)
 - toolchain-riscv32-esp @ 8.4.0+2021r2-patch5
 - toolchain-xtensa-esp32s3 @ 8.4.0+2021r2-patch5
LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 34 compatible libraries
Scanning dependencies...
Dependency Graph
|-- Adafruit NeoPixel @ 1.15.2
|-- WiFi @ 2.0.0
Building in debug mode
Compiling .pio\build\mb_ventil_V1_0_0_dev\src\Core0\I2CManager.cpp.o
Compiling .pio\build\mb_ventil_V1_0_0_dev\src\Core0\TouchHandler.cpp.o
Compiling .pio\build\mb_ventil_V1_0_0_dev\src\Core1\CommandHandler.cpp.o
Compiling .pio\build\mb_ventil_V1_0_0_dev\src\Core1\VentilController.cpp.o
Compiling .pio\build\mb_ventil_V1_0_0_dev\src\Core1\WiFiManager.cpp.o
Compiling .pio\build\mb_ventil_V1_0_0_dev\src\main.cpp.o
Building .pio\build\mb_ventil_V1_0_0_dev\bootloader.bin
Generating partitions .pio\build\mb_ventil_V1_0_0_dev\partitions.bin
esptool.py v4.9.0
Creating esp32s3 image...
Merged 1 ELF section
Successfully created esp32s3 image.
Compiling .pio\build\mb_ventil_V1_0_0_dev\libc6c\Adafruit NeoPixel\Adafruit_NeoPixel.cpp.o
Compiling .pio\build\mb_ventil_V1_0_0_dev\libc6c\Adafruit NeoPixel\Adafruit_Neopixel_RP2.cpp.o
Compiling .pio\build\mb_ventil_V1_0_0_dev\libc6c\Adafruit NeoPixel\esp.c.o
Compiling .pio\build\mb_ventil_V1_0_0_dev\libc6c\Adafruit NeoPixel\esp8266.c.o
Compiling .pio\build\mb_ventil_V1_0_0_dev\libc6c\Adafruit NeoPixel\kendyte_k210.c.o
Compiling .pio\build\mb_ventil_V1_0_0_dev\libc6c\Adafruit NeoPixel\psoc6.c.o
Compiling .pio\build\mb_ventil_V1_0_0_dev\lib546\WiFi\WiFi.cpp.o
Compiling .pio\build\mb_ventil_V1_0_0_dev\lib546\WiFi\WiFiAP.cpp.o
Archiving .pio\build\mb_ventil_V1_0_0_dev\libc6c\libAdafruit NeoPixel.a
Compiling .pio\build\mb_ventil_V1_0_0_dev\lib546\WiFi\WiFiClient.cpp.o
Compiling .pio\build\mb_ventil_V1_0_0_dev\lib546\WiFi\WiFiGeneric.cpp.o
Compiling .pio\build\mb_ventil_V1_0_0_dev\lib546\WiFi\WiFiMulti.cpp.o
Compiling .pio\build\mb_ventil_V1_0_0_dev\lib546\WiFi\WiFiSTA.cpp.o
Compiling .pio\build\mb_ventil_V1_0_0_dev\lib546\WiFi\WiFiScan.cpp.o
Compiling .pio\build\mb_ventil_V1_0_0_dev\lib546\WiFi\WiFiServer.cpp.o
Compiling .pio\build\mb_ventil_V1_0_0_dev\lib546\WiFi\WiFiUdp.cpp.o
Compiling .pio\build\mb_ventil_V1_0_0_dev\FrameworkArduino\Esp.cpp.o
Compiling .pio\build\mb_ventil_V1_0_0_dev\FrameworkArduino\FirmwareMSC.cpp.o
Compiling .pio\build\mb_ventil_V1_0_0_dev\FrameworkArduino\FunctionalInterrupt.cpp.o
Compiling .pio\build\mb_ventil_V1_0_0_dev\FrameworkArduino\HWCDC.cpp.o
Compiling .pio\build\mb_ventil_V1_0_0_dev\FrameworkArduino\HardwareSerial.cpp.o
Compiling .pio\build\mb_ventil_V1_0_0_dev\FrameworkArduino\IPAddress.cpp.o
Compiling .pio\build\mb_ventil_V1_0_0_dev\FrameworkArduino\IPv6Address.cpp.o
Compiling .pio\build\mb_ventil_V1_0_0_dev\FrameworkArduino\MD5Builder.cpp.o
Compiling .pio\build\mb_ventil_V1_0_0_dev\FrameworkArduino\Print.cpp.o
Archiving .pio\build\mb_ventil_V1_0_0_dev\lib546\libWiFi.a
Compiling .pio\build\mb_ventil_V1_0_0_dev\FrameworkArduino\Stream.cpp.o
Compiling .pio\build\mb_ventil_V1_0_0_dev\FrameworkArduino\StreamString.cpp.o
Compiling .pio\build\mb_ventil_V1_0_0_dev\FrameworkArduino\Tone.cpp.o
Compiling .pio\build\mb_ventil_V1_0_0_dev\FrameworkArduino\USB.cpp.o
Compiling .pio\build\mb_ventil_V1_0_0_dev\FrameworkArduino\USBCDC.cpp.o
Compiling .pio\build\mb_ventil_V1_0_0_dev\FrameworkArduino\USBMSC.cpp.o
Compiling .pio\build\mb_ventil_V1_0_0_dev\FrameworkArduino\WMath.cpp.o
Compiling .pio\build\mb_ventil_V1_0_0_dev\FrameworkArduino\WString.cpp.o
Compiling .pio\build\mb_ventil_V1_0_0_dev\FrameworkArduino\base64.cpp.o
Compiling .pio\build\mb_ventil_V1_0_0_dev\FrameworkArduino\cbuf.cpp.o
Compiling .pio\build\mb_ventil_V1_0_0_dev\FrameworkArduino\esp32-hal-adc.c.o
Compiling .pio\build\mb_ventil_V1_0_0_dev\FrameworkArduino\esp32-hal-bt.c.o
Compiling .pio\build\mb_ventil_V1_0_0_dev\FrameworkArduino\esp32-hal-cpu.c.o
Compiling .pio\build\mb_ventil_V1_0_0_dev\FrameworkArduino\esp32-hal-dac.c.o
Compiling .pio\build\mb_ventil_V1_0_0_dev\FrameworkArduino\esp32-hal-gpio.c.o
Compiling .pio\build\mb_ventil_V1_0_0_dev\FrameworkArduino\esp32-hal-i2c-slave.c.o
Compiling .pio\build\mb_ventil_V1_0_0_dev\FrameworkArduino\esp32-hal-i2c.c.o
Compiling .pio\build\mb_ventil_V1_0_0_dev\FrameworkArduino\esp32-hal-ledc.c.o
Compiling .pio\build\mb_ventil_V1_0_0_dev\FrameworkArduino\esp32-hal-matrix.c.o
Compiling .pio\build\mb_ventil_V1_0_0_dev\FrameworkArduino\esp32-hal-misc.c.o
Compiling .pio\build\mb_ventil_V1_0_0_dev\FrameworkArduino\esp32-hal-psram.c.o
Compiling .pio\build\mb_ventil_V1_0_0_dev\FrameworkArduino\esp32-hal-rgb-led.c.o
Compiling .pio\build\mb_ventil_V1_0_0_dev\FrameworkArduino\esp32-hal-rmt.c.o
Compiling .pio\build\mb_ventil_V1_0_0_dev\FrameworkArduino\esp32-hal-sigmadelta.c.o
Compiling .pio\build\mb_ventil_V1_0_0_dev\FrameworkArduino\esp32-hal-spi.c.o
Compiling .pio\build\mb_ventil_V1_0_0_dev\FrameworkArduino\esp32-hal-time.c.o
Compiling .pio\build\mb_ventil_V1_0_0_dev\FrameworkArduino\esp32-hal-timer.c.o
Compiling .pio\build\mb_ventil_V1_0_0_dev\FrameworkArduino\esp32-hal-tinyusb.c.o
Compiling .pio\build\mb_ventil_V1_0_0_dev\FrameworkArduino\esp32-hal-touch.c.o
Compiling .pio\build\mb_ventil_V1_0_0_dev\FrameworkArduino\esp32-hal-uart.c.o
Compiling .pio\build\mb_ventil_V1_0_0_dev\FrameworkArduino\firmware_msc_fat.c.o
Compiling .pio\build\mb_ventil_V1_0_0_dev\FrameworkArduino\libb64\cdecode.c.o
Compiling .pio\build\mb_ventil_V1_0_0_dev\FrameworkArduino\libb64\cencode.c.o
Compiling .pio\build\mb_ventil_V1_0_0_dev\FrameworkArduino\main.cpp.o
Compiling .pio\build\mb_ventil_V1_0_0_dev\FrameworkArduino\stdlib_noniso.c.o
Compiling .pio\build\mb_ventil_V1_0_0_dev\FrameworkArduino\wiring_pulse.c.o
Compiling .pio\build\mb_ventil_V1_0_0_dev\FrameworkArduino\wiring_shift.c.o
Archiving .pio\build\mb_ventil_V1_0_0_dev\libFrameworkArduino.a
Linking .pio\build\mb_ventil_V1_0_0_dev\firmware.elf
Retrieving maximum program size .pio\build\mb_ventil_V1_0_0_dev\firmware.elf
Checking size .pio\build\mb_ventil_V1_0_0_dev\firmware.elf
Advanced Memory Usage is available via "PlatformIO Home > Project Inspect"
RAM:   [==        ]  17.0% (used 55588 bytes from 327680 bytes)
Flash: [==        ]  24.5% (used 770009 bytes from 3145728 bytes)
Building .pio\build\mb_ventil_V1_0_0_dev\firmware.bin
esptool.py v4.9.0
Creating esp32s3 image...
Merged 2 ELF sections
Successfully created esp32s3 image.
Configuring upload protocol...
AVAILABLE: cmsis-dap, dfu, esp-bridge, esp-builtin, esp-prog, espota, esptool, iot-bus-jtag, jlink, minimodule, olimex-arm-usb-ocd, olimex-arm-usb-ocd-h, olimex-arm-usb-tiny-h, olimex-jtag-tiny, tumpa
CURRENT: upload_protocol = dfu
Uploading .pio\build\mb_ventil_V1_0_0_dev\firmware.bin
dfu-util 0.11-arduino4

Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
Copyright 2010-2021 Tormod Volden and Stefan Schmidt
This program is Free Software and has ABSOLUTELY NO WARRANTY
Please report bugs to http://sourceforge.net/p/dfu-util/tickets/

Opening DFU capable USB device...
Device ID 2341:0070
Device DFU version 0101
Claiming USB DFU Interface...
Setting Alternate Interface #0 ...
Determining device status...
DFU state(2) = dfuIDLE, status(0) = No error condition is present
DFU mode device DFU version 0101
Device returned transfer size 4096
Copying data from PC to DFU device

Download        [                         ]   0%            0 bytes
Download        [=                        ]   4%        32768 bytes
Download        [==                       ]   8%        65536 bytes
Download        [===                      ]  12%        94208 bytes
Download        [====                     ]  16%       126976 bytes
Download        [=====                    ]  20%       155648 bytes
Download        [=====                    ]  22%       176128 bytes
Download        [======                   ]  24%       188416 bytes
Download        [=======                  ]  28%       217088 bytes
Download        [========                 ]  32%       249856 bytes
Download        [=========                ]  36%       282624 bytes
Download        [=========                ]  37%       286720 bytes
Download        [==========               ]  40%       311296 bytes
Download        [===========              ]  44%       344064 bytes
Download        [============             ]  48%       372736 bytes
Download        [============             ]  51%       401408 bytes
Download        [=============            ]  52%       405504 bytes
Download        [==============           ]  56%       434176 bytes
Download        [===============          ]  60%       466944 bytes
Download        [================         ]  64%       499712 bytes
Download        [================         ]  66%       516096 bytes
Download        [=================        ]  68%       528384 bytes
Download        [==================       ]  72%       561152 bytes
Download        [===================      ]  76%       589824 bytes
Download        [====================     ]  80%       622592 bytes
Download        [====================     ]  81%       630784 bytes
Download        [=====================    ]  84%       651264 bytes
Download        [======================   ]  88%       684032 bytes
Download        [=======================  ]  92%       712704 bytes
Download        [=======================  ]  95%       741376 bytes
Download        [======================== ]  96%       745472 bytes
Download        [=========================] 100%       770368 bytes
Download done.
DFU state(7) = dfuMANIFEST, status(0) = No error condition is present
DFU state(2) = dfuIDLE, status(0) = No error condition is present
Done!
===================================================================== [SUCCESS] Took 29.15 seconds =====================================================================

Environment           Status    Duration
--------------------  --------  ------------
mb_ventil_V1_0_0_dev  SUCCESS   00:00:29.151
===================================================================== 1 succeeded in 00:00:29.151 ===================================================================== 
 *  Terminal will be reused by tasks, press any key to close it. 

ja das hatte ich am anfang dort ja auch gemacht. auf gpio umstellen und driver/gpio.h geladen. ich habe sogar auf espresiff umgestellt und esptool verwendet. wie gesagt digitalpins gehen nur mit der arduino bezeichnung, der rest geht problemlos mit gpio_num bezeichnung.

Der Nano ESP32 hat doch einen ESP32S3 da passen die GPIO zu " normalen " ESP32 nicht, I2C, Serial, CAN usw "ligen" an anderen GPIO Beziehung, Nummer. Und was ublox produziert zusamen mit Arduino must bei denen nachfragen .

Ja und?
Der hat auch einen driver/gpio.h und das PinMapping funktioniert genauso.

Wirklich? Dann warum hat der TO Probleme mit?
Zu dem Du weißt was ublox unter der Haube außer dem S3 hat.

Das weiss ich nicht.
Da wird auch eine 2.0.18 Definition verwendet und ich bin nicht der ESP-Spezi.
Aber vermutlich wird da was umgebogen.

Schau dir mall den LUATOS ESP32C3
an ist nur gering größer als Nano, den gibt es auch ohne CHxx USB -> UART Chip


dafür gibt es auch passenden Mini TFT Display AIR 101-LCD mit Joystick

Warum nutzt du es dann? Benutze doch einfach was anders statt hier rumzutollen.

5 Likes

Hallo,

ich kann daraus nicht nachvollziehen was du mit den Pin Nummern gemacht hast oder was du vermischt hast. Ich habe einen Arduino Nano ESP32 und einen XIAO ESPS32. Je nachdem welches Nummernschema ich in der Arduino IDE einstelle, funktioniert es. Wenn man allerdings auf das Core Package von Espressif wechselt, kann es sein das nur das GPIO Numbering funktioniert. Egal was man macht, man darf nicht anfangen irgendwas zu vermischen.
Wenn du mit eigenen #defines handierst, dann wirst du feststellen wie gefährlich das ist. Jedes define wird mit dem Nächsten überschrieben. Der letzte Eintrag gewinnt.

Das ist richtig was du sagts, der nanoesp ist ein S3 und kann mit GPIO bezichnungen umgehen wie auch die meisten anderen, das Eigendliche Problem sind aber die libs die nicht darauf ausgelegt sind mit gpio zu arbeiten da sie noch die arduino bezeichnungen nutzen. wie ebend wire, serial und co.

deswegen hatte ich ja auch gefragt ob es eine adere möglich kibt um auf arduino kram zu verzichten gerade was digitalwrite oder read angeht.

Daher sieht der Compiler das ja nicht als Fehler ansich an nur du merkst es im Test dann wenn keine signale gelesen oder geschrieben werden weil dort wo sie hinsollen nie etwas ankommt.

zu den versionen 2.0.18 Arduino ESP32 umgebung, massive Probleme mit CAN TWAIN Treiber. Daher völlig daneben. Haben die Entwickler nicht aufgepasst. ESP ESpresif V. 3.3.5. Funktioniert TWAIN. daher der Umstieg auf deren Version. nun hast du die Antwort warum der TO Probleme hat.

pass auf ich gebe dir ein beispiel warum weshalb.

// ============================================================================
// Display Nextion
// ============================================================================
#define next_tx        GPIO_NUM_38       // D11
#define next_rx        GPIO_NUM_47       // D12

// ============================================================================
// I2C-Bus
// ============================================================================
#define i2c_sda        GPIO_NUM_12      // Arduino D22 = GPIO 12
#define i2c_scl        GPIO_NUM_11      // Arduino D21 = GPIO 11
#define I2C_FREQ_HZ   400000L
#define PCF_INT        D5        // D5 - PCF8574 Interrupt

// ============================================================================
// Ventil Inputs
// ============================================================================
#define V_ERR         D2        // D2  - Ventil Error
#define V_FRG         D3        // D3  - Ventil Freigabe
#define P_ERR         D8        // D8  - Pumpen Motorschutz

// ============================================================================
// Ventil Outputs
// ============================================================================
#define V_FI          A1       // D18 - Filtern
#define V_BW          D7       // D7  - Rückspülen (Backwash)
#define V_RI          A7       // D24 - Klarspülen (Rinse)
#define V_CI          A3       // D20 - Zirkulation
#define V_DR          D6       // D6  - Entleeren (Drain)
#define V_CL          A6       // D23 - Geschlossen (Close)
#define V_WI          A2       // D19 - Winter
#define V_RESET       A0       // D17 - Reset

// ============================================================================
// System Outputs
// ============================================================================
#define ZEITUHR       D4        // D4 - Pumpen Timer
#define WIFI_ON       LED_BLUE  // D16 - Onboard LED

Nutze ich nur die Bezeichnung GPIO_NUM_xx, dann werden die digitalen signale nicht gelesen oder geschrieben an der richtigen stelle. weil es in pin_arduino.h nicht vorgsehen ist. die beziehen sich auf die Boardbezeichnung (PIN). Aber das Mapping im S3 kommt nicht zurecht damit weil es nicht weiß das GPIO12 A4 oder A5 ist. Spreche ich aber den I2C mit A4 und A5 an bekommst du keine geräte angezeigt, aber pin_arduino.h gibt das so vor. Spreche ich aber I2C mit GPIO_NUM_11 und 12 an, tata I2C lebt. genauso ist es beim Can und beim Dislay rx/tx. versuche ich aber ein Digitalpin mit GPIO_NUM anzusprechen passiert da nichts. TOT. Spreche ich ihn aber mit D5 oder D10 an dann tata es passiert etwas an der stelle. Das ist das problem was ich habe, dieser Mischmodus. entweder einheitlich GPIO_NUM oder D2 …. A0-A7. aber nicht das durcheinander

danke für das beispiel, aber eher ungeeignet für mich. der nanoesp ist schon ein sehr gutes Teil zumal er genug speicher hat mit seinen 8mb psram und 16 mb sram. der formfaktor war auch entscheidend bei der auswahl, daher werde ich die trägerplatine wo er drauf sitzt nicht ändern wollen

Dir wurde doch schon ganz am gesagt, das du #define nicht mehr nutzen sollt. Und auch warum.

Klar geht so was: https://stackoverflow.com/questions/52348930/esp32-direct-port-manipulation