I THINK ∴ I'M DANGEROUS

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
seismometer_positioning_system [2016/02/18 18:15]
zashi [Seismometer Positioning System]
seismometer_positioning_system [2016/02/19 19:36]
zashi [Communication Protocol]
Line 29: Line 29:
  
 The net effect should be a graphical, real-time or near-real-time tracking of foot steps. The net effect should be a graphical, real-time or near-real-time tracking of foot steps.
 +
 +===== Communication Protocol =====
 +
 +The higher level bits will be written in Tcl, thus Tcl structures (strings, lists) will be used within the protocol. The combination of seismometer and MCU/Control board will be referred to as a node. There will be 3 (or more) nodes. Each node upon detection of a vibrations above a certain amplitude within a certain frequency range (to be empirically determined) will be transmitted to a central server via TCP. The data transmitted will be a line-delineated (and line-buffered) tcl list consisting of, in order, a time-stamp in microseconds,​ a list of 2-element lists each consisting of a frequency and corresponding amplitude.
 +
 +E.G. If node1 sensed at 1455909894376591 microseconds epoch time a 60hz signal at 0.2 amplitude and a 45hz signal at 0.6 amplitude, it would send
 +
 +    1455909894376591 {60 0.2} {45 0.6}\n
 +
 +Plan B:
 +
 +The above method may be too slow. the devices may need to stream raw vibration data directly to the central server via UDP. IP communication induces its own lag, but the devices could perhaps be calibrated to take this into account.
 +
 +Plan C:
 +
 +Plan B may also be too slow. Perhaps a hybrid solution? A small C-program continually takes measurements and continually pushes microsecond timestamped data samples to a central server that handles all processing.
 +
 +E.G. Node 1 would, as fast as possible push out binary data in the form of 
 +
 +    <long unsigned int ts><​double sample>
 +
 +Where ''​long unsigned int ts''​ is the epoch timestamp in microseconds and ''​double sample''​ is the raw data coming off the ADC.
 +
 +It would then be up to the server to buffer the data from each node into a signal and perform a Fourier Transform to determine frequency and amplitude. ​