Forum: Mikrocontroller und Digitale Elektronik Arduino Nano ESP32, Zugriff external Flash


von Christian M. (christian_m280)


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:

- die 16MB Flash extern, über SPI angebunden, werden die für die 
Firmware verwendet? Oder ist frei verfügbar, bzw. was von der Firmware 
nicht besetzt ist? Kann ich darauf meine Logdaten speichern und abrufen 
über https://github.com/PaulStoffregen/SerialFlash

- kann ich die 
https://docs.espressif.com/projects/arduino-esp32/en/latest/libraries.html#apis 
uneingeschränkt verwenden? Weil bei mir der Analogeingang mit
1
temperatur = analogRead(17);
 schonmal nicht funktioniert (kommt immer 0 raus).

Gruss Chregu

von John P. (brushlesspower)


Lesenswert?

Christian M. schrieb:
> - kann ich die
> https://docs.espressif.com/projects/arduino-esp32/en/latest/libraries.html#apis
> uneingeschränkt verwenden? Weil bei mir der Analogeingang mittemperatur
> = analogRead(17);
>  schonmal nicht funktioniert (kommt immer 0 raus).

IO17 ist ja auch kein Analog Eingang

von Dieter S. (hotsystems)


Lesenswert?

Christian M. schrieb:
> temperatur = analogRead(17);
>  schonmal nicht funktioniert (kommt immer 0 raus).

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

von Sherlock 🕵🏽‍♂️ (rubbel-die-katz)


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/

: Bearbeitet durch User
von Christian M. (christian_m280)


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

von Veit D. (devil-elec)


Lesenswert?

Hallo,

> Ich werde dann wohl einen weiteren SPI-Flash nehmen!

Brauchst du nicht.

ESP32 Save Data Permanently using Preferences Library.

: Bearbeitet durch User
von John P. (brushlesspower)


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.

: Bearbeitet durch User
von Christian M. (christian_m280)


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

von Sherlock 🕵🏽‍♂️ (rubbel-die-katz)


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.

: Bearbeitet durch User
von John P. (brushlesspower)


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.

von Christian M. (christian_m280)


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

von Sherlock 🕵🏽‍♂️ (rubbel-die-katz)


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.

: Bearbeitet durch User
von Christian M. (christian_m280)


Lesenswert?

Sherlock 🕵🏽‍♂️ schrieb:
> Lass das lieber sein. Etwas sicher ins Internet zu hängen und es sicher
> zu halten ist eine Aufgabe für Spezialisten.

Ja hast recht! Damit kenne ich mich wirklich zu wenig aus! Ich dachte, 
mit der Arduino-Cloud und "Secret Key" sei das sicher...

Gruss Chregu

von Sherlock 🕵🏽‍♂️ (rubbel-die-katz)


Lesenswert?

Christian M. schrieb:
> Ich dachte, mit der Arduino-Cloud und "Secret Key" sei das sicher...

Man bekommt nichts geschenkt. Schon gar nicht verantwortungsvollen 
Umgang mut Daten und Verbindungen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.