Paso 6: Controlador - la lógica
Ahora, sobre la lógica del controlador Arduino: contar los pulsos, si se ponen encima de un umbral de gatillo el riego. La lógica es simple, ¿no? Excepto después de mi primera iteración, descubrí que no sólo es simple sino también demasiado simplista. Las deficiencias:
- usted no puede mantener la tierra medición proceso ejecutando continuamente si está utilizando baterías como fuente de energía. Durante la medición, el controlador utiliza sobre 35-40 mA (más se sorteará al riego). Un conjunto de dos baterías de 6V 4R25X "(también conocido como pilas de la linterna del) fueron agotados en dos semanas – se multiplican con el número de puntos de riego y verás que no es barato. Mejor tomar las mediciones de humedad con horas entre ellas, usar tu sentido común, varía el tiempo entre dos medidas en la estación, temperatura, cantidad de suelos alrededor de la planta, etc..
- Aún más, usted no puede incluso mantener su Arduino completamente entre dos medidas, sin hacer nada entre dos medidas; un Mini Pro todavía sacarán 20-25mA-tan un conjunto de batería va a durar sólo 3-4 semanas. Mejor ponerlo en un sueño profundo , en mi experiencia, esta unidades el consumo a una mera 3mA, suficiente para que el mismo baterías para durar cerca de 20 semanas (sólo más tarde me enteré de El camarón y otros circuitos de ATM368 actuales extremadamente bajos, que se extendería la vida de una batería de linterna situada más de la vida física de las baterías se. Bueno, habrá una próxima vez)
- no se puede decidir la cantidad de agua que dispensa por simple lectura de la sonda hasta que consideras "ha mojado bastante" - porque toma algún tiempo para que el agua al infiltrarse en el suelo, por lo tanto usted lo decide ya sea demasiado pronto (si la sonda está cerca de donde el agua golpea el suelo, por lo que el suelo se moja demasiado rápido) o demasiado tarde (si la sonda es un poco demasiado lejos y tarda algún tiempo para que el agua al infiltrarse en realidad la suelo). Mejor seguir con la regla de "si está demasiado seco, vierta una cantidad predeterminada de agua, pare y espere un buen antes de probar otra vez"
- no podemos Preajuste de los parámetros de riego en el país, luego ir en el campo y esperar trabajar tan bien como 'había sintonizado' para. Cada suelo tendrá su propio contenido mineral, estructura, compacidad, capacidad para retener agua, etc. – que tendrá un impacto considerablemente los parámetros. De alguna manera, no veo yo ir el campo llevando el portátil conmigo sólo para configurar cada punto de riego con sus valores de parámetros muy específicos.
De todos modos, lo anterior muestra que la configuración del controlador de lógica va a necesitar al menos 3 parámetros y, muy preferible, estos 3 parámetros configurables sin requerir el uso de una computadora:
- el "umbral de sequedad" - el nivel uno considera riego es necesario
- la cantidad de tiempo para aplicar el riego, esto se correlaciona bien con la cantidad de agua suministrado por la planta
- el tiempo entre dos lecturas consecutivas de la humedad (entre el Arduino se pondrá en sueño profundo)
Por supuesto, está también la cuestión de las lecturas de la sonda (después de cargar el programa), si sólo para diagnosticar lo que está sucediendo.
Refiriéndose al esquema en el "controlador - esquema", aquí es donde PProg0/Rgnd0/Pgnd0 – pomposamente llamémosle "el tablero de configuración" (lowish derecha del esquema) y CONN_Settings1/CONN_Supply1 (parte superior del esquema, encima conectores Arduino) viene el juego: durante el arranque, las clavijas analógicas A0-A3 de la placa Arduino se configuran como INPUT_PULLUP durante la etapa de configuración y la lógica comprueba los 4 pines e interpretar el resultado como un comando de 16 posibles. Por lo tanto, para "indicar" un pin, basta con conectar una clavija en la tierra uso de la "configuración" (meter el pin de DuPont de Pgnd0 de la "Junta de configuración" en el conector de tierra de la CONN_Supply1, luego use los otros pasadores de Pprog0 que tire de los pasadores de configuración correspondientes de Arduino a la tierra).
Nota: por supuesto todo esto se podría haber hecho con 4 interruptores micro y tal vez podría caber en la placa. Pero he preferido mantener las cosas lo más barato posible (y en una dimensión "macro" - mis ojos no son lo que solían ser).
La lista de comandos de configuración - con la orden de los códigos en el {A0, A1, A2, A3}:
- modo de funcionamiento - {0,0,0,0} - ninguna configuración, el funcionamiento normal
- establecer el tiempo de riego - {1,0,0,0} - el regulador del interruptor de la bomba y mantenerla hasta que el cable se saca de la espiga; en ese momento, el controlador salva la duración de riego registrada y lo utiliza para los ciclos siguientes;
- establecer el nivel de humedad de umbral - {0,1,0,0} - el controlador lee el nivel de humedad actual, interpreta como el nivel mínimo y activará el riego cuando el valor llega a este valor (próximo ciclo de medida)
- 3 minutos entre pruebas de humedad - {1,1,0,0} - establece el período comprendido entre dos ciclos de sondeo de humedad consecutivos a 3 minutos, útil para realizar pruebas, no recomendado para funcionamiento a largo plazo
- 1 hora entre pruebas de humedad - {0,0,1,0} - establece el período comprendido entre dos ciclos de sondeo de humedad consecutivos a 1 hora.
- 2 horas entre pruebas de humedad - {1,0,1,0} - establece el período comprendido entre dos ciclos de sondeo de humedad consecutivos a 2 horas.
- 3 horas entre pruebas de humedad - {0,1,1,0} - establece el período comprendido entre dos ciclos de sondeo de humedad consecutivos a 3 horas.
- 4 horas entre pruebas de humedad - {1,1,1,0} - establece el período comprendido entre dos ciclos de sondeo de humedad consecutivos a 4 horas.
- 6 horas entre pruebas de humedad - {0,0,0,1} - establece el período comprendido entre dos ciclos de sondeo de humedad consecutivos a 6 horas.
- 8 horas entre pruebas de humedad - {1,0,0,1} - establece el período comprendido entre dos ciclos de sondeo de humedad consecutivo a 8 horas.
- 12 horas entre pruebas de humedad - {0,1,0,1} - establece el período comprendido entre dos ciclos de sondeo de humedad consecutivas a 12 horas.
- modo de diagnóstico - {1,1,0,1} - realiza humedad sondeo cada 5 segundos e informa del número de impulsos registrados a través de la interfaz serial USB - útil para el diagnóstico del sistema
- Reservados - {0,0,1,1} - reservado para futuras extensiones
- Reservados - {1,0,1,1} - reservado para futuras extensiones
- Reservados - {0,1,1,1} - reservado para futuras extensiones
- Reset de fábrica – ajusta el nivel umbral a algo que no suelo (no importa qué tan seca) se va a activar el riego, el intervalo entre 2 humedad de sondeo a 6 horas y el tiempo de riego a 5 segundos (es decir, establece una configuración que seguramente necesita cambio para ningún propósito útil)
Puede descargar el código fuente desde la página del proyecto en github.