(Wemos) C3 Mini

Last Updated on 20. April 2022 by sfambach

Der WEMOS C3 ist der neuste im D1 Mini Format. Ein USB Micro Anschluss, ein Reset-Taster und zwei Eingebaute LEDs auf dem ESP sind die einzige Peripherie. Er zählt von seinen Abmessungen eher zu den kleinen, nur wenige Pins sind nach aussen geführt. Dafür verfügt der ESP32-C3 mit RISC-V CPU über Bluetooth 5.0,

Interessant wie auch beim Wemos D1 Mini sind die vielen Erweiterungsplatienen(Siehe Hersteller).

Link zum D1 Mini (Vorgänger)

Fakten

  • based ESP32-C3 WIFI & Bluetooth LE RISC-V Single-Core CPU
  • Type-C USB
  • 4MB Flash
  • 12x IO
  • ADC, I2C, SPI, UART
  • Kompatibel mit dem Lolin D1 Mini
  • Firmware: MicroPython
  • Reset-Taster
  • 12 Digitale Pins
  • 6 Analogen Pin
  • Betriebsspannung 3.3V
  • Anschluss-Spannung 5V
  • 4M SPI Flash Speicher
  • 160MHz
  • 2 LEDs
  • Preis ~5€
  • Abmessungen in mm: l/b/h 39/32/13

Pin-Belegung

NamePin
Taster 9
LED7
(Wemos) C3 Mini – Pins
C3 Mini – Pin Belegung

Quelle: https://www.wemos.cc/en/latest/d1/d1_mini.html

Schaltplan

Anwendungsbereiche

  • Microcontroller Projekte mit WiFi
  • Fernsteuerung
  • Funk-Wecker

Ansichten

Programmierung

Bibliotheken

Zur Programmierung des Wemos sind keine zusätlichen Bibliotheken nötig. Die ESP Erweiterung der Arduino GUI muss jedoch installiert sein. Siehe hierzu auch den > Link < zur Einrichtung.

Aktueller Stand Arduino ESP32 Bibliothek V2.0.3-RC1 <- Hier die Dev Version das der C3 aktuell noch nicht in der Stable enthalten ist.

Jason für die Entwicklerversion ist:

https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_dev_index.json

Testprogramm

Als Testprogramm kann Blink verwendet werden. Diese befinden sich bei den Beispielprogrammen der Arduino GUI. Hier gibt es auch Task gesteurte Blinks was nützlich zum Erlernen der Multitaskumgebung auf dem ESP32 ist. Die Programme gibts natürlich in ihrer Aktuellen Version auch über Github bezogen werden:

https://github.com/espressif/arduino-esp32/blob/master/libraries/ESP32/examples/FreeRTOS/FreeRTOS.ino

Ich konnte meinen Wemos D1 ESP32 mit den folgenden Einstellungen programmieren:

Als Port wählt bitte eure Serielle Schnittstelle aus, bei mir ist es COM 15.

Probleme

Wifi funktioniert nicht

Wifi TX auf 8,5 dBm setzen:


WiFi.setTxPower(WIFI_POWER_8_5dBm);

Boardbeschreibung

Board Text Quelle: https://github.com/espressif/arduino-esp32/blob/master/boards.txt

##############################################################

lolin_c3_mini.name=LOLIN C3 Mini
lolin_c3_mini.vid.0=0x303a
lolin_c3_mini.pid.0=0x1001

lolin_c3_mini.bootloader.tool=esptool_py
lolin_c3_mini.bootloader.tool.default=esptool_py

lolin_c3_mini.upload.tool=esptool_py
lolin_c3_mini.upload.tool.default=esptool_py
lolin_c3_mini.upload.tool.network=esp_ota

lolin_c3_mini.upload.maximum_size=1310720
lolin_c3_mini.upload.maximum_data_size=327680
lolin_c3_mini.upload.flags=
lolin_c3_mini.upload.extra_flags=
lolin_c3_mini.upload.use_1200bps_touch=false
lolin_c3_mini.upload.wait_for_upload_port=false

lolin_c3_mini.serial.disableDTR=true
lolin_c3_mini.serial.disableRTS=true

lolin_c3_mini.build.tarch=riscv32
lolin_c3_mini.build.target=esp
lolin_c3_mini.build.mcu=esp32c3
lolin_c3_mini.build.core=esp32
lolin_c3_mini.build.variant=lolin_c3_mini
lolin_c3_mini.build.board=LOLIN_C3_MINI
lolin_c3_mini.build.bootloader_addr=0x0

lolin_c3_mini.build.cdc_on_boot=1
lolin_c3_mini.build.f_cpu=160000000L
lolin_c3_mini.build.flash_size=4MB
lolin_c3_mini.build.flash_freq=80m
lolin_c3_mini.build.flash_mode=dio
lolin_c3_mini.build.boot=qio
lolin_c3_mini.build.partitions=default
lolin_c3_mini.build.defines=

lolin_c3_mini.menu.CDCOnBoot.default=Enabled
lolin_c3_mini.menu.CDCOnBoot.default.build.cdc_on_boot=1
lolin_c3_mini.menu.CDCOnBoot.dis_cdc=Disabled
lolin_c3_mini.menu.CDCOnBoot.dis_cdc.build.cdc_on_boot=0

lolin_c3_mini.menu.PartitionScheme.default=Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS)
lolin_c3_mini.menu.PartitionScheme.default.build.partitions=default
lolin_c3_mini.menu.PartitionScheme.defaultffat=Default 4MB with ffat (1.2MB APP/1.5MB FATFS)
lolin_c3_mini.menu.PartitionScheme.defaultffat.build.partitions=default_ffat
lolin_c3_mini.menu.PartitionScheme.no_ota=No OTA (2MB APP/2MB SPIFFS)
lolin_c3_mini.menu.PartitionScheme.no_ota.build.partitions=no_ota
lolin_c3_mini.menu.PartitionScheme.no_ota.upload.maximum_size=2097152
lolin_c3_mini.menu.PartitionScheme.noota_3g=No OTA (1MB APP/3MB SPIFFS)
lolin_c3_mini.menu.PartitionScheme.noota_3g.build.partitions=noota_3g
lolin_c3_mini.menu.PartitionScheme.noota_3g.upload.maximum_size=1048576
lolin_c3_mini.menu.PartitionScheme.noota_ffat=No OTA (2MB APP/2MB FATFS)
lolin_c3_mini.menu.PartitionScheme.noota_ffat.build.partitions=noota_ffat
lolin_c3_mini.menu.PartitionScheme.noota_ffat.upload.maximum_size=2097152
lolin_c3_mini.menu.PartitionScheme.noota_3gffat=No OTA (1MB APP/3MB FATFS)
lolin_c3_mini.menu.PartitionScheme.noota_3gffat.build.partitions=noota_3gffat
lolin_c3_mini.menu.PartitionScheme.noota_3gffat.upload.maximum_size=1048576
lolin_c3_mini.menu.PartitionScheme.huge_app=Huge APP (3MB No OTA/1MB SPIFFS)
lolin_c3_mini.menu.PartitionScheme.huge_app.build.partitions=huge_app
lolin_c3_mini.menu.PartitionScheme.huge_app.upload.maximum_size=3145728

lolin_c3_mini.menu.CPUFreq.160=160MHz (WiFi)
lolin_c3_mini.menu.CPUFreq.160.build.f_cpu=160000000L
lolin_c3_mini.menu.CPUFreq.80=80MHz (WiFi)
lolin_c3_mini.menu.CPUFreq.80.build.f_cpu=80000000L
lolin_c3_mini.menu.CPUFreq.40=40MHz
lolin_c3_mini.menu.CPUFreq.40.build.f_cpu=40000000L
lolin_c3_mini.menu.CPUFreq.20=20MHz
lolin_c3_mini.menu.CPUFreq.20.build.f_cpu=20000000L
lolin_c3_mini.menu.CPUFreq.10=10MHz
lolin_c3_mini.menu.CPUFreq.10.build.f_cpu=10000000L

lolin_c3_mini.menu.FlashFreq.80=80MHz
lolin_c3_mini.menu.FlashFreq.80.build.flash_freq=80m
lolin_c3_mini.menu.FlashFreq.40=40MHz
lolin_c3_mini.menu.FlashFreq.40.build.flash_freq=40m

lolin_c3_mini.menu.UploadSpeed.921600=921600
lolin_c3_mini.menu.UploadSpeed.921600.upload.speed=921600
lolin_c3_mini.menu.UploadSpeed.115200=115200
lolin_c3_mini.menu.UploadSpeed.115200.upload.speed=115200
lolin_c3_mini.menu.UploadSpeed.256000.windows=256000
lolin_c3_mini.menu.UploadSpeed.256000.upload.speed=256000
lolin_c3_mini.menu.UploadSpeed.230400.windows.upload.speed=256000
lolin_c3_mini.menu.UploadSpeed.230400=230400
lolin_c3_mini.menu.UploadSpeed.230400.upload.speed=230400
lolin_c3_mini.menu.UploadSpeed.460800.linux=460800
lolin_c3_mini.menu.UploadSpeed.460800.macosx=460800
lolin_c3_mini.menu.UploadSpeed.460800.upload.speed=460800
lolin_c3_mini.menu.UploadSpeed.512000.windows=512000
lolin_c3_mini.menu.UploadSpeed.512000.upload.speed=512000

lolin_c3_mini.menu.DebugLevel.none=None
lolin_c3_mini.menu.DebugLevel.none.build.code_debug=0
lolin_c3_mini.menu.DebugLevel.error=Error
lolin_c3_mini.menu.DebugLevel.error.build.code_debug=1
lolin_c3_mini.menu.DebugLevel.warn=Warn
lolin_c3_mini.menu.DebugLevel.warn.build.code_debug=2
lolin_c3_mini.menu.DebugLevel.info=Info
lolin_c3_mini.menu.DebugLevel.info.build.code_debug=3
lolin_c3_mini.menu.DebugLevel.debug=Debug
lolin_c3_mini.menu.DebugLevel.debug.build.code_debug=4
lolin_c3_mini.menu.DebugLevel.verbose=Verbose
lolin_c3_mini.menu.DebugLevel.verbose.build.code_debug=5

Board header Quelle:
https://github.com/espressif/arduino-esp32/blob/master/variants/lolin_c3_mini/pins_arduino.h

#ifndef Pins_Arduino_h
#define Pins_Arduino_h

#include <stdint.h>

#define EXTERNAL_NUM_INTERRUPTS 22
#define NUM_DIGITAL_PINS        22
#define NUM_ANALOG_INPUTS       6

#define analogInputToDigitalPin(p)  (((p)<NUM_ANALOG_INPUTS)?(analogChannelToDigitalPin(p)):-1)
#define digitalPinToInterrupt(p)    (((p)<NUM_DIGITAL_PINS)?(p):-1)
#define digitalPinHasPWM(p)         (p < EXTERNAL_NUM_INTERRUPTS)

static const uint8_t LED_BUILTIN = 7;
#define BUILTIN_LED  LED_BUILTIN // backward compatibility

static const uint8_t TX = 21;
static const uint8_t RX = 20;

static const uint8_t SDA = 8;
static const uint8_t SCL = 10;

static const uint8_t SS    = 5;
static const uint8_t MOSI  = 4;
static const uint8_t MISO  = 3;
static const uint8_t SCK   = 2;

static const uint8_t A0 = 0;
static const uint8_t A1 = 1;
static const uint8_t A2 = 2;
static const uint8_t A3 = 3;
static const uint8_t A4 = 4;
static const uint8_t A5 = 5;

#endif /* Pins_Arduino_h */

Sonstiges

Fritzing Wemos D1 ESP32 Mini:

https://forum.fritzing.org/uploads/short-url/wv8xVt6y4tFToPngAeMqUju2oUl.fzpz

Beispielprojekte:
https://github.com/wemos/D1_mini_Examples

Modell für den 3D Druck
https://grabcad.com/library/wemos-d1-mini-v3-0-0-1

https://grabcad.com/library/wemos-d1-mini-1

Fazit

Schneller als der ESP8266 aber nicht so viele Möglichkeiten wie der ESP32. Dafür besitzt er Bluetooth 5.0 und eine Risk-V Compatible CPU.

Verwandte Beiträge

Quellen

Wemos C3 Mini Herstellerseite

ESP Wroom 32 Datenblatt

https://arduino-projekte.info/produkt/d1-mini-esp32-wifi-bluetooth/

CH9102 USB Treiber

https://makersportal.com/shop/esp32-d1-mini-bluetoothwifi-board

https://docs.platformio.org/en/stable/boards/espressif32/wemos_d1_mini32.html

2 Gedanken zu „(Wemos) C3 Mini

  1. Hallo Jens,

    danke für deinen Beitrag, da ich noch nicht viel mit dem C3/S2 gemacht habe sind mit die Macken noch nicht aufgefallen und eine Bereicherung für diesen Artikel. Werde mich aber da ich es nun weiss mal gezielt informieren.

    Gruß
    Stefan

  2. ich werde vor erst weiter zum ESP8266 oder ESP32 mit Serial-IC greifen. Die sind ausgereift und die Fehler gut bekannt und dokumentiert. Auch brauch ich nicht ständig die beiden Taster drücken, das macht das Serial-IC mit den zwei Transistoren automatisch.
    Wer Zeit hat kann die ESP32-C3 und -S2 ausprobieren, darf sich aber nicht wundern wenn das IC wegen SHA-Fehler nicht bootet nur weil ein falscher PIN angegeben ist.
    Solche Fehler sollte die IDE eigentlich selbst abfangen und vor dem Programmieren warnen.
    Auch das das WLAN mit einem extra Befehl noch mal eingeschaltet werden muss obwohl im Code klar ist das WLAN verwendet werden soll…

    Interessant sind die ESP32-C3 Module im beliebten ESP-12 Format.
    Diese könnten ein Drop-In-Replace werden, wenn die Software verbessert wird!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.