Arduino Aquaponics: Actualización de EnvDAQ con el pH y oxígeno disuelto (2 / 2 paso)

Paso 2: Código de Arduino

IDE de Arduino: 1.0.3

Antes que modificar el código, permite discutir cómo funciona.  El Arduino se comunica con los circuitos de prueba en serie, con los circuitos de manejo el trabajo del ronco dando sentido a las sondas.  En un intervalo de 60 segundos, llamamos a cada función para obtener los datos del sensor.  El pH y hacer funciones leen de serie hasta una secuencia específica se encuentra, partiendo de los anteriores caracteres, formatos una cadena apta para una petición GET y devuelve la cadena.  Por último, se hace una petición a la aplicación.

Para empezar, declarar dos cadenas de entrada

En las declaraciones, definimos dos cadenas de entrada
String phsensorstring = "";
String dosensorstring = "";

A continuación, necesitamos establecer dos conexiones Serial más, pero a una velocidad de 38400 baudios.  Para finalizar la instalación se reserva espacio para las secuencias de entrada y el sensor del circuito.

En setup(), comienzan las salidas serie
Serial.Begin(9600);                 Serie estándar
Serial2.Begin(38400);            pH serie
Serial3.Begin(38400);            HACER serie

Todavía en setup(), reservar espacio para los datos del sensor
phsensorstring.Reserve(30);
dosensorstring.Reserve(30);

Como obtenemos los valores de DHT y LDR, dos nuevas funciones han sido creadas para obtener el pH y disuelven valores de oxígeno.  Leen de serie a los respectivos valores, crear una cadena con formato de una parte de la solicitud GET y luego restablecer la cadena de sensor.

Conseguir pH
String getPH() {}
char phchar;
mientras que (phchar! = '\r') {}
phchar = (char)Serial2.read();
phsensorstring += phchar;
}

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

Conseguir hacer
String getDO() {}
dochar Char;
mientras que (dochar! = '\r') {}
dochar = (char)Serial3.read();
dosensorstring += dochar;
}

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

El bucle principal llama a cada función en un intervalo de 60 segundos y luego envía una solicitud a la aplicación

void loop() {}

Obtener la temperatura y la humedad
String DHTSensor = "";
DHTSensor = getDHT();
Serial.println ("DHT:" + DHTSensor);

Obtener lectura del LDR
LDR de cadena = "";
LDR = getLDR();
Serial.println ("LDR:" + LDR);

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

HACER
String DOSensorValue = "";
DOSensorValue = getDO();
Serial.println ("hacer:" + DOSensorValue);

Enviar datos a la aplicación
GAE (aplicación + "adacs/arduino?" + DHTSensor + LDR + PHSensorValue + DOSensorValue);

Serial.println("");

Delay(60000);

}

El bosquejo completo de Arduino:

/*
El escudo de ambiente DAQ (V2) con pH y sondas de oxígeno disuelto.
*/

#include < SPI.h >
#include < Ethernet.h > / Ethernet escudo
#include < DHT.h > / / DHT.  Crédito: Adafruit Industries

Escudo de Ethernet
mac de bytes [] = {0x90, 0xA2, 0xDA, 0 x 00, 0xA1, 0x90};
myIP de bytes [] = {192, 168, 1, 15};
puerta de entrada de bytes [] = {192, 168, 1, 1};

Char [servidor] = "http://www.myapsystem.appspot.com";
Cliente EthernetClient;

Es fácil cambiar los nombres de la aplicación
Aplicación de la cadena = "http://www.myapsystem.appspot.com/";

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

Cadenas de entrada sonda
String phsensorstring = "";
String dosensorstring = "";

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

PINES ANALÓGICOS
int AmbientLDR = A0;          Resistencia dependiente de luz

Enviar datos DHT
char temp_str [10];            Cadena de temperatura
char rh_str [10];              Cadena de humedad relativa

void setup() {}
Salida Serial de arranque
Serial.Begin(9600);          Estándar serial
Serial2.Begin(38400);        serie pH
Serial3.Begin(38400);        HACER serie
Delay(1000);

Desactivar tarjeta SD si uno en la ranura
pinMode(4,OUTPUT);
digitalWrite(4,HIGH);

Salida Ethernet
Ethernet.Begin(Mac);
Ethernet.Begin (mac, myIP);
Ethernet.Begin (mac, myIP, puerta de entrada);
Delay(1000);        Dar Ethernet una segunda para inicializar
Serial.println(Ethernet.localIP());

Reserva espacio para los datos del sensor
phsensorstring.Reserve(30);
dosensorstring.Reserve(30);


Inicio DHT
DHT.Begin();

Modos de juego Pin
pinMode (connectedOn, salida);
pinMode (connectedOff, salida);

Serial.println ("instalación completa");
}

void loop() {}

Obtener la temperatura y la humedad
String DHTSensor = "";
DHTSensor = getDHT();
Serial.println ("DHT:" + DHTSensor);

Obtener lectura del LDR
LDR de cadena = "";
LDR = getLDR();
Serial.println ("LDR:" + LDR);

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

HACER
String DOSensorValue = "";
DOSensorValue = getDO();
Serial.println ("hacer:" + DOSensorValue);

Enviar datos a la aplicación
GAE (aplicación + "adacs/arduino?" + DHTSensor + LDR + PHSensorValue + DOSensorValue);

Serial.println("");

Delay(60000);

}

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

Si (isnan(t) || isnan(h)) {}
Serial.println ("error al leer desde DHT22");
} else {}
flotador ftemp = (((9.0/5.0) * t) + 32.0);
Temp de la cadena = dtostrf (ftemp, 3, 1, temp_str);
Cadena rh = dtostrf (h, 3, 1, rh_str);

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

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

Devuelve el actual valor de pH
String getPH() {}
char phchar;
mientras que (phchar! = '\r') {}
phchar = (char)Serial2.read();
phsensorstring += phchar;
}

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

Devuelve el actual valor de oxígeno disuelto
String getDO() {}
dochar Char;
mientras que (dochar! = '\r') {}
dochar = (char)Serial3.read();
dosensorstring += dochar;
}

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

void GAE(String link) {}
éxito booleano = httpRequest(link);
Si (éxito == true) {}
Delay(5000);

Boolean currentLineIsBlank = true;

ReadString de cadena = "";
Reemplazos de Char [100];

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

Si (c == '\n' & & currentLineIsBlank) {}
Serial.println ("alcanzado fin de pedido");
{while(Client.Connected())}
char f = client.read();
readString += f;
}
}

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

Client.STOP();

Serial.println(readString);
} else {}
Serial.println ("no conectado.");
}
}



{} Boolean httpRequest (enlace de cadena)
Si hay una conexión exitosa
Si (client.connect (servidor, 80)) {}
Serial.println ("Consigue" enlace + "HTTP/1.0");    Para el modo dev
Client.println ("GET" + enlace + "HTTP/1.0");
Client.println();

Encender LED conectado
digitalWrite (connectedOff, bajo);
digitalWrite (connectedOn, HIGH);

verdaderas;
} else {}
No pudo realizar la conexión
Serial.println ("fallada la conexión");
errores += 1;
Client.STOP();

Encender LED conectado
digitalWrite (connectedOn, bajo);
digitalWrite (connectedOff, HIGH);

devuelven el valor false;
}
}

Artículos Relacionados

Conectando Arduino a MySQl base de datos con USB con MysqlIO

Conectando Arduino a MySQl base de datos con USB con MysqlIO

Siempre pensé en controlar arduino desde otro dispositivo Wi-Fi o internet, pero no quería sacrificar cualquier pin para la comunicación. Ya hice un proyecto para controlar mi PC con arduino usando IR remote (usted puede encontrar el enlace aquí).Act
Monitor de entorno Arduino Mini ** actualización - RTC añadido ***

Monitor de entorno Arduino Mini ** actualización - RTC añadido ***

este es un ejemplo de cómo puede usar el Arduino para controlar diversos parámetros ambientales y mostrarlos en una pantalla LCD.Nota: He añadido un reloj en tiempo Real!!!! Para ver los pasos, partes agregadas y dibujo agregué nuevos pasos...Paso 1:
Arduino Aquaponics: Controlador de bomba de JSON

Arduino Aquaponics: Controlador de bomba de JSON

cuando empezamos a desarrollar el Controlador acuaponia nos dimos cuenta de que queríamos una sola unidad que puede manejar múltiples situaciones.  Algunos sistemas de acuaponia de inundación y desagüe cambiar la bomba enciende y apaga en intervalos
Arduino Aquaponics: reloj de tiempo Real parte I

Arduino Aquaponics: reloj de tiempo Real parte I

necesidad fundamental de AA de cualquier sistema de control es la capacidad de registrar el tiempo.  Como lo que somos conscientes, el Arduino tiene tres métodos que puede emplear:1. serie.  Varias veces superar el tiempo de la conexión en serie.2. e
Hacer una aplicación Android para controlar por Bluetooth un Arduino controlar su casa mediante RF, con AppInventor

Hacer una aplicación Android para controlar por Bluetooth un Arduino controlar su casa mediante RF, con AppInventor

Sé que el título es un buen bocado, pero es exactamente lo que es.Hace algún tiempo, hice un instructivo que describe un circuito alrededor de un atmega328 (o un 'Arduino') que era disuadir a ladrones simulando ser en casa.Poco a poco ese sistema en
Arduino LilyPad pato dinastía Hoodie con luces LED y sonidas

Arduino LilyPad pato dinastía Hoodie con luces LED y sonidas

hice un pato dinastía temática sudadera con capucha con un LilyPad Arduino que tiene 3 interruptores de sensor de cremallera para activar 3 diferentes acciones y programas en la parte posterior de la capucha. La cremallera es la clave para activar es
TFT de Arduino prediccion estación meteorológica con ESP8266

TFT de Arduino prediccion estación meteorológica con ESP8266

Este proyecto se basa en Wunderground meteorológico a través de Internet.Especificaciones:1. 3 días previsión (temps baja y alta, probablemente de la precipitación, los iconos de condición)2. corriente el tiempo en las condiciones (temperatura actual
Arduino gráfica comunicación Serial con otro (LED parpadea)

Arduino gráfica comunicación Serial con otro (LED parpadea)

Arduino está utilizando extensamente para diferentes tipos de proyectos informáticos y electrónicos para muchos propósitos, tiene un compilador bien diseñado que reducen la codificación y carga de tiempo, otro es un estudio de lenguaje de programació
Arduino Powered pared árbol de Navidad con estrella Wars tema LED luces

Arduino Powered pared árbol de Navidad con estrella Wars tema LED luces

Es un árbol de Navidad DIY perfecta para casas pequeñas, apartamentos o una oficina donde usted no quiere un árbol de verdad y quiere un poco espíritu navideño.Usted puede ir simple o compleja con el diseño aquí pero decidí ir bastante simple con alg
Arduino Combi-botón de bloqueo con soporte opcional de iOS/Android

Arduino Combi-botón de bloqueo con soporte opcional de iOS/Android

recientemente, decidí que me gustaría tratar de hacer un bloqueo de clave de acceso con mi recién adquirido Arduino Uno, pero todos los tutoriales que pude encontrar hicieron uso de un teclado modificado, algo que no cada Tom, Dick y Harry tienen min
Arduino: De Control de 3 LED con un potenciómetro

Arduino: De Control de 3 LED con un potenciómetro

este es mi primer instructable. Espero que lo disfruten. :)En este instructable usted puede aprender cómo controlar 3 Led con un potenciómetro.Paso 1: partes Necesita:-3 led de-algunos de los cables de puente-1 potenciómetroResistencias de Ohm-3 220A
Mod un adaptador USB a TTL serie (CP2102) programa Arduino Mini Pro como el FTDI con Auto-reset

Mod un adaptador USB a TTL serie (CP2102) programa Arduino Mini Pro como el FTDI con Auto-reset

Este USB a TTL Serial board basada en el chip CP2102, está disponible en eBay. Y puede ser utilizado para programar el Arduino Pro Mini y otros que no tienen USB en placa. Pero no es tan conveniente como la Junta FTDI vendida por diversión de la chis
Bajar de la cama, con Arduino, 3d caja impresa y programado con Embrio

Bajar de la cama, con Arduino, 3d caja impresa y programado con Embrio

La Idea básica es crear algo que se puede detectar cuando mis perros se ponen en el sofá cuando no estoy allí y "les anima a bajar". Esto se logra con un pasivo Ifrared sensor y hacer ruidos que no le gusta los perros.Vi otro proyecto similar qu
Arduino controlador basado en termopar ajustable con relé

Arduino controlador basado en termopar ajustable con relé

he creado recientemente un controlador de temporizador ajustable de Arduino con proyecto relé para el control de mi calentador de porche de gas de milivoltios (termopila).  Las imágenes utilizadas en este proyecto, así como las imágenes utilizadas en