Electronics > Projects, Designs, and Technical Stuff

Spearfishing Walkie Talkie

(1/4) > >>

Hello all!
I am getting ready to have a PCB I have been working on assembled, and I was just hoping to run it by some other people (no other EEs here with me).

A spearfishing walkie talkie to help freedivers, snorkelers, and spearfishers track and communicate with their diver partners.
The device does the following:

* Guides you to your partner in the event of a shallow water blackout: https://en.wikipedia.org/wiki/Shallow-water_blackout
* Notifies you if your partner has been underwater longer than a preset amount of time
* Notifies you if you and your partner have drifted farther apart than a preset distance
* Notifies you when your partner submerges or emerges (actually diving below the surface of the water)
* Basic "walkie talkie" function so you can communicate if and when you are seperatedAn early rendering of the device:


* A GPS receiver tracks your location and an IMU tracks your orientation
* A LoRa module transmits your location to your dive partner
* When you dive, the radio link between you and your partner is broken (as water blocks anything except ELF)
* When the link breaks, a speaker sounds on your partners unit indicating that you have submerged
* When the link breaks, a timer starts counting your "elapsed down time."
* If you do not surface in a given amount of time, your buddies device enters "emergency mode" guiding them to your last known surface location to help recover your body and resuscitate you
* If you do surface as expected, the speaker sounds another notification indicating you are back on the surface
There are a few other features, but these are the most critical.

We've actually done some preliminary testing in the water and the water did not interfere in a significant way while on the surface.
Software Demo:

Location Demo

Those first few demos were put together with some TTGO TBEAM boards + a BNO055 imu + piezo buzzer.

The board makes us of the following hardware:

* An ESP32-WROOMU for main the main MCU and mobile configuration
* A generic LoRa module for transmitting location and audio
* A BNO055 for an IMU and AHRS
* A Quectel L89 GNSS receiver
* An ICS-43434 MEMs microphone for audio capture
* A MAX98357AETE for speaker amplification (a la Adafruit)
* A MCP4725 DAC to provide 12bit output to the speaker
* A MCP73831 single cell lipo charger
* A XC6220B331MR LDO linear regulatorThe project makes use of 3 PCBs.
The main "back" PCB which hosts all main components except the GNSS receiver.
A "front" PCB which hosts the GNSS receiver and a larger ground plane (hopefully to help with receiver accuracy).
A "bottom" PCB which contains two concentric, capacitive touch pads to provide contactless button functionality. There must be two to provide a reference between a real button press and submerging underwater.

A 3D assembly of an older PCB layout:

My current PCB layout as of this morning:


* Bearing accuracy - The BNO055 can provide a bearing accuracy of +/- a few degrees. However, if both GPS devices are off by 2 meters (very common in with GPS) there's a scenario where the bearing accuracy will be off by as much as 40 degrees while 5m away from your partner. Here's a graph of the bearing error, distance, and gps error (expressed as "r"): https://www.desmos.com/calculator/wyhzkjrkmo
For this reason, I'm hoping that a Kalman filter will help significantly. But I have never implemented my own GPS + IMU kalman filter, does anyone have an idea of what kind of results I can expect?
* Capacitive touch button in wet environment- I don't want any physical button for the device as the pressure and wet environment really makes it quite a mechanical hassle. So a capacitive touch will be used. In order to remove false positives created while submerged (the water will activate the touch sensor) there are two touch pads and the difference is compared
* Voice Activity Detection- This is a new feature that I recently wanted to add. Because the device really only has one button (long press for on/off, and short press to emergency locate your partner) I would like the device to auto-detect when you are speaking, clean the signal, compress, and transmit over LoRa. I have never done VAD before, but it seems that the new ESP32 libraries from espressif support some level of offline voice recognition/VAD. Maybe there is tflite network that can work? Does anyone have experience with this?
Since the microphone and speaker will be in a water tight enclosure, far away from the user's mouth, I'm worried that something "special" will have to be implemented to amplify and denoise the signal.
* Waterproofing/Potting- prototyping a watertight enclosure presents a lot of challenges. If possible, I would prefer to pot the whole assembly in epoxy (or some such thing) and tack on a universal qi wireless charging receiver. However, I don't have good ideas regarding how to ensure that the microphone and speaker retain functionality if the whole circuit is potted in resin.
* Charging Circuit- This should be relatively straightforward, but I'd like the device to be powered on and charge while plugged into USB/Qi. Currently I'm basically just using two schottky diodes to switch between USB and battery power. Is a circuit similar to what I have here functional? Is it a common implementation?:

 :-+ :-+ :-+ ALL FEEDBACK WELCOME! :-+ :-+ :-+
This is a passion project for myself and a couple spearfishing communities I am part of, and as a result, the feature creep (and the project complexity) is getting out of hand.
Any input at any level to help bring this project to life would be a huge help! I have been working on this alone in my apartment for too long, and an extra set of eyes on this would be a huge help.


Potting RF modules, and antennas in particular will change their characteristics, probably to the point where they won't work to spec, or at all.
Batteries will also be a challenge.

Capsensing in a wet environment is a bad idea. I'd go for something that measures flexing of a thinned part of the enclosure wall - this could potentially be capacitive.

Thanks for the feedback. I think the main use case for this device would push it to about 10-50 meters of depth depending on the group. So most IP68/9 rated buttons would require a lot of force to depress if they are not going going to "self depress" at depth... Likewise a "flex" sensor I worry might also give some false positives, or be very tough to push.

I was hoping that if I provided a reference cap sense and compared the difference between the two I could get away from this issue - excuse my horrible picture:

It worked on a spare circuit board in my kitchen sink :palm:
But who knows how that actually works out in the ocean. Is it really show-stopper?
***imagines waves hitting back of head and water dripping off the button on the device***

I'm surprised that potting an RF modules affects its performance if the material is non-ferrous. Is there some crazy piezo-electric thing happening that I don't understand?

A CB Radio underwater?
A GPS tracker underwater?
And this all in a salt water environment?

Wow. The US Navy's VLF communications have been wrong all the years...

I'll be buying an Eiffel Tower tomorrow.
Nice Sales Plug disguised as a post/thread here, though.


[0] Message Index

[#] Next page

There was an error while thanking
Go to full version