Arduino Aquaponics: EnvDAQ Upgrade met de pH en de opgeloste zuurstof (2 / 2 stap)

Stap 2: Arduino Code

Arduino IDE: 1.0.3

Voordat we de code wijzigen, kunnen bespreken hoe het werkt.  De Arduino communiceert met de sonde circuits via de seriële poort, met de behandeling van de grunt werk maken van de betekenis van de sondes circuits.  Op een 60 tweede interval noemen we elke functie om de sensorgegevens te krijgen.  De pH en de functies afgelezen seriële tot een specifieke reeks wordt gevonden, voortbouwend op de voorafgaande tekens, een geschikt op een GET verzoek resultaatreeks omgezet en de tekenreeks retourneert.  Tot slot wordt bij de webapp een verzoek ingediend.

Om te beginnen, verklaren twee input tekenreeksen

Definieer in de verklaringen, twee input tekenreeksen
Phsensorstring koord = "";
Dosensorstring koord = "";

Vervolgens moeten we twee meer seriële verbindingen, maar op een 38400 baud-rate.  Om de setup af te sluiten zullen we ruimte gereserveerd voor de input en sensor snaren van het circuit.

In Setup, start u de seriële uitgangen
Serial.begin(9600);                 Standard Serial
Serial2.begin(38400);            pH seriële
Serial3.begin(38400);            Seriële doen

Nog steeds in Setup, ruimte gereserveerd voor de sensorgegevens
phsensorstring.reserve(30);
dosensorstring.reserve(30);

Net zoals we de DHT en LDR waarden krijgen, twee nieuwe functies worden gemaakt om de pH en opgeloste zuurstof waarden.  Ze lezen uit seriële te krijgen van de respectievelijke waarden, een geretourneerde tekenreeks die is opgemaakt als een stuk van de GET-verzoek te maken en opnieuw de sensor-tekenreeks.

Krijgen van pH
String getPH() {}
char phchar;
terwijl (phchar! = '\r') {}
phchar = (char)Serial2.read();
phsensorstring += phchar;
}

Ph_reading koord = "& pH =" + phsensorstring;
phsensorstring = "";
Return(ph_reading);
}

Krijgen
String getDO() {}
char dochar;
terwijl (dochar! = '\r') {}
Youlicit = (char)Serial3.read();
dosensorstring += dochar;
}

Do_reading koord = "& =" + dosensorstring;
dosensorstring = "";
Return(do_reading);
}

De hoofdlus elke functie verzoekt een 60 tweede interval en stuurt een verzoek naar de webapp

void loop {}

Krijgen van de temperatuur en vochtigheid
DHTSensor koord = "";
DHTSensor = getDHT();
Serial.println ("DHT:" + DHTSensor);

LDR lezing krijgen
LDR string = "";
LDR = getLDR();
Serial.println ("LDR:" + LDR);

PH
PHSensorValue koord = "";
PHSensorValue = getPH();
Serial.println ("pH:" + PHSensorValue);

DOEN
DOSensorValue koord = "";
DOSensorValue = getDO();
Serial.println ("doen:" + DOSensorValue);

Gegevens verzenden Webapp
GAE (webapp + "adacs/arduino?" + DHTSensor + LDR + PHSensorValue + DOSensorValue);

Serial.println("");

delay(60000);

}

De volledige Arduino sketch:

/*
Het milieu DAQ (V2) schild met de pH en de opgeloste zuurstof sondes.
*/

#include < SPI.h >
#include < Ethernet.h > / / Ethernet Shield
#include < DHT.h > / / DHT.  Credit: Adafruit Industries

Ethernet-Shield
byte mac [] = {0x90, 0xA2, 0xDA, 0x00, 0xA1, 0x90};
byte myIP [] = {192, 168, 1, 15};
byte gateway [] = {192, 168, 1, 1};

char [server] = "http://www.myapsystem.appspot.com";
EthernetClient de klant;

Maakt het gemakkelijk om app namen wijzigen
Webapp string = "http://www.myapsystem.appspot.com/";

DHT-22
#define DHTPIN 3
#define DHTTYPE DHT22
DHT dht (DHTPIN, DHTTYPE);

Sonde input tekenreeksen
Phsensorstring koord = "";
Dosensorstring koord = "";

DIGITALE PINNEN
int connectedOn = 6;
int connectedOff = 7;

ANALOGE PINS
int AmbientLDR = A0;          Lichte Dependent Resistor

DHT gegevens verzenden
char temp_str [10];            Temperatuur tekenreeks
char rh_str [10];              Relatieve vochtigheid String

VOID Setup {}
Uitgang voor seriële van start
Serial.begin(9600);          Standaard seriële
Serial2.begin(38400);        pH seriële
Serial3.begin(38400);        Seriële doen
delay(1000);

SD-kaart uitschakelen als men in de sleuf
pinMode(4,OUTPUT);
digitalWrite(4,HIGH);

Start Ethernet
Ethernet.begin(Mac);
Ethernet.begin (mac, myIP);
Ethernet.begin (mac, myIP, gateway);
delay(1000);        Geef Ethernet een tweede initialiseren
Serial.println(Ethernet.localIP());

Ruimte gereserveerd voor de sensorgegevens
phsensorstring.reserve(30);
dosensorstring.reserve(30);


Start DHT
DHT.begin();

Set Pin modi
pinMode (connectedOn, OUTPUT);
pinMode (connectedOff, OUTPUT);

Serial.println ('Setup voltooid');
}

void loop {}

Krijgen van de temperatuur en vochtigheid
DHTSensor koord = "";
DHTSensor = getDHT();
Serial.println ("DHT:" + DHTSensor);

LDR lezing krijgen
LDR string = "";
LDR = getLDR();
Serial.println ("LDR:" + LDR);

PH
PHSensorValue koord = "";
PHSensorValue = getPH();
Serial.println ("pH:" + PHSensorValue);

DOEN
DOSensorValue koord = "";
DOSensorValue = getDO();
Serial.println ("doen:" + DOSensorValue);

Gegevens verzenden Webapp
GAE (webapp + "adacs/arduino?" + DHTSensor + LDR + PHSensorValue + DOSensorValue);

Serial.println("");

delay(60000);

}

String getDHT() {}
zweven h = dht.readHumidity();
zweven t = dht.readTemperature();

Als (isnan(t) || isnan(h)) {}
Serial.println ("kon aflezen uit DHT22");
} else {}
zweven ftemp = (((9.0/5.0) * t) + 32,0);
Tekenreeks temp = dtostrf (ftemp, 3, 1, temp_str);
String rh = dtostrf (h, 3, 1, rh_str);

DhtUrl koord = "Temp =" + temp + "& vochtigheid =" + rh;
Return(dhtUrl);
}
}

String getLDR() {}
int ambientLDR = analogRead(AmbientLDR);
LightUrl koord = "& AmbientLDR =" + String(ambientLDR);
Return(lightUrl);
}

Retourneert de huidige waarde van de pH
String getPH() {}
char phchar;
terwijl (phchar! = '\r') {}
phchar = (char)Serial2.read();
phsensorstring += phchar;
}

Ph_reading koord = "& pH =" + phsensorstring;
phsensorstring = "";
Return(ph_reading);
}

Retourneert de huidige waarde van de opgeloste zuurstof
String getDO() {}
char dochar;
terwijl (dochar! = '\r') {}
Youlicit = (char)Serial3.read();
dosensorstring += dochar;
}

Do_reading koord = "& =" + dosensorstring;
dosensorstring = "";
Return(do_reading);
}

VOID GAE(String link) {}
succes van Boole = httpRequest(link);
Als (succes == true) {}
delay(5000);

Boole currentLineIsBlank = waar;

ReadString koord = "";
char newString [100];

terwijl (client.connected()) {}
Als (client.available()) {}
char c = client.read();
Serial.write(c);

Als (c == '\n' & & currentLineIsBlank) {}
Serial.println ("Reached end of verzoek");
while(client.Connected()) {}
char f = client.read();
readString += f;
}
}

Als (c == '\n') {}
currentLineIsBlank = true;
} else if (c! = '\r') {}
currentLineIsBlank = false;
}
}
}

client.stop();

Serial.println(readString);
} else {}
Serial.println ("niet aangesloten");
}
}



Booleaanse httpRequest (de verwijzing van de tekenreeks) {}
Als er een succesvolle verbinding
Als (client.connect (server, 80)) {}
Serial.println ("GET" koppeling + "HTTP/1.0");    Voor dev-modus
client.println ("GET" + link + "HTTP/1.0");
client.println();

Aangesloten LED inschakelen
digitalWrite (connectedOff, laag);
digitalWrite (connectedOn, hoge);

return true;
} else {}
U kon het niet maken van de verbinding
Serial.println ("verbinding mislukt");
fouten += 1;
client.stop();

Aangesloten LED inschakelen
digitalWrite (connectedOn, laag);
digitalWrite (connectedOff, hoge);

return false;
}
}

Gerelateerde Artikelen

Aquaponics: EnvDAQ upgrade met Water temperatuursensor (groeien Bed DAQ)

Aquaponics: EnvDAQ upgrade met Water temperatuursensor (groeien Bed DAQ)

de broncode voor de wolk toepassing en Arduino sketch voor deze tutorial zijn beschikbaar hier.U vindt ook dit leerprogramma op onze blog in een veel meer leesbaar formaat (in line figuren).Het milieu DAQ is een open-source Arduino schild dat tracks
Arduino robotarm en monitoring met verwerking

Arduino robotarm en monitoring met verwerking

de robotarm pakt een object nadat wordt gedetecteerd met behulp van de bewegingsmelder en vervolgens op een specifieke locatie verplaatst.lijst van onderdelen:1.3 servo 's2. passieve infrarood bewegingsmelder: http://www.sparkfun.com/products/86303.
Arduino zelf evenwicht Controller met behulp van digitale IMU, eindelijk!

Arduino zelf evenwicht Controller met behulp van digitale IMU, eindelijk!

Wat is het?DIY Segway/balans controller met moderne digitale IMU sensor.Software voor een Arduino waarmee het standpunt om gegevens te lezen van een van de nieuwere digitale accelerometer/gyroscoop eenheden, processen, de gegevens met behulp van Kalm
Arduino DS3231 Real timerklok met kleur TFT

Arduino DS3231 Real timerklok met kleur TFT

Het bouwen van een real timerklok met een kleuren TFT display is uiterst eenvoudig met behulp van de Arduino. Het display toont de tijd, de datum, de huidige temperatuur langs de MAX en MIN temperatuur die het heeft gemeten. Laten we bouwen het!Stap
Arduino High speed oscilloscoop met PC-interface

Arduino High speed oscilloscoop met PC-interface

Uw Arduino en PC gebruiken als een Snelle geheugenoscilloscoop.De Arduino kunt spanning lezingen met een frequentie van betrouwbaar verzamelen tussen 141 en 153 KiloHertz.1000 kan data worden afgelezen in ongeveer 6.8ms.Overgedragen aan een PC, deze
Hoe te programmeren van de Arduino chips over LPT met c ++ code?

Hoe te programmeren van de Arduino chips over LPT met c ++ code?

Hi weer!Vandaag laat ik zien hoe te programmeren van de Arduino chip(like ATtiny85) met c ++ code (aka code in de Arduino IDE)Aangezien u niet BSD(aka LPT) programmeur met Arduino IDE gebruiken, maakte ik deze tutorital :)Opmerking: Deze tutorital ha
Hoe maak je een Arduino gebaseerde nacht licht met infrarood afstandsbediening!

Hoe maak je een Arduino gebaseerde nacht licht met infrarood afstandsbediening!

Hier is een Instructable die u hoe tonen zal te bouwen van een licht met een Arduino gebaseerd-nachteen kleine infrarood afstandsbediening waarmee u doorlopen 10 pre set kleuren, en een willekeurige fadingkleur routine die voor eeuwig lussen.Dit inst
Plotly + Atlas wetenschappelijke: Real-Time grafiek opgeloste zuurstof met Raspberry Pi

Plotly + Atlas wetenschappelijke: Real-Time grafiek opgeloste zuurstof met Raspberry Pi

Atlas wetenschappelijke maakt een geweldige suite van wetenschappelijke rang milieu monitoring-sensoren die een perfecte synergie met de Plotly dataplatform voor visualisatie hebben.Dit Instructable zal u tonen hoe voor het aansluiten van een Atlas o
Arduino Aquaponics: Real-tijd-klok deel I

Arduino Aquaponics: Real-tijd-klok deel I

AA fundamentele noodzaak van een systeem van controles is de mogelijkheid om de tijd bijhouden.  Voor zover wij weten, heeft de Arduino drie methoden die het kunt gebruiken:1. seriële.  Herhaaldelijk de tijd te krijgen via de seriële verbinding.2. ex
Arduino Aquaponics: JSON pomp Controller

Arduino Aquaponics: JSON pomp Controller

toen we begonnen met het ontwikkelen van de Aquaponics Controller we beseften dat we wilden een eenheid die kan omgaan met meerdere situaties.  Sommige vloed-en-afvoer aquaponics systemen schakelen van de pomp in- en uitschakelen op niet-overeenkomen
De ratPhone - 3 G FONA Arduino cellulaire mobiele telefoon met Retro drukknop toetsenblok en Rat vangen App

De ratPhone - 3 G FONA Arduino cellulaire mobiele telefoon met Retro drukknop toetsenblok en Rat vangen App

Never mind de iPhones en Androids. Hier is de ratPhone! Dit is zeker niet een slimme telefoon. Maar het is niet een domme telefoon hetzij. U zal niet zitten kundig voor eindeloze uren afval op Facebook of Twitter, maar het zal helpen u vangen van rat
Aquaponics (groeiende planten met vis Poo)

Aquaponics (groeiende planten met vis Poo)

ik heb jarenlang gefascineerd door hydrocultuur. Toen het eindelijk tijd om te spelen rond met een, hoorde ik over Aquaponics - een soort symbiose tussen de planten en de vissen. De vis zorgen voor voedsel voor de planten, en de planten reinigen het
Met behulp van Arduino om te communiceren met ingesloten project

Met behulp van Arduino om te communiceren met ingesloten project

bouwen van een zelfstandige AVR ATMEGA project u met soms niet gemakkelijk verlaat te lezen output van uw project. Maar u kunt een Arduino gebruiken om te fungeren als een brug van de communicatie tussen uw ingesloten project en uw PC's seriële Monit
Arduino / Raspberry Pi geval met OpenCase

Arduino / Raspberry Pi geval met OpenCase

OpenCase kunt u gemakkelijk dimensie en DXF-bestanden voor elektronica behuizingen te genereren. U plaatst in de materiaaldikte, Binnenafmetingen, en het vertellen waar te snijden gaten en uitsparingen, en het doet de rest. OpenSCAD wordt gebruikt vo