Creating a Multi-Functional Desktop Assistant with ESP32-S3

Creating a Multi-Functional Desktop Assistant with ESP32-S3

Project Name: ESP32-S3 Multi-Functional Independent Sub-Screen [iCRT]

Project Author: Huang Dusk of Sanalan

Introduction

As soon as I saw this open-source project, I knew I wanted to DIY it!

What?! You ask me why?!

Creating a Multi-Functional Desktop Assistant with ESP32-S3

To be honest, I quite enjoy playing on 4399.

I imagine that when I open 4399, this sub-screen will move with the game sounds.

Creating a Multi-Functional Desktop Assistant with ESP32-S3

I can also check the CPU/GPU status at any time, clearly knowing the computer’s current “status”.

Creating a Multi-Functional Desktop Assistant with ESP32-S3

I find playing 4399 much smoother. (It wasn’t difficult to begin with)

01
Open Source Project Description

In two months, I created a multi-functional sub-screen using ESP32, named iCRT(named after the author’s son).

It is not just a display device, but also a standalone tool.

Creating a Multi-Functional Desktop Assistant with ESP32-S3

So the question arises!

——What are its functions? How to prepare the BOM? How to flash? How to configure the network?
PS: If you want to replicate it directly, please go to the end of the article in the 【Open Source URL】 section for the original text
02
Function Description

Main functions include but are not limited to:

01

AIDA64 Sub-Screen: Can be understood as a dashboard, used to display the current computer’s CPU/GPU temperature, usage, frequency, etc., with percentage and progress bar animation effects.

02

Music Spectrum Beat Counter: Collects environmental sounds through an internal microphone, performs FFT processing, real-time beat detection, and displays beautiful spectrum effects and RGB lights.

03

Dynamic Weather Clock: Obtains weather information via the Amap API and reads dynamic effects corresponding to the weather as the background.

04

Video Playback: Can play pre-processed Mjpeg+Mp3 files, audio and video synchronized.

05

Image Display: Can display JPEG files.

Below are the implementation principles of each function:

01

AIDA64 Sub-Screen Obtains information from AIDA64’s RemotePanel, parses it, and then displays it through a custom UI.

The image in the bottom left corner can be changed directly on the webpage, no card reader is needed.

02

Music Spectrum Beat Counter Works best with ICS43434, and when a beat is detected, the RGB light will flash once.

External speakers and RGB light strips can be connected.

Additionally,a dynamic gain algorithm has been added to the microphone collection, mainly by judging the average sound intensity over the recent period, dynamically increasing or decreasing the scale to achieve perfect spectrum display and beat detection at any volume.

03

Dynamic Weather Clock‘s weather animation comes from the HTC SENSE weather animation found online.

Weather updates every 3-5 minutes. Currently, the weather data comes from my Amap API, if you have your own API, you can apply for it and fill in your usage.

The clock includes the Gregorian calendar, lunar calendar,, common holidays, and 24 solar terms display.

04

Video Playback is achieved by processing the video into MJPEG+MP3 files, then saving them with the same main file name to the playback directory.

The device will decode and play synchronously, MJPEG must be 25 frames.

MJPEG decoding uses the latest and fastest SIMD decoding, which is the fastest decoding achievable on the ESP32-S3, 50-80% faster than ordinary decoding libraries like JPEGDEC.

Image display: Can display JPEG files based on the same principle.

05

Future plans include being able to display JPEG files based on the same principle. Multi-city weather switching, WeChat mini-program control, more AIDA64 UI interfaces, MP3 playback, and classic game console support, allowing connection of controllers to run console programs.

02
Hardware Configuration

Creating a Multi-Functional Desktop Assistant with ESP32-S3

Schematic

Creating a Multi-Functional Desktop Assistant with ESP32-S3

PCB

01

Microcontroller: ESP32-S3-N8R8

02

Display: 3.2-inch 320×240 IPS SPI display (expensive)

03

Storage: TF card, SDMMC 4Bit mode

04

Audio Playback: MAX98357 + ordinary small speaker

05

Audio Capture: ICS43434 digital I2S microphone

06

Additional Devices:: WS2812 light control

07

USB: USB interface supports both orientations, with the front being CH340X serial for programming, and the back being the ESP32-S3’s built-in USB, which can be used as a HOST to connect controllers in game console firmware.

08

Shell: 3D resin printed retro CRT display shape (nostalgic version, expensive) and stylish calendar shape (youth version, cheaper).

04
Programming Platform

IDE: platformio + arduino, 6.4.0, the graphical framework is lvgl.

05
Production Tutorial

Keywords for this chapter: BOM, soldering, flashing, debugging, network configuration, control, AIDA64 sub-screen, music spectrum, weather, MJPEG playback, image display.

01
BOM

Directly export BOM in JLCPCB, supports direct SMT.

Creating a Multi-Functional Desktop Assistant with ESP32-S3

Note!

01

Do not buy MAX98357 and speaker if you don’t need sound

02

If you don’t need environmental sensors, do not buy AHT20

03

If you want to save money, you can also skip buying CH340X; USB reverse plug directly uses CDC for flashing

04

Purchase the N8R8 module.

02
Soldering

This board’s soldering is quite simple (except for MAX98357).

01

Pay attention to the temperature of the RGB light, and the direction of the vertical FPC socket, solder according to the direction marked on the PCB.

02

The pads at the bottom are for the docking station, used to connect speakers and RGB light strips on the docking station, which will be updated later.

03

90% of problems are caused by cold solder joints or solder bridges.

03
Flashing Tutorial

The USB plug in the front is for CH340X flashing, and the back is for CDC, both can be used for flashing. However, after flashing with CDC, you won’t see serial port information; the default serial port information comes from CH340X.

How to determine whether it’s 340x or CDC?

After plugging it in, check the serial port name, if it contains 340, it’s CH340X; if not, it’s CDC.

The provided firmware comes in two versions, single-file version and upgrade version.

The single-file version is suitable for the first flashing, flash to address 0x0, and it will clear all content, including activation code information.

The single-file version file name contains the word all.

The upgrade version is suitable for subsequent upgrades, flash to address 0x10000, and it won’t clear the settings.

Choose ESP32-S3 for the flashing tool, UART mode.

SPI SPEED 80M, SPI MODE DIO, speed 921600.

04
Debugging

After flashing, the serial port should display boot information normally, if not, it indicates poor soldering.

Prepare a TF card, copy the directory structure provided in the cloud disk to the root directory of the TF card, and after plugging it in, power on to see the screen and sound (if no sound, it means MAX98357 is not soldered well).

Before seeking help, please provide serial port information.

05
Network Configuration

This device’s AIDA64 sub-screen and weather clock need to be configured to use.

After powering on, the device will automatically open an AP named Crt-Ap, with the password 12345678.

Connect your phone to this AP, and after a moment, the configuration page will pop up.

Select your hotspot and enter the password to complete the configuration.

Note: Some phones will automatically disconnect from the hotspot when they detect that it cannot connect to the internet, using the 5G network; in this case, you need to reconnect to the AP. If the configuration page does not pop up after connecting to the AP, please enter 192.168.4.1 in your phone’s browser to open it..

06
Control

The device can be controlled via the buttons on the back and via web control.

  • Button control: long press to bring up the menu, confirm. Short press for the next item.

  • Web control: simply click the corresponding button.

The web control allows you to set the Amap API KEY.

  • Set city code: the city code is the first 6 digits of your area’s ID card

  • Set AIDA64 host address: your computer’s IP address

  • The activation function is also in the web control.

07
AIDA64 Sub-Screen
01

Find an activated AIDA64 client (self-service)

02

In the menu, go to 【File】【Settings】【LCD】, and select Remote Sensor

03

Port 80, resolution can be anything like 1280×800, check 【Enable RemoteSensor LCD support】

04

Click on 【LCD Project】, then click 【Import】 in the upper right corner, and select the my_aida64_setting.rslcd file in our cloud disk

05

After importing, some settings need to be made, as everyone’s CPU, GPU, motherboard, hard drive, and network card are different, please set them one by one

06

Note, absolutely do not modify the text in “Show Label”, “Show unit” must be filled with “^” (without quotes), otherwise the device cannot detect it

07

Once all modifications are complete, click OK, and then minimize AIDA64. You can set it to start automatically on boot in settings (Settings, General, Run AIDA64 at Windows startup).

08

Access the IP address of iCRT via the web, and set your computer’s IP address (the one running AIDA64) in the “Sub-Screen Host Address” at the bottom, then save

09

If the local port 80 is occupied, you need to add a colon and a custom port. For example: 192.168.0.100 uses the host address of 192.168.0.100 with the default port 80; 192.168.0.100:9223 uses the host address of 192.168.0.100 with port 9223; note that the colon is an English colon…..

10

Allow AIDA64 to access the network through the firewall, or manually open TCP port 80 (or your custom port), important!

After setting up, switch iCRT to the AIDA64 function window to display computer status information.

08
Music Spectrum

Automatically enable the gain adjustment feature, which means the device will dynamically adjust the gain based on the volume to display better spectrum bars.

You can turn off dynamic gain on the web page and fix it at a certain gain.

It’s great to have this next to you while listening to music, trust me.

09
Weather

Configure the city code on the web page to use. If possible, you can also register your own Amap API KEY and fill it in.

The temperature and humidity have two numbers, representing the temperature and humidity of the device’s sensor and the temperature and humidity of Amap weather respectively.

The device’s temperature will exceed the current ambient temperature by a few degrees.

10
MJPEG Playback

Process the video using the following FFMPEG command, rename it to my0.mjpeg, my1.mjpeg….. etc., and copy it to the custom directory of the TF card.

If you want to synchronize audio playback, the audio file must have the same name as the mjpeg file (my0.mp3, my1.mp3 ….)

  • ./ffmpeg -i your_video_filename.mp4 -vf “fps=25,scale=-1:240:flags=lanczos,crop=320:240:(in_w-320)/2:0” -ss 00:00:13 -t 00:02:18 -q:v 7 my0.mjpeg

  • ./ffmpeg -i your_video_filename.mp4 -ss 00:00:13 -t 00:02:18 -b:a 128k my0.mp3

Note, the -ss part is the clipping command; remove it if you don’t need to clip.

11
Image Display

Rename the JPEG files to p0.jpg, p1.jpg, p2.jpg, etc., and place them in the pic directory of the TF card.

06
Open Source URL

If you need 【project source files + video demonstration files】, please “scan” or “copy the link” to enter the open-source page for viewing.

Creating a Multi-Functional Desktop Assistant with ESP32-S3

Scan to enter the open-source page
Get 【circuit and other source files】

Copy the open-source URL and open it in any browser: https://oshwhub.com/planevina/esp32-s3-multi-function-independent-sub-screen-icrt

Creating a Multi-Functional Desktop Assistant with ESP32-S3

If you have any questions, you can comment and consult the original author under the open-source project!

Creating a Multi-Functional Desktop Assistant with ESP32-S3

07
Project Source

This project comes from the 【Warm Winter Creation Call】.

Creating a Multi-Functional Desktop Assistant with ESP32-S3

The call was hosted by the Lichuang Open Hardware Platform. The original intention was to support every creator friend to realize your open-source hardware creation!!

The benefits of the call are as follows:

As long as you complete the circuit design

you will receive a component coupon worth 30-50 yuan or a 50 yuan colored silk screen PCB coupon 【to help you with PCB production】

As long as you complete the physical verification

you will receive a 30 yuan 3D printing coupon or a 30 yuan panel printing coupon 【to help you create the physical object】

If you:

  • have a small object you want to DIY: hand warmers, small TVs, etc.

  • have existing works(not open-sourced)

you can sign up to participate in the 【Warm Winter Creation Call】!

Creating a Multi-Functional Desktop Assistant with ESP32-S3
Scan to sign up/secure a spot
【Registration Tutorial】 can be seen below
Registration Tutorial:
After completing the registration, please【be sure to add the event manager】 to join the study group!
Creating a Multi-Functional Desktop Assistant with ESP32-S3
Event Dynamic Prophet
can discuss and communicate with experts
Other Notes:
Event Duration: 44 days

December 17, 2023 — January 31, 2024

Registration URL

https://oshwhub.com/activities/WarmwinterCreations

Coupon URL

https://docs.qq.com/sheet/DWFRQa01ieE9hYVdX?tab=BB08J2&_t=1702884019231

Creating a Multi-Functional Desktop Assistant with ESP32-S3

*This article reprints user creations from the “Lichuang Open Hardware Platform.” If there is any infringement, please contact for deletion.

Like this if you see it!
Creating a Multi-Functional Desktop Assistant with ESP32-S3
Click here to view the original project

Leave a Comment