Temperature

pH value

Friday, December 11, 2015

Laboratory Analyses



Laboratory Analyses

Turbidity was measured using a turbidimeter. The analysis was made by taking a sample of the water into one of the cuvettes provided, cleaning the surface of the cuvette with a thin film of silicone oil and a soft lint-free cloth, then placing the cuvette into the turbidimeter. Each reading was taken four times to ensure accuracy. The turbidimeter does not need frequent calibration, therefore the treatment group has never calibrated the instrument.

Conductivity and pH were measured using a pH/Conductivity sensor, which must be calibrated separately for both pH and conductivity before use. This is done by placing the sensor into several solutions of varying pHs/conductivities. The sensor is then placed approximately 5 cm below the surface of the water/sample and remain there until the reading becomes stable (between 30 seconds and several minutes). The sensor must be rinsed with distilled water in between readings and once the measurement is done.


Dissolved oxygen was measured by using a portable dissolved oxygen meter. The sensor was placed approximately 5 cm below the water/sample surface and pressing the green button. Once the "Stabilizing" text disappears, the reading can be recorded. Appendix 2 9 (27) This sensor does not need to be calibrated. The sensor must be rinsed with distilled water in between readings and once the measurement is done.

Phosphorous was measured by taking 3.5 mL of sample (preferably by pipette) and heating it in a thermostat for 60 minutes at 100°C. Once cooled, 0.2 mL Reagent B (LCK 349 B) is pipetted into the cuvette. The cuvette should be inverted and thoroughly cleaned before evaluation. For accurate readings, the pH of the sample should be between 2 - 10, and the temperature between 15 - 25 °C. The sample was within these limits therefore the result is accurate.






Treatment Objective





Treatment

To create an aquatic environment similar to the one of the Baltic Sea, the required equipment was as follows:

1 Aquarium - this acts as the boundary of the Baltic Sea. Aquarium used was found in the Environmental Laboratory at the Myyrmäki campus.

2 Air pump - in the Baltic Sea, the tides and constant movement of currents is very important. Horizontally, it ensures that heat and salt is distributed throughout the sea and vertically, it is crucial for the exchange of heat and gases (such as CO2) between the higher and lower levels of the sea. The same movement is important in the aquarium therefore it is essential to use an air pump. The air pump was bought from Akvaariokeskus. 

3 Pebbles - although the Baltic Sea has rocks at the bottom, the reason for including pebbles in our aquarium was to keep the plants fixed to the bottom of the aquarium. 

4 Water - the water used in the aquarium was water from the Baltic Sea. The water was collected from the shore, where the water is not as salty as in deeper parts of the sea. This is an important point when looking at the results of the project.
5 Vegetation - the plants are a key component to the system therefore plants that would have the best chance of survival and treatment abilities were chosen. Appendix 2 7 (27) The selected species have been previously used in brackish water aquariums or ponds to lower nutrient levels. Aegagrophila linnaei, also known as ‘Marimo’, was chosen experimentally for this particular project. A detailed analysis of each species is written in the Economic Evaluation section. 



Monday, December 7, 2015

Arduino Codes


#Codes for sensing and uploading data to Thingspeak.com

// include libraries
#include <SPI.h> #include <Ethernet.h> #include <OneWire.h> #define SensorPin A0
int DS18S20_Pin = 2; //DS18S20 Signal pin on digital 2
//Temperature chip i/o OneWire ds(DS18S20_Pin); // on digital pin 2
// Local Network Settings byte mac []= { 0x9C, 0xA2, 0xDA, 0x0F, 0xAB, 0x6A };// Must be unique on local network, You can find it looking at EthernetShield bottom side (White sticker)
// ThingSpeak Settings char thingSpeakAddress[] = "api.thingspeak.com"; String writeAPIKey = "4HFALLKGZG1JOHED"; // After signing in to Thingspeak you get your own unike API key unsigned long updateThingSpeakInterval = 20000; // Time interval in milliseconds to update ThingSpeak unsigned long SensorReadInterval = 5000; // Time interval in milliseconds to update SensorData
// Variable Setup unsigned long lastConnectionTime = 0; boolean lastConnected = false; int failedCounter = 0; unsigned long lastReadTime = 0; int HIH4030_Pin = A0; //Voltage output from HIH sensor is connected to analog pin A0 long relativeHumidity = 0; long temperature = 0; long dewpoint = 0; float ph_value; float voltage; char buffer[10];
// Initialize Arduino Ethernet Client EthernetClient client;
void setup() { // Start Serial for debugging on the Serial Monitor Serial.begin(9600); // Initializes the ethernet library and network settings on Arduino (call funtion "startethernet") startEthernet(); }
void loop()
{ // Read sensor value according set SersorReadInterval if((millis() - lastReadTime > SensorReadInterval)) { temperature = getTemp(); } voltage=analogRead(SensorPin); voltage=voltage*5/1024; ph_value=-5.8029*voltage+25.5511; // Greate string for transmitting value to Thingspeak String Field1_Value = dtostrf(ph_value, 7,2,buffer); String Field2_Value = String(temperature,DEC); String Field3_Value = String(dewpoint,DEC);
// Print Update = Response to Serial Monitor
// Print Update Response to Serial Monitor if (client.available()) { char c = client.read(); Serial.print(c); }
// Disconnect from ThingSpeak if (!client.connected() && lastConnected) { Serial.println("...disconnected"); Serial.println(); client.stop(); } // Update ThingSpeak if(!client.connected() && (millis() - lastConnectionTime > updateThingSpeakInterval)) { updateThingSpeak("field1="+Field1_Value+"&field2="+Field2_Value+"&field3="+Field3_Value); } // Check if Arduino Ethernet needs to be restarted if (failedCounter > 3 ) {startEthernet();} lastConnected = client.connected();
}
// FUNCTIONS
///Tähän antureiden funktiot
// Update Thingspeak channel void updateThingSpeak(String tsData) { // Sent REST command to update channel eg."https://api.thingspeak.com/update?api_key=YOUR_CHANNEL_API_KEY&field1=7 "
if (client.connect(thingSpeakAddress, 80)) { client.print("POST /update HTTP/1.1\n"); client.print("Host: api.thingspeak.com\n"); client.print("Connection: close\n"); client.print("X-THINGSPEAKAPIKEY: "+writeAPIKey+"\n"); client.print("Content-Type: application/x-www-form-urlencoded\n"); client.print("Content-Length: "); client.print(tsData.length()); client.print("\n\n");
client.print(tsData); lastConnectionTime = millis(); if (client.connected()) { Serial.println("Connecting to ThingSpeak..."); Serial.println(); failedCounter = 0; } else { failedCounter++; Serial.println("Connection to ThingSpeak failed ("+String(failedCounter, DEC)+")"); Serial.println(); } } else { failedCounter++; Serial.println("Connection to ThingSpeak Failed ("+String(failedCounter, DEC)+")"); Serial.println(); lastConnectionTime = millis(); } }
// Initialize the ethernet library and network settings. void startEthernet() { client.stop();
Serial.println("Connecting Arduino to network..."); Serial.println();
delay(1000); // Connect to network and obtain an IP address using DHCP if (Ethernet.begin(mac) == 0) { Serial.println("DHCP Failed, reset Arduino to try again"); Serial.println(); } else { Serial.println("Arduino connected to network using DHCP"); Serial.println(); } delay(1000); }
float getTemp(){ //returns the temperature from one DS18S20 in DEG Celsius
byte data[12]; byte addr[8];
if ( !ds.search(addr)) { //no more sensors on chain, reset search ds.reset_search(); return -1000; }
if ( OneWire::crc8( addr, 7) != addr[7]) { Serial.println("CRC is not valid!"); return -1000; }
if ( addr[0] != 0x10 && addr[0] != 0x28) { Serial.print("Device is not recognized"); return -1000; }
ds.reset(); ds.select(addr); ds.write(0x44,1); // start conversion, with parasite power on at the end
byte present = ds.reset(); ds.select(addr); ds.write(0xBE); // Read Scratchpad
for (int i = 0; i < 9; i++) { // we need 9 bytes data[i] = ds.read(); } ds.reset_search(); byte MSB = data[1]; byte LSB = data[0];
float tempRead = ((MSB << 8) | LSB); //using two's compliment float TemperatureSum = tempRead / 16; return TemperatureSum; }

Tuesday, November 17, 2015

Coding





                                               Coding and  uploading data to thingspeak.com


 Graph uploaded in Thingspeak.com
"To  arrange code  that is already available in internet  and  make the sensors work  is not  a  difficult task"  That what we used believe
. And today we realize that to understand  how code works is not easier than understanding  Chinese words. After spending 10s of hour  figuring out  and taking some instruction with Jukka pekka (arduino teacher) finally we are able to  get reading from the DS18B20 temperature sensor and upload in thingspeak.com. 



Jukka-Pekka  checking our  work
We arranged the code  from   a blog named arduino-info.wikispaces.com 
we also used the code provided by our teacher  to  upload it to thingspeak.com.
In next lab we will work on  PH sensors .  


Tuesday, October 13, 2015

How we are working


We recently finished setting up the Arduino and peripherals. We succeeded to upload data from sensor in web. The testing was done on Metropolia labs. Our real tests will be started as soon as we get our real sensors. 

Thursday, October 1, 2015

What is our project about?

Background
Since  Baltic sea is recognized as one of the polluted seas, numerous projects has been running and 100s of commitment have been made  to control  the pollution and improve its quality. On this flock of effort, metropolia UAS has started an innovation project course called “thousand ideas for baltic sea”.  Our project is one of those thousand ideas.

what is our project about ?
We call it “treatment and monitoring project” where we are working in two groups. Treatment group will find the techniques to minimize the pollution and monitoring group will monitor the process by collecting and storing the data automatically in cloud. And possibly try to analyse the obtained data. 

We will design aggregate numbers of arduino based water quality monitoring system that can be installed in Baltic sea area. Installed arduino system will be collect and upload the real time data to the cloud. we will also estimate the cost analysis for the real application of the system.
To collect the data we will use a microprocessor device called Arduino, few sensors and a PV panel as a power source. We found it a sustainable, eco-friendly and automated. The data we collected will be stored in online cloud which can be accessed by public.

[by: Devendra]


Techniques

What is Arduino ?
Arduino is an test-based free source platform which is easy to use. It has a very simple and easily reachable user friendly environment. Although it is capable of doing large complex projects, it has simple software which even a beginner can handle. Hence, it has been used in several projects and applications. Arduino was initially built at IIDI(Ivrea Interaction Design Institute) for students for fast prototyping who do not have any knowledge in electronics. Here’s a good example of How arduino works to monitor disinfectant levels in drinking water.


Why Arduino ?

i. Cheap
ii. Open source and extendable software and hardware
iii. Runs in most of the operating system
iv.Simple for beginner but extensible enough for experts.
v. Accesories easily available


Sensors we use?
We have aimed to use various sensors for determining water quality. But for instance, we have pH meter and temperature sensors.
The solar power

Our project could be run on other sources. But to make more environment friendly, our monitoring devices will be powered by solar panels. Since, this whole thing can be placed on remote area to extract data, solar is more convenient and energy saving.



[by: Bhuwan/Deepak]