prototype Dance Dance Revolution controller where the sensing happens with piezoelectric sensors attached to an arbitrary flat surface
Go to file
colin 6337c8a2ff add missing scripts to repo 2022-07-01 00:13:00 -07:00
doc/data add existing measurements to the repo 2022-07-01 00:12:52 -07:00
scripts add missing scripts to repo 2022-07-01 00:13:00 -07:00
src median-filter the samples before sending them over itm 2022-06-28 03:25:01 -07:00
Cargo.lock add missing Cargo.lock 2022-06-28 03:30:56 -07:00
Cargo.toml median-filter the samples before sending them over itm 2022-06-28 03:25:01 -07:00
README add missing README 2022-06-28 03:31:15 -07:00
openocd.gdb Reading from external input and setting the LEDs 2019-09-15 18:17:33 -07:00

README

Goal is to either sense foot positions, or foot movement, across a large flat pad.

METHODS
=======

Method 1a: Piezoelectric sensing of foot presses
---------
Foot presses create mechanical waves. Piezoelectrics can turn these waves into voltages for sensing. Place an array of piezoelectrics along the border of the platform and you can triangulate foot stomps

Method 1b: Surface acoustic waves
---------
Use a piezoelectric device to insert an acoustic wave onto the pad, and an array of piezos to detect its phase/amplitude at locations along the border. Pressure differences from standing feet will affect the phase/amplitude, and you can create a pressure map of the surface.
See: https://en.wikipedia.org/wiki/Surface_acoustic_wave_sensor

Method 2a: Capacitive displacement sensing
---------
Two parallel conductive plates form a capacitor. If pressure on the top plate deforms it, that changes the capacitance. Measure this and triangulate it to find foot locations.
This is sort of like turning the pad into a giant microphone, but with triangulation.
See: https://en.wikipedia.org/wiki/Capacitive_displacement_sensor


WORK SO FAR
===========

Method 1a is demonstrated. It works on rigid surfaces. See doc/data/itm-on-table-drop-30lb-halfway-through.wav: this was achieved using 181.5 clock single-ended ADC sampling with delay(1) between each sample with no external amplification. The piezo was held in place using an empty water glass.

On pad: doc/data/itm-on-pad-heavy-hit-halfway-through.wav demonstrates the same setup on a Polish pad on carpet but with a full glass of water.

doc/data/itm-on-pad-tape-big-hit-4clock-1024buffer.{wav,png} shows what we get with a BIG stomp if the sensor is taped to a pad
  it's really hard to get.

Tried using flat piezos and the L-shaped ones, both behave similarly. Really difficult to get reliable waves.
Try:
  - Differential ADC mode
  - Add an op-amp
  - Try using the mic line-in on my computer
  - Get a USB ADC to prove the concept
  - Borrow UW's oscilloscope
  - Buy a cheapo scope?

doc/data/itm-sandwich-51medianfilt.png shows results after taping a piezo to a flat surface, loosely setting an acryllic plate on top of it, and then tapping the plate moderately.
There is median filtering on the device side, plus additional filtering on the PC side.

Median filter seems to be key. Even without the plate, the device can _detect_ stomps from 4-5 inches away, though not quite as cleanly.
Placing the piezo such that half of it is in air seems to help detection. I suspect if the whole platform is oscillating, I want the other end of the piezo somewhere that's more fixed, in order to detect the oscillation of the platform itself. Alternatively, I believe a longer piezo element attached all to the surface could help. A smaller element should still receive everything, but the high frequencies are attenuated. Perhaps then, a HPF could be installed to mitigate this attenuation?
Could also try replacing the device-side median filter with a more tuned filter (HPF)

data/itm-pad-drop-weight-3in-away-covered-tape.png: shows clear signal dropping a 30lb weight near the sensor, even when the sensor is fully attached to the pad. Whole signal is about 5 ms.
  51-median filt device side
  5000-sample DC removal PC side
  timescale is accurate

Resources (acoustic touch screen):
  - https://www.youtube.com/watch?v=ZoAslMiukAQ
    Turning a chalk board into a touch screen using an accelerometer.
    Requires calibration: I think it works using just one accelerometer by correlating the input against specific waveforms recorded for tapping in specific areas.
      Because of the reflections from the edges of the surface, it's able to work with just one sensor.
  - https://www.elotouch.com/touchscreen-components/catalog-product-view-id-82.html
    off-the-shelf SAW touchscreens (for sale?)
  - http://a-touch.com.tw/product-saw.htm
    shows how SAW touch screen works (it's like I thought: transmit -> interfere (from finger) -> receive

Resources (using Piezos)
 - https://www.element14.com/community/community/arduino/blog/2014/12/07/tis-the-season-for-arduino
    Awful, but a video showing that sensing via table vibration IS doable.
    Also, shows scope waveform but without any scale.