Arduino Nano ESP32, Zugriff external Flash

OP #7785237
Lesenswert?

Habe von TME einen "Arduino Nano ESP32" https://docs.arduino.cc/hardware/nano-esp32/ gekauft - und noch weitere bestellt, weil das eigentlich auf Anhieb gut funktioniert hat. Nach ein bisschen rumspielen tauchen doch noch Fragen auf, die zwar Arduino-spezifisch sind, aber dort nicht beantwortet werden:

1
temperatur = analogRead(17);

schonmal nicht funktioniert (kommt immer 0 raus).

Gruss Chregu

Gast #7785279
Lesenswert?

Vermutung wo die 17 her kommt: Der analoge Eingang vom ESP8266 heißt bei Arduino A0, und A0 hat den numerischen Wert 17.

Verwechsle nicht Anleitungen vom ESP8266 mit den ESP32! Die ESP32 werden anders programmiert, als der ESP8266.

Die Pinbelegung von deinem Board ist dort https://docs.arduino.cc/resources/pinouts/ABX00083-full-pinout.pdf Möglicherweise hat irgendein Pin zufällig den numerischen Wert 17, aber benutzen sollst du nur die Bezeichnungen A0 bis A7 und D0 bis D24.

Der Flash Speicher enthält die Closed-Source Firmware vom Hersteller, sowie den Python Interpreter oder das selbst erstellte Programm (Sketch) auf Basis des Arduino Core oder Espressif IDF. Ein großer Teil davon kann für weitere Daten verwendet werden (z.B. ein Dateisystem mit Python Scripten).

Kann ich darauf meine Logdaten speichern und abrufen

Ja aber nicht

über https://github.com/PaulStoffregen/SerialFlash

denn diese Bibliothekist dazu gedacht, einen weiteren SPI Flash Chip anzusteuern, den du hinzufügen würdest. Für den Chip, der sich auf dem Board befindet, musst du die Funktionen des Arduino Frameworks verwenden. Siehe https://docs.arduino.cc/tutorials/nano-esp32/spiff/

OP #7785344
Lesenswert?

Sherlock 🕵🏽‍♂️ schrieb:

meine Logdaten speichern und abrufen

Ja aber nicht

über https://github.com/PaulStoffregen/SerialFlash

denn diese Bibliothekist dazu gedacht, einen weiteren SPI Flash Chip anzusteuern, den du hinzufügen würdest. Für den Chip, der sich auf dem Board befindet, musst du die Funktionen des Arduino Frameworks verwenden. Siehe https://docs.arduino.cc/tutorials/nano-esp32/spiff/

Danke für die Info! Ich werde dann wohl einen weiteren SPI-Flash nehmen!

John P. schrieb:

IO17 ist ja auch kein Analog Eingang

Dieter S. schrieb:

Sieh dir einfach das Pinout an, da siehst du welche Pins als analoge genutzt werden können.

Ja eben, und in der API steht:

1
analogRead
2
This function is used to get the ADC raw value for a given pin/ADC channel.
3
uint16_t analogRead(uint8_t pin);
4
pin GPIO pin to read analog value

So habe ich physische Pins verstanden!

Gruss Chregu

#7785621
Lesenswert?

Christian M. schrieb:

Danke für die Info! Ich werde dann wohl einen weiteren SPI-Flash nehmen!

Musst du nicht. du kannst den internen Flash vom ESP als EEPROM (emulation), FFAT oder SPIFF Speicher verwenden. Je nach dem was besser für dich passt.

Christian M. schrieb:

Ja eben, und in der API steht: analogRead This function is used to get the ADC raw value for a given pin/ADC channel. uint16_t analogRead(uint8_t pin); pin GPIO pin to read analog value

So habe ich physische Pins verstanden!

Es kommt auch immer auf den verwendeten Core an. Espressif nimmt die PIN-Zahl die auch in der Doku steht. Arduino verwendet gerne die Zahlen die auf der LP aufgedruckt sind (A0 bis A7)

also die Analogen sind beim ESP32: ADC1 -> 36,39,34,35,32,33 ADC2 -> 25,26,27,14,12,13,15

Wobei ADC2 wegen diverser Kleinigkeiten mit Vorsicht zu genießen ist.

OP #7785677
Lesenswert?

Erschwerend kommt irgendwie dazu, dass im Arduino-Cheat-Sheet: https://docs.arduino.cc/tutorials/nano-esp32/cheat-sheet/ ein Link auf eine andere API ist, die viel umfangreicher, aber eben nicht für Arduino ist: https://docs.espressif.com/projects/esp-idf/en/latest/esp32s3/api-reference/index.html# Dort ist auch ein interner Temperatursensor erwähnt, von dem ich immer noch nicht weiss, ob der überhaupt existiert, und ich darauf überhaupt Zugriff habe. Aus der "richtigen" API jedenfalls nicht:

Christian M. schrieb:

https://docs.espressif.com/projects/arduino-esp32/en/latest/libraries.html#apis

Gruss Chregu

Gast #7785683
Lesenswert?

Christian M. schrieb:

eine andere API ist, die viel umfangreicher, aber eben nicht für Arduino ist

Der Arduino Core ist ein Aufsatz auf das Espressif IDF. Die steht also beide zur Verfügung, allerdings nicht uneingeschränkt (manche beißt sich).

Der Temperatursensor im Chip wird intern gebraucht, um thermische Effekte auszugleichen. Aus Sicht der Anwendung kann man damit nur sehr wenig sinnvolles anfangen. Die Raumtemperatur misst man damit jedenfalls nicht.

#7785710
Lesenswert?

John P. schrieb:

Es kommt auch immer auf den verwendeten Core an.

Sherlock 🕵🏽‍♂️ schrieb:

Der Arduino Core ist ein Aufsatz auf das Espressif IDF.

"Der Arduino Core" ist es eben nicht.

Es gibt 2 Cores.

Einen von Espressif -> https://github.com/espressif/arduino-esp32 Einen von Arduino -> der baut auf den von Espressif auf. Ist aber in der Version immer älter und hat halt ein paar mehr einschränkungen.

OP #7785711
Lesenswert?

Naja, ich wollte halt irgendeinen Analogwert zum testen mit der Cloud. Aber da ich nun komischerweise ohne Erwähnung im "Free Plan" plötzlich auf 5 Gadgets (Variablen) eingeschränkt bin, hilft mir das ganze Cloud-Geraffel nicht mehr viel. Wollte halt die Heizungssteuerung erweitern, dass ich auch von extern darauf zugreifen kann, da externer Zugriff wegen NAT nicht erreichbar ist.

Gruss Chregu

Gast #7785765
Lesenswert?

John P. schrieb:

Es gibt 2 Cores. Einen von Espressif Einen von Arduino

Habe ich im Laufe der Jahre ganz vergessen, danke für den Hinweis.

Ziemlich fies ist dabei, dass Arduino die 2,5 Jahre alte Version bereit stellt, aber auf aktuelle Dokumentation von Espressif verweist. Da passt natürlich einiges nicht mehr zusammen. So ein Murks!

Christian M. schrieb:

ollte halt die Heizungssteuerung erweitern, dass ich auch von extern darauf zugreifen kann

Lass das lieber sein. Etwas sicher ins Internet zu hängen und es sicher zu halten ist eine Aufgabe für Spezialisten.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren