Page 1 of 12 1234511 ... LastLast
Results 1 to 10 of 111

Thread: Announcing ILDAC-32 - an ESP-32 based DAC for ILDA projectors

  1. #1
    Join Date
    May 2014
    Location
    Connecticut
    Posts
    793

    Default Announcing ILDAC-32 - an ESP-32 based tool for ILDA projectors

    Hello everyone!

    This project was announced this project at SELEM 14 in August. I started working on this project in the summer of 2021. The video of my SELEM presentation should be available real soon. But a lot has happened since August, and it's time I share this with everyone here on PL.

    I have created an entirely self-contained device based on ESP-32 that runs test patterns, lumia cues, static beams, and ILDA files/animations to any ILDA compatible laser projector. Controlable via Bluetooth with a mobile app, and/or any web browser over WiFi using the internal web server.
    Click image for larger version. 

Name:	i1.png 
Views:	9 
Size:	432.7 KB 
ID:	58656
    Click image for larger version. 

Name:	i2.png 
Views:	0 
Size:	391.6 KB 
ID:	58657
    Click image for larger version. 

Name:	i4 (Small).png 
Views:	2 
Size:	604.6 KB 
ID:	58663


    How this started:
    • Wanted a basic Lumia cue that was a very slow beam through a diffraction grating or along a rotating torture tube
    • Did not want to use an Computer+FB3+Beyond just for a simple slow moving beam - I still needed Beyond to run other content
    • Also wanted to produce test patterns without a Computer+FB3+Beyond for bench testing, alignment, tuning, etc.


    What is it?
    • ESP32 (dual core microcontroller)
    • Version 1 units (available now) have 3 MCP4922 Dual 12-bit DACs for X,Y,R,G,B and Shutter
    • Version 2 units will have:
      • One MCP4922 Dual 12-bit DAC for X and Y
      • One MCP4902 Dual 8-bit DAC for Red and Green
      • Two internal 8-bit DACs for Blue and Shutter
    • +/-5v bipolar power supply
    • Two TL084 Op-Amps
    • Adjustment pots for X and Y Gain and Offset
    • DB-25 ILDA Out
    • Built-in 4-line OLED status display
    • Powered by any 5volt USB source or a portable USB battery pack
    • Integrated SD card included to store ILDA files (can support up to 32GB)


    Features
    • Entirely self-contained; no computer needed
    • Slightly larger than an FB3 (see last photo above)
    • Control over Bluetooth via iOS or Android mobile app
    • Control over WiFi from any web browser via built-in webserver and web app
    • 12 common test patterns
    • Adjustable scan settings (Scan rate, Scan size, X/Y offset, Blanking Shift, Brightness, invert/flip XY axis)
    • 40k scan rate in non-point-optimized mode
    • 70k scan rate in point-optimized mode (see video #2 below for info about the point-optimized mode)
    • Static shapes and beams with adjustable brightness and color changing effects
    • Upload your own custom ILDA files
    • Supports frames and aminated ILDA files of any size
    • Over-The-Air firmware updates
    • Programmable! You can upload your own code to control the hardware using C++/Platform.io
    • Comes pre-loaded with the PhotoLexicon ILDA FTP file library (over 1,800 Animated ILDA files, cues, patterns, and gobos from X-Laser)


    Inspiration from several other ESP-32/Arduino Laser DAC projects:
    • Instructables:Arduino Laser Show With Real Galvos by DeltaFlo
    • ESP32 Laser Show by Atomic14
    • OSLC by Chris Favreau
    • OpenILDA DAC board by Arjan (RaspPi)
    • ESP32 DAC by AshEvans81/ ElectronAsh (twitter)


    You can see a full list of all the projects, libraries, and tools that helped me get this done here: https://ildac32.com/credits.php

    I also wanted to thank buffo, araugh, Aberry, Cfavreau, Bradfo69, Telmnstr, Ekeefe, and DZ for their invaluable help along the way!

    Future Enhancements/Ideas
    • Etherdream Emulator over WiFi coming soon!
    • OSC Server/Client
    • DMX and MIDI control
    • Several GPIO available for future enhancements


    I have a few Version 1 units I'm selling for $149 including U.S. shipping. You can order one on my website here: https://ildac32.com/

    Version 2 units will have a more professional enclosure and will be available depending on how many more people want one of these (and the supply chain).

    Below are some intro videos showing how it works.

    Let me know if you have any questions!

    -Hank





    Last edited by HankLloydRight; 02-07-2022 at 19:56.

  2. #2
    Join Date
    Mar 2010
    Location
    Raleigh, NC
    Posts
    2,250

    Default

    That seems interesting.

  3. #3
    Join Date
    Nov 2021
    Location
    Tucson, AZ
    Posts
    100

    Default ESP-32 DAC

    Hi Hank!
    This looks great! Coincidently, I'm doing something similar with the Teensy 4.1 MCU, but more focused upon 14 MIDI controllable waveforms for generating/playing imagery via usbMIDI from either a MIDI controller or Cakewalk DAW.
    Was an ESP32 fan, prior to my current Teensy laser controller project. Are you using microPython or Arduino's C++ for your code? The Teensy is fully compatible with Arduino's IDE plus Teensyduino's audio library has a great design GUI tool and synth waveform specific libraries. It's like a Rock N Roll Arduino on steroids and speed. Here's my current 7 quadrature waveform generator/mixer/multiplexer prototype looks like in the design tool, which also generates the code to paste into my sketch.
    Click image for larger version. 

Name:	T_Generators.png 
Views:	3 
Size:	325.5 KB 
ID:	58660
    Anyway, just wanted to say, "Nice work." and share my similar path.

  4. #4
    Join Date
    May 2014
    Location
    Connecticut
    Posts
    793

    Default

    Thanks for the reply! You're the second person to mention Teensy to me today. I had looked at the Teensy boards, but they don't have Wifi or Bluetooth, which is essential for ILDAC. (I'm really a software guy and learn the hardware as I go). Teensy does have the SPI SD card which is nice, but I like the integrated Wifi/BLE on the ESP32 and the libraries I'm using to control them. I don't know if there's a similar add-on board for Teensy that can accomplish the same thing with the same libraries. The Teensy is also really expensive! I can get the ESP32s for about $4 each.

    Are you using microPython or Arduino's C++ for your code?
    I'm using regular C++ with Platform.io and VisualStudio Code. I had been using the Arduino IDE for years prior on other projects, but when I wanted to do things here like interrupts to drive the point clock and using direct registers to send data to the DACs as quickly as possible, I had to access the expressif API calls that really aren't accessible with the Arduino IDE (or not easily).

    Using Platform.io was the best change I made to bring this project to fruition. Arduino IDE is great for starters, but it's like C++ with training wheels. Using VSC and Platform.io is real C++ and really helps enforce good coding practices. It also compiles much, much faster since it only needs to recompile the parts that changed. Arduino has to recompile everything every time since it treats the code as a monolithic block. Also, the Arduino IDE itself just sucks for writing code. Once you move to VSC/Platform.io, you'll never go back.

    That's a very cool project you're working on! Good luck!

  5. #5
    Join Date
    Jul 2010
    Location
    Netherlands
    Posts
    3,297

    Default

    really cool the ESP32 is so much available still despite the shortages.. so a good choice of microcontroller!
    Keep 12 bit for each color channel rather then going 8bit with version 2 btw!

    If anything I'd suggest trying to source 2x 16 bit dacs for the X and Y instead.

  6. #6
    Join Date
    Nov 2021
    Location
    Tucson, AZ
    Posts
    100

    Default

    Quote Originally Posted by HankLloydRight View Post
    Thanks for the reply! You're the second person to mention Teensy to me today. I had looked at the Teensy boards, but they don't have Wifi or Bluetooth, which is essential for ILDAC. (I'm really a software guy and learn the hardware as I go). Teensy does have the SPI SD card which is nice, but I like the integrated Wifi/BLE on the ESP32 and the libraries I'm using to control them. I don't know if there's a similar add-on board for Teensy that can accomplish the same thing with the same libraries. The Teensy is also really expensive! I can get the ESP32s for about $4 each.
    Yes, gotta love the ESP32's REPL, OTA updates, and on board web interface.

    All good points. "Where there's the will, there's a way."
    https://forum.pjrc.com/threads/61297...1-WiFi-(Howto)
    But, TBH, unless you're interested in adding on waveform generation to your product, what's the point, especially considering the price difference?

    Quote Originally Posted by HankLloydRight View Post
    I'm using regular C++ with Platform.io and VisualStudio Code. I had been using the Arduino IDE for years prior on other projects, but when I wanted to do things here like interrupts to drive the point clock and using direct registers to send data to the DACs as quickly as possible, I had to access the expressif API calls that really aren't accessible with the Arduino IDE (or not easily).

    Using Platform.io was the best change I made to bring this project to fruition. Arduino IDE is great for starters, but it's like C++ with training wheels. Using VSC and Platform.io is real C++ and really helps enforce good coding practices. It also compiles much, much faster since it only needs to recompile the parts that changed. Arduino has to recompile everything every time since it treats the code as a monolithic block. Also, the Arduino IDE itself just sucks for writing code. Once you move to VSC/Platform.io, you'll never go back.
    I was using RPi 4 for my dev computer and got rid of VSC/Platform.io because I didn't want MS messing around with my OS updates. But, now that I'm using Winblows for my dev system anyway, I'll get back into that groove, after your rave reviews. Thanks for putting me back on track.

    Quote Originally Posted by HankLloydRight View Post
    That's a very cool project you're working on! Good luck!
    Thanks, I'll need it. I'm still learning both hardware and software by the seat of my pants. Now, I'm wondering whether I could simply replace your ESP32 with a T4.1 and use your DACs and ILDA output hardware. Heck Hank, why not have both? The T4.x uses I2C to address its audio channels and I2S protocol for pushing audio to its DACs. How are you inputting 5/6 analog channels into your ESP32, strictly via WIFI?
    BTW, great job of sharing your credits, as a bread trail. I received most of my guidance from 'Notes and Volts' Teensy Synth series. The rest from folks like you and PJRC's docs.
    Best regards. I hope your DACs sell like hot cakes.

  7. #7
    Join Date
    May 2014
    Location
    Connecticut
    Posts
    793

    Default

    Quote Originally Posted by masterpj View Post
    really cool the ESP32 is so much available still despite the shortages.. so a good choice of microcontroller!
    Keep 12 bit for each color channel rather then going 8bit with version 2 btw!
    If anything I'd suggest trying to source 2x 16 bit dacs for the X and Y instead.
    Thank you for the feedback.

    Since the ILDA spec only has one 8-bit value for each RGB color, is there another reason to go with 12-bit DACs for color?

    My original design has three dual-12-bit DACs, and I can certainly keep it that way to future-proof it, but I thought since I really only need 8-bits for each color, why not use an appropriate DAC and not have to scale up 8-bits to 12-bits. Right now my code can compile for either 12-bit or 8-bit color DACs, so if I decide to stay with all 12-bit DACs, I can remove a bunch of code.

    Also, the 8-bit DACs are half the price of 12-bit DACs, and the 16-bit DACs for X/Y are very expensive!

    I've started on the Etherdream compatibility, and I can see that as a good reason to go with all 12-bit DACs or even 16-bit for X/Y, but that would change the design and cost quite a bit. If I get that working and stable, I'll definitely go back to re-work the design for 16-bit X/Y.

    I welcome any other feedback people may have. It can only help to improve the project! I'm definitely no expert in these areas, and I'm happy to learn more.

  8. #8
    Join Date
    May 2014
    Location
    Connecticut
    Posts
    793

    Default

    Quote Originally Posted by TheHermit View Post
    How are you inputting 5/6 analog channels into your ESP32, strictly via WIFI?
    Right now, all the data sent to the DACs is from the ILDA files on-board (SPIFF or SD card over SPI), so not over Wifi. When I get the Etherdream interface working, I'll see how fast we can push points over Wifi. That's yet to be seen if it will work.

    Quote Originally Posted by TheHermit View Post
    Thanks, I'll need it. I'm still learning both hardware and software by the seat of my pants. Now, I'm wondering whether I could simply replace your ESP32 with a T4.1 and use your DACs and ILDA output hardware. Heck Hank, why not have both? The T4.x uses I2C to address its audio channels and I2S protocol for pushing audio to its DACs.
    Is your project to output to ILDA projects too? Or just a synth project? I'm not sure I understand fully.
    The design for the DACs and op-amps (especially the XY) are mostly from this project: http://www.instructables.com/id/Ardu...h-Real-Galvos/
    The color lines don't need a differential signal, so they're simpler.
    The ILDA output design is from both Aberry and Ekeefe who helped me make the ILDA output lines much more robust (see schematic).

    Click image for larger version. 

Name:	i3.png 
Views:	8 
Size:	180.3 KB 
ID:	58661

    PM me if you need anything else.

    -Hank

  9. #9
    Bradfo69's Avatar
    Bradfo69 is offline Pending BST Forum Purchases: $47,127,283.53
    Join Date
    Jul 2010
    Location
    Wilmington, DE
    Posts
    6,174

    Default

    I find it funny that I'm in the credits as being "invaluable" help. All those other folks have some clue as to most of the techy shit written in this thread. My claim to fame was opening my wallet and waving money at you when we were at SELEM and you were mid way through your presentation. The simple fact that it produces a configurable cue for lumia without the expense of a dedicated FB3 and laptop had me sold, regardless of any other tricks it pulls off.
    PM Sent...

  10. #10
    Join Date
    May 2014
    Location
    Connecticut
    Posts
    793

    Default

    Quote Originally Posted by Bradfo69 View Post
    I find it funny that I'm in the credits as being "invaluable" help. All those other folks have some clue as to most of the techy shit written in this thread. My claim to fame was opening my wallet and waving money at you when we were at SELEM and you were mid way through your presentation. The simple fact that it produces a configurable cue for lumia without the expense of a dedicated FB3 and laptop had me sold, regardless of any other tricks it pulls off.
    Brad, your selfless contributions to the community are enough to be included in that group as you are "invaluable" in so many additional ways. Thank you.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •