This project shows how to generate a color PAL composite signal using the built in DACs of the ESP32.
You might want to check out the complete playlist on the development of an ESP32 based game console.
https://www.youtube.com/playlist?list=PLjUbKCHhzPEzCm2_KFAICIN-7QTap_s72
Color encoding demo
(Full size version here)
Parts
The part used here is a LOLIN32 board. But Any ESP32 board can be used.
These links are the cheapest I could find and also supporting our work (affiliate). I also ordered my modules there
LOLIN32 Board (~$6.90)
But there are also cheap modules on Amazon and eBay:
Amazon.com .ca .de .fr
Ebay .de .fr
Wiring
The wiring is quite simple. The video is connected to gpio 25 and the audio to 26. A capacitor of 10µF should be used to remove the DC offset.
Code
The code is written in C++ and runs in the Arduino IDE. The Arduino ESP32 integration is needed to compile the code (Please follow the instructions here: https://github.com/espressif/arduino-esp32).
You can find the blue planet demo from the video in the github repository DawnOfAV.
Check out the project page on the last part for more details https://bitluni.net/esp32-composite-audio/
The code for the new editor can be found here
https://github.com/bitluni/SpriteEditorRGBA
RGBA Sprite Editor
The sprite editor has the possibility to store and restore complex projects as a .json file. This way you can modify your sprite collections later. Exported .h can’t be loaded again since the original graphic files are lost in the process. When storing .json and .h a link is shown which has to be clicked to store the file. When exporting .h also a .txt file is provided with the indices and file names for your reference.
Use the mouse to add points to a sprite. The first point is used as origin of the sprite (if not set the upper left corner is used).. further points can be used arbitrarily.
The format of the resulting header is 16 bit per pixel RGBA with 4 bits for each component.
? : open project stored as .json file
? : store project as .json file
? : add graphic files
.h : export as header file
name : This is the name the files and the sprites in the code will have (just use characters valid for variable names)
? : zoom in the sprites to set points easier
⌗ : cropping. all sprites will be reduced to the non-transparent portion. points will be adapted. Use carefully.. there is no undo. I use it after saving to .json and before export to .h so safe some space.
(if you need more space use this link)
Docs
Similar Projects
Send me a message if you know of any similar projects
https://bitluni.net/esp32-composite-audio/
https://bitluni.net/esp32-composite-video/
My AM Radio transmitter. Also uses the DAC and I2S
My Oscilloscope as a Display Project. This uses the DAC. But I2S is used as camera input.