ESP32-C3-WROOM-02 from Mouser. Using PlatformIO on VSCode.
Posted: Sat Jul 02, 2022 6:59 pm
Good morning,
I have ESP32-C3-WROOM-02 that I took from Mouser. I based myself on the following datasheet: https://www.mouser.fr/datasheet/2/891/E ... 295851.pdf
I have PlatformIo installed base on VSCODE and I configure my installation with the following ini file.
I will try from this information to see what I was able to make work successfully and what didn’t work for me.
First, on the hardware level, I looked at the power supply, 5V to 3V3 from an LDO and capacitors. There are no fluctuations so we can move on.
3V3 leg with positive voltage of 3V3.
GND leg with GND feed connection.
IO19 tab connected to D+ USB.
IO18 tab connected to D- USB.
I use the JTAG/USB block.
I can flash my card.
My first functional program was to test the adhequation between PlatformIo and Paw Numbers. Example here:
All legs functioned correctly by replacing the selected IO0 âr IO and having a led and its resistance connected to the ESP.
Now we come to what did not work for me at all. Two cases important enough in my projects for me to look for many hours in vain.
I have resolved to talk to you about it in order to find a way out.
Believe me, my goal is not to bother you, but to help me find a solution on programming and hardware if necessary.
Do some Serial.println("Ok"); and see if the card answers me. Alas, the screen remains empty!
I typed a rather basic code that allows me to wake up cards such as:
When I open my termonal I see this without seeing my "Ok". Something has to happen.
Would it be possible to know why it is in the wake?
I decided, since I had access to the pins to make a communication with an LCD screen on I²C. Screen I have already used on another ESP successfully through a level shifting.
I know that the address is good, my communication path is ok, the data transferred also without problem through my class. It’s debugged, functional, so we’ll look elsewhere.
Again, I see no trace of my I²C frames.
At the lcd level, we access a transfer of the address, we also return the timing and I did not notice on other cards of particular concern. Here’s the simple try code I use everywhere.
When I saw that it was nothing, I looked at my pinoches with an oscilloscope. And no trace comes out, not a single frame I²C. All the legs are in the high state with no other form of trial.
Again, I’d like a little help moving forward.
I also looked at the idea of using Espressif-idf directly in VSCode. I knew how to install it, I looked a little. But I didn’t dwell on it because it was coded in Python and I’m not a python specialist. I would prefer to stay on platformIO to remain compatible with all my projects. But in the absence of being able to use it, I have cards that are not usable as is.
I am listening to you, and thank you in advance for taking the time to read me.
I have ESP32-C3-WROOM-02 that I took from Mouser. I based myself on the following datasheet: https://www.mouser.fr/datasheet/2/891/E ... 295851.pdf
I have PlatformIo installed base on VSCODE and I configure my installation with the following ini file.
Code: Select all
; PlatformIO Project Configuration File
;
; Build options: build flags, source filter
; Upload options: custom upload port, speed and extra flags
; Library options: dependencies, extra library storages
; Advanced options: extra scripting
;
; Please visit documentation for the other options and examples
; https://docs.platformio.org/page/projectconf.html
[env:esp32-c3-devkitm-1]
platform = espressif32
board = esp32-c3-devkitm-1
framework = arduino
First, on the hardware level, I looked at the power supply, 5V to 3V3 from an LDO and capacitors. There are no fluctuations so we can move on.
3V3 leg with positive voltage of 3V3.
GND leg with GND feed connection.
IO19 tab connected to D+ USB.
IO18 tab connected to D- USB.
I use the JTAG/USB block.
I can flash my card.
Code: Select all
Checking size .pio\build\esp32-c3-devkitm-1\firmware.elf
Advanced Memory Usage is available via "PlatformIO Home > Project Inspect"
RAM: [ ] 3.1% (used 10268 bytes from 327680 bytes)
Flash: [== ] 16.4% (used 215456 bytes from 1310720 bytes)
Building .pio\build\esp32-c3-devkitm-1\firmware.bin
esptool.py v3.3
Creating esp32c3 image...
Merged 2 ELF sections
Successfully created esp32c3 image.
Configuring upload protocol...
AVAILABLE: cmsis-dap, esp-bridge, esp-builtin, esp-prog, espota, esptool, iot-bus-jtag, jlink, minimodule, olimex-arm-usb-ocd, olimex-arm-usb-ocd-h, olimex-arm-usb-tiny-h, olimex-jtag-tiny, tumpa
CURRENT: upload_protocol = esptool
Looking for upload port...
Auto-detected: COM6
Uploading .pio\build\esp32-c3-devkitm-1\firmware.bin
esptool.py v3.3
Serial port COM6
Connecting...
Chip is ESP32-C3 (revision 3)
Features: Wi-Fi
Crystal is 40MHz
MAC: 60:55:f9:85:9c:80
Uploading stub...
Running stub...
Stub running...
Changing baud rate to 460800
Changed.
Configuring flash size...
Flash will be erased from 0x00000000 to 0x00003fff...
Flash will be erased from 0x00008000 to 0x00008fff...
Flash will be erased from 0x0000e000 to 0x0000ffff...
Flash will be erased from 0x00010000 to 0x00047fff...
Flash params set to 0x022f
Compressed 12528 bytes to 9002...
Writing at 0x00000000... (100 %)
Wrote 12528 bytes (9002 compressed) at 0x00000000 in 0.3 seconds (effective 347.8 kbit/s)...
Hash of data verified.
Compressed 3072 bytes to 128...
Writing at 0x00008000... (100 %)
Wrote 3072 bytes (128 compressed) at 0x00008000 in 0.1 seconds (effective 403.0 kbit/s)...
Hash of data verified.
Compressed 8192 bytes to 47...
Writing at 0x0000e000... (100 %)
Wrote 8192 bytes (47 compressed) at 0x0000e000 in 0.1 seconds (effective 585.3 kbit/s)...
Hash of data verified.
Compressed 227280 bytes to 125727...
Writing at 0x00010000... (12 %)
Writing at 0x0001b0e1... (25 %)
Writing at 0x00021c62... (37 %)
Writing at 0x0002873e... (50 %)
Writing at 0x0002e9bb... (62 %)
Writing at 0x00034847... (75 %)
Writing at 0x0003c36c... (87 %)
Writing at 0x0004338a... (100 %)
Wrote 227280 bytes (125727 compressed) at 0x00010000 in 3.1 seconds (effective 588.4 kbit/s)...
Hash of data verified.
Leaving...
Hard resetting via RTS pin...
========================================================================================= [SUCCESS] Took 20.01 seconds =========================================================================================
Code: Select all
#include <Arduino.h>
// GOIO REEL
#define IO0 0
#define IO1 1
#define IO2 2
#define IO3 3
#define IO4 4
#define IO5 5
#define IO6 6
#define IO7 7
#define IO8 8
#define IO10 10
#define led IO0
unsigned long prevTempo;
const long tempo = 1000;
bool flagLed = false;
void setup() {
pinMode(led, OUTPUT);
}
void loop() {
unsigned long currTempo;
currTempo = millis();
if (currTempo - prevTempo >= tempo) {
prevTempo = currTempo;
if(flagLed) {
flagLed = false;
}
else {
flagLed = true;
}
}
digitalWrite(led, flagLed);
}
Now we come to what did not work for me at all. Two cases important enough in my projects for me to look for many hours in vain.
I have resolved to talk to you about it in order to find a way out.
Believe me, my goal is not to bother you, but to help me find a solution on programming and hardware if necessary.
Do some Serial.println("Ok"); and see if the card answers me. Alas, the screen remains empty!
I typed a rather basic code that allows me to wake up cards such as:
Code: Select all
#include <Arduino.h>
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
}
void loop() {
// put your main code here, to run repeatedly:
Serial.println("OK");
delay(1000);
}
Code: Select all
> Executing task in folder FIRST-ESP32C3: C:\Users\Almi Direct\.platformio\penv\Scripts\platformio.exe device monitor <
--- Available filters and text transformations: colorize, debug, default, direct, esp32_exception_decoder, hexlify, log2file, nocontrol, printable, send_on_enter, time
--- More details at https://bit.ly/pio-monitor-filters
--- Miniterm on COM6 9600,8,N,1 ---
--- Quit: Ctrl+C | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---
I decided, since I had access to the pins to make a communication with an LCD screen on I²C. Screen I have already used on another ESP successfully through a level shifting.
I know that the address is good, my communication path is ok, the data transferred also without problem through my class. It’s debugged, functional, so we’ll look elsewhere.
Again, I see no trace of my I²C frames.
At the lcd level, we access a transfer of the address, we also return the timing and I did not notice on other cards of particular concern. Here’s the simple try code I use everywhere.
Code: Select all
#include <Arduino.h>
#include "LcdMidas.h"
#define ADDR_LCD 0x3C
#define NB_COLUMN 16
#define NB_LINES 2
LcdMidasI2c lcd;
void setup() {
// put your setup code here, to run once:
lcd.begin(ADDR_LCD, NB_COLUMN, NB_LINES);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Hello World");
}
void loop() {
// put your main code here, to run repeatedly:
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Hello World");
delay(100);
}
Again, I’d like a little help moving forward.
I also looked at the idea of using Espressif-idf directly in VSCode. I knew how to install it, I looked a little. But I didn’t dwell on it because it was coded in Python and I’m not a python specialist. I would prefer to stay on platformIO to remain compatible with all my projects. But in the absence of being able to use it, I have cards that are not usable as is.
I am listening to you, and thank you in advance for taking the time to read me.