How to Connect an Electrical Conductivity Sensor to a Raspberry Pi
If you have a saltwater pool and are using a chlorinator to provide most of the chlorine then knowing the amount of dissolved salt in the water is crucial to maintaining the health and safety of your pool.
Electrical Conductivity sensors provide a reading in micro-siemens, which is a measure of conductance (as opposed to resistance). Using this we can calculate a salinity reading in parts per million(ppm).
The Atlas Scientific Electrical Conductivity sensor is an industrial grade sensor that works well with the Raspberry Pi, it is fully submersible up to the BNC connector in saltwater. The sensor can work in serial or via the I2C protocol, for this project you will be configuring the sensor to use the I2C interface on the Pi.
To configure the Pi I am assuming that you are running the latest version of Raspian and have the ability to connect to your Pi either through SSH with putty and FTP with Filezilla, or directly with a keyboard and monitor if you haven’t set-up your Pi yet then check out my getting started section.
In this tutorial I will be using the following materials:
- Raspberry Pi (2, 3 or 4)
- Micro SD Card
- Power Supply
- Atlas Scientific Electrical Conductivity Sensor Kit
- Jumper Wires
- Adafruit T-Cobbler Plus (Optional)
- Raspberry Pi Case (Optional)
The first thing we need to do is enable the I2C interface on the Pi. This is done by entering the following at the command prompt to start the configuration tool
select option 9 – Advanced Options
select option A7 – I2C
select “Yes” for all the questions and reboot the Pi
After the reboot ensure that all of the Raspbian packages are up to date by running the following commands.
Next, check/add the i2c tools package
This should produce the following without the sensor attached.
Now that we have our I2C module working correctly we can go ahead and connect our EC sensor.
When describing the physical pin connections I will be following the GPIO pin numbering convention shown below.
Firstly we need to get the EC circuit into the correct mode, when delivered the EC circuit will be in UART (serial) mode, the EC circuit has to be manually switched from UART mode to I2C mode. When this is done the EC circuit will have its I2C address set to 100 (0x64 Hexadecimal).
Using your breadboard perform the following actions
- Cut the power to the device
- Disconnect any jumper wires going from TX and RX to the Pi
- Short the PRB pin to the TX pin
- Power the device
- Wait for LED to change from Green to Blue
- Remove the short from the probe pin to the TX pin
- Power cycle the device
The device is now I2C mode.
The Pi and EC circuit are now configured so we can go ahead and connect it all together.
Assuming that all of the parts are now mounted on your breadboard
- Connect the GND pin of the EC circuit to the ground pin of your RPi.
- Connect the TX(SDA) pin of the EC circuit to GPIO pin 2.
- Connect the RX(SCL) pin of the EC circuit to GPIO pin 3.
- The 2 PRB pins should be connected via your breadboard to the center and shield pins of your BNC connector.
- Finally, power your EC circuit by connecting the Vcc pin to the +3.3V pin.
You can now run a quick test to prove that we are set up correctly, from the command prompt enter the following:
you should see the following response, if not then check your connections, ensure the light on the EC circuit is blue and reboot your Pi.
In the image above I have 3 sensors connected to my Pi, the EC sensor connection is indicated by Hex value 64. The factory pre-set address for the EC sensor is 100 or 64 in hexadecimal as mentioned above, if you have more than 1 EC circuit connected then you will need to specify a different value. To do this we need to add some python code to our Pi.
Atlas Scientific provides the python code that I will be using here for interfacing with the EC Circuit.
We start by importing the required python modules
Next, we add the class code to interface with the EC circuit (or any other Atlas Scientific circuit for that matter)