Forum: Mikrocontroller und Digitale Elektronik Super Mini ESP32-C3 Board


von Hans L. (holzwurm56)


Lesenswert?

Hallo,
ich habe auf Aliexpress ein kleines Board gefunden und will da ein 
bißchen
experimentieren. Ich habe mal präventiv ein paar bestellt, die haben ja
bis zu acht Wochen Lieferzeit. In www gibt es unterschiedliche 
Informationen
über die Funktionen der Pins. Weiß jemand welche Pins man als Input und/
oder Outputs und welche Pins Interrupts verarbeiten können?
https://de.aliexpress.com/item/1005006054605298.html?spm=a2g0o.order_list.order_list_main.35.3b085c5fl1BHSj&gatewayAdapt=glo2deu
Vielen Dank für jede Antwort
Hans

von Εrnst B. (ernst)


Angehängte Dateien:

Lesenswert?

Schaltplan im Anhang, Datenblatt findest du hier:
https://docs.espressif.com/projects/esp-idf/en/latest/esp32c3/hw-reference/index.html

Beachten: Da drinnen werkelt ein Risc-V Core, Toolchain ist also eine 
andere als bei bisherigen ESP32.

Sind aber nette Teile, und dass sie direkt USB unterstützen, und das 
Board deshalb den CH340 o.Ä. einsparen kann ist beim Stromsparen auch 
von Vorteil.


Ach ja, die eigentliche Frage: Jeder GPIO-Pin ist interruptfähig.

: Bearbeitet durch User
von Veit D. (devil-elec)


Lesenswert?

Hallo,

da kopiert wieder jemand vom anderen.
SeeedStudio bietet schon länger diesen Formfaktor.
https://www.seeedstudio.com/Seeed-XIAO-ESP32C3-p-5431.html
https://www.seeedstudio.com/MCU-c-1946.html?

von Stephan S. (uxdx)


Lesenswert?

Die lesen sich recht interessant, es gibt sogar schon MicroPython dafür.

von Stephan S. (uxdx)


Lesenswert?

Ich habe mal ein Mini-Benchmark ESP32-WROOM gegen ESP32-C3 laufen 
lassen:

Micropython 1.21.0 auf beiden Boards installiert und per REPL Python 
laufen lassen:
1
for i in range(10000000):   # 10^7 Durchläufe
2
    a=3**3
ESP32-WROOM brauchte 57 Sekunden, ESP32-C3 47 Sekunden, (evtl ist das 
Ergebnis nicht repräsentativ)

von Veit D. (devil-elec)


Lesenswert?

Hallo,

dein ESP32C3 Board sollte gleich dem von XIAO sein. Deswegen frage ich 
einmal ob bei dir I2C in Hardware funktioniert oder nicht? "Wir" haben 
im Arduino Forum jemanden der bekommt sein I2C Display mit SSD1306 und 
u2g8 Lib per I2C Hardware nicht zum laufen. Nur per Software I2C. Mit 
Hardware I2C scheint es komplett einzufrieren. laut Aussage. Er sieht an 
den I2C Pins auch keine Signale.
Die Frage wäre funktioniert bei dir irgendwas mit Wire.h Hardware I2C 
(RTC, Sensor, Display, etc.) und Ausgaben auf der Seriellen? Wenn ja 
könnte man den ESP32C3 als Problem ausschließen.

von Stephan S. (uxdx)


Lesenswert?

Mein Board habe ich bei Ali gekauft 
https://www.aliexpress.com/item/1005005955099518.html
Ich arbeite nicht mit Arduino-... sondern mit Micropython.
Tatsächlich kann man den Hardware-I2C nicht nutzen, SoftI2C geht 
einwandfrei.
1
MicroPython v1.21.0 on 2023-10-06; ESP32C3 module with ESP32C3
2
Type "help()" for more information.
3
>>> 
4
>>> from machine import Pin, I2C
5
>>> i2c = I2C(scl=Pin(4), sda=Pin(3), freq=10000)
6
Warning: I2C(-1, ...) is deprecated, use SoftI2C(...) instead
7
>>> from machine import SoftI2C
8
>>> i2c = SoftI2C(scl=Pin(4), sda=Pin(3), freq=10000)
9
>>> i2c.scan()
10
[60]
11
>>>
Auch die GPIOs funktionieren.

: Bearbeitet durch User
von Veit D. (devil-elec)


Lesenswert?

Hallo,

Danke für den Test bzw. Antwort.

von Philipp K. (philipp_k59)


Lesenswert?

Der esp32c3 ist kein herkömmlicher Esp32 (240mhz dual Core), sondern ein 
Singlecore risc-V, Soweit ich ich mich erinnere etwas mehr als die 
hälfte Taktrate.

Das mit dem ssd1306 gab es auch schon auf Facebook, der erste mit Ahnung 
der das ausprobiert hatte, hat es dann doch schnell zum Laufen bekommen.

Das Problem ist das man keinen echten Serial Port als Debug Port hat, da 
kommen viele dann nicht weiter.

Der C3 hat einfach nur kleine Unterschiede im i2C.

von Stephan S. (uxdx)


Lesenswert?

Stephan S. schrieb:
>>>> i2c = SoftI2C(scl=Pin(4), sda=Pin(3), freq=10000)

P.S. Es funktioniert auch mit freq=100000 und 400000

von Veit D. (devil-elec)


Lesenswert?

Hallo,

ich liebe solche Antworten.

#Philipp K. schrieb:
> Der esp32c3 ist kein herkömmlicher Esp32 (240mhz dual Core), sondern ein
> Singlecore risc-V, Soweit ich ich mich erinnere etwas mehr als die
> hälfte Taktrate.
Das wissen wir schon.

> Das mit dem ssd1306 gab es auch schon auf Facebook, der erste mit Ahnung
> der das ausprobiert hatte, hat es dann doch schnell zum Laufen bekommen.
Und wie hat er es zum Laufen gebracht? Doch nicht etwa mit Software I2C 
...

> Der C3 hat einfach nur kleine Unterschiede im i2C.
Das wären genau? Das der RISC-V Kern alles intern irgendwie emuliert?

von Philipp K. (philipp_k59)


Lesenswert?

Veit D. schrieb:
> Das wären genau? Das der RISC-V Kern alles intern irgendwie emuliert

Also das weiß ich jetzt nicht, er hat aber ein i2c clock und Data Modul 
die eigenständig arbeiten.

Wieso sollte das simuliert sein, und wenn ja wo ist dann das Problem?

von Veit D. (devil-elec)


Lesenswert?

Hallo,

also mal Butter bei de Fische. Was weißt du wirklich? Hören sagen hilft 
hier nicht weiter. Das Datenblatt zum ESP32C3 hatte ich schon gelesen. 
Hilft mir bzw. dem anderen eigentlichen User mit XIAO ESP32C3 nicht 
weiter.
Wo das Problem ist? I2C in Hardware funktioniert nicht bzw. blockiert 
andere Dinge wie die Serielle. Weil Software I2C und Serielle 
funktionieren. Das ESP Core Package für die Arduino IDE stammt von 
Espressif selbst. Jetzt kann darin ein Fehler sein oder der RISC-V Kern 
hat ein Problem. Letzteres glaube ich jedoch weniger. Ich hatte gehofft 
jemand sagt das Problem liegt genau da,  Lösung x führt zum Erfolg oder 
es gibt dafür keine Lösung. Alles ist möglich. Ich bin nur neugierig, 
ich selbst habe das Teil nicht.

von Peter A. (Firma: Privat) (retep263)


Lesenswert?

also es gibt eine zusätzlich
Release binaries for Tasmota firmware 13.2.0 on ESP32
für den esp32c3 risc-v , dann aber läuft so manches andere nichtmehr.
und der aus FB behält seine info wie er das zum laufen bekommen hat als 
GEHEIM.
das hat er extra so beschrieben !!!
der ist aber auch einer der professionell programiert.

auch beschreibt er die probleme mit dem seriellen monitor.
allerdings auch ohne eine lösung der probleme.

dann gibt es die brzo_i2c-master.zip , ist aber auch keine sichere 
sache.
denn die ist eigentlich für de esp8266 geschrieben , und in wiefern die 
sicher auf dem esp32c3 risc v läuft steht in den sternen.

für privat als hobby ist das bestimmt so okay , wenn das ganze 
allerdings in eine fixe verkaufbare lösung werden soll , vergisses.

manchmal läuft das ganze problemlos an , manchmal halt nicht
und jedes mal zwischen boot und reset herum zu spielen ???

komisch ist nur  !!! das keiner der Verkaufsfirmen ein beispiel  für das 
Problem veröffentlicht.
keiner bietet ein beispiel esp32c3 risc-v und ssd1306 ohne extra 
hardware an

beschriebe probleme mit dem prozessor und der i2c gibt es zu haufe  in 
den foren , ohne echte lösung

: Bearbeitet durch User
von Peter A. (Firma: Privat) (retep263)


Lesenswert?

das problem mit dem esp32c3 risc v prozessor ist das er keine der 
beschrieben ports , spi , i2c , tx/rx seriel HW ,in wirklichkeit hat !!!
alles nur per Software in einem task mit den gpio's simuliert.
genau deshalb gibt es diese probleme , sowohl mit der i2c als auch mit 
der spi und dem tx/rx als externe rs232.
aber auch die serielle über den usb , ist nur eine JTAG , somit auch nur 
software. und da gibt einer der china ingenieuren zu erkennen das nicht 
sicher ist wiegut das programiert ist.

von Philipp K. (philipp_k59)


Lesenswert?

Veit D. schrieb:
> also mal Butter bei de Fische.

Ich befürchte das es jemand der Ahnung hat mit den ersten einschlägigen 
Google Ergebnissen oder Beachtung der vorhandenen issues der arduino-esp 
Repos in 20 Minuten hinbekommt.

Nur tappt man da ohne ein paar Tests leider im Dunkeln wenn man helfen 
möchte und das gerät nicht hat. I2c ist halt kein Hexenwerk.

Es kann halt soviel falsch laufen.

Peter A. schrieb:
> und der aus FB behält seine info wie er das zum laufen bekommen hat als
> GEHEIM.

Das war ironisch weil es wohl zu einfach ist, so habe ich das 
verstanden.

von Dirk S. (dirkst)


Lesenswert?

Gruss

 Ich frag mal.
 Und wie sieht es beim ESP32C3
 für eine praktische Anwendung
 mit ADC, BLE und Smartphone aus?
 Informell bin ich bei den ESPs
 und
 ADC schon distanziert.
  Geht aber auch extern.
 Das microPython steht bei mir im
 Interesse,
 ( C(++) kann es durchaus auch
  sein.)

Dirk St

von Peter A. (Firma: Privat) (retep263)


Lesenswert?

anbei der FB Beitrag zu dem Display problem

https://www.facebook.com/groups/808892179257035
XIAO ESP32-C3 I2C Oled

: Bearbeitet durch User
von Veit D. (devil-elec)


Lesenswert?

Hallo,

ich vermute der geheime Geheimprogrammierer hat das mit der Espressif 
IDE programmiert und mit der API dafür.
https://docs.espressif.com/projects/esp-idf/en/latest/esp32c3/api-reference/peripherals/i2c.html
https://docs.espressif.com/projects/esp-idf/en/v4.3/esp32c3/api-reference/peripherals/i2c.html
Gut zu wissen das es möglich ist wenn man weiß wie.

von Veit D. (devil-elec)


Lesenswert?

Dirk S. schrieb:
> Gruss
>
>  Ich frag mal. Und wie sieht es beim ESP32C3 ...

Ich würde ja wenn dann den ESP32S3 nehmen. Der hat den Xtensa LX7 "ESP 
Standard-Core".

von Stephan S. (uxdx)


Lesenswert?


von Philipp K. (philipp_k59)


Lesenswert?

Stephan S. schrieb:
> This document is not updated for ESP32-C3 yet.

doch isses..bzw. gibts auch schon im Repo.. kommt man irgendwo ganz 
unten drauf.

habe ich zwar mal drübergeschaut, konnte aber keine unterschiede 
finden.. da ich den nicht habe, auch nicht speziell gesucht....

: Bearbeitet durch User
von Philipp K. (philipp_k59)


Lesenswert?

Da ich den Esp32-C3 sowieso mal ausprobieren wollte probierte ich das 
mit dem Display am Xiao-ESP32-C3.

Das ganze war in 5 Minuten erledigt..

Ich brauchte das Board nur auspacken und 4 Jumper Kabel zum SSD1306 
Display verstrippen.

Dazu U8g2 HW-I2C Democode den ich mal etwas abgeändert habe genutzt (Ich 
vermute mal das klappt auch ohne abändern.)

Es funktionierte, welch ein Wunder!

Was etwas Übung forderte war über die SMD-Taster zwischen den Pin 
Headern in den Flashmode zu kommen.. ich musste doppelt resetten, bzw. 
das Board stromlos machen damit das Programm startete, trotz des 
SW-Reset am Ende vom Flashtool.

von Dieter S. (hotsystems)


Lesenswert?

Philipp K. schrieb:
> Was etwas Übung forderte war über die SMD-Taster zwischen den Pin
> Headern in den Flashmode zu kommen.. ich musste doppelt resetten, bzw.
> das Board stromlos machen damit das Programm startete, trotz des
> SW-Reset am Ende vom Flashtool.

Entspricht eigentlich allen "nackten" ESP's.

Reset drücken und festhalten.
Boot drücken und festhalten.
Reset loslassen.
Boot loslassen.
Flashen....danach Reset drücken und er läuft. ;)

von Dieter S. (hotsystems)


Lesenswert?

Veit D. schrieb:
> "Wir" haben
> im Arduino Forum jemanden der bekommt sein I2C Display mit SSD1306 und
> u2g8 Lib per I2C Hardware nicht zum laufen. Nur per Software I2C. Mit
> Hardware I2C scheint es komplett einzufrieren. laut Aussage.

Mittlerweile gibt es da aber eine Lösung.
Also u2g8 funktioniert auch am ESP32-C3 mit I2C Hardware.

: Bearbeitet durch User
von Veit D. (devil-elec)


Lesenswert?

Dieter S. schrieb:
> Veit D. schrieb:
>> "Wir" haben
>> im Arduino Forum jemanden der bekommt sein I2C Display mit SSD1306 und
>> u2g8 Lib per I2C Hardware nicht zum laufen. Nur per Software I2C. Mit
>> Hardware I2C scheint es komplett einzufrieren. laut Aussage.
>
> Mittlerweile gibt es da aber eine Lösung.
> Also u2g8 funktioniert auch am ESP32-C3 mit I2C Hardware.

Habe ich gelesen.  :-)  Sehr schön.

von Steve van de Grens (roehrmond)


Lesenswert?

Dieter S. schrieb:
> Reset drücken und festhalten.
> Boot drücken und festhalten.
> Reset loslassen.
> Boot loslassen.
> Flashen....danach Reset drücken und er läuft

Das ist sooooo kompliziert, gibt es dafür keine App?

von Dieter S. (hotsystems)


Lesenswert?

Steve van de Grens schrieb:
> Das ist sooooo kompliziert, gibt es dafür keine App?

Nö, aber man kann sich dafür zertifizieren lassen.

von Jack D. (jack_d908)


Lesenswert?

Die Probleme mit der Hardware-I2C lassen sich leicht lösen, wenn man 
sich das ESP32C3-Datenblatt ansieht. Darin heißt es, dass es sich bei 
den I2C-Leitungen um offene Drain-Pins handelt. Diese Pins müssen an VCC 
hochgezogen werden, damit sie ordnungsgemäß funktionieren.
Beim XIAO ESP-C3 sind keine Pullups mit den Standard-I2C-Pins verbunden 
und diese müssen daher vom Benutzer hinzugefügt werden. Laut Espressif 
sollen die Werte bei einer Geschwindigkeit von 400kHz bei etwa 2K und 
bei einer Geschwindigkeit von 100kHz bei 5K liegen.
Der ESP32-C3-(super)mini verwendet Pull-up-Widerstände mit einem Wert 
von 10K, die auf den Standard-I2C-Leitungen montiert sind. Hardware-I2C 
wird hier wahrscheinlich funktionieren, aber nur für niedrige 
Geschwindigkeiten (<50 kHz) und kurze Kabel.
Es ist möglich, die I2C-Pins auf andere Pins zu verlegen, aber man 
sollte dann die benötigten Pull-up-Widerstände hinzufügen.

von Rainer W. (rawi)


Lesenswert?

Jack D. schrieb:
> Darin heißt es, dass es sich bei
> den I2C-Leitungen um offene Drain-Pins handelt.

Das ist bei I2C so und der ESP sollte da keine Ausnahme machen.

> Diese Pins müssen an VCC hochgezogen werden, damit sie
> ordnungsgemäß funktionieren.

Das steht schon so in der I2C-Spezifikation (Kap. 3.1.1 SDA and SCL 
signals). Der ESP32C3 kann da nichts für. Das ist seit 42 Jahren so.
https://www.nxp.com/docs/en/user-guide/UM10204.pdf

: Bearbeitet durch User
von Stephan S. (uxdx)


Lesenswert?

Bei einem ESP32-C3 von Ali sind an GPIO8 und GPIO9 jeweils 10k nach +3.3 
verbaut

von Rainer W. (rawi)


Lesenswert?

Stephan S. schrieb:
> Bei einem ESP32-C3 von Ali sind an GPIO8 und GPIO9 jeweils 10k nach +3.3
> verbaut

Halt ein fauler Kompromiss, der für hohe Geschwindigkeit und lange 
Leitungen nichts taugt, aber bei anderweitiger Verwendung der Pins meist 
nicht stört. 10kΩ bei 3.3V ist für I2C schon heftig.

: Bearbeitet durch User
von Εrnst B. (ernst)


Lesenswert?

Die 10k sind ein Kompromiss... diese "Arduino"-Platinchen werden gerne 
mit ähnlichen "Arduino"-I²C-Boards verknüpft, und dort sind auch jeweils 
10k Pull-Up drauf.
d.H. alles fein, zusammen sind das die geforderten 5k bei 100kHz.
Wenn du zuviele von diesen Breakout-Boards parallel schaltest geht's 
halt nicht mehr.

Und wenn du eigene Hardware/Platinchen über I²C anflanschen willst, 
musst du dich selber um die Pull-Ups kümmern.

von Rainer W. (rawi)


Lesenswert?

Εrnst B. schrieb:
> ... d.H. alles fein, zusammen sind das die geforderten 5k bei 100kHz.
> Wenn du zuviele von diesen Breakout-Boards parallel schaltest geht's
> halt nicht mehr.

Wo hast du diese komische Forderung nach 5kΩ her. Damit bist du bei 3,3V 
mehr als einen Faktor 4 über dem laut Spezifikation zulässigen minimalen 
Wert und weit unter dem maximalen, der dann von deinem Aufbau abhängt.

In der Abbildung in der I2C Spezifikation zum maximalen Pull-Up siehst 
du, dass der Widerstand von der kapazitiven Last abhängt und weit höher 
sein kann (I2C-Specifikationen Rev7 (*) in Figure 41. Rp(max) as a 
function of bus capacitance im Kap 7.1 Pull-up resistor sizing auf S.50)

Um bei 3.3V die zulässigen 3mA zu überschreiten, müsstest du schon 10 
oder mehr Busteilnehmer mit 10kΩ auf den Bus hängen. Das dürfte in der 
Breakout-Boards-Gemeinde dann doch schon eher selten sein.
(I2C-Specifikationen (*) Fig. 42 im Kap 7.1 Pull-up resistor sizing, 
S.50)

Die 3mA sind der Mindestwert, den ein Busteilnehmer im Fast- oder 
Standard-Mode schaffen können muss, d.h. selbst wenn der Strom höher 
ist, ist das noch lange keine Garantie, dass nichts mehr geht.

Diejenigen, die mehr Teilnehmer auf den Bus hängen wollen, müssen dann 
zum Lötkolben greifen und ein paar Pull-Ups entfernen.

*) https://www.nxp.com/docs/en/user-guide/UM10204.pdf

: Bearbeitet durch User
von Εrnst B. (ernst)


Lesenswert?

Rainer W. schrieb:
> Wo hast du diese komische Forderung nach 5kΩ her.

Hierher, ohne die Quellen weiter zu kontrollieren:

Jack D. schrieb:
> Laut Espressif
> sollen die Werte bei einer Geschwindigkeit von 400kHz bei etwa 2K und
> bei einer Geschwindigkeit von 100kHz bei 5K liegen.

von Ran (ran_12)


Angehängte Dateien:

Lesenswert?

Meine Lieben,
ich gebe gerne meinen Senf dazu, weil ich auch diese hübschen
"ESP32C3 Super Mini" Boards bei Aliexpress gekauft habe:
Die wichtigste Info und die häufigste Fehlerquelle ist m.E.,
dass das Pinout-Diagramm praktisch überall falsch ist (es sind sogar
mehrere verschiedene im Umlauf), auch auf den Seiten der
Aliexpress-Händler.
Das "Drüberretten" mit Soft-I2C ist völlig unnötig:

Nehmt das Pinout aus dem Schaltplan (rechts oben).
Das stimmt.

LG Ran

PS:

von Mik L. (mik_l)


Lesenswert?

... bei mir hat sich folgendes Pinout als stimmig erwiesen:

https://microsoft.github.io/devicescript/devices/esp32/esp32c3-supermini

von Das R. (Firma: Verliererland) (verlierer)


Angehängte Dateien:

Lesenswert?

Wenn jemand schon ein Kicad7 schematic/footprint/3dModel gebastelt hat, 
würde ich mich über Link freuen.

Möchte damit einen kleinen I2C Slave basteln und bei JLPCB mit ordern.
Mit dual gate drivern (ucc37324: 
https://de.aliexpress.com/item/1005006041939790.html) ein paar Mosfets 
schalten..

Mein master board hat den S2Mini 
(https://github.com/RoboDurden/Esp32_20A_80V_dcdc) , da wäre Bluetooth5 
vom C3Mini gar nicht verkehrt.

Anbei das Produktphoto von 1,91€ AliExpress Verkäufer. Welche zwei I2C 
pins soll ich verwenden ?

Mit 2000Hz, 50% duty pwm laden soll man die Zyklen von LiIon rund 
verdoppeln können: 
https://www.photovoltaikforum.com/thread/225892-liion-zyklenzahl-durch-gepulstes-laden-verdoppeln-2-khz-50-duty/

Ist für eBike Besitzer interessant, da wird kein LiFePo4 verbaut..

von Jürgen (jliegner)


Lesenswert?

Gibts den für die Risc Variante die ganzen libs im Quellcode oder ist es 
da genauso wie bei den restlichen ESPxxx Chips? Ich frag mich nur immer 
wie da jemand garantiert, dass sich nicht in vielen Millionen Chips 
Hintertüren befinden die nur auf den Tag X warten. Bei jedem richtigen 
Computer schreit alles auf wegen jeder noch so kleinen Sicherheitslücke 
aber bei den Controllern hat keiner ein Auge drauf und alle linken die 
Firmware-Libs aus dem Expressiv SDK ohne irgendwas zu hinterfragen oder 
sich darüber Gedanken zu machen und hängen mit den Teilen in der Regel 
direkt am Internet.

von Steve van de Grens (roehrmond)


Lesenswert?

Jürgen L. schrieb:
> aber bei den Controllern hat keiner ein Auge drauf

Doch durchaus. Sonst wären die ESP Chips in kommerziellen Geräten (die 
nicht aus China kommen) viel häufiger anzutreffen, als es derzeit der 
Fall ist.

von Das R. (Firma: Verliererland) (verlierer)


Angehängte Dateien:

Lesenswert?

Okay dann hab ich mal selber symbol/footprint/3dModel gebastelt, siehe 
Anhang.
Bin noch totaler Anfänger mit KiCad, in der Zip sollten aber irgendwie 
alle daten drinne sein.

Wäre halt für mich wichtig zu wissen, wenn die i2c pins nicht frei 
wählbar wären.
Ebenso wenn nicht alle gpio pwm unterstützen. Wobei ich 2 kHz 50% duty 
zur not auch per interrupt schalten kann.

von Rainer W. (rawi)


Lesenswert?

Das R. schrieb:
> Wäre halt für mich wichtig zu wissen, wenn die i2c pins nicht frei
> wählbar wären.

Schick doch eine Adresse über den I2C raus. Dann siehst du, welche Pins 
wackeln.

von Das R. (Firma: Verliererland) (verlierer)


Lesenswert?

Ich möchte mein pcb aber schon bei JLPCB bestellen, bevor ich so einen 
C3SuperMini testen kann.

von Alexander (alecxs)


Lesenswert?

JLPCB ist anscheinend zu preisgünstig geworden. Früher ging das 
andersrum.

von Das R. (Firma: Verliererland) (verlierer)


Angehängte Dateien:

Lesenswert?

Ja, fünfmal 10x10cm mit standard versand (9-12 Tage) für unter 4€.
Mein Haupt-Board v2 möchte ich bestellen, also pack ich das i2c slave 
board kostenlos dazu.
Drum wüsste ich immer noch gern, wo die i2c pins bei den aktuellen 
AliExpress 1,9€ Teilen sind.

von Veit D. (devil-elec)


Lesenswert?

Das R. schrieb:
> Drum wüsste ich immer noch gern, wo die i2c pins bei den aktuellen
> AliExpress 1,9€ Teilen sind.

Hallo,

ist alles aus dem Board Schaltplan ersichtlich.

von Obelix X. (obelix)


Lesenswert?

Das R. schrieb:
> Drum wüsste ich immer noch gern, wo die i2c pins bei den aktuellen

Was passiert den wenn du einfach mal bei Google z.B. "ESP32-C3 
datasheet" alternativ "pinout" eingibst?

Einer der ersten Ergebnisse :
https://www.studiopieters.nl/esp32-c3-pinout/

"The ADC (Analogue to Digital Converter) and DAC (Digital to Analogue 
Converter) features are assigned to specific static pins. However, you 
can decide which pins are UART, I2C, SPI, PWM, etc – you just need to 
assign them in the code. This is possible due to the ESP32-C3 chip’s 
multiplexing feature."

von Das R. (Firma: Verliererland) (verlierer)


Lesenswert?

Stephan S. schrieb:
> Bei einem ESP32-C3 von Ali sind an GPIO8 und GPIO9 jeweils 10k nach +3.3
> verbaut

In diesem Thread stehen alt lauter unterschiedliche Angaben, was denn 
nun die standard gpio pins für i2c sind und ob da pullup widerstände auf 
der kleinen platine verbaut sind.

von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

Das R. schrieb:
> Drum wüsste ich immer noch gern, wo die i2c pins bei den aktuellen
> AliExpress 1,9€ Teilen sind.

Die kannst du selber bei den C3 super mini recht frei festlegen.

von Veit D. (devil-elec)


Lesenswert?

Das R. schrieb:
> Stephan S. schrieb:
>> Bei einem ESP32-C3 von Ali sind an GPIO8 und GPIO9 jeweils 10k nach +3.3
>> verbaut
>
> In diesem Thread stehen alt lauter unterschiedliche Angaben, was denn
> nun die standard gpio pins für i2c sind und ob da pullup widerstände auf
> der kleinen platine verbaut sind.

Hallo,

nun überlege einmal ganz scharf wie man mit einfachsten Mitteln 
feststellen kann an welchen Pin Pullup/Pulldown verbaut sind.

von Alexander (alecxs)


Angehängte Dateien:

Lesenswert?

indem man bei JLCPCB bestellt und sich hinterher für zwei Pins 
entscheidet ;)

edit: 
https://michiel.vanderwulp.be/domotica/Modules/ESP32-C3-SuperMini/#schema-and-connections-1

: Bearbeitet durch User
von Das R. (Firma: Verliererland) (verlierer)


Angehängte Dateien:

Lesenswert?

Okay, in meinem Bahnhof hab ich schon so ein Teil liegen, und bis auf 
den vorigen Post sind alle hier alle I2C pin Angaben falsch.

Einzig GPIO8 und GPIO9 haben 10k Widerstand zu 3.3V.
Das wären also die Pins wenn man nicht selber für die pullups sorgen 
will und nur wenige i2c module ansteuern möchte.

Da es in meinem Solarmobil mindestens 6 Stück werden, lege ich den i2c 
wohl besser auf andere pins.

Häng morgen mal ein oled dran..

P.S. das rote Ding ist die bluetooth antenne ?

von Stephan S. (uxdx)


Lesenswert?

Das R. schrieb:
> Okay, in meinem Bahnhof hab ich schon so ein Teil liegen, und bis auf
> den vorigen Post sind alle hier alle I2C pin Angaben falsch.

Stephan S. schrieb:
> Bei einem ESP32-C3 von Ali sind an GPIO8 und GPIO9 jeweils 10k nach +3.3
> verbaut

von Das R. (Firma: Verliererland) (verlierer)


Lesenswert?

Sorry, ich hatte den ganzen Thread nochmals überflogen und Deine Zeile 
übersehen.

von Stephan S. (uxdx)


Angehängte Dateien:

Lesenswert?

Stephan S. schrieb:
> Bei einem ESP32-C3 von Ali sind an GPIO8 und GPIO9 jeweils 10k nach +3.3
> verbaut

wobei Pullups mit Werten von 10k für I2C bei 3.3 Volt viel zu hoch sind, 
auch wenn die Sensoren oft nochmals 4k7 haben, sind das gerade mal 3k2 
gesamt.

Bei 3.3 Volt braucht man für vernünftige Pegel eher um 1k, bei langsamem 
Clock kann es auch mehr sein.

von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

Das R. schrieb:
> und bis auf
> den vorigen Post sind alle hier alle I2C pin Angaben falsch.

Blödsinn!
Ich habe gesagt, dass der Pins recht frei wählbar sind!
Und dazu stehe ich auch.
Benutze selber gerne GPIO 3+4 für I2C, weil sie so praktisch nah an GND 
und 3.3V liegen.

Warum GPIO8 einen Pullup hat ist auch recht klar.
Liegt da doch der Boot Taster drauf, welcher auch im Reset
einen eindeutigen Pegel benötigt.

von Das R. (Firma: Verliererland) (verlierer)


Lesenswert?

Echt seltsam was alles verschieden über das Ding im Netz zu finden ist: 
"Onboard LED blue light, GPIO8 pin"
https://michiel.vanderwulp.be/domotica/Modules/ESP32-C3-SuperMini/#schema-and-connections-1in";

von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

Arduino F. schrieb:
> Warum GPIO8

Sorry, vertippt!
Ich meinte GPIO9, da hängt der Boottaster dran.

von Steve van de Grens (roehrmond)


Lesenswert?

Stephan S. schrieb:
> wobei Pullups mit Werten von 10k für I2C bei 3.3 Volt viel zu hoch sind

Nicht nur für I²C. In der nähe der Antenne sind solche Eingänge 
empfänglich für das eigene Funksignal. Auch deswegen sind stärker 
Pull-Widerstände angeraten.

: Bearbeitet durch User
von Obelix X. (obelix)


Lesenswert?

Das R. schrieb:
> P.S. das rote Ding ist die bluetooth antenne ?

Ja, 2,4GHz also BT und Wifi.

von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

Das R. schrieb:
> Ja, fünfmal 10x10cm mit standard versand (9-12 Tage) für unter 4€.

Versuchst du wirklich irf3206 mit 3,3V Pins anzusteuern?
Da sehe ich schwarz.

von Das R. (Firma: Verliererland) (verlierer)


Lesenswert?


von Das R. (Firma: Verliererland) (verlierer)


Angehängte Dateien:

Lesenswert?

So, GPIO8 ist in der tat die kleine blaue onboard led und gipo9 der 
nutzbare button neben dem reset button.
Finde ich dämlich, von den eh wenigen pins zwei für etwas zu 
verschwenden das eh nur auf dem board verwendung finden ?

I2C funktioniert and sda=6 und scl=7 auf anhieb, mit dem kleinen oled 
auch ohne zusätzliche pullups:

Für serial output per usb muss man im ESP32_C3_DevModule die option "USB 
CDC on Boot" auf Enabled setzen.
Wenn man dann allerdings das terminal nicht öffnet, bleibt der ESP in 
der codeausführung hängen - seltsam
Wenn man serial nicht initialisiert, läuft er problemlos.
1
//#define SERIALDEBUG Serial  // uncomment to enable serial 115200 baud debug output
2
3
#include "include.h"
4
5
void setup() 
6
{
7
  DEBUG(
8
    SERIALDEBUG.begin(115200);
9
    OUTN("ESP32 C3 Super Mini with i2c oled :-)");
10
  )
11
12
  pinMode(PIN_LedBuiltin,OUTPUT);
13
  pinMode(PIN_Button,INPUT);
14
15
  display.init();
16
  display.flipScreenVertically();
17
18
  display.clear();
19
  display.setTextAlignment(TEXT_ALIGN_LEFT);
20
  display.setFont(ArialMT_Plain_16);
21
  display.drawString(0, 0, "Hello world");
22
  display.setFont(Dialog_plain_32); // ArialMT_Plain_10
23
  display.setTextAlignment(TEXT_ALIGN_CENTER);
24
  display.drawString(60, 32,"ESP32 C2 :-)" );
25
  display.display();
26
}
27
28
void PrintFloat(int x, int y, float f, int iDecimals=1, String sUnit="", int iMinWidth=3)
29
{
30
  char s[6];     //result string 5 positions + \0 at the end
31
  dtostrf(f, iMinWidth, iDecimals, s );
32
  if (sUnit == "")
33
    display.drawString(x, y,s );
34
  else
35
  {
36
    sUnit = String(s)+sUnit;
37
    display.drawString(x, y,sUnit );
38
  }
39
}
40
41
void Display()
42
{
43
  if (iNow < iTimeDisplay)  return;
44
  iTimeDisplay = iNow + TIME_Display;
45
  
46
  display.clear();
47
  display.setColor(WHITE);
48
49
  display.setFont(ArialMT_Plain_16); // Dialog_plain_32 ArialMT_Plain_10
50
  display.setTextAlignment(TEXT_ALIGN_RIGHT);
51
  PrintFloat(40,0,fUin,1,"V");
52
  PrintFloat(82,0,fIout,1,"A");
53
  PrintFloat(128,0,fUout,1,"V");
54
  
55
  display.setFont(ArialMT_Plain_24); // Dialog_plain_32 ArialMT_Plain_10
56
  display.drawString(128, 14,"Super Mini" );
57
  
58
  display.drawString(64, 40,String(iNow%3000<1000 ? fUin : fUout) );
59
  display.drawString(128, 40,String(fIout) );
60
  display.display();
61
}
62
63
void loop() 
64
{
65
  iNow = millis();
66
67
  if (!digitalRead(PIN_Button))
68
    iBlink = 200;
69
  else
70
    iBlink = 1000;
71
72
  boolean bLedOn = (iNow%iBlink)<(iBlink/2);
73
  digitalWrite(PIN_LedBuiltin, bLedOn ? LOW : HIGH);
74
75
  Display();
76
}

1
// include.h
2
3
#define PIN_LedBuiltin  8
4
#define PIN_Button   9
5
6
#define PIN_SDA   6
7
#define PIN_SCL   7
8
9
#define TIME_Display 200
10
unsigned long iNow = 0, iTimeDisplay = 0;
11
unsigned int iBlink = 1000;
12
13
float fUin=44.4, fIout=5.3, fUout=28.6;
14
15
#include "SSD1306Wire.h" // legacy include: `#include "SSD1306.h"`
16
// custom fonts: http://oleddisplay.squix.ch
17
#include "Dialog_plain_32.h"
18
19
// Initialize the OLED display using Wire library
20
SSD1306Wire  display(0x3c, PIN_SDA, PIN_SCL); // I2C_Scanner: 0x3C
21
22
#ifdef SERIALDEBUG
23
  #define DEBUG(code) {code}
24
  #define OUT(s)  {SERIALDEBUG.print(s);}
25
  #define OUT2(s,i) {SERIALDEBUG.print(s);SERIALDEBUG.print(": ");SERIALDEBUG.print(i);}
26
  #define OUT2T(s,i)  {SERIALDEBUG.print(s);SERIALDEBUG.print(": ");SERIALDEBUG.print(i);SERIALDEBUG.print("  ");}
27
  #define OUT2N(s,i)  {SERIALDEBUG.print(s);SERIALDEBUG.print(": ");SERIALDEBUG.print(i);SERIALDEBUG.println();}
28
  #define OUTN(s) {SERIALDEBUG.println(s);}
29
  #define OUTI4(i){if (i<10) SERIALDEBUG.print("   ");  else if (i<100) SERIALDEBUG.print("  ");  else if (i<1000)  SERIALDEBUG.print(" "); SERIALDEBUG.print(i);}
30
#else
31
  #define DEBUG(code)
32
  #define OUT(s)
33
  #define OUT2(s,i)
34
  #define OUT2T(s,i)
35
  #define OUT2N(s,i)
36
  #define OUTN(s)
37
  #define OUTI4(i)
38
#endif

kompletter code hier: 
https://github.com/RoboDurden/Esp32_20A_80V_dcdc/tree/main/Arduino/ESP32C3_oled

: Bearbeitet durch User
Beitrag #7655905 wurde vom Autor gelöscht.
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.