Posts

Showing posts with the label arduino-esp32

Hello ESP32-C5_MIINI

Image
Hello World on ESP32-C5_MIINI , list info and blink onboard LED (on IO23). ESP32-C5_MINI_hello.ino #define LED 23 void setup() { delay(2000); Serial.begin(115200); delay(1000); // initialize digital pin of the ESP32-C5_MINI onboard LED as an output. pinMode(LED, OUTPUT); digitalWrite(LED, LOW); // LED ON Serial.println("\n===================================="); Serial.println("Arduino_Hello World example"); Serial.println("ESP32-C5_MINI"); Serial.println("===================================="); Serial.printf("Chip model: %s\n", ESP.getChipModel()); Serial.printf("Chip revision: %d\n", ESP.getChipRevision());// Get ESP-IDF Version Serial.print("ESP-IDF Version: "); Serial.println(esp_get_idf_version()); #ifdef ESP_ARDUINO_VERSION_STR Serial.print("Arduino-ESP32 Core Version (String): "); Serial.println(ESP_ARDUINO_VERSION_STR); #else Serial.println("E...

Waveshare ESP32-S3-Touch-LCD-4B Hello World

Image
Basic Test run on  Waveshare ESP32-S3-Touch-LCD-4B , with built-in 4inch 480 × 480 resolution ST7701 RGB interface LCD. S3_ST7701_basictest.ino /* Basic test run on Waveshare ESP32-S3-Touch-LCD-4B https://coxxect.blogspot.com/2026/06/waveshare-esp32-s3-touch-lcd-4b-hello.html Remark about "USB CDC On Boot" option for Serial.print() If host PC connect to USB TO UART port (lower one), select USB CDC On Boot: "Disabled". If connect to ESP32-S3 USB Interface port (middle one), select USB CDC On Boot: "Enabled" Otherwise, you cannot see the output by Serial.print(). */ #include <Arduino.h> #include "Arduino_GFX_Library.h" #define BL 4 Arduino_XCA9554SWSPI *expander = new Arduino_XCA9554SWSPI( 7, 0, 2, 1, &Wire, 0x20); Arduino_ESP32RGBPanel *rgbpanel = new Arduino_ESP32RGBPanel( 17 /* DE */, 3 /* VSYNC */, 46 /* HSYNC */, 9 /* PCLK */, 10 /* B0 */, 11 /* B1 */, 12 /* B2 */, 13 /* B3 */, 14 /* B4 */, 21 ...

Dynamic WiFi Image Gallery run on Waveshare ESP32-S3-Touch-AMOLED-2.16/ESP32-S3-Touch-LCD-4B

Image
In my previous post, I demonstrated how to download and display JPG images via WiFi on the Waveshare ESP32-C5-WIFI6-KIT-N16R8 with an 240x320 ST7789 SPI TFT LCD using hardcoded filenames . This new implementation is much more flexible: filenames are now stored in a jpg_list.txt file on the server, allowing the ESP32 to download the images dynamically. I have also successfully tested this setup on the Waveshare ESP32-S3-Touch-AMOLED-2.16 with its 480x480 AMOLED (CO5300 driver) . (Scroll down for ESP32-S3-Touch-LCD-4B version). How it Works The program operates in three distinct phases: WiFi connection: The ESP32-S3 connects to a local WiFi access point and establishes communication with a Python-based HTTP server. Since the WiFi access point is a Windows 11 Mobile Hotspot and the Python-based HTTP server is running on that same PC, we can assume the server IP address is identical to the Access Point (Gateway) IP. Dynamic Manifes...

Install Arduino IDE 2.3.8 and ESP32 Arduino Core on Linux Mint 22.3 (Over VirtualBox 7.2.8)

Image
To install the Arduino IDE 2.3.8 on Linux Mint using the AppImage format, tested on Linux Mint 22.3 Xfce over VirtualBox on Windows 11. Step 1: Download the AppImage - Go to the official Arduino Software page . - Look for Arduino IDE 2.3.8 (or the latest version). - Click on the "Linux AppImage 64 bits" link to download the file. - You can move the downloaded file to other folder you want. Step 2: Grant Execution Permission By default, Linux treats downloaded AppImages as non-executable files for security. You must enable execution rights. Option A: Using the Terminal (Recommended) Open your terminal and navigate to the folder contain the downloaded file: chmod +x arduino-ide_2.3.8_Linux_64bit.AppImage Option B: Using the GUI - Right-click the downloaded .AppImage file. - Select Properties. - Go to the Permissions tab. - Check the box that says "Allow executing file as program". Step 3: Configure Serial Port Permissions (dialout) In Linux, your user accou...

Downloading and Displaying JPG Images via WiFi on ESP32-C5 with ST7789 SPI TFT LCD

Image
In this exercise, I demonstrate how to download a JPG image over Wi-Fi, decode it using the JPEGDEC library, and display it on a 3.2-inch 240×320 ST7789 TFT LCD (4-wire SPI) . The project uses the Arduino_GFX_Library together with the Waveshare ESP32-C5-WIFI6-KIT-N16R8 , running in the Arduino framework. Connection: 3.2" 240x320 ST7789 TFT LCD Waveshare (4-Wire SPI) ESP32-C5-WIFI6-KIT-N16R8 BL --------------------------- GPIO26 CS --------------------------- GPIO23 DC --------------------------- GPIO24 RES --------------------------- GPIO25 SDA --------------------------- GPIO8 SCL --------------------------- GPIO10 VCC --------------------------- 3V3 GND --------------------------- GND Libraries: Arduino_GFX_Library and  JPEGDEC libraries are needed to be installed in Arduino IDE Library Manager. Basic Test: ESP32C5_ST7789_SPI.ino /* Exercise run on Waveshare ESP32-C5-WIFI6-KIT-N16R8 Work with 3.2" 240x320 ST7789 SP...

ESP32-xx to use 16MB Flash with LittleFS.

Image
In my understanding: To use 16MB Flash with LittleFS, have to select Partition Scheme of 16M Flash (2MB APP/12.5MB FATFS) or 16M Flash (3MB APP/9.9MB FATFS). Tested on  Waveshare ESP32-C5-WIFI6-KIT-N16R8 . ESP32-xx_LittleLS_16M.ino /* Exercise on ESP32-xx to use 16MB Flash with LittleFS. In my understanding: To use 16MB Flash with LittleFS Have to select Partition Scheme of 16M Flash (2MB APP/12.5MB FATFS) or 16M Flash (3MB APP/9.9MB FATFS). But, if call simple LittleFS.begin(true), will fail. To use it, have to set partitionLabel to "ffat". In my test on Waveshare ESP32-C5-WIFI6-KIT-N16R8: With "16M Flash (2MB APP/12.5MB FATFS)": LittleFS.totalBytes: 12451840 bytes LittleFS.usedBytes: 8192 bytes With "16M Flash (3MB APP/9.9MB FATFS)": LittleFS.totalBytes: 10354688 bytes LittleFS.usedBytes: 8192 bytes */ #include <LittleFS.h> #include "esp_partition.h" void setup() { delay(2000); Serial.begin(115200); delay(10...

arduino-esp32 read memory info (tested on YD-ESP32-S3 N16R8/Waveshare ESP32-C5-WIFI6-KIT-N16R8)

Image
arduino-esp32 read memory info, tested on Waveshare ESP32-C5-WIFI6-KIT-N16R8 and YD-ESP32-S3 N16R8 . ESP32-xx_mem_info.ino /* Exercise run on Waveshare ESP32-xx - Memory info Tested on: VCC-GND Studio YD-ESP32-S3 N16R8 https://github.com/vcc-gnd/YD-ESP32-S3 16MB Flash, 8MB PSRAM WaveShare ESP32-C5-WIFI6-KIT-N16R8: https://www.waveshare.com/wiki/ESP32-C5-WIFI6-KIT-NXRX 16MB Flash, 8MB PSRAM */ #include <SPIFFS.h> void setup() { delay(2000); Serial.begin(115200); delay(1000); Serial.println("\n\n~ Start ~"); Serial.println("--- Memory Info ---"); Serial.println(); Serial.println("--- Model and Revision ---"); Serial.printf("Chip model: %s\n", ESP.getChipModel()); Serial.printf("Chip revision: %d\n", ESP.getChipRevision()); Serial.println(); Serial.println("--- SRAM (internal RAM) ---"); Serial.printf("Free heap: %d bytes\n", ESP.getFreeHeap()); Serial.printf("L...

WebServer on ESP32-C5-WIFI6-KIT-N16R8, to control onboard RGB LED (Arduino Framework)

Image
Exercises (Arduino Framework) run on Waveshare ESP32-C5-WIFI6-KIT-N16R8 , act as WiFi Access Point, and setup simple WebServer to control onboard RGB LED. ESP32C5_WiFi_AP_WebServer , act as Access Point and setup a simple WebServer. /* Exercise run on Waveshare ESP32-C5-WIFI6-KIT-N16R8 Setup WiFi AP, and a simple WebServer. details: https://coxxect.blogspot.com/2026/03/webserver-on-esp32-c5-wifi6-kit-n16r8.html Ref: Arduino ESP32 Wi-Fi API https://docs.espressif.com/projects/arduino-esp32/en/latest/api/wifi.html Github: espressif/arduino-esp32/libraries/WebServer/ https://github.com/espressif/arduino-esp32/tree/master/libraries/WebServer */ #include <WiFi.h> #include <WebServer.h> // Built-in lightweight HTTP server const char* ssid = "ESP32-C5_AP"; const char* password = "12345678"; // Create a web server on port 80 WebServer server(80); void handleRoot() { server.send(200, "text/html", "<h1>Hello from ESP32-C5 W...

Waveshare ESP32-C5-WIFI6-KIT-N16R8 to control onboard RGB LED using Adafruit_NeoPixel library, Arduino framework.

Image
Exercise run on Waveshare ESP32-C5-WIFI6-KIT-N16R8 to control onboard RGB LED using Adafruit_NeoPixel library. ESP32C5_RGB.ino /* Exercise run on Waveshare ESP32-C5-WIFI6-KIT-N16R8 to control onboard RGB LED using Adafruit_NeoPixel library. The onboard RGB on Waveshare ESP32-C5-WIFI6-KIT-N16R8 is connected to GPIO27. https://coxxect.blogspot.com/2026/02/waveshare-esp32-c5-wifi6-kit-n16r8-to.html */ #include <Adafruit_NeoPixel.h> // Pin where the onboard RGB is connected #define LED_PIN 27 // Number of LEDs (number of onboard RGB is 1) #define LED_COUNT 1 // Create NeoPixel object Adafruit_NeoPixel strip(LED_COUNT, LED_PIN, NEO_RGB + NEO_KHZ800); void setup() { strip.begin(); // Initialize NeoPixel library strip.show(); // Turn OFF all pixels ASAP strip.setBrightness(50); // Adjust brightness (0–255) } void loop() { // Cycle through Red, Green, Blue strip.setPixelColor(0, strip.Color(255, 0, 0)); // Red strip.show(); delay(100...

First try VS Code/PlatformIO to program ESP32-S3 in Arduino Framework, to blink RGB LED.

Image
First try VS Code/PlatformIO to program YD-ESP32-S3 (N16R8) in Arduino Framework, to blink RGB LED. main.cpp #include <Arduino.h> #include <Adafruit_NeoPixel.h> #define LED_PIN 48 // YD-ESP32-S3 onboard WS2812 (IO48) #define NUMPIXELS 1 // One RGB LED only Adafruit_NeoPixel pixels(NUMPIXELS, LED_PIN, NEO_GRB + NEO_KHZ800); void setup() { Serial.begin(115200); pixels.begin(); pixels.setBrightness(10); // Brightness (0~255) Serial.println("Rainbow demo start with brightness 100"); } uint32_t Wheel(byte pos) { pos = 255 - pos; if(pos < 85) { return pixels.Color(255 - pos * 3, 0, pos * 3); } else if(pos < 170) { pos -= 85; return pixels.Color(0, pos * 3, 255 - pos * 3); } else { pos -= 170; return pixels.Color(pos * 3, 255 - pos * 3, 0); } } void loop() { for(int i = 0; i < 256; i++) { pixels.setPixelColor(0, Wheel(i)); pixels.show(); delay(20); } } platformio.ini [env:e...

Control onboard RGB LED of Waveshare ESP32-H2-Zero and ESP32-H2-DevKitM-1-N4, in Arduino framework.

Image
Following code control the onboard RGB LED of Waveshare ESP32-H2-Zero and ESP32-H2-DevKitM-1-N4 , in Arduino framework. H2_BlinkRGB.ino /* H2_BlinkRGB */ void setup() { // No need to initialize the RGB LED } // the loop function runs over and over again forever void loop() { // * notice the color order rgbLedWrite(RGB_BUILTIN, RGB_BRIGHTNESS, 0, 0); // Red delay(1000); rgbLedWrite(RGB_BUILTIN, 0, RGB_BRIGHTNESS, 0); // Green delay(1000); rgbLedWrite(RGB_BUILTIN, 0, 0, RGB_BRIGHTNESS); // Blue delay(1000); rgbLedWrite(RGB_BUILTIN, 0, 0, 0); // Off / black delay(1000); int fade_speed = 10; for(int i=0; i<=255; i++){ rgbLedWriteOrdered(RGB_BUILTIN, LED_COLOR_ORDER_RGB, i, 0, 0); // Red delay(fade_speed); } for(int i=255; i>=0; i--){ rgbLedWriteOrdered(RGB_BUILTIN, LED_COLOR_ORDER_RGB, i, 0, 0); // Red delay(fade_speed); } for(int i=0; i<=255; i++){ rgbLedWriteOrdered(RGB_BUILTIN, LED_COLOR_ORDER_RGB, 0, i,...

Xiao ESP32S3 display on 240*240 ST7789 SPI LCD/FT6236U cap. touch using TFT_eSPI in Arduino Framework.

Image
This video show steps how Xiao ESP32S3 display on 1.54" 240*240 ST7789 SPI LCD using TFT_eSPI in Arduino Framework. Connection: ST7789V2 Xiao ESP32S3 ---------------------------- GND GND VCC 3V3 SCL GPIO7 SDA GPIO9 RES GPIO1 DC GPIO2 CS GPIO3 BLK GPIO4 FT6236 ---------------------------- SCL GPIO6 SDA GPIO5 INT GPIO43 (Not used) RST GPIO44 Library used: TFT_eSPI  https://github.com/Bodmer/TFT_eSPI To setup, scroll down to "Tips" section: Create a new folder in your Arduino library folder called "TFT_eSPI_Setups". You then place your custom setup.h files in there. Edit the User_Setup_Select.h file to point to your custom setup file. Create my custom setup file, Setup_ST7789_XIAOESP32S3.h , under TFT_eSPI_Setups folder. // Setup_ST7789_XIAOESP32S3.h in // ..\Arduino\libraries\TFT_eSPI_Setups\ // // Modify // ..\Arduino\libraries\TFT_eSPI\User_Setup_Select.h to load it. // #include <../TFT_eSPI_Setups/Setup_ST7789_XIAOESP32S3.h> #de...

ESP32S3 (Arduino framework) decode jpg and display on ST7789 SPI Display.

Image
Base on former exercise of " 240x240 ST7789V2 SPI IPS with FT6236 cap touch on XIAO ESP32S3 using GFX Library for Arduino ", this exercise run on XIAO ESP32S3 Sense in Arduino framework, load jpg from SD, decode the jpg using JPEGDEC library, and display on  1.54 inch 240x240 ST7789V2 SPI IPS with FT6236 cap touch using GFX Library for Arduino (Arduino_GFX_Library). Connection follow the former exercise . Install the following libraries in Arduino IDE's Library Manager. - GFX Library for Arduino (Arduino_GFX_Library) for display on ST7789 - JPEGDEC for jpg decoding Exercise code: XiaoS3_ST7789_SD_jpg_scale.ino /******************************************************************************* Xiao ESP32S3 Sense exercise Display jpg on 240x240 ST7789 SPI IPS - Display jpg in various scale. Libraries needed (available in Arduino IDE Library Manager): - GFX Library for Arduino (Arduino_GFX_Library) for display on ST7789 - JPEGDEC for jp...