Welcome to Hackster!
Hackster is a community dedicated to learning hardware, from beginner to pro. Join us, it's free!
Tom SeitzJichen JIANGShuaishuai LuAlexis ROSSIFarah Rae
Published

Plant Monitoring, an Engineering School Project

This Plant Monitoring device measures all the physical data you need to monitor your crops and know the environment in which they grow.

IntermediateShowcase (no instructions)Over 2 days889
Plant Monitoring, an Engineering School Project

Things used in this project

Hardware components

Seeed Capteur d'humidité et de T° Grove 101020019
×1
DFRobot Capteur d'humidité Gravity SEN0193
×1
Seeed -Capteur de température Grove 101990019
×1
Adafruit Capteur de luminosité TSL2561
×1
Adafruit Capteur de couleur ADA1334
×1
STM32 NUCLEO-L432KC
×1
Module Sigfox
×1
Cellule solaire SOL2W 5,5 V/360 mA
×1
Accu Li-Ion 3,7 V 1050 mA
×1
Adafruit Monochrome 0.96" 128x64 OLED graphic display
×1
Connecteur USB mini-USB type B
×1
Commutateur
×1

Software apps and online services

Solidworks
Eagle
Ubidots
Ubidots

Hand tools and fabrication machines

mbed
Arm mbed
3D Printer (generic)
3D Printer (generic)

Story

Read more

Custom parts and enclosures

The box made with Solidworks

Schematics

PCB1

PCB2

Code

main.cpp

C/C++
#include "mbed.h"       
#include "DS18B20.h"            // OneWire Temperature
#include "DS1820.h"
#include "DHT.h"                // DHT22
#include "TSL2561_I2C.h"          // Lux
#include "TCS34725.h"           // RGB
#include "Adafruit_SSD1306.h"   // OLED
#include "mespings.h"
#include "WakeUp.h"             // Low Power Energy
#include "Sigfox.h"




//SIGFOX
Serial Sigfox(SIGFOX_RX, SIGFOX_TX);

void SendData( int TempAir, int HumiAir, int TempSol, int HumiSol, int Lumiere, int Red, int Green, int Blue){
    
    Sigfox.printf("AT$SF=%02x%02x%02x%02x%04x%02x%02x%02x\r\n", TempAir, HumiAir, TempSol, HumiSol, Lumiere , Red, Green, Blue);
}


//OLED
class OLEDSPI : public SPI
{
    public:
        OLEDSPI(PinName mosi, PinName miso, PinName clk) : SPI(mosi,miso,clk)
        {
            format(8,3); 
            frequency(2000000);
        };
};

OLEDSPI gSpi(MOSI,MISO,CLK);
Adafruit_SSD1306_Spi OLED(gSpi,DC,RST,CS,LARGEUR_OLED,LONGUER_OLED);

//sol_hum
    AnalogIn MOIST_sensor(MOIST_DATA);

float ReadSolHum(){
    float Humidity=0.0;
    for (int i=0;i<NB_MESURES;i++){
        Humidity = Humidity + ((1 - MOIST_sensor.read()-MIN_MESURES)/(MAX_MESURES -MIN_MESURES ))*100;
        }
        Humidity /= NB_MESURES;
    return Humidity;
}
    
//sol_temp    
    //DS18B20 Temperature(true, true, false, ONEWIRE_TEMP_PIN); // Temperature( crcOn, useAddress, parasitic, mbed pin )
    DS1820 ONEWIRE_sensor(SOL_TEMP_DATA);

//Capteur Température/Humidité de l'air 
    DHT DHT_sensor(A0,DHT22);
    
    TSL2561_I2C  LUM_sensor(LUM_I2C_SDA,LUM_I2C_SCL);
    
    TCS34725 RGB_sensor(RGB_I2C_SDA,RGB_I2C_SCL);

    DigitalOut tr(D7);
    
int main()
{
    
// Variables
    float Air_Temp  = 0.0;
    float Air_Hum   = 0.0;
    float Sol_Hum   = 0.0; 
    float Sol_Temp  = 0.0;
    float Lum       = 0.0;
    
    uint16_t   R;
    uint16_t   G;
    uint16_t   B; 
    uint16_t   C;
    int OLEDLine = 0;
    
    // Initialisation de l'écran 

    OLED.fillRect(ZERO,ZERO,LONGUER_OLED,LARGEUR_OLED,BLACK); 
    OLED.setTextCursor(ZERO,DIX); OLED.printf("      EISE4-PROJET"); 
    OLED.setTextCursor(ZERO,DEMI); OLED.printf("      PLANTSIGFOX");   
    OLED.display();

    while(1){
    tr = 1;
    // Initialisation des capteur
    while(DHT_sensor.readData());
    ONEWIRE_sensor.begin();
    LUM_sensor.enablePower();
    ONEWIRE_sensor.startConversion();
    RGB_sensor.init(TCS34725_INTEGRATIONTIME_2_4MS, TCS34725_GAIN_4X );

    // OLED Reset
    OLED.clearDisplay();
    OLED.fillRect(0,0,LARGEUR_OLED,LONGUER_OLED,BLACK);
    OLEDLine = 0;
    
    //obtenir des donnees
    Air_Temp=DHT_sensor.ReadTemperature(CELCIUS);
    Air_Hum=DHT_sensor.ReadHumidity();
    RGB_sensor.getColor(R,G,B,C); 
    Lum=LUM_sensor.getLux();
    Sol_Temp=ONEWIRE_sensor.read();
    Sol_Hum=ReadSolHum();
    
    //affiche
    OLED.setTextCursor(0,OLEDLine);
    OLED.printf("Air TEMP =  %4.2f C",Air_Temp);
    OLEDLine +=DIX;
    
    OLED.setTextCursor(0,OLEDLine);
    OLED.printf("Air HUM =  %4.2f %%RH",Air_Hum);
    OLEDLine +=DIX;
       
    OLED.setTextCursor(0,OLEDLine);
    OLED.printf("Sol TEMP = %4.2f C ",Sol_Temp);
    OLEDLine +=DIX;
    
    OLED.setTextCursor(0,OLEDLine);
    OLED.printf("Sol Hum = %4.2f %%RH",Sol_Hum);
    OLEDLine +=DIX;
        
    OLED.setTextCursor(0,OLEDLine);
    OLED.printf("Light = %4.2f Lux", Lum);
    OLEDLine +=DIX;
        
    OLED.setTextCursor(0,OLEDLine);
    OLED.printf("R = %d G= %d  B= %d",R,G,B);
    OLEDLine +=DIX;
     
    OLED.setTextCursor(0,OLEDLine);
    OLED.printf("Clear = %d",C);
    OLEDLine +=DIX;     
    
    OLED.display();

    SendData((int) Air_Temp, (int) Air_Hum, (int) Sol_Temp, (int) Sol_Hum, (int) Lum , R, G, B);
    tr = 0;
    sleep
    wait (TIME_TRAVAIL);
    OLED.fillRect(0,0,LONGUER_OLED,LARGEUR_OLED,BLACK);
    OLED.display();
          
    WakeUp::set_ms(TIME_SLEEP);
    deepsleep();
}
}

mespings.h

C/C++
#ifndef __MESPINGS_H__
#define __MESPINGS_H__

#define ZERO                0
#define DIX                 8
#define DEMI                32
//DEFINE DES PINS et DES PARAMETRE

//OLED

#define LONGUER_OLED        128
#define LARGEUR_OLED        64

#define MISO                NC
#define MOSI                D2
#define CLK                 A1
#define DC                  D9  
#define RST                 D10
#define CS                  D11
//RGB
#define RGB_I2C_SDA         D4
#define RGB_I2C_SCL         D5
//LUM
#define LUM_I2C_SDA         D4
#define LUM_I2C_SCL         D5

//DHT_DATA
#define DHT_DATA            A0
    
// MOIST
#define MOIST_DATA          A3

//NOI
#define SOL_TEMP_DATA       A2

//SIGFOX
#define SIGFOX_RX           D1
#define SIGFOX_TX           D0

#define NB_MESURES          100
#define MAX_MESURES  0.62
#define MIN_MESURES  0
    

#define TIME_TRAVAIL    10
#define TIME_SLEEP     30000
        

#endif

Credits

Tom Seitz
3 projects • 2 followers
Contact
Jichen JIANG
2 projects • 2 followers
Contact
Shuaishuai Lu
2 projects • 2 followers
Contact
Alexis ROSSI
1 project • 2 followers
Contact
Farah Rae
1 project • 1 follower
Contact

Comments

Please log in or sign up to comment.