Dissolved Oxygen and Temperature using Arduino: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
|||
| (7 intermediate revisions by the same user not shown) | |||
| Line 1: | Line 1: | ||
= References = | |||
* [https://www.theaquariumwiki.com/wiki/Walstad_method Walstad Method for Aquariums] | |||
* [https://aquariumscience.org/index.php/15-8-walstad-aquarium/ Walstad Method Science] | |||
*[https://cdn.preterhuman.net/texts/science_and_technology/nature_and_biology/Ecology/Ecology%20of%20the%20Planted%20Aquarium%20A%20Practical%20Manual%20and%20Scientific%20Treatise%20for%20the%20Home%20Aquarist,%20Second%20Edition%20-%20Diana%20Walstad.pdf Ecology of the Planted Aquarium Book] | |||
* [https://buceplant.com/blogs/aquascaping-guides-and-tips/the-walstad-method-tank-guide Walstad Method Tank Guide] | |||
= Arduino Code - Temperature data = | = Arduino Code - Temperature data = | ||
* Code executed using Cron | |||
<syntaxhighlight lang="python"> | <syntaxhighlight lang="python"> | ||
| Line 80: | Line 87: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
= Arduino Code = | = Arduino Code = | ||
| Line 141: | Line 147: | ||
= Python code to read Temp and Dissolved Oxygen data = | = Python code to read Temp and Dissolved Oxygen data = | ||
* Code running constantly in the background | |||
<syntaxhighlight lang="python"> | <syntaxhighlight lang="python"> | ||
#!/usr/bin/env python3 | #!/usr/bin/env python3 | ||
| Line 189: | Line 197: | ||
print(f'The data is = {data}') | print(f'The data is = {data}') | ||
if count > | if count > 2000: | ||
f = open('/home/pi/Aquarium/aquarium_DO_temp.txt','a') | f = open('/home/pi/Aquarium/aquarium_DO_temp.txt','a') | ||
f.write(data) | f.write(data) | ||
| Line 227: | Line 235: | ||
</syntaxhighlight> | |||
= Photos of Walstad aquarium = | |||
''' Plot of water temperature and dissolved oxygen during first week of aquarium establishment''' | |||
[[File:Screenshot 2024-03-08 at 5.21.24 pm.png | 900px]] | |||
'''Walstad aquarium heavily planted''' | |||
[[File:Walstad aquarium 8 Mar 2024 IMG 7232.JPG | 900px]] | |||
'''Walstad aquarium with sensors to monitor temperature, DO and EC''' | |||
[[File:Walstad aquarium 8 Mar 2024 IMG 7234.JPG | 900px]] | |||
= Python code DO EC temp and Chem = | |||
<syntaxhighlight lang="python"> | |||
#!/usr/bin/env python3 | |||
# dweet data | |||
import serial | |||
import datetime | |||
import time | |||
import requests | |||
import pandas as pd | |||
import plotly.express as px | |||
from water_variables import * | |||
count = 0 | |||
conductivity = 0.0 | |||
if __name__ == '__main__': | |||
# dissolved oxygen | |||
ser = serial.Serial('/dev/ttyUSB0', 9600, timeout=1) | |||
ser.reset_input_buffer() | |||
# conductivity | |||
serEC = serial.Serial('/dev/ttyUSB1', 9600, timeout=1) | |||
serEC.reset_input_buffer() | |||
while True: | |||
count = count + 1 | |||
time.sleep(0.1) | |||
if serEC.in_waiting > 0: | |||
time.sleep(0.1) | |||
try: | |||
lineEC = serEC.readline().decode('utf-8').rstrip() | |||
#print(f'line {lineEC}') | |||
except: | |||
lineEC = "0" | |||
try: | |||
conductivity = lineEC | |||
except: | |||
conductivity = 0.0 | |||
print(f'Conductivity is {conductivity}') | |||
print(f'pH is {pH}') | |||
print(f'count is {count}') | |||
if ser.in_waiting > 0: | |||
time.sleep(0.1) | |||
try: | |||
line = ser.readline().decode('utf-8').rstrip() | |||
except: | |||
line = "0,0" | |||
#print(f"Data separated using commas {line.split(',')}") | |||
mylist = line.split(',') | |||
#print(f'My list {mylist}') | |||
try: | |||
dissolvedOxygen = float(mylist[0]) | |||
temperature = float(mylist[1]) | |||
except: | |||
dissolvedOxygen = 0.0 | |||
temperature = 0.0 | |||
now = datetime.datetime.now() | |||
date_stamp = now.strftime("%Y-%m-%d %H:%M:%S") | |||
print(f'dissolvedOxygen - {dissolvedOxygen}, temp - {temperature}, time - {date_stamp}') | |||
print() | |||
time.sleep(0.3) | |||
now = datetime.datetime.now() | |||
date_stamp = now.strftime("%Y-%m-%d %H:%M:%S") | |||
data = "" | |||
data = date_stamp + "," + str(dissolvedOxygen) + "," + str(temperature) + "," + str(conductivity) + "," +\ | |||
str(pH) + "," + str(ammonia) + "," + str(nitrite) + "," + \ | |||
str(nitrate) + '\n' | |||
#print(f'The data is = {data}') | |||
if count > 3000 and dissolvedOxygen != 0: | |||
f = open('/home/pi/Aquarium/aquarium_DO_EC_temp_chem.txt','a') | |||
f.write(data) | |||
f.close() | |||
print("Data saved") | |||
try: | |||
print("Preparing dweet") | |||
dweet_dict = {} | |||
dweet_dict.update({"disOx": str(dissolvedOxygen)}) | |||
dweet_dict.update({"temp": str(temperature)}) | |||
dweet_dict.update({"cond": str(conductivity)}) | |||
dweet_dict.update({"pH": str(pH)}) | |||
dweet_dict.update({"amm": str(ammonia)}) | |||
dweet_dict.update({"nitrite": str(nitrite)}) | |||
dweet_dict.update({"nitrate": str(nitrate)}) | |||
dweet_dict.update({"time": str(date_stamp)}) | |||
url = "https://dweet.io/dweet/for/3083-Bundoora-aquarium1?" | |||
#https://dweet.io/get/latest/dweet/for/3083-Bundoora-aquarium1? | |||
x = requests.post(url, json=dweet_dict) | |||
print(x.text) | |||
except: | |||
print("Dweet failed") | |||
count = 0 | |||
# check dweet with - https://dweet.io/get/latest/dweet/for/3083-Bundoora-aquarium1 | |||
# Step 2: Read the data from the text file into a Pandas DataFrame | |||
data = pd.read_csv('/home/pi/Aquarium/aquarium_DO_EC_temp_chem.txt') | |||
# Step 3: Create a Plotly figure with two scatter plots | |||
fig = px.scatter(data, x='datetime', y=['temperature','dissolvedOxygen'], | |||
labels={'datetime': 'Date and Time', 'value': 'Temperature (°C)'}, | |||
title='Aquarium temperature and DO') | |||
# Step 4: Customize the plot layout | |||
fig.update_layout(xaxis_title='Date and Time', yaxis_title='Temperature (°C)') | |||
# Step 5: Save the plot as an HTML file | |||
fig.write_html('/home/pi/Aquarium/temperature_plot_DO_EC_chem_aquarium.html') | |||
print("Aquarium plot saved as temperature_plot.html") | |||
</syntaxhighlight> | |||
== Python code - Chem variables == | |||
<syntaxhighlight lang="python"> | |||
# water_variables.py file from which variables to be imported | |||
pH = 7.0 | |||
ammonia = 0.0 | |||
nitrite = 0.25 | |||
nitrate = 10.0 | |||
</syntaxhighlight> | |||
== Arduino code DO and temperature == | |||
<syntaxhighlight lang="c++"> | |||
#include <SoftwareSerial.h> | |||
#include <OneWire.h> | |||
#include <DallasTemperature.h> | |||
#define rx 10 //define what pin rx is going to be | |||
#define tx 11 //define what pin tx is going to be | |||
#define ONE_WIRE_BUS 4 // Data wire is conntec to the Arduino digital pin 4 | |||
SoftwareSerial myserialDO(rx, tx); //define how the soft serial port is going to work | |||
// Setup a oneWire instance to communicate with any OneWire devices | |||
OneWire oneWire(ONE_WIRE_BUS); | |||
// Pass our oneWire reference to Dallas Temperature sensor | |||
DallasTemperature tempSensor(&oneWire); | |||
String inputstring = ""; //a string to hold incoming data from the PC | |||
String sensorstring = ""; //a string to hold the data from the Atlas Scientific product | |||
void setup() { //set up the hardware | |||
Serial.begin(9600); //set baud rate for the hardware serial port_0 to 9600 | |||
myserialDO.begin(9600); //set baud rate for the software serial port to 9600 | |||
sensorstring.reserve(30); //set aside some bytes for receiving data from Atlas Scientific product | |||
} | |||
void loop() { //here we go... | |||
if (myserialDO.available() > 0) { //if we see that the Atlas Scientific product has sent a character | |||
char inchar = (char)myserialDO.read(); //get the char we just received | |||
if (inchar == '\r') { //if the incoming character is a <CR> | |||
// Call sensors.requestTemperatures() to issue a global temperature and Requests to all devices on the bus | |||
tempSensor.requestTemperatures(); | |||
float temperatureValue = tempSensor.getTempCByIndex(0); | |||
Serial.print(sensorstring); | |||
Serial.print(","); | |||
Serial.println(String(temperatureValue, 1)); // Print with 1 decimal places | |||
sensorstring = ""; | |||
delay(50); // Delay for stability | |||
} | |||
else { | |||
sensorstring += inchar; //add the char to the var called sensorstring | |||
} | |||
delay(50); | |||
} | |||
} | |||
</syntaxhighlight> | |||
== Arduino code EC == | |||
<syntaxhighlight lang="c++"> | |||
//This code was written to be easy to understand. | |||
//Modify this code as you see fit. | |||
//This code will output data to the Arduino serial monitor. | |||
//Type commands into the Arduino serial monitor to control the EC circuit. | |||
//This code was written in the Arduino 2.0 IDE | |||
//This code was last tested 10/2022 | |||
#include <SoftwareSerial.h> //we have to include the SoftwareSerial library, or else we can't use it | |||
#define rx 2 //define what pin rx is going to be | |||
#define tx 3 //define what pin tx is going to be | |||
SoftwareSerial myserialEC(rx, tx); //define how the soft serial port is going to work | |||
String inputstring = ""; //a string to hold incoming data from the PC | |||
String sensorstring = ""; //a string to hold the data from the Atlas Scientific product | |||
boolean input_string_complete = false; //have we received all the data from the PC | |||
boolean sensor_string_complete = false; //have we received all the data from the Atlas Scientific product | |||
void setup() { //set up the hardware | |||
Serial.begin(9600); | |||
myserialEC.begin(9600); | |||
delay(500); | |||
inputstring.reserve(10); //set aside some bytes for receiving data from the PC | |||
sensorstring.reserve(30); | |||
myserialEC.println("K,0.1"); //set conductivit probe to K0.1 | |||
} | |||
void loop() { //here we go... | |||
if (myserialEC.available() > 0) { //if we see that the Atlas Scientific product has sent a character | |||
char inchar = (char)myserialEC.read(); //get the char we just received | |||
sensorstring += inchar; //add the char to the var called sensorstring | |||
if (inchar == '\r') { //if the incoming character is a <CR> | |||
sensor_string_complete = true; //set the flag | |||
Serial.println(sensorstring); //send that string to the PC's serial monitor | |||
sensorstring = ""; //clear the string | |||
sensor_string_complete = false; | |||
} | |||
} | |||
} | |||
</syntaxhighlight> | </syntaxhighlight> | ||
Latest revision as of 06:26, 8 March 2024
References
- Walstad Method for Aquariums
- Walstad Method Science
- Ecology of the Planted Aquarium Book
- Walstad Method Tank Guide
Arduino Code - Temperature data
- Code executed using Cron
#!/usr/bin/env python3
# dweet data
import serial
import datetime
import time
import requests
import pandas as pd
import plotly.express as px
count = 0
if __name__ == '__main__':
ser = serial.Serial('/dev/ttyUSB0', 9600, timeout=1)
ser.reset_input_buffer()
while count < 5:
time.sleep(1)
count += 1
print(f'count is {count}')
if ser.in_waiting > 0:
print("Serial")
line = ser.readline().decode('utf-8').rstrip()
print(line)
#print(f"Data separated using commas {line.split(',')}")
#mylist = line.split(',')
try:
aq_temp = str(line)
except:
aq_temp = 0.0
print(f'temperature is {aq_temp}')
time.sleep(1)
now = datetime.datetime.now()
date_stamp = now.strftime("%Y-%m-%d %H:%M:%S")
data = ""
data = date_stamp + "," + str(line) + '\n'
print(f'The data is = {data}')
f = open('/home/pi/Aquarium/aquarium_data.txt','a')
f.write(data)
f.close()
print("Data saved")
try:
print("Preparing dweet")
dweet_dict = {}
dweet_dict.update({"aq_temp": str(aq_temp)})
dweet_dict.update({"time": str(date_stamp)})
url = "https://dweet.io/dweet/for/MPPS-Mernda-STEM-aquarium-4?"
x = requests.post(url, json=dweet_dict)
print(x.text)
count = 6
except:
print("Dweet failed")
# check dweet with - https://dweet.io/get/latest/dweet/for/3083-Bundoora-aquarium1
# Step 2: Read the data from the text file into a Pandas DataFrame
data = pd.read_csv('/home/pi/Aquarium/aquarium_data.txt')
# Step 3: Create a Plotly figure with two scatter plots
fig = px.scatter(data, x='datetime', y=['temperature'],
labels={'datetime': 'Date and Time', 'value': 'Temperature (°C)'},
title='Aquarium temperature')
# Step 4: Customize the plot layout
fig.update_layout(xaxis_title='Date and Time', yaxis_title='Temperature (°C)')
# Step 5: Save the plot as an HTML file
fig.write_html('/home/pi/Aquarium/temperature_plot_aquarium.html')
print("Aquarium plot saved as temperature_plot.html")
Arduino Code
- Monitoring temperature and Dissolved Oxygen
- Atlas sensor for Dissolved Oxygen
- Onewire temperature sensor
#include <SoftwareSerial.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#define rx 10 //define what pin rx is going to be
#define tx 11 //define what pin tx is going to be
#define ONE_WIRE_BUS 4 // Data wire is conntec to the Arduino digital pin 4
SoftwareSerial myserialDO(rx, tx); //define how the soft serial port is going to work
// Setup a oneWire instance to communicate with any OneWire devices
OneWire oneWire(ONE_WIRE_BUS);
// Pass our oneWire reference to Dallas Temperature sensor
DallasTemperature tempSensor(&oneWire);
String inputstring = ""; //a string to hold incoming data from the PC
String sensorstring = ""; //a string to hold the data from the Atlas Scientific product
void setup() { //set up the hardware
Serial.begin(9600); //set baud rate for the hardware serial port_0 to 9600
myserialDO.begin(9600); //set baud rate for the software serial port to 9600
sensorstring.reserve(30); //set aside some bytes for receiving data from Atlas Scientific product
}
void loop() { //here we go...
if (myserialDO.available() > 0) { //if we see that the Atlas Scientific product has sent a character
char inchar = (char)myserialDO.read(); //get the char we just received
if (inchar == '\r') { //if the incoming character is a <CR>
// Call sensors.requestTemperatures() to issue a global temperature and Requests to all devices on the bus
tempSensor.requestTemperatures();
float temperatureValue = tempSensor.getTempCByIndex(0);
Serial.print(sensorstring);
Serial.print(",");
Serial.println(String(temperatureValue, 1)); // Print with 1 decimal places
sensorstring = "";
delay(1000); // Delay for stability
}
else {
sensorstring += inchar; //add the char to the var called sensorstring
}
}
}
Python code to read Temp and Dissolved Oxygen data
- Code running constantly in the background
#!/usr/bin/env python3
# dweet data
import serial
import datetime
import time
import requests
import pandas as pd
import plotly.express as px
count = 0
if __name__ == '__main__':
ser = serial.Serial('/dev/ttyUSB1', 9600, timeout=1)
ser.reset_input_buffer()
while True:
count = count + 1
time.sleep(0.1)
if ser.in_waiting > 0:
try:
line = ser.readline().decode('utf-8').rstrip()
except:
line = "0,0"
print(f"Data separated using commas {line.split(',')}")
mylist = line.split(',')
print(f'My list {mylist}')
try:
dissolvedOxygen = float(mylist[0])
temperature = float(mylist[1])
except:
dissolvedOxygen = 0.0
temperature = 0.0
print(f'dissolvedOxygen is {dissolvedOxygen} and temp is {temperature}')
time.sleep(1)
now = datetime.datetime.now()
date_stamp = now.strftime("%Y-%m-%d %H:%M:%S")
data = ""
data = date_stamp + "," + str(dissolvedOxygen) + "," + str(temperature) + '\n'
print(f'The data is = {data}')
if count > 2000:
f = open('/home/pi/Aquarium/aquarium_DO_temp.txt','a')
f.write(data)
f.close()
print("Data saved")
try:
print("Preparing dweet")
dweet_dict = {}
dweet_dict.update({"dissolvedOx": str(dissolvedOxygen)})
dweet_dict.update({"temp": str(temperature)})
dweet_dict.update({"time": str(date_stamp)})
url = "https://dweet.io/dweet/for/3083-Bundoora-aquarium1?"
x = requests.post(url, json=dweet_dict)
print(x.text)
except:
print("Dweet failed")
count = 0
# check dweet with - https://dweet.io/get/latest/dweet/for/3083-Bundoora-aquarium1
# Step 2: Read the data from the text file into a Pandas DataFrame
data = pd.read_csv('/home/pi/Aquarium/aquarium_DO_temp.txt')
# Step 3: Create a Plotly figure with two scatter plots
fig = px.scatter(data, x='datetime', y=['temperature','dissolvedOxygen'],
labels={'datetime': 'Date and Time', 'value': 'Temperature (°C)'},
title='Aquarium temperature and DO')
# Step 4: Customize the plot layout
fig.update_layout(xaxis_title='Date and Time', yaxis_title='Temperature (°C)')
# Step 5: Save the plot as an HTML file
fig.write_html('/home/pi/Aquarium/temperature_plot_DO_aquarium.html')
print("Aquarium plot saved as temperature_plot.html")
Photos of Walstad aquarium
Plot of water temperature and dissolved oxygen during first week of aquarium establishment
Walstad aquarium heavily planted
Walstad aquarium with sensors to monitor temperature, DO and EC
Python code DO EC temp and Chem
#!/usr/bin/env python3
# dweet data
import serial
import datetime
import time
import requests
import pandas as pd
import plotly.express as px
from water_variables import *
count = 0
conductivity = 0.0
if __name__ == '__main__':
# dissolved oxygen
ser = serial.Serial('/dev/ttyUSB0', 9600, timeout=1)
ser.reset_input_buffer()
# conductivity
serEC = serial.Serial('/dev/ttyUSB1', 9600, timeout=1)
serEC.reset_input_buffer()
while True:
count = count + 1
time.sleep(0.1)
if serEC.in_waiting > 0:
time.sleep(0.1)
try:
lineEC = serEC.readline().decode('utf-8').rstrip()
#print(f'line {lineEC}')
except:
lineEC = "0"
try:
conductivity = lineEC
except:
conductivity = 0.0
print(f'Conductivity is {conductivity}')
print(f'pH is {pH}')
print(f'count is {count}')
if ser.in_waiting > 0:
time.sleep(0.1)
try:
line = ser.readline().decode('utf-8').rstrip()
except:
line = "0,0"
#print(f"Data separated using commas {line.split(',')}")
mylist = line.split(',')
#print(f'My list {mylist}')
try:
dissolvedOxygen = float(mylist[0])
temperature = float(mylist[1])
except:
dissolvedOxygen = 0.0
temperature = 0.0
now = datetime.datetime.now()
date_stamp = now.strftime("%Y-%m-%d %H:%M:%S")
print(f'dissolvedOxygen - {dissolvedOxygen}, temp - {temperature}, time - {date_stamp}')
print()
time.sleep(0.3)
now = datetime.datetime.now()
date_stamp = now.strftime("%Y-%m-%d %H:%M:%S")
data = ""
data = date_stamp + "," + str(dissolvedOxygen) + "," + str(temperature) + "," + str(conductivity) + "," +\
str(pH) + "," + str(ammonia) + "," + str(nitrite) + "," + \
str(nitrate) + '\n'
#print(f'The data is = {data}')
if count > 3000 and dissolvedOxygen != 0:
f = open('/home/pi/Aquarium/aquarium_DO_EC_temp_chem.txt','a')
f.write(data)
f.close()
print("Data saved")
try:
print("Preparing dweet")
dweet_dict = {}
dweet_dict.update({"disOx": str(dissolvedOxygen)})
dweet_dict.update({"temp": str(temperature)})
dweet_dict.update({"cond": str(conductivity)})
dweet_dict.update({"pH": str(pH)})
dweet_dict.update({"amm": str(ammonia)})
dweet_dict.update({"nitrite": str(nitrite)})
dweet_dict.update({"nitrate": str(nitrate)})
dweet_dict.update({"time": str(date_stamp)})
url = "https://dweet.io/dweet/for/3083-Bundoora-aquarium1?"
#https://dweet.io/get/latest/dweet/for/3083-Bundoora-aquarium1?
x = requests.post(url, json=dweet_dict)
print(x.text)
except:
print("Dweet failed")
count = 0
# check dweet with - https://dweet.io/get/latest/dweet/for/3083-Bundoora-aquarium1
# Step 2: Read the data from the text file into a Pandas DataFrame
data = pd.read_csv('/home/pi/Aquarium/aquarium_DO_EC_temp_chem.txt')
# Step 3: Create a Plotly figure with two scatter plots
fig = px.scatter(data, x='datetime', y=['temperature','dissolvedOxygen'],
labels={'datetime': 'Date and Time', 'value': 'Temperature (°C)'},
title='Aquarium temperature and DO')
# Step 4: Customize the plot layout
fig.update_layout(xaxis_title='Date and Time', yaxis_title='Temperature (°C)')
# Step 5: Save the plot as an HTML file
fig.write_html('/home/pi/Aquarium/temperature_plot_DO_EC_chem_aquarium.html')
print("Aquarium plot saved as temperature_plot.html")
Python code - Chem variables
# water_variables.py file from which variables to be imported
pH = 7.0
ammonia = 0.0
nitrite = 0.25
nitrate = 10.0
Arduino code DO and temperature
#include <SoftwareSerial.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#define rx 10 //define what pin rx is going to be
#define tx 11 //define what pin tx is going to be
#define ONE_WIRE_BUS 4 // Data wire is conntec to the Arduino digital pin 4
SoftwareSerial myserialDO(rx, tx); //define how the soft serial port is going to work
// Setup a oneWire instance to communicate with any OneWire devices
OneWire oneWire(ONE_WIRE_BUS);
// Pass our oneWire reference to Dallas Temperature sensor
DallasTemperature tempSensor(&oneWire);
String inputstring = ""; //a string to hold incoming data from the PC
String sensorstring = ""; //a string to hold the data from the Atlas Scientific product
void setup() { //set up the hardware
Serial.begin(9600); //set baud rate for the hardware serial port_0 to 9600
myserialDO.begin(9600); //set baud rate for the software serial port to 9600
sensorstring.reserve(30); //set aside some bytes for receiving data from Atlas Scientific product
}
void loop() { //here we go...
if (myserialDO.available() > 0) { //if we see that the Atlas Scientific product has sent a character
char inchar = (char)myserialDO.read(); //get the char we just received
if (inchar == '\r') { //if the incoming character is a <CR>
// Call sensors.requestTemperatures() to issue a global temperature and Requests to all devices on the bus
tempSensor.requestTemperatures();
float temperatureValue = tempSensor.getTempCByIndex(0);
Serial.print(sensorstring);
Serial.print(",");
Serial.println(String(temperatureValue, 1)); // Print with 1 decimal places
sensorstring = "";
delay(50); // Delay for stability
}
else {
sensorstring += inchar; //add the char to the var called sensorstring
}
delay(50);
}
}
Arduino code EC
//This code was written to be easy to understand.
//Modify this code as you see fit.
//This code will output data to the Arduino serial monitor.
//Type commands into the Arduino serial monitor to control the EC circuit.
//This code was written in the Arduino 2.0 IDE
//This code was last tested 10/2022
#include <SoftwareSerial.h> //we have to include the SoftwareSerial library, or else we can't use it
#define rx 2 //define what pin rx is going to be
#define tx 3 //define what pin tx is going to be
SoftwareSerial myserialEC(rx, tx); //define how the soft serial port is going to work
String inputstring = ""; //a string to hold incoming data from the PC
String sensorstring = ""; //a string to hold the data from the Atlas Scientific product
boolean input_string_complete = false; //have we received all the data from the PC
boolean sensor_string_complete = false; //have we received all the data from the Atlas Scientific product
void setup() { //set up the hardware
Serial.begin(9600);
myserialEC.begin(9600);
delay(500);
inputstring.reserve(10); //set aside some bytes for receiving data from the PC
sensorstring.reserve(30);
myserialEC.println("K,0.1"); //set conductivit probe to K0.1
}
void loop() { //here we go...
if (myserialEC.available() > 0) { //if we see that the Atlas Scientific product has sent a character
char inchar = (char)myserialEC.read(); //get the char we just received
sensorstring += inchar; //add the char to the var called sensorstring
if (inchar == '\r') { //if the incoming character is a <CR>
sensor_string_complete = true; //set the flag
Serial.println(sensorstring); //send that string to the PC's serial monitor
sensorstring = ""; //clear the string
sensor_string_complete = false;
}
}
}