2018-07-02 at 6:06 PM #12309
We have deployed a water depth station using a Maxbotix MB 7389 ultrasonic sensor with a Mayfly datalogger. It is dutifully reading the sensors every 11 minutes and uploading the data to data.enviroDIY.org. We are using “Logging_to_EnviroDIY,” modified for our sensors. The data site is Paulding County High School Retention Pond (PCHS_POND), in northwest Georgia. Every few data points the reading from the MB7389 is 7389 or 738. Looking at the code in MaxBotixSonar.cpp, it appears that this might be part of the sensor model number which is one of the six header lines reported by the sensor when it is powered up. Any ideas about whether or not my guess is correct and how to fix it, would be appreciated. I am thinking about simply adding a condition to the existing bad data trapping “if” statement to ignore 7389 or 738 and retake the data point.
2018-07-23 at 1:09 PM #12321
I am also having a similar issue with the MB7989 with MB7955 and EnviroDIY Mayfly. My sensor was deployed for four days, and when I went back to check on it and swap out an SD card, when it turned back on, it would only read a distance of 7389, regardless of the actual distance. I am also interested in any ideas as to how to fix this issue.
For reference, my sensor is mounted in an Agri Drain water level control structure with a v-notch weir to ultimately record flow in gallons per minute discharging from a pond.
2018-07-25 at 12:38 PM #12329
I have an update. I think the problem comes from the reading the sensor with SoftwareSerial_ExInts. There is data left in the read buffer after the read. I’m not sure if this is a real fix, but it seems to work. There is a section of code in MaxBotixSonar.cpp that reads the six header lines from the sensor, after the power is turned on. I changed it to read 20 lines. This means that it reads everything left in the buffer and you are getting new data.
MS_DBG(F(“Parsing Header Lines from MaxBotix on “), getSensorLocation(), ‘\n’);
for(int i = 0; i < 20; i++)
String headerLine = _stream->readStringUntil(‘\r’);
MS_DBG(i, F(” – “), headerLine, F(“\n”));
2018-08-16 at 4:03 PM #12346
Kevin and David, thanks for posting these issues with the MaxSonar. David, thanks also for the photos!
I’ve also had funkiness with my Maxbotix deployments this summer when using the EnviroDIY ModularSensors library. For me it just seemed like it was repeating the last values.
David, thanks for showing everyone that quick fix and for helping me make the connection that the issue was likely with with SoftwareSerial_ExInts. I think that has been the trouble, but in an indirect way.
Anyways, I think it’s been fixed on one of our development branches, which I’ll point you two to for testing.
The history is that Sara Damiano did a ton of work this spring to stabilize code, especially with anything related to SoftwareSerial including Arduino-SDI-12 (see ModularSensors/releases and also Arduino-SDI-12/releases. However, she didn’t quite finish pulling all of that work back into an official release before heading out on maternity leave. See https://github.com/EnviroDIY/ModularSensors/pull/153. Anyways, one of her commits (e1e3ecc) added a buffer cleaning step to the MaxBotixSonar.cpp. The code in her pull request also points to an updated version of the Arduino-SDI-12_ExtInts library.
Anyways, I’ve successfully gotten stable data from a MaxSonar with the new code with at:
;ModularSensors *calcVar* branch as of June 4, 2018: head, 52 commits ahead of 0.11.6 https://github.com/EnviroDIY/ModularSensors.git#4a10279e1031513391ce03d1914684ce5db812ff
If either of you use PlatformIO IDE, you can easily reconfigure your libraries to point to this code by adding the line above to your .ini file.
Otherwise, download the repo at that point in the commit tree by going here:
Let us know how that works. Meanwhile, I’ll be working toward moving that into a new release.
You must be logged in to reply to this topic.