Project for small underwater pressure and temperature sensing feasible?

Why do want to measure the water pressure? Are you trying to measure the depth of the sensor?
Paul

The DS18B20 is not a thermocouple but a 1-wire device. I've not used one but I've read in this forum they are not very liquid tight.

Do you intend to have the DS18B20 in your housing? If so you can use the bare DS18B20.

Your casing might not be waterproof (for long). When I started working in automotive I was told "... seals leak ...". Condensation and moisture can easily get into most housings. Can you elaborate on you plan?

I don't know if a 430 Mhz device will work (same as the Home Depot remote temperature devices). But I know the lower the frequency the more likely it will be to work.

Hmmm originally I wanted to do wireless because I didn't want the wire to get tangled but if the Arduino device is right next to the display I suppose that wouldn't be a problem... but then would I need a different board?

EDIT: A tether.

To convert from water pressure to water depth.

EDIT: The 10-post limit is killing me here, so ig I'll reply here. ~1atm.

If there's no wire, what prevents the device from just sinking?

Finally! Thanks you.

Your device, as per the data sheet, measures the pressure above the current atmospheric pressure. What will be the atmospheric pressure inside you housing?
Paul

You can measure the water pressure with a tape measure, if you know the atmospheric pressure at the surface.

From the little I just read, RF in water is not feasible. At least at frequencies we consider RF.
That leaves:

  • Wires
  • Light
  • Ultrasound

To help us think of an alternate solution, should we assume this device is in a sealed vessel (the water not your project)?

If not, are you really trying to measure liquid level?

The most useful response would be an explanation of what this device is supposed to do.

OK FINALLY the stupid 10 post 24 hour thing is over

1atm.

It would be attached to something that has neutral buoyancy (a scuba diver or underwater ROV.

The water would be open (i.e. a lake).

I'm trying to measure the depth the device is at in the water, with the surface being 0.

Ok so this device is meant to provide a measurement of depth the device is at within a body of water (with the surface of the body of water at zero) and the temperature of the water at the location the device is at, to a phone so the phone can process and store the data for further analysis once the phone is retrieved.

OK so you need to have either a pressure sensor with absolute reference or the back side of you sensor (i.e. pressure reference) must be open to the surface.

If you go the absolute route, you need to know the temperature and maybe atmospheric pressure. Likely not on the atmospheric pressure but it should be considered before being ignored.

phone can process and store the data for further analysis once the phone is retrieved.

Might an SD card work here? Or possibly an EEPROM.

Thanks for your advice. Which one would be easier to put together / code?

Perhaps. I just feel like a phone would be easier / cheaper since I already have a phone, and it means less coding on the Arduino side of things, but of course please correct me if I'm wrong.

If you really want underwater RF, you may be able to hack a toy RC submarine controller, but transmission distance will be limited. Also, you'd have to reverse the communication direction, which may be problematic.

Thanks for your help. That sounds a bit too complicated, so I think I'll try to make a wire work :slight_smile:

A smart move, but not nearly as much fun. :slight_smile:

I've never tried to connect an Arduino to a phone, however I've used SD cards on several projects and the program is very easy. Arduino has a built in (or add in) library for SD cards. All you have to do is purchase a SD board. like one of these (also look on eBay)

Here is the code I used to verify the SD function on my M0 board:

/*
  SD card read/write
  Mod 01 make file name a string and iterate until we find a unused file name.
  Mod 02 add capability to increment filename.
  Rev 03 tested successfully on Arduino M0

  SD card attached to SPI bus on ICSP Header.
  SD Board power = 5V (for large board with EEPROM)

  based on code created: Nov 2010 by David A. Mellis, 9 Apr 2012 by Tom Igoe
  This code is in the public domain.

driver has a 512 byte buffer then write to SD

Closing the file forces any buffered data to be written to the SD and also updates
the file's directory entry.

If you don't close the file, you will lose all data written the file since it was opened,
not just the last buffer, since the directory entry will not be updated.
*/

#include <SPI.h>
#include <SD.h>

// *** SD Card declarations **************************************************
// ***************************************************************************

#define SDCARD_CS_PIN 4

uint8_t fileNumb = 100;
char dataFile[8];
bool SD_Error = false;

File myFile;			// create instance of a "File" class

void setup() {
  SerialUSB.begin(115200);
  delay (2000);
// Initializing SD card....
  if (!SD.begin(SDCARD_CS_PIN))
    {SerialUSB.print("initialization failed");
     SD_Error = true;
    }

// loop until we find a file that doesn't already exist.......
  do
    {
     itoa(fileNumb, dataFile, 10);  // (value, Array, base)
     const char *extension = ".csv";
     strcat(dataFile, extension);  // syntax  strcat(dest, source)
     ++fileNumb;
    } while (SD.exists(dataFile));


SerialUSB.print("READY TO OPEN FILE FOR WRITING   = ");
SerialUSB.println(dataFile);
  myFile = SD.open(dataFile, FILE_WRITE);   // <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
SerialUSB.println(myFile);
  // if the file opened okay, write to it:
  if (myFile) {
    myFile.println("data from boiler");     // <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
    SerialUSB.println("data from boiler");
    //SerialUSB.print(" data written to file:   ");
    myFile.close();                         // <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
 SerialUSB.println(dataFile);
    }
  else {
    // if the file didn't open, print an error:
    SD_Error = true;
    }
  SerialUSB.print("SD_Error = ");
  SerialUSB.print(SD_Error);
}
void loop() {
  // nothing happens after setup
}

You should also consider how you might / if you need time to be tagged to your data.