Sump Pump, Aquaponics & Aquarium water level monitoring

I seem to like flooding my basement… Usually by overfilling one of my aquariums, or intentionally putting 55 gallons of water in a 45 gallon aquarium. Sometimes, I overfill the swimming pool in the back yard.

So I decided to put together a monitoring system. It will monitor my sump pump, letting me know when it is getting used hard so I know to pay it more attention. It will monitor my Aquaponics grow bed, telling me when my flood and drain / ebb & flow grow bed isn’t functioning correctly. It will also monitor my fish tank water levels and let me know when the water is getting low, or more importantly when I am filling it and it gets to where it ought to be.

This is put together with Raspberry Pis. An older original B model for the fish tank because I have it and it’s close enough to Ethernet that I can run a wire to it. The Sump Pump is getting a Zero W as it is further away, and I needed to buy something and it was the cheapest option ($10).

I am measuring water height by 2 methods. An ultrasonic distance meter and a differential pressure setup.

I coded up the project a couple of different ways, learning as I went along. I ended up starting with the hardest methods first, and moving towards easier methods. Starting at OS level triggering of shell scripts, moving through python programming, and finally landed on Node Red. I am happy for the path I took as I now have a solid understanding of what a Raspberry Pi can do for me and how to control it at multiple levels. Node Red is how I will be building most of my projects going forward as it’s easier for the kids to understand.

Node Red

Node Red is a graphical programming environment that you use with a web browser. This means a quick tweak can be made from your cell phone! Not the best experience, a cell phone, but doable.

The core concept  of Node Red, is you drag ‘nodes’ or blocks onto your screen and set them up with the particular details that node needs. Configuration settings such as the specific pins on the raspberry pi you have a sensor plugged into, a login for an online service, etc.

You then connect the different ‘nodes’ together with lines, and the whole thing just starts working. Amazing, really.

You program a computer using the same methods you would use to explain a process to another person. Draw a bunch of boxes saying this box does this thing, and connect the various boxes together with lines showing how different events are chained together.

When you use the Node Red menu in the Raspberry Pi, it opens up a text window, with a bunch of stuff on the screen. In amongst that text, is instructions on how to set Node Red up to turn itself on automatically when the Pi starts. Now you have automatic monitoring even if the power goes out and comes back on.

Direct reading of water level via sonar

Ultrasonic distance meters turn to out to measure the distance to a water surface fairly well. The water needs to be reasonably flat & calm for it to work reliably.  The thing basically beeps at a high enough frequency that we can’t hear it, and listens to see how long until it hears it’s echo back. A little bit of math, which computers happen to be good at, and you have a distance measurement!

I picked up a bunch of HC-SR04 sensors for cheap from eBay.  You can get them from reputable sources for around $5 each.

The HC-SR04 sensor tutorial I followed when writing code is found at https://www.modmypi.com/blog/hc-sr04-ultrasonic-range-sensor-on-the-raspberry-pi

If you want to learn about all of this, it is good to work through the tutorial. I ended up dropping the tutorial method and used Node Red.

HC-SR04 Node Red sensor, calibration, and logging flow.

Node Red needs an add-on node to ‘talk’ to the sensor. The one I found is https://flows.nodered.org/node/node-red-node-pisrf . Install it according to the instructions, restart Node Red (or the Raspberry Pi if you haven’t figured out how to restart Node Red) and reload your browser window for it, and you can now start taking distance measurements.

Differential Pressure water level method

Have you ever noticed that if you hold your finger over the end of a straw, stick it in your glass, the water goes up the straw only a little bit? When you do that, you are increasing the air pressure inside the straw.

If you compare that air pressure inside the straw, to the air pressure outside the straw, you are working with differential pressure.  We can use this to simply see the cycle of water rising and falling, or calculate the actual height of the water inside the pipe. I don’t know what physics principle to use to do the math for calculating actual water height.

I used a BMP280 temperature and pressure sensor. The adafruit library didn’t work well for me. I did however find https://github.com/ControlEverythingCommunity/BMP280/blob/master/Python/BMP280.py which worked well.

The Node Red library has a bug in it at the moment. When you try to use it with the BMP280 module, it crashes Node Red. If you see this happen, the fix is simple, you need to call in the bigNumbers.js library in the right spot.  Once you do this, things work correctly.

The BMP280 had some issues with longish wires. I ended up using some Cat5 with the tip from https://www.raspberrypi.org/forums/viewtopic.php?t=82049 for how to pick the wires to get the best performance. This worked well, if a bit time consuming to pigtail the doubled up wires so I only had 1 wire to solder onto the printed circuit boards.

Seeing the data

I logged the data to io.adafruit.com using MQTT. The library I used is found at https://github.com/adafruit/io-client-python for coding things the hard way. Node Red has a built in MQTT node as well.

I used Adafruit’s IO tool because it’s cheap (free) and easy, and is great for learning how to do all of this. There are other options available from Amazon,  Azure, Google, IBM, and many many more. Adafruit’s tool is great to start out with.

Sensor readings in a Bell Auto Siphon Fail to Break mode
Sensor readings in a Bell Auto Siphon Fail to Break mode. The ‘gap’ in the middle of the chart is from the auto-siphon failing to break siphon. We see it in both the upper graph measuring the actual water height plus the lower graph measuring the pressure elevation in the stand pipe.

 

 

I recently picked up a used CNC Router

It's a big machine for the hobby side of things. I think they call it a 60150. It will hold a 2 foot by 4 foot piece. 220v water cooled spindle. It's a solid machine.

It had been suffering from disuse – not neglect, just simple not getting used enough. Rust pitting on the important bits and some rusting on the threaded rods. A couple of years in an unheated garage without being used to re-coat all the parts in oil will do this.

Not too much work to clean it up. It took a couple of evenings over a couple of weeks. Last night I got the electrical stuff all sorted and got it to move!

So I dug up a bucket, and connected water and electricity to the same spot on the machine. This is generally a bad idea in my experience.

It cuts! A little bit of tweaking, and it cuts correctly!

About an hour into running it, it gave an error and shut down. Not really sure why, but I think it's because the controller got hot. There was a reading of 75c on the screen when I was pushing buttons. I think I found why the controller box was open.

Next project is to improve the airflow in the controller box. I have a plan for this. I will install rubber grommets around the holes the wires poke through too.

I also need to learn about "Speeds and Feeds". CNC Routers have an ideal window where they work well for a given material. The 3D printing methodology of slowing down, sorting things out, then speeding back up does NOT apply to CNC Routing it appears.

Lots of photos in the album. Each one is captioned.

CNC Router Refurb
27 new photos · Album by Mike Creuzer

I made a leather business card holder for my new business cards

I 3D printed the frame and embossing element. I also incorporated a NFC tag so I can use the case to transfer info digitally from the case as well.

A bit of high-tech, and a bit of old-school leather work. My favorite way of doing things. My leather working skills aren't good yet, but they are getting close to fair. I love being able to do stuff.

It's even on GitHub if you want one of your own. https://github.com/creuzerm/openscad-projects/tree/master/Leather%20Business%20Card%20Holder

Lots of photos with descriptions to look at in the album.

In album 3D printed & Leather business card holder

My new business card! I added a NFC tag inside the case so I can also just tap a smart phone to the business card holder and transfer the data that way. A very high-tech business card holder.

The logo doesn’t show well under flash yet. I suspect a few months in a pocket will change that. You can see how I started at the computer & 3d printer to make the business card holder.

Printing a plastic frame and an embossing logo at the same time.

The printed frame. Note the rivet holes, sewing holes, and the steampunk themed monogram.

My printer is pretty loose and sloppy, so I clean up all the holes with a drill press. A few minutes here saves lots of frustration when sewing.

I am loving the rotary cutter for cutting this thin leather. No pulling and stretching and causing ill-fitting leather sides.

The leather is VERY thin, so I bond it to plastic to make it more resilient. This happens to be a Mt Dew 2 Liter Soda Bottle. Lots of poking holes so I can sew it later.

A couple of years ago, I assembled a steampunk styled belt http://mike.creuzer.com/2013/11/i-have-had-a-belt-for-over-10-years.html…

A couple of years ago, I assembled a steampunk styled belt http://mike.creuzer.com/2013/11/i-have-had-a-belt-for-over-10-years.html and I have been using a blank belt buckle with it. Today, I made a custom steampunk/blacksmith styled belt buckle. A bit of leather work, a bit of computer work, and my 3d printer. So much fun!

In album Raised Leather Belt Buckle

It only took a minute to print, but a long time to design and layout. It’s my Initials MJC arranged so the shapes look like “Me”.

I scaled the file, but forgot it was radius and not diameter, so the first print came out too big. A bit of scaling in Slic3r fixed that quickly enough.

Glued up the belt with contact cement.

A few minutes ‘clamped’ curved the printed emblem.

I think the emblem under the leather works.

I cut a bunch of darts into the leather so I can fold the leather over.

I love binder clips. They are great for clamping stuff.

The finished buckle, waiting for the contact cement to finish drying or whatever it does.

I like the raised effect on the leather.

The finished belt buckle. It’s a ‘kids’ buckle and not a full size one. I am not big on huge buckles. So it pinches the belt a bit. Steampunk styled belt, with a custom belt buckle to suite.

My personalized belt buckle.

I made a custom leather belt case for my custom wireless charging flip cased Galaxy…

I made a custom leather belt case for my custom wireless charging flip cased Galaxy Note Edge. It's been a fairly drawn out project getting the two cases made – from March until now. But the results are worth the effort.

The main design goal was to not bend my phone when I sit on it in my pocket as it is HUGE I also wanted to show off the nifty 'edge' feature.

I bought all the materials for both aspects of the case at the same time. I will also be making a matching Leatherman holster as well as a 2nd iteration of my home made wallet – http://mike.creuzer.com/2014/07/i-made-a-new-wallet-last-night.html. There will me more scrap leather after that, so I am sure some more projects will come of that 1 piece of leather.

The Wireless Charging Flip Case details are at http://mike.creuzer.com/2015/08/i-few-months-back-i-bought-a-galaxy-note-edge-on-ebay.html

I had made a phone case for a different phone with details found at http://mike.creuzer.com/2014/01/i-made-a-phone-belt-case.html This other case has a built in solar charger which is pretty darn cool. That feature didn't make it into this case as it's not really worth the effort as the solar panel that small takes 3 days to charge and gets me 30 minutes of usage.

Lots of pictures to look at with descriptions for each image with this project.

In album Note Edge belt case

The finished product. The case is designed to make the edge display visible on my phone while it is in the belt case.

A little bit of planning. The black leather is very stiff so I have a strong back to attach the belt clip to.

A bought belt clip and leather, and a pair of 3D printed sides. There are holes in the printed parts so I can sew through them to sew the leather onto the ends.

I drilled holes in the heavy leather for sewing and punched holes for the belt clip. The big hole in the printed plastic is for a hinge for a retaining strap which I don’t think I will need.

The green leather is bonded to the heavy leather. Glue it and sew it. I find my stitching looks neater if I am not fighting the pieces moving while I am trying to sew.

Riveted the belt clip on. I like the fancier rivets.

My rivet job is less than perfect. The flap of green leather on the right is folded over to protect the phone from the rivet bits seen here.

Phone is now protected from the rivets!

Yeah, I make stuff using trash. The green plastic is a bit of Mt. Dew 2 liter soda bottle. When the curve seen here is flattened, it wants to curve 90 degrees off of the main curve. I glued it on so the curve tips the top front out so it’s easier to get the phone in.

You can see how the plastic wants to curve. Big Binder clips are the best assembly tool ever!

2 needles, 6 foot of thread on each side. I really need to make a stitching horse. You can see here how the phone case matches my phone case.

I sharpen my glover’s needles on my diamond sharpener. You can see I have 1 side stitched up. Looks pretty good!

The Galaxy Note Edge in the custom flip case, next to the the custom belt case.

It slides right in, like it was designed for it! Oh, wait, I did design it to do this!

This was my desired end result. Being able to see the ‘edge’ on my phone and the data that it can display.