Hola a todos espero que estén bien!
La idea es crear un autocultivo que sólo requiera llenar un depósito de agua cuando sea necesario, usando Arduino para controlar una serie de sensores y reles encargados de recoger la información del ambiente y Arduino dará las órdenes a los aparatos como luz, bomba, ventilación... para actuar en el momento preciso. Pero eso no es todo ademas se va a poder acceder al cultivo a través de Internet y se podrá actuar remotamente en cosas como el riego ventiladores etc con solo pulsar un botón, también veremos todos los datos como temperatura, humedad, nos mandara mensajes para avisarnos de eventos y tendrá 2 modos de cultivo profesional para usuarios avanzados o con mucho tiempo que ellos manejaran el cultivo aunque sea remotamente y nivel novato que el cultivo hará todo automáticamente para gente sin experiencia y sin tiempo también.
Usara focos LED para optimizar el consumo de luz. Y lo mejor de todo Arduino es libre y todo el mundo puede hacerse uno, en este proyecto queremos seguir con ese espíritu libre y hacer el proyecto libre y al alcance de todos, publicaremos todo el material a utilizar y el código para que todo el que tenga conocimientos del tema pueda ayudar crear adds upgrades y todo lo que se les ocurra.
Arduino esta hecho para principiantes y estudiantes de electrónica y hay muchos ejemplos y videos la programación es jodida pero tengo la ayuda de un amigo que sabe un poco más que yo espero que entre mis conocimientos de cultivo y lo que sabemos de programación hagamos un cultivo para no hacer nada.
Edito: Señores la cosa se pone interesante un técnico informático de carrera nos va ayudar con el proyecto, es uno de los creadores del HBL half byte loader para PSP esta aplicación ha dado mucho que hablar no digo mas.
Programar Arduino ¿qué necesito saber?
Se utiliza un lenguaje de programación basado en Java o C++ similar al lenguaje C. Por ello, los usuarios que tengan nociones sobre estos lenguajes les resultará muy fácil su programación.
Vamos a hacer un repaso de lo que un día el gran señor m0skit0 me enseño sin pedir nada a cambio son definiciones de lo que iremos usando en nuestro proyecto y también una explicación para programar Arduino. Esta va por usted Profe
· Constantes: son datos cuyo valor no cambia durante la ejecución del programa.
· Variables: son datos que tomaran cierto valor, que luego podrá ser modificado o no durante la ejecución del programa. Se identifican por un nombre definido por el usuario. En Arduino, al definir la variable, se le asigna un valor y un tipo. El tipo definido determinará los valores que puede tomar. Los tipos disponibles son:
int (integer): almacena un número en 2 bytes (Corresponde a 16 bits). Cuando no es necesario valores con decimales, puede tomar valores desde -32.768 hasta 32.767.
long: cuando no es suficiente con un int se recurre a un long. Almacena un numero en 4 bytes (corresponde a 32 bits), y puede tomar valores desde -2.147.483.684 hasta 2.147.483.647. No almacena valores decimales, solo enteros.
boolean: solo puede almacenar dos valores true (Verdad) o false (falso). Solo utiliza 1 bit para almacenar el valor.
float: cuando se requiere operaciones con decimales, almacena un número en 4 bytes (32 bits) y puede tomar valores desde -3.4028235 * 10^38 hasta 3.4028235 * 10^38.
char: almacena un carácter utilizado en código ASCII. Por ejemplo, la letra A se almacena con el valor 65. Para almacenar valores se utiliza 1 byte (8 bits).
NOTA: La forma de definirlo en Arduino es como se muestra a continuación:
Como ya sabrán para asignar un resultado de una operación matemática o valor a una variable se utiliza el símbolo = No se debe confundir con la condición de comparación que es ==
· Operadores: es un símbolo que indica una cierta operación sobre uno o varios objetos del lenguaje. Pueden ser: operadores lógicos y operadores matemáticos.
Loa operadores lógicos sirven para establecer comparaciones o condiciones, de tal forma que si se cumple devuelve true y si no se cumple devuelve false. Se utiliza en las condiciones de las estructuras de control vamos a ver algunos pero al final dejo un enlace a todos:
igual: ==
distinto: !=
menor que: <
mayor que: >
menor o igual: <=
mayor o igual: >=
Cuando se tiene que cumplir más de una condición se utilizan los operadores booleanos que son:
and: && (para cuando quiera que se cumplan ambas condiciones)
or: || (para cuando se cumpla una de las dos condiciones)
Los operadores matemáticos se utilizan para manipular valores, y son:
suma: +
resta: -
multiplicación: *
y división: /
· Comentarios: esto como siempre // para un comentario de una fila y /*para comentarios de varias
lineas*/
· Funciones: se trata de un código escrito que puede ser utilizado varias veces escribiendo el nombre de la función. Por ejemplo, en Arduino existe una función que al escribirla leerá el estado de una entrada digital, la función es digitalRead() Entre paréntesis se incluye la configuración de la función, es decir, si necesita un dato de partida (variable/s de entrada/s) y/o da un resultado (variable/s de salida/s). Aquí tenemos todas las funciones y variables bien explicado: Arduino Language Reference
· Librerias: son un conjunto de funciones agrupadas en un fichero. Se escriben al inicio del programa (precedidas de una almohadilla #) si no se incluyen, entonces no se podrán utilizar las funciones que contengan. Tienen la extensión *.h por ejemplo, cuando se va a utilizar la pantalla LCD se requerirá disponer de la librería serialLCD.h que sirve para utilizar la función slcd.print() y si no se ha incluido dará un error en la compilación.
También conviene conocer ciertas estructuras de programación como:
· Estructuras de control selectivas: denominadas condicionales, porque se utilizan para la toma de decisiones en función de la evolución del valor las variables. Las palabras clave para este tipo de estructuras son: if, else y switch.
· Estructuras de control iterativas: denominadas bucles, porque permiten la ejecución repetitiva de sentencias durante un número determinado de veces, controlado y definido por un algoritmo. Las palabras clave para este tipo de estructuras son: while, for y do while.
A continuación tenemos las estructuras comentadas para mejor comprensión, la primera corresponde a if y else. Para una mejor comprensión voy a utilizar su traducción, es decir, si se cumple lo que hay entre paréntesis (¿...?) entonces se ejecuta lo que hay entre corchetes {¿...?} a continuación del if. Si no se cumple, se ejecuta lo que hay entre corchetes { } a continuación del else, la estructura es la siguiente:
La segunda corresponde a switch, cuya traducción es 'cambiar' es decir, en función del valor de la variable entre paréntesis cambia de una opción a otra ejecutándose el código que hay a continuación; y si no se cumple ninguna de las opciones indicadas, se ejecutará el código indicado a continuación de la opción por defecto, default la palabra break indica que la ejecución del salta afuera de los corchetes. La estructura es la siguiente:
La tercera corresponde a while cuya traducción es 'mientras' es decir, mientras se vaya cumpliendo la condición entre paréntesis se estará ejecutando continuamente el código incluido entre corchetes. La estructura es la que se muestra a continuación:
La cuarta y última que muestro es for y se utiliza para ejecutar cierto código una cantidad de veces determinada, por ello entre paréntesis hay tres condiciones separadas por ponto y coma. El primer término sirve para indicar la condición inicial, a continuación se ejecutará el código entre corchetes hasta que se cumpla la condición del segundo término. Por ejemplo si se desea que algo se repita 10 veces, se utilizará una variable cuyo valor inicial será asignarle el valor 0, la condición para que se sigua ejecutando el valor es que sea menor o igual a 10, y cada vez que se ejecute el valor de la variable se incrementará en 1. Vamos a ver su estructura:
El código que se escribe se podría decir que es secuencial, es decir, empieza por lo escrito por la linea 1 hasta la última linea escrita. Aunque pueden haber saltos condicionales utilizando las estructuras comentadas en los párrafos anteriores. También se podrá encontrar con que dentro de una estructura hay otra estructura distinta. por ejemplo, dentro de un while encontrar un for o encadenar estructuras, por ejemplo, dentro de una condición if encontrar otro if. A mayor dificultad de la aplicación, más condiciones tendrá que cumplir y en consecuencia, más líneas tendrá el código. Como consecuencia el tamaño del fichero sera mayor.
La idea es crear un autocultivo que sólo requiera llenar un depósito de agua cuando sea necesario, usando Arduino para controlar una serie de sensores y reles encargados de recoger la información del ambiente y Arduino dará las órdenes a los aparatos como luz, bomba, ventilación... para actuar en el momento preciso. Pero eso no es todo ademas se va a poder acceder al cultivo a través de Internet y se podrá actuar remotamente en cosas como el riego ventiladores etc con solo pulsar un botón, también veremos todos los datos como temperatura, humedad, nos mandara mensajes para avisarnos de eventos y tendrá 2 modos de cultivo profesional para usuarios avanzados o con mucho tiempo que ellos manejaran el cultivo aunque sea remotamente y nivel novato que el cultivo hará todo automáticamente para gente sin experiencia y sin tiempo también.
Usara focos LED para optimizar el consumo de luz. Y lo mejor de todo Arduino es libre y todo el mundo puede hacerse uno, en este proyecto queremos seguir con ese espíritu libre y hacer el proyecto libre y al alcance de todos, publicaremos todo el material a utilizar y el código para que todo el que tenga conocimientos del tema pueda ayudar crear adds upgrades y todo lo que se les ocurra.
Arduino esta hecho para principiantes y estudiantes de electrónica y hay muchos ejemplos y videos la programación es jodida pero tengo la ayuda de un amigo que sabe un poco más que yo espero que entre mis conocimientos de cultivo y lo que sabemos de programación hagamos un cultivo para no hacer nada.
Edito: Señores la cosa se pone interesante un técnico informático de carrera nos va ayudar con el proyecto, es uno de los creadores del HBL half byte loader para PSP esta aplicación ha dado mucho que hablar no digo mas.
Programar Arduino ¿qué necesito saber?
Se utiliza un lenguaje de programación basado en Java o C++ similar al lenguaje C. Por ello, los usuarios que tengan nociones sobre estos lenguajes les resultará muy fácil su programación.
Vamos a hacer un repaso de lo que un día el gran señor m0skit0 me enseño sin pedir nada a cambio son definiciones de lo que iremos usando en nuestro proyecto y también una explicación para programar Arduino. Esta va por usted Profe
· Constantes: son datos cuyo valor no cambia durante la ejecución del programa.
· Variables: son datos que tomaran cierto valor, que luego podrá ser modificado o no durante la ejecución del programa. Se identifican por un nombre definido por el usuario. En Arduino, al definir la variable, se le asigna un valor y un tipo. El tipo definido determinará los valores que puede tomar. Los tipos disponibles son:
int (integer): almacena un número en 2 bytes (Corresponde a 16 bits). Cuando no es necesario valores con decimales, puede tomar valores desde -32.768 hasta 32.767.
long: cuando no es suficiente con un int se recurre a un long. Almacena un numero en 4 bytes (corresponde a 32 bits), y puede tomar valores desde -2.147.483.684 hasta 2.147.483.647. No almacena valores decimales, solo enteros.
boolean: solo puede almacenar dos valores true (Verdad) o false (falso). Solo utiliza 1 bit para almacenar el valor.
float: cuando se requiere operaciones con decimales, almacena un número en 4 bytes (32 bits) y puede tomar valores desde -3.4028235 * 10^38 hasta 3.4028235 * 10^38.
char: almacena un carácter utilizado en código ASCII. Por ejemplo, la letra A se almacena con el valor 65. Para almacenar valores se utiliza 1 byte (8 bits).
NOTA: La forma de definirlo en Arduino es como se muestra a continuación:
Código:
int variable=12; // tipo nombre=valor
· Operadores: es un símbolo que indica una cierta operación sobre uno o varios objetos del lenguaje. Pueden ser: operadores lógicos y operadores matemáticos.
Loa operadores lógicos sirven para establecer comparaciones o condiciones, de tal forma que si se cumple devuelve true y si no se cumple devuelve false. Se utiliza en las condiciones de las estructuras de control vamos a ver algunos pero al final dejo un enlace a todos:
igual: ==
distinto: !=
menor que: <
mayor que: >
menor o igual: <=
mayor o igual: >=
Cuando se tiene que cumplir más de una condición se utilizan los operadores booleanos que son:
and: && (para cuando quiera que se cumplan ambas condiciones)
or: || (para cuando se cumpla una de las dos condiciones)
Los operadores matemáticos se utilizan para manipular valores, y son:
suma: +
resta: -
multiplicación: *
y división: /
· Comentarios: esto como siempre // para un comentario de una fila y /*para comentarios de varias
lineas*/
· Funciones: se trata de un código escrito que puede ser utilizado varias veces escribiendo el nombre de la función. Por ejemplo, en Arduino existe una función que al escribirla leerá el estado de una entrada digital, la función es digitalRead() Entre paréntesis se incluye la configuración de la función, es decir, si necesita un dato de partida (variable/s de entrada/s) y/o da un resultado (variable/s de salida/s). Aquí tenemos todas las funciones y variables bien explicado: Arduino Language Reference
· Librerias: son un conjunto de funciones agrupadas en un fichero. Se escriben al inicio del programa (precedidas de una almohadilla #) si no se incluyen, entonces no se podrán utilizar las funciones que contengan. Tienen la extensión *.h por ejemplo, cuando se va a utilizar la pantalla LCD se requerirá disponer de la librería serialLCD.h que sirve para utilizar la función slcd.print() y si no se ha incluido dará un error en la compilación.
También conviene conocer ciertas estructuras de programación como:
· Estructuras de control selectivas: denominadas condicionales, porque se utilizan para la toma de decisiones en función de la evolución del valor las variables. Las palabras clave para este tipo de estructuras son: if, else y switch.
· Estructuras de control iterativas: denominadas bucles, porque permiten la ejecución repetitiva de sentencias durante un número determinado de veces, controlado y definido por un algoritmo. Las palabras clave para este tipo de estructuras son: while, for y do while.
A continuación tenemos las estructuras comentadas para mejor comprensión, la primera corresponde a if y else. Para una mejor comprensión voy a utilizar su traducción, es decir, si se cumple lo que hay entre paréntesis (¿...?) entonces se ejecuta lo que hay entre corchetes {¿...?} a continuación del if. Si no se cumple, se ejecuta lo que hay entre corchetes { } a continuación del else, la estructura es la siguiente:
Código:
if ( condicion ){
//Bloque que se ejecuta si se cumple la condición.
} //Fin de if
else {
//Bloque que se ejecuta si no se cumple la condición.
} //Fin de else
Código:
switch ( variable ){
case opción 1: // Si variable == 1* ejecutar siguiente código
break;
case opción 2: // Si variable == 2* ejecutar siguiente código
break;
default: // Si no es uno de los casos anteriores
break; // Salta fuera de la función
} // Fin switch
Código:
while ( condición ){
// Bloque de instrucciones a ejecutar
} // Fin while
Código:
for ( dar valores iniciales; condiciones; incrementos){
//Conjunto de instrucciones a ejecutar en el bucle
} // Fin for
Última edición: