youdlloRania GhellalMohamed LY Mohamed LY
Published © GPL3+

Agrotech: Monitor Your Greenhouse!

In this project, you will be able to display the temperature, humidity of soil and air, luminosity and spectral quality from a dashboard.

IntermediateFull instructions provided3 days499
Agrotech: Monitor Your Greenhouse!

Things used in this project

Hardware components

Nucleo 144 STM32F7
ST STM32L4, STM32F7 Nucleo 144 STM32F7
DHT22 Temperature Sensor
DHT22 Temperature Sensor
Gravity: TCS34725 RGB Color Sensor For Arduino
DFRobot Gravity: TCS34725 RGB Color Sensor For Arduino
Gravity: Analog Soil Moisture Sensor For Arduino
DFRobot Gravity: Analog Soil Moisture Sensor For Arduino
Adafruit Waterproof DS18B20 Digital temperature sensor
Adafruit Waterproof DS18B20 Digital temperature sensor
Li-Ion Battery 100mAh
Li-Ion Battery 100mAh
Solar Panel, 2.5 W
Solar Panel, 2.5 W

Hand tools and fabrication machines

on line mbed compiler
kicad: shematic editor and pcb layout


Read more

Custom parts and enclosures

Kicad projet

You will find. The main circuit and the alimentation circuit. With these pcb layout



main file
#include "mbed.h"
#include "DS1820.h"
#include "DHT.h"
#include "TSL2561_I2C.h"
#include "Adafruit_TCS34725.h"
#include "WakeUp.h"

Serial wisol(D1, D0); // tx, rx

Serial pc(USBTX, USBRX);

//tempAir et humAir
DHT dht(D9, 22);

//RGB + luminosite
I2C i2c(PB_7, PB_6);
Adafruit_TCS34725 tcs = Adafruit_TCS34725(&i2c, TCS34725_INTEGRATIONTIME_50MS, TCS34725_GAIN_4X);

DS1820 temp_sol(A4);

AnalogIn   ain(A3);

int main(){
    int data;
    float tempAir, humAir;
    int hum_sol;
    float lux;
        pc.printf("error temperature_sol");
    //capteur RGB/luminosite
        pc.printf("No TCS34725 found ... check your connections");
        //Capteur air
        data = dht.readData();
        humAir = dht.ReadHumidity();
        tempAir = dht.ReadTemperature(CELCIUS);
        pc.printf("tempAir = %1.f, humAir = %1.f\n", tempAir, humAir);
        //capteur humidite sol
        hum_sol = (int)(((0.78 -*100)/0.38);
        pc.printf ("humSol =  %d%\n", hum_sol);
        //Capteur temperature sol
        temp_sol.convertTemperature(true, DS1820::all_devices);
        pc.printf("tempSol : %.1f\n", temp_sol.temperature());
        uint16_t clear, red, green, blue;
        tcs.setInterrupt(false);      // turn on LED
        tcs.getRawData(&red, &green, &blue, &clear);
        tcs.setInterrupt(true);  // turn off LED
        //pc.printf("clear = %d, red = %d, green = %d, blue = %d\r\n", clear, red, green, blue);
        //get hexa value
        uint32_t sum = clear;
        float r, g, b;
        r = red; r /= sum;
        g = green; g /= sum;
        b = blue; b /= sum;
        r *= 256; g *= 256; b *= 256;
        pc.printf("clear = %d, red = %d, green = %d, blue = %d\r\n\n", clear, (int)r, (int)g, (int)b);
        lux = (int)tcs.calculateLux(red,green,blue);
        pc.printf("lux = %d\n", (int)lux);
        wisol.printf("AT$SF=%06X%02X%02X%02X%04X%02X%04X%02X\r\n", (int)lux, (int)r, (int)g, (int)b, (int)(10 * temp_sol.temperature()), (int)(hum_sol), (int)(10 * tempAir), (int)(humAir));
        //lux : 3 octets
        //r, g, b : 1 octet
        //tempSol, tempAir : 2 octets
        //humSol, humAir : 1 octet
        //Set wakeup time for 600 seconds = 10min




1 project • 1 follower
Rania Ghellal

Rania Ghellal

1 project • 0 followers
Mohamed LY Mohamed LY

Mohamed LY Mohamed LY

0 projects • 1 follower