Arduino Aquaponics: EnvDAQ uppgradering med pH och löst syre (2 / 2 steg)

Steg 2: Arduino kod

Arduino IDE: 1.0.3

Innan vi ändra koden, kan diskutera hur det fungerar. Arduino kommunicerar med sonden kretsar över seriell, med kretsarna hanterar grymta arbete att göra känsla av sonderna. På en 60 andra intervall kallar vi varje funktion för att få sensordata. PH och funktioner läsa från seriella tills en viss sekvens finns, bygger på de föregående tecken, formaterar en returnerade strängen passande till en GET-begäran och returnerar strängen. Slutligen görs en förfrågan till webapp.

För att starta, deklarera två ingående strängar

I deklarationerna, definiera två ingående strängar
String phsensorstring = "";
String dosensorstring = "";

Sedan behöver vi ställa in två mer seriella anslutningar, men på en 38400 baud. För att avsluta installationen förbehåller vi oss utrymme för input och sensor stränger från kretsen.

I setup(), starta de seriella utgångarna
Serial.BEGIN(9600); Standard följetong
Serial2.BEGIN(38400); pH följetong
Serial3.BEGIN(38400); GÖRA seriell

Fortfarande i setup(), reservera utrymme för sensordata
phsensorstring.Reserve(30);
dosensorstring.Reserve(30);

Precis som vi får värdet DHT och LDR, två nya funktioner skapas för att få pH och löst syre värden. De läser från seriella respektive värden, skapa en retur sträng formaterad som en bit av en GET-begäran och sedan återställa sensor strängen.

Få pH
Sträng getPH() {
char phchar;
medan (phchar! = '\r') {
phchar = (char)Serial2.read();
phsensorstring += phchar;
}

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

Få göra
Sträng getDO() {
char dochar;
medan (dochar! = '\r') {
dochar = (char)Serial3.read();
dosensorstring += dochar;
}

String do_reading = "& göra =" + dosensorstring;
dosensorstring = "";
Return(do_reading);
}

Huvudloop uppmanar en 60 andra intervall varje funktion och skickar en begäran till webapp

void loop() {

Få temperatur och luftfuktighet
String DHTSensor = "";
DHTSensor = getDHT();
Serial.println ("DHT:" + DHTSensor);

Får LDR läsning
Sträng LDR = "";
LDR = getLDR();
Serial.println ("LDR:" + LDR);

PH-VÄRDET
String PHSensorValue = "";
PHSensorValue = getPH();
Serial.println ("pH:" + PHSensorValue);

GÖRA
String DOSensorValue = "";
DOSensorValue = getDO();
Serial.println ("göra:" + DOSensorValue);

Skicka Data till Webapp
GAE (webapp + "adacs/arduino?" + DHTSensor + LDR + PHSensorValue + DOSensorValue);

Serial.println("");

Delay(60000);

}

Den fullständiga Arduino skissen:

/*
Miljö DAQ (V2) sköld med pH och löst syre sonder.
*/

#include < SPI.h >
#include < Ethernet.h > / / Ethernet sköld
#include < DHT.h > / / DHT. Credit: Adafruit industrier

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 klient;

Gör det enkelt att ändra app namn
Sträng webapp = "http://www.myapsystem.appspot.com/";

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

Sonden input strängar
String phsensorstring = "";
String dosensorstring = "";

DIGITAL PINS
int connectedOn = 6;
int connectedOff = 7.

ANALOGA PINS
int AmbientLDR = A0; Lätt beroende av motstånd

DHT data skickas
char temp_str [10]. Temperaturen sträng
char rh_str [10]. Relativ luftfuktighet sträng

void setup() {
Starta Serial Output
Serial.BEGIN(9600); Standard serial
Serial2.BEGIN(38400); pH följetong
Serial3.BEGIN(38400); GÖRA seriell
Delay(1000);

Inaktivera SD-kort om man i facket
pinMode(4,OUTPUT);
digitalWrite(4,HIGH);

Starta Ethernet
Ethernet.BEGIN(Mac);
Ethernet.BEGIN (mac, myIP);
Ethernet.BEGIN (mac, myIP, gateway);
Delay(1000); Ge Ethernet en sekund att initiera
Serial.println(Ethernet.localIP());

Reservera utrymme för sensordata
phsensorstring.Reserve(30);
dosensorstring.Reserve(30);

Starta DHT
DHT.BEGIN();

Ställ in pinkodsskydd lägen
pinMode (connectedOn, produktionen);
pinMode (connectedOff, produktionen);

Serial.println ("Setup komplett");
}

void loop() {

Få temperatur och luftfuktighet
String DHTSensor = "";
DHTSensor = getDHT();
Serial.println ("DHT:" + DHTSensor);

Får LDR läsning
Sträng LDR = "";
LDR = getLDR();
Serial.println ("LDR:" + LDR);

PH-VÄRDET
String PHSensorValue = "";
PHSensorValue = getPH();
Serial.println ("pH:" + PHSensorValue);

GÖRA
String DOSensorValue = "";
DOSensorValue = getDO();
Serial.println ("göra:" + DOSensorValue);

Skicka Data till Webapp
GAE (webapp + "adacs/arduino?" + DHTSensor + LDR + PHSensorValue + DOSensorValue);

Serial.println("");

Delay(60000);

}

Sträng getDHT() {
flyta h = dht.readHumidity();
flyta t = dht.readTemperature();

om (isnan(t) || isnan(h)) {
Serial.println ("kunde inte läsa från DHT22");
} annat {
flyta ftemp = (((9.0/5.0) * t) + 32,0);
Sträng temp = dtostrf (ftemp, 3, 1, temp_str);
Sträng rh = dtostrf (h, 3, 1, rh_str);

String dhtUrl = "Temp =" + temp + "& luftfuktighet =" + rh;
Return(dhtUrl);
}
}

Sträng getLDR() {
int ambientLDR = analogRead(AmbientLDR);
String lightUrl = "& AmbientLDR =" + String(ambientLDR);
Return(lightUrl);
}

Returnerar det aktuella pH värdet
Sträng getPH() {
char phchar;
medan (phchar! = '\r') {
phchar = (char)Serial2.read();
phsensorstring += phchar;
}

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

Returnerar det aktuella värdet upplöst syre
Sträng getDO() {
char dochar;
medan (dochar! = '\r') {
dochar = (char)Serial3.read();
dosensorstring += dochar;
}

String do_reading = "& göra =" + dosensorstring;
dosensorstring = "";
Return(do_reading);
}

void GAE(String link) {
booleska framgång = httpRequest(link);
om (framgång == true) {
Delay(5000);

booleska currentLineIsBlank = sant;

String readString = "";
char newString [100].

samtidigt (client.connected()) {
om (client.available()) {
char c = client.read();
Serial.write(c);

om (c == '\n' & & currentLineIsBlank) {
Serial.println ("nått slutet av begäran");
While(client.Connected()) {
char f = client.read();
readString += f;
}
}

om (c == "\n") {
currentLineIsBlank = sant;
} else om (c! = '\r') {
currentLineIsBlank = false;
}
}
}

client.stop();

Serial.println(readString);
} annat {
Serial.println ("inte ansluten.");
}
}

booleska httpRequest (sträng länk) {
om det finns en anslutning
om (client.connect (server, 80)) {
Serial.println ("Få" + länk + "HTTP/1.0"); För dev-läge
client.println ("Få" + länk + "HTTP/1.0");
client.println();

Aktivera anslutna LED
digitalWrite (connectedOff, låg);
digitalWrite (connectedOn, hög);

return true;
} annat {
Du inte kunde göra anslutningen
Serial.println ("Anslutning misslyckades");
fel + = 1;
client.stop();

Aktivera anslutna LED
digitalWrite (connectedOn, låg);
digitalWrite (connectedOff, hög);

returnera false;
}
}

Se Steg
Relaterade Ämnen

Arduino Real Time klocka med Alarm och miljö-sensorer

Arduino klocka, med batteribackup (realtidsklocka), tid, datum, Alarm, temperatur, fuktighet, tryck, LCD utgång, knappsats ingång, viloläge, LED LCD-belysning (4 X) vit med dimmer kontrollSteg 1: ReservdelslistaArduino Real Time klocka med Alarm och...

Kretsloppsodling: EnvDAQ uppgradering med vattentemperaturavkännare (växa säng DAQ)

källkoden för molnet tillämpning och Arduino skiss för denna tutorial finns här.Du kan också hitta denna tutorial på vår blogg i ett mycket mer läsbart format (infogade siffror).Den miljömässiga DAQ är en öppen källkod Arduino shield att spår luft te...

LilyPad Arduino målad duk med musik och ljus

detta är ett projekt som jag skapade för mina barn och teknik klass som jag tar i mitt bibliotek Science magisterprogrammet. Detta var en av mina första erfarenheter med kodning så detta var en prova process men detta instructable bör beskriva min fr...

Arduino avstånd detektor med Summer och LED'S

detta är en enkel guide om hur man gör en avstånd detektor med en Arduino, en HC-SRO4 Ultrasonic Sensor, en Summer och vissa lysdioder. Det slutliga målet med denna handledning är att använda summern och LED för att visa hur långt objektet är från ul...

Arduino - TFT-skärm med ikoner och bilder från FLASH-minne

I detta Instructable hittar du ett bibliotek och skiss för att rita bilder lagrade i Arduino FLASH minne på en TFT-skärm.Här använder vi min favorit 2.2" 320 x 240 pixel ILI9341 baserade TFT-skärm. Denna display är en trevlig storlek för Arduino base...

Smart hemautomation webserver på OpenWRT router WR703N kopplats ihop till Arduino, jämfört med Raspberry Pi och Ubuntu

Hämta WR703N Digest (340MB zip-fil):https://sourceforge.net/projects/wr703n/---------------------------------------------------------------------------------------------------------------------------------Kära läsare,Det finns många Linux styrelser p...

Arduino Bluetooth Garage dörrkontroll med sensorer och anpassningsbara Android App

Använda en arduino till aktivera reläer för att öppna garageportar och elektriska dörrlås.En anpassningsbar Android App, ansluter till arduino via lösenordsskyddade bluetooth-ihopparningen.En bluetooth hc-05 modul tar emot kommandon från en android-t...

Arduino - Ultrasonic Sensor med lysdioder och Summer

Hi guys detta är min första tutorial, jag har precis börjat för några månader sedan lära sig elektronik (tidigare jag har bara visste hur man programmerar i C och Python). När jag avslutat projektet (tog mig ca 5 timmar eller något) har jag beslutat...

Första stegen med bearbetning och Arduino (styra skiftregister från dator)

Hej igen! Jag har få delar, så jag beslöt att börja bygga virtuella! Jag hade bearbetning på min dator, men jag hade aldrig använt det, eftersom i´m bara en student och jag don´t vet Java alls. Först bestämde jag mig att rita kvadrat. Jag hade så myc...

Arduino Real tid väckarklocka med temperatur och LED belysning. Fjärrstyrda

Arduino klocka, med batteribackup (realtidsklocka), tid, datum, Alarm, temperatur, LCD utgång, IR-fjärr ingång, viloläge, LED-belysning (10 X) röd och blå multi-mode.Steg 1: Steg 1: delar listaArduino klocka, med batteribackup (realtidsklocka), tid,...

ATmega programmering med USBtinyISP och Arduino

är att visa hur du kan programmera en Amtel Atmega chip med hjälp av en USB AVR programmerare. Jag har valt USBtinyISP v3.0 till program. Jag plockade mig upp på ebay för jag tror $10. Jag kommer också att använda Arduino mjukvaran, eftersom det är g...

Skicka SMS från Arduino över Internet med ENC28J60 och Thingspeak

Detta Instructable förklarar hur du skickar ett SMS från en Arduino använder Internet. Det finns många sätt att närma sig detta och jag kommer att förklara ett av de olika metoder som används för att utföra denna uppgift.Några viktiga punkter som beh...

Arduino Lockbox med magnetventil och RFID & anpassad hårdvara

Låt oss göra en lockbox! Vi gick över de viktigaste punkterna i detta projekt i Arduino kontrollerade kryssrutan Lås med magnetventil och RFID, men en massa människor lämnades känsla som vi inte spendera en tillräcklig mängd tid med alternativ för an...

Super Spooky onda LED ögon av Doom med atTiny85 och Arduino IDE

det finns några kusliga ögat instructables där ute. Till exempel finns det en som bygger på en 555 timer, en som bygger på en on/off knapp, en som bygger på Arduino och en baserat på band.Jag ville göra en uppsättning kusliga onda ögon som uppfyller...

Nybörjarguide till att bygga Arduino robotar med Bluetooth och Android

i den här guiden vi gå mot att skapa en Arduino robot som kan styras via bluetooth med en Android-telefon/tablett. Detta är en Nybörjarguide som kommer att kort gå över ledningar och programmering din robot.Steg 1: Bygga lista... Följande är en lista...

Bärbar prototyping labb med oscilloskop och arduino

Hej alla tillsammans är jag tillbaka, med ett nytt projekt. Jag var tyst upptagen med min underbara nyfödda dotter (bara 7 veckor gammal) när jag börjar skrev detta det är 00:00 i Tyskland och min dotter äntligen sover och jag hittade lite tid att pr...

Enkla animatörerna med servon och Arduino

servon är förvånansvärt enkel att använda. Ännu mer så än enkel DC-motorer och steppers när du har en mikrokontroller. I detta instructable vi använder en "duino att köra fem servon som kommer att kontrollera en docka armar och nacke.Jag köpte servon...

Arduino powered Sutro Tower tree topper med ljus och dimma

För min första någonsin Arduino projekt, beslöt jag att göra en Sutro Tower tree topper för min Xmas tree. Detta är en av mina favorit San Francisco landmärken och var en guide första året jag bodde i staden när jag inte vet var exakt jag var.Se en v...

Arduino Nano och Visuino: 7 Segment Display klocka med MAX7219 och DS1307 realtid Clock(RTC)

DS1307 Realtidsklocka finns allmänt tillgänglig låg kostnad I2C RTC moduler. De kommer med en klocka och ett litet batteri, och när ansluten till Arduino, kan hålla reda på realtid även när Arduino styrelsen inte drivs. Jag har redan gjort Instructab...