One of the biggest concerns worldwide is the influence that global warming has had and will have and therefore climate change in different economic sectors, especially in developing countries, which present greater vulnerability and less resilience in their population. The scientific observations that began to be made a few decades ago indicated a global warming of the planet in addition to finding an increase in the frequency of extreme events that are evidenced through floods, droughts, heat waves among others.
In Colombia and the world it is essential to have farmers who are experts in what they do. Just as they have good times, they also have bad times. According to the Ministry of Agriculture and Rural Development of my country this has been seriously affected due to the occurrence of extreme weather events especially during the El Niño and La Niña Phenomenon phases. The climatic anomalies involved in climate change through climate variability generate a socioeconomic impact of great proportions at the regional level, where agriculture depends on the rainfall regime and temperature behavior, which causes flooding and landslides in cultivated land , pest proliferation and disease expansion, changes in crop vegetative cycles, changes in pest cycles, increased seasonality of production, losses in crop production and yield. Farmers are experts in what they do, but not with all their experience are they able to identify the agroclimatic variables that affect their crops.
To reach a solution, it was necessary to ask ourselves: will we have any way of integrating science and technology to add the development of intelligent agriculture that will allow to increase productivity in the regions of the world and in the same way of research and with artificial intelligence power interpret agroclimatic variables to prevent disasters?
My solution will use Arduino applications and sensors encoded by the Ada language specialized in monitoring, processing and analysis of agroclimatic variables that affect crop development.
In this way, in our project we can georeference many crops and notify the alarms received, share crop traceability reports with stakeholders, support agricultural research and turn them into a source of knowledge for agricultural producers.
With our solution we can characterize the agroclimatic variables that affect the development of the crops and we can identify small lots for the crop on the date.
All of the above works thanks to a network of sectioned agroclimatic stations that monitor the behavior of temperature, humidity, solar radiation, UV rays, among others.Let's do it! First phase:
Initially in our first prototype we will design and build a small system with an Arduino UNO board to which we will connect three basic sensors: Temperature and Humidity, Water Level and Gas Level.Hardware:
- We connect the grove shield.
- Now connect the water level sensor to the shield on the grove pin A0.
- Now connect the air quality sensor to the shield on the grove pin I2C.
- We connect the temperature and humidity sensor on pin A1.
- Finally we connect the Arduino UNO board to the computer.
For this project it is essential that we have the AdaCore Community program installed with which we will compile our agricultural system. To do this we perform the following steps:
- Go to the official AdaCore website and search for downloads or simply click here.
- Select the link compatible with your computer.
- Start the installer and proceed to follow the installation steps of the program.
procedure Fistprototype_I2C is
use type Interfaces.Unsigned_8;
TMP102_Address : constant := 16#90#;
Data : Uno_I2C.I2C.Byte_Array (1..2) := (0, 0);
Cmd : Uno_I2C.I2C.Byte_Array (1..1) := (1 => 16#00#);
Status : Uno_I2C.I2C.Error_Status;
Temp_Value : Integer;
Data := (0, 0);
Uno_I2C.Write (Address => TMP102_Address, Bytes => Cmd, Status => Status);
Uno_I2C.Read (Address => TMP102_Address, Bytes => Data);
Temp_Value := Integer (Data (1)) * 256;
Temp_Value := Temp_Value + Integer (Data (2));
Temp_Value := Temp_Value / 256; -- Basically we ignore the second byte
if Temp_Value > 0 then
Data (1) := Interfaces.Unsigned_8 (Temp_Value);
Data (1) := Interfaces.Unsigned_8 (-Temp_Value);
AVR.UART.Put (Data (1), Base => 10);
AVR.UART.Put (" C");
I am very happy learning this new programming language, its interface is too professional.
It should be noted that our project is in an initial phase, since I have developed it in my free time at university.
In the next few days I will upload an update of the second phase of the first prototype which I will try to integrate the IoT system to visualize the variables from the cloud and share it with experts and scientists.