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).
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
Name | Pin |
---|---|
Taster | 9 |
LED | 7 |
Quelle: https://www.wemos.cc/en/latest/d1/d1_mini.html
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:
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
- D1 Mini Shield – Prototyp-Platine
- Preview – W600-Pico V1.0.0 1MB Flash
- D1 Mini Shield – RGB LED (Einzeln)
- D1 Mini Shield – RGB LED
- D1 Mini Shield – PIR (Bewegungssensor)
- D1 Mini Shield – HR8833 Motor
- D1 Mini Shield – AT8870 Motor
- D1 Mini Shield – SG30 Luftqualitätsmessung
- D1 Mini Shield – I2C Connector
- D1 Mini Shield – Matrix LED Shield
Quellen
https://arduino-projekte.info/produkt/d1-mini-esp32-wifi-bluetooth/
https://makersportal.com/shop/esp32-d1-mini-bluetoothwifi-board
https://docs.platformio.org/en/stable/boards/espressif32/wemos_d1_mini32.html
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
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!