A project to build a transceiver that shares contact information and public keys required for an encrypted communication via a handshake.
I finally got the bitstream upload to the FPGA working.
I messed up the footprint of the ultrasonic mosfet on the PCB I bodged it on a piece of perfboard and it worked out fine and it drives the piezo easy.
And here also comes a two minute video introduction to my project:
Today I began with the work on the electronics, since a basic ultrasonic transmission worked out yesterday. I started with populating an ATmega328 and a 24FC512 (I went for the FC type because that gives me the possibility to later run the digital part of the design at 1.8V to significantly reduce its power consumption while it is in idle mode).
I successfully uploaded an Arduino bootloader to the ATmega328 and was able to reuse the code I wrote for the eeprom programmer earlier, I just had to do some minor changes to handle the 16-bit address range, required by the 512kBits of memory.
I also coded some python scripts that handle automatic upload of FPGA bitstreams to the eeprom.
To verify that the piezos I took from the misting devices can be used as ultrasonic transducer, I setup a test environment for a basic ultrasonic transmission. I simply took two gummy bears to simulate a human body because I did not want to use my finger in the test setup all the time.
I setup a Signal Generator to produce a slow triangle pattern, which I fed into a Voltage Controlled Oscillator and into the X deflection of an oscilloscope. I hooked the output of the VCO to the upper piezo, so it generates an ultrasonic wave, which gets picked up by the gummy bears and is transmitted to the other piezo, which is connected via a high pass filter to the Y deflection of the oscilloscope.
Since I don't own a modern digital oscilloscope to store the data, I took long time exposure pictures of the screen. I combined three picture to create the spectrum below. I also marked some interesting frequencies.
The project is going to be implemented on an FPGA because that gives me the necessary flexibility in the design. I have chosen the ICE40HX1K that requires 34112 bytes of configuration data, so that it fits into a simple 24LC512 eeprom. I have built an Arduino based eeprom programmer earlier, that will serve as an starting point for my project:
I will implement the communication via an ultrasonic link. Ultrasonic is advantageous because it requires a real physical contact between the communication partner. That is due to the big difference in acoustic impedance between water (and therefore human) and air, it causes mostly everything to be reflected when crossing between these media. It makes it almost impossible to fake a key exchange without real physical contact.
I have done some initial experiments with high voltage piezos (right) with a resonance frequency of about 100kHz, but they performed very bad, in fact I was not able to transmit any ultrasonic. I thought about what other piezos I could use and came up with ultrasonic misting devices. I got some (left), if they are suitable is still a point of research.