Hackster is hosting Hackster Holidays, Finale: Livestream & Giveaway Drawing. Watch previous episodes or stream live on Tuesday!Stream Hackster Holidays, Finale on Tuesday!
Gabriel Alejandro Giraldo Santiago
Published © LGPL

Smart Farms: Generating Techno-environmental Awareness

Our objective is to design, build and implement in-the-field technology in an ecological way that generates environmental awareness.

IntermediateWork in progressOver 4 days21,419

Things used in this project

Hardware components

Arduino Mini 05
Arduino Mini 05
×1
Jumper wires (generic)
Jumper wires (generic)
×1
Arduino UNO
Arduino UNO
×1
Arduino Ethernet Rev. 3
Arduino Ethernet Rev. 3
×1
USB-A to Mini-USB Cable
USB-A to Mini-USB Cable
×1
Temperature Sensor
Temperature Sensor
×1
Proximity Sensor
Proximity Sensor
×1
Water level sensor Arduino DC 3-5V
×1
Arduino Humidity level sensor
×1
Arduino PH level sensor
×1
Arduino Ambient temperature and humidity sensor
×1
UV sensor
×1
8 channel relay
×1
Solar Panel 250W +
×6
12v inverter
×1
Neodymium magnet generator
Generates approximately twice the energy used
×1
Electric Motor 12V 12000 RPM
×1
12V Random Electric Battery
The goal is to store a total of 2500W
×1
Assembly box Length x Width x Height (mm) 570x 52 x570
×1
copper wire # 16
×1
Arduino LCD Screen
Arduino LCD Screen
×1
1/2 12vdc Electric Solenoid Valve
The amount varies according to the needs of the farm.
×1
Otros Componentes Basicos
×1
Protoboard
×1

Software apps and online services

Arduino IDE
Arduino IDE
fritzing
App inventor
Hackster
Support platform and ideas

Hand tools and fabrication machines

Mastech MS8217 Autorange Digital Multimeter
Digilent Mastech MS8217 Autorange Digital Multimeter
Pliers
Tool set
computer
Smarthphone

Story

Read more

Schematics

conexion_del_modulo_hc-05_11m3LSCH1R.jpg

circuitodemedicion_ysxsLP6Xak.png

ea11_cjY56Rk6vE.jpg

lcd_1SL0xBT4EP.png

my-solarpv1_xwcA6WgcoX.png

open-energy-monitor-arduino-emoncms-emontx-emonpi2-1024x821_xX9P2hWo1c.png

Code

PROGRAMACI_N_DE_CONTROL_SISTEMA_ELECTRICO.ino

C/C++
/* 
.... Control digital del encendido y apagado del sistema electrico del proyecto solar mechanical team 
ademas cabe resaltar que se esta utilizando una placa de arduino uno RV3 anexado a un modulo de 8 reles controlados mediante un modulo de bluetooth HC/06
*/
#include <Servo.h>
int estado=0;
int retardo=100;

void setup(){
pinMode(13,OUTPUT);
pinMode(12,OUTPUT);
pinMode(11,OUTPUT);
pinMode(10,OUTPUT);
Serial.begin(9600);
delay(1000);

}
void loop(){
if(Serial.available()>0){ // Si el puerto serie esta habilitadp
estado = Serial.read(); // Lee lo que llega por el puerto Serie
}
if(estado== 'a'){ // on/off de los pin 13 al pin 6
digitalWrite(13,HIGH);
}
if(estado== 'b' ){
digitalWrite(13,LOW);
}
delay (retardo);
estado=0;
}
{if(Serial.available()>0);//Si el puerto serie esta habilitadp
estado = Serial.read(); // Lee lo que llega por el puerto Serie
}
if(estado== 'c'){ // on/off de los pin 13 al pin 6
digitalWrite(12,HIGH);
}
if(estado== 'd' ){
digitalWrite(12,LOW);
}
delay (retardo);
estado=0;
}
{if(Serial.available()>0){ // Si el puerto serie esta habilitadp
estado = Serial.read(); // Lee lo que llega por el puerto Serie
}
if(estado== 'e'){ // on/off de los pin 13 al pin 6
digitalWrite(11,HIGH);
}
if(estado== 'f' ){
digitalWrite(11,LOW);
}
delay (retardo);
estado=0;
}
{if(Serial.available()>0){ // Si el puerto serie esta habilitadp
estado = Serial.read(); // Lee lo que llega por el puerto Serie
}
if(estado== 'g'){ // on/off de los pin 13 al pin 6
digitalWrite(10,HIGH)
}
if(estado== 'h' ){
digitalWrite(10,LOW)
}
delay (retardo);
estado=0;

PROGRAMACI_N_VOLTIMETRO_SOLAR_MECHANICAL_FISICA_ENERGIA_ELECTRI.ino

C/C++
#include <SoftwareSerial.h>

/* Programa el modulo bluetooth HC-06 con un nuevo: 
  NOMBRE  (Nombre de 20 caracteres)
  PIN     (Clave de cuatro numeros)
  BPS     (Velocidad de conexion en baudios)
  
  CONEXIONES:
  ARDUINO   BLUETOOTH
  5V        VCC
  GND       GND
  PIN 2     TX
  PIN 3     RX
  
 */

SoftwareSerial blue(2, 3);   //Crea conexion al bluetooth - PIN 2 a TX y PIN 3 a RX

char NOMBRE[21]  = "SOLAR_MECHANICAL"; // Nombre de 20 caracteres maximo
char BPS         = '4';     // 1=1200 , 2=2400, 3=4800, 4=9600, 5=19200, 6=38400, 7=57600, 8=115200
char PASS[5]    = "2408";   // PIN O CLAVE de 4 caracteres numericos  
float R=1;
float Gain=92;
float corriente;
int voltimetroPin = 0; // Definimos la entrada en pin A0
 
void setup()  
{blue.begin(9600);
 
}

void loop() {
  for(int i=1;i<=20;i++){
   corriente=(float) analogRead(voltimetroPin)*(5/1023.0)/R+corriente;
   delay(1); 
  }
  
  corriente=(float) corriente/(Gain*20);
 blue.print(corriente*1000,3);
  blue.println(" mA      ");
  delay(1);
  blue.print(corriente*1000*Gain*R,3);
  blue.println(" mV      ");
  delay(50);
  
  corriente=0;
}

proyecto_agroesmart_sensor_de_humedad.ino

C/C++
#define sensor A0
 
void setup() {
   Serial.begin(9600);
   pinMode(sensor, INPUT);
}
 
void loop() 
{
   int valorHumedad = map(analogRead(sensor), 0, 1023, 100, 0);

  {
      Serial.println(" Hola, este es el estado de humedad de su terreno: SECTOR 2 ZONA 1");  
      //hacer las acciones necesarias
   }
 
  Serial.print("Humedad: ");
  Serial.print(valorHumedad);
  Serial.println("%");
  
 

   
   delay(1000);
}

AGROSMART.ino

C/C++
#define sensor A0
 
void setup() {
   Serial.begin(9600);
   pinMode(sensor, INPUT);
}
 
void loop() 
{
   int valorHumedad = map(analogRead(sensor), 0, 1023, 100, 0);

    {
      Serial.println(" Hola Sr. Agricultor, este es el estado de humedad de su terreno: SECTOR 1 ZONA 1");  
      //hacer las acciones necesarias
   }
 
  Serial.print("Humedad: ");
  Serial.print(valorHumedad);
  Serial.println("%");
  
 

   
   delay(1000);
}

corriente_LCD.ino

C/C++
float corriente = 0.0;
float R=1;
float Gain=92;
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {
  lcd.begin(16,2); // Se utiliza inicializa el puerto serial
                    // para escribir alli las lecturas
}

void loop() {
  for(int i=1;i<=20;i++){
   corriente=(float) analogRead(0)*(5/1023.0)/R+corriente;
   delay(1); 
  }
  
  corriente=(float) corriente/(Gain*20);
  lcd.setCursor(0,0);
  lcd.print(corriente*1000,3);
  lcd.print(" mA      ");
  delay(1);
  lcd.setCursor(0, 1);
  lcd.print(corriente*1000*Gain*R,3);
  lcd.print(" mV      ");
  delay(50);
  
  corriente=0;
}

PRIMERA SIMULACIÓN.ino

C/C++
int Carga=13;
int estado=0;

void setup()
{
  Serial.begin(9600);
  pinMode(Carga,OUTPUT);
}

void loop(){
 if(Serial.available()>0){
 estado = Serial.read();
 }
 
if (estado =='1')
  {
   digitalWrite(Carga,HIGH);
  }
if(estado=='2')
  {
   digitalWrite(Carga,LOW);
  }
  
}

Credits

Gabriel Alejandro Giraldo Santiago
13 projects • 86 followers
Seeed Ranger, AI and Computer Vision expert for key industries. Mentor and speaker on AI, startups, and no-code. Maker enthusiast.
Thanks to Libardo Enrique Peinado Trillos and Institución Educativa San José.

Comments