Arduino Aquaponics : EnvDAQ mise à niveau avec le pH et l’oxygène dissous (2 / 2 étapes)

Étape 2: Arduino Code

IDE Arduino : 1.0.3

Avant de nous modifier le code, permet de discuter de comment cela fonctionne.  L’Arduino communique avec les circuits de la sonde au cours de la série, avec les circuits gère les tâches rébarbatives donner un sens les sondes.  Sur un intervalle de 60 seconde, nous appelons chaque fonction pour obtenir les données du capteur.  Le pH et les fonctions lire de série jusqu'à ce qu’une séquence spécifique se trouve, s’appuyant sur les caractères précédents, formate une chaîne retour appropriée à une requête GET et retourne la chaîne.  Enfin, une demande est faite à l’application Web.

Pour commencer, déclarer deux chaînes d’entrée

Dans les déclarations, définir deux chaînes d’entrée
String phsensorstring = "" ;
String dosensorstring = "" ;

Ensuite, nous devons définir les connexions série plus deux, mais à une vitesse de 38400 baud.  Pour terminer l’installation, nous réserverons l’espace pour les chaînes d’entrée et de capteur du circuit.

Dans setup(), commencer les sorties séries
Serial.Begin(9600) ;                 Série standard
Serial2.Begin(38400) ;            pH série
Serial3.Begin(38400) ;            FAIRE série

Toujours dans setup(), réserver un espace pour les données du capteur
phsensorstring.Reserve(30) ;
dosensorstring.Reserve(30) ;

Tout comme nous obtenons les valeurs DHT et LDR, deux nouvelles fonctions sont créées pour obtenir le pH et dissous les valeurs d’oxygène.  Ils lisent de série pour obtenir les valeurs respectives, créez une chaîne de retour mis en forme comme un morceau de la requête GET et puis redéfinissez cette chaîne de capteur.

Obtenir le pH
String getPH() {}
char phchar ;
tandis que (phchar! = « \r ») {}
phchar = (char)Serial2.read() ;
phsensorstring += phchar ;
}

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

Obtenir
String getDO() {}
char dochar ;
tandis que (dochar! = « \r ») {}
dochar = (char)Serial3.read() ;
dosensorstring += dochar ;
}

String do_reading = « & DO = » + dosensorstring ;
dosensorstring = "" ;
Return(do_reading) ;
}

La boucle principale appelle chaque fonction sur un intervalle de 60 seconde et envoie ensuite une requête à l’application Web

void loop() {}

Obtenir la température et l’humidité
String DHTSensor = "" ;
DHTSensor = getDHT() ;
Serial.println ("DHT:" + DHTSensor) ;

Obtenir la lecture de LDR
Chaîne de LDR = "" ;
LDR = getLDR() ;
Serial.println ("LDR:" + LDR) ;

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

FAIRE
String DOSensorValue = "" ;
DOSensorValue = getDO() ;
Serial.println ("faire:" + DOSensorValue) ;

Envoyer des données vers Webapp
GAE (webapp + "adacs/arduino?" + DHTSensor + LDR + PHSensorValue + DOSensorValue) ;

Serial.println("") ;

Delay(60000) ;

}

Le sketch Arduino complet :

/*
Le bouclier d’environnement DAQ (V2) avec pH et sondes d’oxygène dissous.
*/

#include < SPI.h >
#include < Ethernet.h > / / Ethernet Shield
#include < DHT.h > / / DHT.  Crédit : Adafruit Industries

Ethernet Shield
la mac de Byte [] = {0x90, 0xA2, 0xDA, 0 x 00, 0xA1, 0x90} ;
myIP Byte = {192, 168, 1, 15} ;
la passerelle de Byte [] = {192, 168, 1, 1} ;

Char [serveur] = "http://www.myapsystem.appspot.com" ;
EthernetClient client ;

Le rend facile de changer les noms de app
Chaîne de webapp = « http://www.myapsystem.appspot.com/ » ;

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

Chaînes d’entrée sonde
String phsensorstring = "" ;
String dosensorstring = "" ;

BROCHES NUMÉRIQUES
int connectedOn = 6 ;
int connectedOff = 7 ;

BROCHES ANALOGIQUES
int AmbientLDR = A0 ;          Résistance de charge léger

Envoie des données DHT
char temp_str [10] ;            Chaîne de température
char rh_str [10] ;              Chaîne de l’humidité relative

void setup() {}
Départ sortie série
Serial.Begin(9600) ;          Série standard
Serial2.Begin(38400) ;        série de pH
Serial3.Begin(38400) ;        FAIRE série
Delay(1000) ;

Désactiver la carte SD si on dans la fente
pinMode(4,OUTPUT) ;
digitalWrite(4,HIGH) ;

Commencer à Ethernet
Ethernet.Begin(Mac) ;
Ethernet.Begin (mac, myIP) ;
Ethernet.Begin (mac, myIP, passerelle) ;
Delay(1000) ;        Donner Ethernet une seconde pour initialiser
Serial.println(Ethernet.localIP()) ;

Réserver un espace pour les données du capteur
phsensorstring.Reserve(30) ;
dosensorstring.Reserve(30) ;


Début DHT
DHT.Begin() ;

Modes de mettre broche
pinMode (connectedOn, sortie) ;
pinMode (connectedOff, sortie) ;

Serial.println ("installation complète") ;
}

void loop() {}

Obtenir la température et l’humidité
String DHTSensor = "" ;
DHTSensor = getDHT() ;
Serial.println ("DHT:" + DHTSensor) ;

Obtenir la lecture de LDR
Chaîne de LDR = "" ;
LDR = getLDR() ;
Serial.println ("LDR:" + LDR) ;

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

FAIRE
String DOSensorValue = "" ;
DOSensorValue = getDO() ;
Serial.println ("faire:" + DOSensorValue) ;

Envoyer des données vers Webapp
GAE (webapp + "adacs/arduino?" + DHTSensor + LDR + PHSensorValue + DOSensorValue) ;

Serial.println("") ;

Delay(60000) ;

}

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

Si (isnan(t) || isnan(h)) {}
Serial.println ("Impossible de lire de DHT22") ;
} else {}
float ftemp = (((9.0/5.0) * t) + 32,0) ;
Temp de String = dtostrf (ftemp, 3, 1, temp_str) ;
Chaîne HR = dtostrf (h, 3, 1, rh_str) ;

String dhtUrl = "Temp = » + temp +" & humidité = "+ rh ;
Return(dhtUrl) ;
}
}

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

Retourne la valeur actuelle de pH
String getPH() {}
char phchar ;
tandis que (phchar! = « \r ») {}
phchar = (char)Serial2.read() ;
phsensorstring += phchar ;
}

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

Retourne la valeur actuelle de l’oxygène dissous
String getDO() {}
char dochar ;
tandis que (dochar! = « \r ») {}
dochar = (char)Serial3.read() ;
dosensorstring += dochar ;
}

String do_reading = « & DO = » + dosensorstring ;
dosensorstring = "" ;
Return(do_reading) ;
}

void GAE(String link) {}
succès booléen = httpRequest(link) ;
Si (succès == true) {}
Delay(5000) ;

Boolean currentLineIsBlank = true ;

Dim readString = "" ;
char nouvelleChaine [100] ;

tandis que (client.connected()) {}
Si (client.available()) {}
char c = client.read() ;
Serial.Write(c) ;

Si (c == « \n » & & currentLineIsBlank) {}
Serial.println ("conclues fin de demande") ;
{while(client.Connected())}
char f = client.read() ;
readString += f ;
}
}

Si (c == « \n ») {}
currentLineIsBlank = true ;
} ElseIf (c! = « \r ») {}
currentLineIsBlank = false ;
}
}
}

client.Stop() ;

Serial.println(ReadString) ;
} else {}
Serial.println ("non connecté.") ;
}
}



httpRequest booléenne (lien String) {}
s’il y a une connexion réussie
Si (client.connect (serveur, 80)) {}
Serial.println (« GET » + lien + « HTTP/1.0 ») ;    Pour le mode dev
client.println (« GET » + lien + "HTTP/1.0") ;
client.println() ;

Allumer la LED connectée
digitalWrite (connectedOff, basse) ;
digitalWrite (connectedOn, HIGH) ;

retourne la valeur true ;
} else {}
Vous ne pouvait pas établir la connexion
Serial.println ("connexion impossible") ;
Errors += 1 ;
client.Stop() ;

Allumer la LED connectée
digitalWrite (connectedOn, basse) ;
digitalWrite (connectedOff, HIGH) ;

retourne la valeur false ;
}
}

Articles Liés

Aquaponics : EnvDAQ mise à jour avec sonde de température de l’eau (Grow lit DAQ)

Aquaponics : EnvDAQ mise à jour avec sonde de température de l’eau (Grow lit DAQ)

le code source de l'application en nuage et Arduino croquis pour ce tutoriel sont disponibles ici.Vous pouvez également trouver ce tutoriel sur notre blog dans un format plus lisible (Figures inline).L'acquisition de données environnementales est un
Arduino Tweetmas arbre * mis à jour avec le code *

Arduino Tweetmas arbre * mis à jour avec le code *

Cette année je veux décorer ma maison pour Noël.J'ai arduino et dirigé la bande ws2811 ; ce qui est tout bon !Il a besoin d'une bonne idée d'être original ; C'est avec twitter !J'ai entendu parler du projet de cheerlights ; C'est une bonne idée.Je va
Mise à niveau avec poufs

Mise à niveau avec poufs

J'utilise les graveurs Laser à San Jose TechShop, http://www.techshop.ws, graver au fond des bois tourné. Étant donné que ces bols sont souvent tournés de bois vert, ils ont tendance à se déformer comme ils sèchent. Cela pose un problème que le fond
Les blocs de bois mis à niveau avec des aimants

Les blocs de bois mis à niveau avec des aimants

Salut tout le monde ! J'ai l'intention ce projet pour ma petite fille, qui aime jouer avec des choses colorées.Les blocs de bois originales, étaient un cadeau de mon père il y a environ 25 ans.À l'époque, j'ai très souvent du mal, causer les morceaux
Lampe-torche solaire de keychain mise à niveau avec supercondensateur

Lampe-torche solaire de keychain mise à niveau avec supercondensateur

* Este proyecto tambien esta disponible en Español haciendo clic aquiIl en existe plusieurs en ligne et au détail magasins où existe une sorte de petites lampes de poche LED, ils sont rechargeables par énergie solaire. On signale des prix autour de 1
Le ratPhone - 3 G FONA Arduino cellulaire Mobile Cell Phone avec clavier rétro de bouton poussoir et Rat capture App

Le ratPhone - 3 G FONA Arduino cellulaire Mobile Cell Phone avec clavier rétro de bouton poussoir et Rat capture App

Tant pis les iPhones et les androïdes. Voici le ratPhone ! Ce n'est certainement pas un téléphone intelligent. Mais il n'est pas un téléphone stupid non plus. Vous ne serez pas en mesure de perdre des heures interminables sur Facebook ou Twitter, mai
Mise à niveau d’un routeur.

Mise à niveau d’un routeur.

Routeur est sorte d'une passerelle vers l'internet. La plupart des routeurs sont vraiment un pont et un routeur tout en un. Un pont est un appareil qui prend le moyen de communication à l'autre. Par exemple, câble transmet généralement des signaux su
Activer la mise à niveau automatique pour votre imprimante 3D avec un capteur inductif (Firmware Marlin)

Activer la mise à niveau automatique pour votre imprimante 3D avec un capteur inductif (Firmware Marlin)

Ce Instructable couvre la configuration de mise à niveau automatique pour votre imprimante 3D utilisant le micrologiciel Marlin typique de nombreuses imprimantes 3D tels que les kits de Makerfarm et d'autres qui utilisent des rampes 1.4 + Arduino bas
L’utilisation de télécommandes IR avec Arduino (actuels et mis à jour)

L’utilisation de télécommandes IR avec Arduino (actuels et mis à jour)

Je suis fatigué de ces tutoriels de programmation compliquées sur l'utilisation de certaines choses. J'aime simple, facile à comprendre, étape par étape les instructions. Mon plus gros problème était avec IR et de POV. J'ai enfin maîtrisé comment con
Mise à niveau de votre arrosage avec Automation INSTEON

Mise à niveau de votre arrosage avec Automation INSTEON

la plupart des gens ont leurs arroseurs sur un certain type de minuterie automatique ; C'est très bien, mais ce n'est pas le plus sophistiqué et mis à part un calendrier de base, habituellement impossible de créer des schémas d'arrosage élaborées.  B
Undistructible mise à niveau de votre ancien obsolète Music System avec carte SD, USB, sans fil auxiliaire

Undistructible mise à niveau de votre ancien obsolète Music System avec carte SD, USB, sans fil auxiliaire

Undistructible mise à niveau de votre ancien obsolète Music System avec carte SD, USB, sans fil auxiliaireCe que vous atteindre en faisant cela sans endommager voiture fm modilator:-1. continuer à utiliser dans la voiture2. utiliser pour écouter de l
Portable batterie sauvegarde avec mises à niveau

Portable batterie sauvegarde avec mises à niveau

Diy portable batterie de secours pour le camping ou survivre à une panne d'électricité.Étape 1: Pièces et matériauxLes parties de l'instructible est pour la plupart des choses j'ai déjà eu, mais peuvent être acheté en ligne et à votre local Wal-Mart.
Mise à niveau de vos murs avec Art

Mise à niveau de vos murs avec Art

salle de bain ma Main a commencé écru, alors j'ai voulu lui donner quelque chose avec certaine fusée.Étape 1: Étapes de salle de bain principale 1. après avoir examiné les choix de conception différente, j'ai décidé d'essayer quelque chose de nouveau
Mise à niveau du lit de chaleur des Ultimaker Original

Mise à niveau du lit de chaleur des Ultimaker Original

Il s'agit d'un projet que j'ai expérimenté récemment et j'ai écris cette instructable afin je l'espère aider toute personne qui envisage de faire eux-mêmes au cours de quelques pièges, j'ai vécu. Cela étant dit, bien que mon domaine d'études est GENI