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

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

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

    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:	22 
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:	9 
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,292

    Default

    That seems interesting.

  3. #3
    Join Date
    May 2014
    Location
    Connecticut
    Posts
    884

    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!

  4. #4
    Join Date
    Jul 2010
    Location
    Netherlands
    Posts
    3,314

    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.

  5. #5
    Join Date
    May 2014
    Location
    Connecticut
    Posts
    884

    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.

  6. #6
    Join Date
    May 2014
    Location
    Connecticut
    Posts
    884

    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:	9 
Size:	180.3 KB 
ID:	58661

    PM me if you need anything else.

    -Hank

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

    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...

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

    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.

  9. #9
    mixedgas's Avatar
    mixedgas is offline Creaky Old Award Winning Bastard Technologist
    Infinitus Excellentia Ion Laser Dominatus
    Join Date
    May 2007
    Location
    A lab with some dripping water on the floor.
    Posts
    9,890

    Default

    Any possibility of adding WAV to ILDA for XYRGBS where s = spare or timecode and optional.

    Steve
    Qui habet Christos, habet Vitam!
    I should have rented the space under my name for advertising.
    When I still could have...

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

    Default

    Quote Originally Posted by mixedgas View Post
    Any possibility of adding WAV to ILDA for XYRGBS where s = spare or timecode and optional.

    Steve
    Anything is possible, but can you please explain this a little bit?
    I have a spare DAC output and op-amp that I'm currently using for 'shutter' right now (because, why not?).. but it can easily be re-purposed for spare or timecode.
    But where would the timecode data come from? I'm not sure the WAV part comes in. Are you saying it's added it into an ILDA file somehow?
    Thanks.

Posting Permissions

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