"NOSTRUM VIRIDIS"

"NOSTRUM VIRIDIS"

martes, 12 de agosto de 2014

ARDUINO Y VIRTUAL BASIC

Buenas despues de leer y tener tiempo para trastear ,decidi crear un emulador de PC para poder controlar  14 pines (pwm) y 2 pines(digital) atravez del virtual basic como generador de datos serial a arduino ,esto simplifica  a la hora de hacer pruevas que es con el objetivo con el que se creo para crear presentacion de las ejecuciones directas de arduino ,con respuesta rapida .estos son los paneles de control
OFF
 ON

CODIGO VB
Imports System.IO.Ports
Imports System.Threading

Public Class Form1
    Dim cambio2 As Boolean = True
    Dim cambio3 As Boolean = True
    Dim cambio4 As Boolean = True
    Dim cambio5 As Boolean = True
    Dim cambio6 As Boolean = True
    Dim cambio7 As Boolean = True
    Dim cambio8 As Boolean = True
    Dim cambio9 As Boolean = True
    Dim cambio10 As Boolean = True
    Dim cambio11 As Boolean = True
    Dim cambio12 As Boolean = True
    Dim cambio44 As Boolean = True
    Dim cambio45 As Boolean = True
    Dim cambio46 As Boolean = True
    Dim cambio40 As Boolean = True
    Dim cambio41 As Boolean = True

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        SerialPort1.Close()
        SerialPort1.PortName = "com15" 'CAMBIA EL PUERTO COM
        SerialPort1.BaudRate = 9600
        SerialPort1.DataBits = 8
        SerialPort1.Parity = Parity.None
        SerialPort1.StopBits = StopBits.One
        SerialPort1.Handshake = Handshake.None
        SerialPort1.Encoding = System.Text.Encoding.Default
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LUNA.Click
        SerialPort1.Open()
        If cambio2 = True Then
            SerialPort1.Write("2 on")
            Pluna.Visible = True
        Else
            SerialPort1.Write("2 off")
            Pluna.Visible = False
        End If
        cambio2 = Not (cambio2)
        SerialPort1.Close()
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AZUL.Click
        SerialPort1.Open()
        If cambio3 = True Then
            SerialPort1.Write("3 on")
            Pazul.Visible = True
        Else
            SerialPort1.Write("3 off")
            Pazul.Visible = False
        End If
        cambio3 = Not (cambio3)
        SerialPort1.Close()
    End Sub
    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CYAN.Click
        SerialPort1.Open()
        If cambio4 = True Then
            SerialPort1.Write("4 on")
            Pcyan.Visible = True
        Else

            SerialPort1.Write("4 off")
            Pcyan.Visible = False
        End If
        cambio4 = Not (cambio4)
        SerialPort1.Close()
    End Sub

    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles GREEN.Click
        SerialPort1.Open()
        If cambio5 = True Then
            SerialPort1.Write("5 on")
            Pgreen.Visible = True
        Else
            SerialPort1.Write("5 off")
            Pgreen.Visible = False
        End If
        cambio5 = Not (cambio5)
        SerialPort1.Close()
    End Sub
    Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MAGENTA.Click
        SerialPort1.Open()

        If cambio6 = True Then
            SerialPort1.Write("6 on")
            Pmagenta.Visible = True
        Else

            SerialPort1.Write("6 off")
            Pmagenta.Visible = False
        End If
        cambio6 = Not (cambio6)
        SerialPort1.Close()
    End Sub

    Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles REDP.Click
        SerialPort1.Open()
        If cambio7 = True Then
            SerialPort1.Write("7 on")
            Predp.Visible = True
        Else
            SerialPort1.Write("7 off")
            Predp.Visible = False
        End If
        cambio7 = Not (cambio7)
        SerialPort1.Close()
    End Sub
    Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RED.Click
        SerialPort1.Open()
        If cambio8 = True Then
            SerialPort1.Write("8 on")
            Pred.Visible = True
        Else
            SerialPort1.Write("8 off")
            Pred.Visible = False
        End If
        cambio8 = Not (cambio8)
        SerialPort1.Close()
    End Sub
    Private Sub Button8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles WHITE1.Click
        SerialPort1.Open()

        If cambio9 = True Then
            SerialPort1.Write("9 on")
            Pwhite1.Visible = True
        Else
            SerialPort1.Write("9 off")
            Pwhite1.Visible = False
        End If
        cambio9 = Not (cambio9)
        SerialPort1.Close()
    End Sub

    Private Sub Button9_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles WHITE2.Click
        SerialPort1.Open()
        If cambio10 = True Then
            SerialPort1.Write("10 on")
            Pwhite2.Visible = True
        Else
            SerialPort1.Write("10 off")
            Pwhite2.Visible = False
        End If
        cambio10 = Not (cambio10)
        SerialPort1.Close()
    End Sub
    Private Sub Button10_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles WHITE3.Click
        SerialPort1.Open()
        If cambio11 = True Then
            SerialPort1.Write("11 on")
            Pwhite3.Visible = True
        Else
            SerialPort1.Write("11 off")
            Pwhite3.Visible = False
        End If
        cambio11 = Not (cambio11)
        SerialPort1.Close()
    End Sub

    Private Sub Button11_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles WHITE4.Click
        SerialPort1.Open()
        If cambio12 = True Then
            SerialPort1.Write("12 on")
            Pwhite4.Visible = True
        Else
            SerialPort1.Write("12 off")
            Pwhite4.Visible = False
        End If
        cambio12 = Not (cambio12)
        SerialPort1.Close()
    End Sub
    Private Sub Button12_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles WHITE5.Click
        SerialPort1.Open()

        If cambio44 = True Then
            SerialPort1.Write("44 on")
            Pwhite5.Visible = True
        Else

            SerialPort1.Write("44 off")
            Pwhite5.Visible = False
        End If
        cambio44 = Not (cambio44)
        SerialPort1.Close()
    End Sub

    Private Sub Button13_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles WHITE6.Click
        SerialPort1.Open()
        If cambio45 = True Then
            SerialPort1.Write("45 on")
            Pwhite6.Visible = True
        Else
            SerialPort1.Write("45 off")
            Pwhite6.Visible = False
        End If
        cambio45 = Not (cambio45)
        SerialPort1.Close()
    End Sub
    Private Sub Button14_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles WHITE7.Click
        SerialPort1.Open()
        If cambio46 = True Then
            SerialPort1.Write("46 on")
            Pwhite7.Visible = True
        Else
            SerialPort1.Write("46 off")
            Pwhite7.Visible = False
        End If
        cambio46 = Not (cambio46)
        SerialPort1.Close()
    End Sub
    Private Sub Button15_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BATERY.Click
        SerialPort1.Open()
        If cambio40 = True Then
            SerialPort1.Write("40 on")
            Pbatery.Visible = True
        Else
            SerialPort1.Write("40 off")
            Pbatery.Visible = False
        End If
        cambio40 = Not (cambio40)
        SerialPort1.Close()
    End Sub
    Private Sub Button16_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles FUENTE.Click
        SerialPort1.Open()
        If cambio41 = True Then
            SerialPort1.Write("41 on")
            Pfuente.Visible = True
        Else
            SerialPort1.Write("41 off")
            Pfuente.Visible = False
        End If
        cambio41 = Not (cambio41)
        SerialPort1.Close()
    End Sub
End Class

CODIGO ARDUINO
char inData[20]; // Allocate some space for the string
char inChar=-1; // Where to store the character read
byte index = 0; // Index into array; where to store the character

void setup() {
Serial.begin(9600);
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
pinMode(12,OUTPUT);
pinMode(44, OUTPUT);
pinMode(45, OUTPUT);
pinMode(46, OUTPUT);
pinMode(40, OUTPUT);
pinMode(41, OUTPUT);
}

char Comp(char* This) {
while (Serial.available() > 0) // Don't read unless
// there you know there is data
{
if(index < 19) // One less than the size of the array
{
inChar = Serial.read(); // Read a character
inData[index] = inChar; // Store it
index++; // Increment where to write next
inData[index] = '\0'; // Null terminate the string
}
}

if (strcmp(inData,This) == 0) {
for (int i=0;i<19;i++) {
inData[i]=0;
}
index=0;
return(0);
}
else {
return(1);
}
}

void loop()
{

if (Comp("41 on")==0) { digitalWrite(41, HIGH);}
if (Comp("41 off")==0) {digitalWrite(41, LOW);}
if (Comp("40 on")==0) { digitalWrite(40, HIGH);}
if (Comp("40 off")==0) {digitalWrite(40, LOW);}
if (Comp("46 on")==0) { digitalWrite(46, HIGH);}
if (Comp("46 off")==0) {digitalWrite(46, LOW);}
if (Comp("45 on")==0) { digitalWrite(45, HIGH);}
if (Comp("45 off")==0) {digitalWrite(45, LOW);}
if (Comp("44 on")==0) { digitalWrite(44, HIGH);}
if (Comp("44 off")==0) {digitalWrite(44, LOW);}
if (Comp("12 on")==0) { digitalWrite(12, HIGH);}
if (Comp("12 off")==0) {digitalWrite(12, LOW);}
if (Comp("11 on")==0) { digitalWrite(11, HIGH);}
if (Comp("11 off")==0) {digitalWrite(11, LOW);}
if (Comp("10 on")==0) { digitalWrite(10, HIGH);}
if (Comp("10 off")==0) {digitalWrite(10, LOW);}
if (Comp("9 on")==0) { digitalWrite(9, HIGH);}
if (Comp("9 off")==0) {digitalWrite(9, LOW);}
if (Comp("8 on")==0) { digitalWrite(8, HIGH);}
if (Comp("8 off")==0) {digitalWrite(8, LOW);}
if (Comp("7 on")==0) { digitalWrite(7, HIGH);}
if (Comp("7 off")==0) {digitalWrite(7, LOW);}
if (Comp("6 on")==0) { digitalWrite(6, HIGH);}
if (Comp("6 off")==0) {digitalWrite(6, LOW);}
if (Comp("5 on")==0) { digitalWrite(5, HIGH);}
if (Comp("5 off")==0) {digitalWrite(5, LOW);}
if (Comp("4 on")==0) { digitalWrite(4, HIGH);}
if (Comp("4 off")==0) {digitalWrite(4, LOW);}
if (Comp("3 on")==0) { digitalWrite(3, HIGH);}
if (Comp("3 off")==0) {digitalWrite(3, LOW);}
if (Comp("2 on")==0) { digitalWrite(2, HIGH);}
if (Comp("2 off")==0) {digitalWrite(2, LOW);}
}



viernes, 14 de marzo de 2014

GRUPO PERISTALTICO V,O2

DESPUES DE VER QUE EL ANTERIOR GRUPO  SE ME QUEDABA  ANTIGUO, DECIDI MEJORARLO. PARA DICHO PROYECTO HE QUERIDO MEJORAR EL SISTEMA DE RECIRCULADO ,PARA EVITAR QUE EL CONTENIDO DE LOS TANQUES  DECANTE Y MANTENERLO EN MOVIMIENTO CON LAS ACTIVACIONES DIARIAS DE NUTRIENTES .HE MEJORADO TAMBIEN EL SISTEMA DE DODIFICACION A CARGO DE PERISTALTICAS ESTAS SON MAS PRECISAS EN CUANTO   APORTE .

TODO EL GRUPO CORRE A CARGO DE  ARDUINO,DICHO GRUPO ESTA COMPUESTO POR :
-LCD 16X2
-PLACA PCB  CON 8  MOSFERT(IRFZ44N)
-MULTIPLEXO (GND,VCC,SDA,SLC)
-FUENTE ALIMENTACION DE  5V,5A
-BOTONERA(4 BOTONES).
DICHO ARDUINO ESTA ALIMENTADO EXTERNAMENTE PARA EVITAR  RUIDOS A ARDUINO POR ACTIVACION DE LOS MOSFERT Y ALTEREN EL DOSIFICADO
.
HE QUERIDO IMPLANTAR 4 BOTONES ENCARGADOS DE ADITAR EXTERNAMENTE EL DOSIFICADO ASIGNADO AL TIEMPO DE EJECUCION ASIGNADO A ARDUINO PARA SU ADITADO DIARIO.CON LO QUE PODRE AVERIGUAR   EL CAUDAL DOSIFICADO SIN TENER QUE MODIFICAR  LOS TIEMPOS DE ARRANQUE DE LAS PERISTALTICAS .

 EN DICHO PROGAMA HE ASIGNADO UN TIEMPO PARA CADA BOMBA INDEPENDIENTEMENTE UNA DE LA OTRA.

EN FIN  ME GUSTA BASTANTE COMO HA QUEDADO TODO Y FUNCIONANDO ,ES CIERTO QUE LA PRECICION DE LAS PERISTALTICA ES IMPECABLE .GRACIAS A ESTAS Y AL CODIGO DE EJECUCION.
PLACA PCB:

FRONTAL:

GRUPÒ TORRE:



ALIMENTACION Y DATOS:
espero que os haya gustado el proyecto 

martes, 3 de diciembre de 2013

PROYECTO CRIA " N.MARGINATUS"

Bueno me he decidido por la cria de caracidos ,siendo el primero los N.marginatus,despues de casi un mes de establecimiento del tanque y la introducion de varios musgos en grandes cantidades , limnobium y hojas de almendro indio (Terminalia catappa) .por su alto poder reductor de nutrientes y al vez gran aportados de microfauna la cual comporta la gran parte de la alimentacion de los alevines en sus primeras etapa de su vida

En el fondo esta constituido por una placa rejillada que ocupa casi todo el fondo..
Este es el aspecto del tanque se trata de un acuario de 36l con un filtro por decantacion inversa ,este esta compuesto por material biologico y turba de gran calidad ,dispone de aporte de co2 en continuo (1b*3seg).con esto me aseguro el mantenimiento de un Ph que ronda entre 4.8-5.
Los parametros actuales y mantenidos son los siguientes:
Ph:4,8-5
TDS: 24ppm  o 37,5 microS/cm
Nutrientes:1/0,1/1,3
Temperatura:26º
 Despues de mantener durante un periodo de 72 horas a los padres en el tanque y suministrandole comida viva(dafnia pulex),durante el periodo luminico (zenit) ,decidi sacar a los padres del acuario,despues de 96 horas empeze a ver a los primeros alevines que  he podido contabilizar al menos en  unos 10 ejemplares.He de decir que son muy asustadizos,por lo que es muy complicado detectarlos ,al dia de hoy (una semana de vida )he podido fotografiar algunos ejemplares  de apenas unos 5mm y bastantes nutridos como se aprecia en las fotografias ,ahora solo queda esperar  a ver como evolucionan hasta alcanzar un tamaño considerado para introducirlos  con sus conjeneres adultos.









domingo, 1 de septiembre de 2013

ACTUALIZACION DE "GOLA DEL BOSCO"

DESPUES DE 8 MESES ESTE ES SU ASPECTO ,ES UN ACUARIO QUE ME DA POCO MANTENIMIENTO ,ADEMAS DE TRASMITIRME NATURALIDAD 



domingo, 7 de julio de 2013

RECTRUCTURACION WORTHON.01"FOTOMETRO No3"


En primer lugar me gustaría dar las gracias enormemente a un compañero (HAMMELIN) que ha estado hay para todas mis dudas y ayudarme a que dicho proyecto sea viable .Ha sido una dura batalla las, muchas pruebas y sobre todo ilusión por conseguir ampliar mis conocimientos y aportar con un pequeño grano mas a este hobby .En su recorrido tuve la suerte de conocer a Manuel el cual después de varias horas de dialogo y explicación por parte de electricidad y codificación, le llego la hora de que el primer prototipo de fotómetro de NO3 casero comenzara su camino a su montaje .
He de comentar que dicho fotómetro tiene la ventaja ,de que en un futuro cercano será ampliable para otros iones con colorimetría única en un rango (Po4,Fe)con solo modificar o ampliar su código en base a esto me gustaría comentar que dicho fotómetro trabajara en un rango entre 0-20ppm con lecturas digital y con partes por millón para ser entendible por todos ,una de las cualidades de este fotómetro es que el compañero Manuel y yo .pensamos en la complicidad a la hora de trabajar con distintos test , en este caso se ha creado pruebas con SERA(10ml) y API(5ml) . El método de calibración a sido largo y duro para llegar a lo que hoy es un fotómetro de campeonato, para este caso he utilizado el método de calibración de Alberto Sosa con lo que os podéis imaginar la cantidad de test calibrados que se ha tenido en cuenta ,para precisar con exactitud las partes por millón de NO3 presente en la probeta, por parte de ambos test y como mejora aportada por Hammelin se ha creado un menú con una variable capaz de modificar un parámetro y en conjunto lo hará los demás ¿para qué? en el caso de que adquirid otro test con valores distintos al primer test esta variable se modificara en el menú y en conjunto lo hará los demás solo consistirá en calibrar ese ppm ,el cual hemos escogido (5ppm).dar las gracias a todos los que habéis apoyado este proyecto y que espero que sea el 1º de muchos más .
Nota: todo este proyecto no hubiera dado la luz sin el apoyo e intervención de Manuel Carrasco, por todo ello ….mil gracias por tu trabajo y dedicación desinteresada a este proyecto. 

Despues de la restructuracion del fotometro por parte del equipo electronico y codificacion,el cual se ha simplificado para un mayor rendimiento del emisor , ya que en su anterior montaje este alteraba su luminocidad debido a la subida de temperatura interna del chip ,el cual hacia que la corriente interna del emisor variara, con la concecuencia del que el receptor no daba datos fiables ,se le ha implantado una lente polarizada y se ha obtado por un emisor de 5mm (530nm) directo del arduino ,el cual ha echo que aun asi sea mas eficaz al detener pequeños reflejo que en su anterior montaje habia , hemos conseguido obtener unas medidas muy estables y consolidadas que es lo que estabamos buscando .
esperamos eguir mejorando para futuros lectores de mas iones ,,,,,,,,,,,


aqui el proyecto al completo :editado 27/07/2013
https://dl.dropboxusercontent.com/u/104045714/Nueva%20carpeta.zip































dar las gracias aquellas personas que con su grano de ayuda han fomentado a su creación.

miércoles, 15 de mayo de 2013

CULTIVO EMERGIDO

os presento mi cultivo emergido ,lleva montado un mes aproximadamente ,para ello utilize un invernado que compre en el leroy merlin este tiene unas medidas 150x70x50 mdentro tengo 5 comparti,emtos de los cuales los tres ultimos estan ocupados por varias bateas con plantas
1º en la batea superior :
hemianthus callistroides












2º  batea  hay dos bateas  varios :

 elocharis accicularis y lilaeopsis novae-zelandiae










 ammania sp.bonsai

echinudorus tennellus











glossostigmas elatinoides


heteranthera zosterifolia




cryptocorine parva








3º batea  interior

 micranthemun umbrusum.hydropyla araguaia sp.,elocharis vivipara,ludwigia arcuata,
ranunculus inundatus,pogostenon helferi


pogostenon erectus,rotala sp,green,rotala rotundifolia,rotala sp. najean,proserpinaca palustris cuba,ludwigia brevipes,micranthemun micranthemoides,Staurogyne Sp



por ahora sigo buscando plantas para elevar el numero de especies a mantener en este emergido para futuros montajes y ayuda a compañeros