Monday, October 4, 2021

Ghost writing Halloween Project using Ultrasonic Phased Array

Special thanks to UPNALab (https://www.instructables.com/SonicSu...) for providing all the tools necessary to build this Halloween project. Much of the heavy lifting was done by their work.

Introduction:

I've wanted to make a halloween project for a while now.  The neighborhood kids always get a kick out of the decorations we put out.  When I came across the SonicSurface project I knew I could retask it to create something scary for the local kids.  

My current intention is to conceal one 256 transducer array above a dusty surface and remotely trigger (or via simple motion sensor) "Spirit" writing on the surface.  I want to make the surface obvious that nothing is concealed within, so the kids can actually touch the dust too... Resetting the dust (baking soda?) would have a bin of baking soda and a servo with compressed air to "redistribute" between groups of kids. 

PLEASE COMMENT WITH TIPS OR IDEAS - I WOULD LOVE TO HAVE THE FINAL VERSION WORTHY OF SCARING MY LOCAL NEIGHBORHOOD KIDS (Maybe Adults too?)

Build and Prototyping:

So first I went through the SonicSurface build instructions.  Their Instructables.com write up is an excellent read and has many useful details.  


Here is one of the completed arrays.  I had a couple issues with the driver ICs on the reflow front, but managed to fix them with a hot air gun. 



I designed and laser cut a temporary frame to test the two arrays.  I used the default spacing of 0.243 meters (found in the source code somewhere in the github of upnalab. Testing went well, and luckily I didn't have to calibrate any of the transducers.  

I placed a piece of wood and black paper on the bottom, disabled the lower array and spread baking soda over the surface.  I then recorded an "animation" in the ultraino software and played it back with the top array activated. 


It traced out a "scary" star.  

Now that I have the proof of concept working I plan on putting two arrays side by side, and incorporating the ESP32 controller that UPNALABs developed for sending remote sequences.

I also need to design something spooky to hold all of this and make it look like a spirit is authentically tracing its finger to spell messages.  

----------------------------------





I decided to go with a "ornate" box suspended above a table.  I'm using a makita battery adapter (paid link) as I have alot of Makita tools .  I then have the 5V converter t(paid link) hat can take 8 to 35 volts input to power the FPGA.  I happened to have a Grove time of flight sensor (paid link) (to the left of the ESP32(paid link) ) that I'm incorporating to make it easy to suspend above any surface without having to specify the Z height to the algorithm that generated the pressure point. 



I'm going to laser cut veneers to glue over the outside of this, but gave a try at a portrait of the "spirit" and skeleton hands on the underlying part.  I had some other scary ideas, but the kids in the neighborhood can be pretty young and don't want to traumatize anyone :) Too much.  The laser settings were off for the image and need some tweaking.  The makita battery is a little taller then i realized, I may also tweak the veneer to cover this better.  

I used 1/4" baltic birch(paid link) ; this should be very sturdy.  



Glue dried and was able to mount the components.  Currently lasering the 1/8" "veneers" with the ghostly face etc.. Will post once complete.

Next step will be to code the ESP32 web server to provide a canvas I can trace and save animations on.  The ESP32 will then read the distance from the time of flight sensor for the constant Z distance, and play the animations x y components via the setfocalpoint calls.  

I'm debating a gesture based activation for the kids to use with the TOF sensor, or if I'll just kick of random animations on my phone via the ESP32 web server.  


I have most of the enclosure done with veneers put on.  I may change these as ideas come in.  The ESP32 server isn't working yet for points on a surface, so I still have the PC sending the animation. I may just export the hex data from the animation and use that as preset animations on the ESP32 if I cant figure out their algorithms.


Had some issues suspending it above the desk using a skeleton arm... So I just added legs to this version. Currently designing the veneers for it to make it look a little better. The time of flight sensor is now used to initiate one of the animations loaded into the ESP32. It will then cycle through. Now for looking into a good way to "dust" the surface.

Considering Sunday is Halloween I'm going to declare this project finished for this year. Next year I'm thinking of using two in a sandwich to make a ghost float around a graveyard in a scary diorama.