You are on page 1of 4

INSTALACIN DE RIEGO TECNIFICADO

CON ARDUINO Y PHYTON


Segn nuestra tesis el sistema miltiplaforma se basa en el control y
monitorizacin del riego tecnificado, y este monitoreo tiene nfasis en la
humedad si falta o no agua en la plantas de todos los regados, si deseas
controlar tambin la salinidad, temperatura, acides, etc. se pueden comprar
tambin esos sensores que pueden ser programables y adheridos al arduino
por lo pronto solo haremos prueba con el de la humedad y su activacin ya sea
manual o automtica y es como sigue:
Plano

Descargamos a la pc el IDE de arduino y lo programamos de la siguiente


manera, si el nivel de ph o humedad es alto cierra el cual agregaremos al servo
o llave el siguiente cdigo en la librera
// incluimos la librera Cao o servo
#include ;
// establecemos los pines
const int sensorPin = 2;
// pin para el led indicador
const int ledPin = 12;
// iniciamos en estado cero
int estado = 0;
int estadoOff =0;
// estado del sensor inicia en cero
int sensorState = 0;
Servo myservo;
void setup(){
//Configuracin de los pines
pinMode(ledPin, OUTPUT);
pinMode(sensorPin, INPUT);
myservo.attach(9);
}
void loop(){
// verificamos constantemente el pin del sensor
sensorState = digitalRead(sensorPin);
if (sensorState == LOW){

// si el suelo esta humedo ingresa aqu


if(estado == 0){
// iniciamos el servo
myservo.attach(9);
// movemos el servo
myservo.write(120);
delay(500);
// detenemos el servo sin energa
myservo.detach();
estado = 1;
estadoOff = 0;
// combiamos el estado para que efectue el cierre de la vlvula
}
}
else {
if(estadoOff == 0){
// sentido opuesto no hay humedad abrimos la vlvula
myservo.attach(9);
myservo.write(0);
delay(500);
myservo.detach();
estadoOff = 1;
estado = 0;
}
}
}

Si tienes experiencia con el arduino pues puedes agregar la librera al lenguaje


de programacin que desees ya sea php, Python, etc, para poder grabar los
datos de los sensores, y de all poder comandar puesto que ya te di las
variables y mientras se agregue esta librera pueden influir en el sistema, ahora
tratndose de un sistema multiplataforma, (sea que puede ser comandado por
internet tendramos que agregar una tarjeta de red al arduino o un ethernet
shield).
Por ejemplo si deseas capturar los datos de los sensores en php y mysql y la
tarjeta de red (tenemos que tener anotada la mac de la tarjeta de red puesto
que nos servir como identificador)
Incluye la librera inicialmente y el sketch despus ejemplo:
Usaremos el siguiente sketch
#include <SPI.h>
#include <Ethernet.h>
// Mac unica de cada EthernetShield (deben cambiarla)
byte mac[] = { 0x90, 0xA2, 0xDA, 0x0D, 0x4E, 0xD7 };
// Inicializa la instancia client
EthernetClient client;
// Direccion del servidor
char server[] = "www.riegotecnificado.pe";
// Variable de tiempo de la ultima conexion en milisegundos
unsigned long ultimaConexion = 0;
// Estado de la ultima conexion
boolean ultimoEstado = false;
// Intervalo en milisegundos entre conexiones
const unsigned long intervaloConexion = 10000;

// Datos del sensor


float PhC; // Humedad o Ph
int LM35 = 0; // Pin A0 del Arduino
void setup() {
// Inicializa puerto serial
Serial.begin(9600);
Serial.println("#### riegotecnificado.pe ####");
Serial.println("Sensor de Humedad LM35/ web");
// Espera 1 segundo para que se inicie la tarjeta Ethernet
delay(1000);
// Inicializa la tarjeta ethernet mediante DHCP
Ethernet.begin(mac);
// Imprime la direccion IP de la tarjeta
Serial.print("Direccion IP: ");
Serial.println(Ethernet.localIP());
}
// Loop principal
void loop() {
// Lee la Humedad desde el sensor
PhC = analogRead(LM35);
// Convierte el valor leido a Humedad
PhC = (5.0 * PhC * 100.0)/1024.0;
// Si hay datos que llegan por la conexion los envia a la puerta serial
if (client.available()) {
char c = client.read();
Serial.print(c);
}
// Si no hay conexion de red y se conecto correctamente la ultima vez
// detiene el cliente Ehternet
if (!client.connected() && ultimoEstado) {
Serial.println();
Serial.println("Desconectando...");
client.stop();
}
// Si no esta conectado y han pasado X segundos (intervaloConexion)
// despues de la ultima conexion envia datos al servidor
if(!client.connected() && (millis() - ultimaConexion > intervaloConexion)) {
httpRequest();
}
// Actualiza la variable ultimoEstado
ultimoEstado = client.connected();
}
// Fin del loop principal
// Realiza la conexion http al servidor
void httpRequest() {
// Se conecta al servidor en el puerto 80 (web)
if (client.connect(server, 80)) {
// Envia el dato al puerto serial
Serial.print("Sensor LM35: ");
Serial.print(PhC);
Serial.println(" grados Celsius");
// Envia el requerimiento al servidor via GET
Serial.println("Iniciando conexion...");
client.print("GET /sensorarduino.php?id=joniuz&nombre=Humedad&valor=");
client.print(PhC);
client.println(" HTTP/1.1");
client.print("Host: ");
client.println(server);
client.println("User-Agent: Arduino-Ethernet");
client.println("Connection: close");
client.println();
// Actualiza el tiempo en milisegundos de la ultima conexion

ultimaConexion = millis();
}
else {
// Si la conexion fallo se desconecta
Serial.println("Error al conectarse al servidor");
Serial.println("Desconectando...");
client.stop();
}
}

Para guardar los datos se crea una tabla de tal forma que nuestro sistema se
convierte en dinmico creamos la tabla en mysql
CREATE TABLE IF NOT EXISTS `variable` (
`fecha` datetime NOT NULL,
`id` varchar(30) NOT NULL,
`nombre` varchar(100) NOT NULL,
`valor` float NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

Y el script en php se encargara de ejecuta los GET


<?php
// Parametros de base de datos
$mysql_servidor = "localhost";
$mysql_base = "riego";
$mysql_usuario = "tecnico";
$mysql_clave = "contrasea";
$id = htmlspecialchars($_GET["id"],ENT_QUOTES);
$nombre = htmlspecialchars($_GET["nombre"],ENT_QUOTES);
$valor = htmlspecialchars($_GET["valor"],ENT_QUOTES);
// Valida que esten presente todos los parametros
if (($id!="") and ($nombre!="") and ($valor!="")) {
mysql_connect($mysql_servidor,$mysql_usuario,$mysql_clave) or
die("Imposible conectarse al servidor.");
mysql_select_db($mysql_base) or die("Imposible abrir Base de datos");
$sql = "insert into variable (fecha, id, nombre, valor) values
(NOW(),'$id','$nombre','$valor')";
mysql_query($sql);
}
?>

Tienes que verificar si el arduino llevara dos controles de alimentacin de


energa, me refiero a elctrica o solar, puedes ver que existen sensores
inalmbricos

You might also like