Ashley Jude
Published

IoT based Personal Indoor Farm

An indoor farm automated by Bolt IoT Module and Arduino Nano to grow your microgreens and greens indoors.

IntermediateFull instructions provided4 hours2,108
IoT based Personal Indoor Farm

Things used in this project

Hardware components

Bolt WiFi Module
Bolt IoT Bolt WiFi Module
×1
Arduino Nano R3
Arduino Nano R3
×1
DHT11 Temperature & Humidity Sensor (4 pins)
DHT11 Temperature & Humidity Sensor (4 pins)
×1
LDR, 5 Mohm
LDR, 5 Mohm
×1
Gravity: Analog Soil Moisture Sensor For Arduino
DFRobot Gravity: Analog Soil Moisture Sensor For Arduino
×1
Grove - 4-Channel SPDT Relay
Seeed Studio Grove - 4-Channel SPDT Relay
×1
Axial Fan, 12 VDC
Axial Fan, 12 VDC
×1
LED Light Bar, White
LED Light Bar, White
×1
Core Electronics Water Pump
×1

Software apps and online services

Bolt Cloud
Bolt IoT Bolt Cloud
Bolt IoT Android App
Bolt IoT Android App
Arduino IDE
Arduino IDE

Hand tools and fabrication machines

Multitool, Screwdriver
Multitool, Screwdriver
Premium Female/Male 'Extension' Jumper Wires, 40 x 3" (75mm)
Premium Female/Male 'Extension' Jumper Wires, 40 x 3" (75mm)

Story

Read more

Schematics

Schematics of the Entire Project

Code

Arduino Nano Code

Arduino
Upload to Arduino Nano using Arduino IDE
/*
 * Project BOLT IOT FARM
 * Dated 22 April 2021
 * 
 * = Source code for INDOOR FARM MONITORING SYSTEM, using DHT11, soil moisture sensor and LDR
 *    to monitor and upload values on Bolt IoT Cloud.
 *    
 * Edits: #1 Added DHT11   
 *        #2 Added LDR
 *        #3 Added Relays
 *        #4 Added Moisture Sensor
 *        #5 Added Serial Connection to Bolt
 *        
 * 
 */


#include <SoftwareSerial.h>
#include <DHT.h>

SoftwareSerial mySerial(8,9);//(Rx of Bolt, Tx of Bolt)

//Constants
#define DHTPIN 2     // DHT connected to Pin 2
#define DHTTYPE DHT11   // DHT 22  (AM2302)
DHT dht(DHTPIN, DHTTYPE); //// Initialize DHT sensor for normal 16mhz Arduino


int ldr = 3;    //LDR connected to pin 3
int fan = 4;    // Fan relay connected to pin 4
int light = 5;  // Light relay connected to pin 5
int pump = 6;   // pump relay connected to pin 6


void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  mySerial.begin(9600);
  dht.begin();
  pinMode(DHTPIN,INPUT);
  pinMode(ldr,INPUT);
  pinMode(fan,OUTPUT);
  pinMode(light,OUTPUT);
  pinMode(pump,OUTPUT);
  
}

void loop() {
  // put your main code here, to run repeatedly:
  String data;
  int ldr_out;
  int hum = dht.readHumidity();
  int temp = dht.readTemperature();
  //temp = temp * 1.8 + 32;


  
  if(digitalRead(ldr)==LOW){
    ldr_out=10;
    digitalWrite(light,HIGH);
  }
  else{
    ldr_out=0;  
    digitalWrite(light,LOW);  
  }

  if(hum>80){
    digitalWrite(fan,LOW);
  }
  else{
    digitalWrite(fan,HIGH);
  }

  int moist = analogRead(0);
  if(moist>500)
  {
    digitalWrite(pump,LOW);
  }
  else
  {
    digitalWrite(pump,HIGH);
  }


  
  data="Hum: "+ String(hum)+"%  Temp: "+String(temp)+" C  Ambience: "+ldr_out+" Moisture:"+String(moist);
  Serial.println(data);
  delay(1000);

  if (mySerial.available() > 0) {
    delay(50);
    String readData = "";
    Serial.print("Command from Bolt: ");
    while (mySerial.available() > 0 ) {
      readData = readData + (char)mySerial.read();
    }
    Serial.println(readData);
    if (readData.indexOf("RD") != -1) {
      String upload = String(temp)+","+String(hum)+","+ldr_out+","+String(moist);
      mySerial.print(upload);
      Serial.print("Data sent to Bolt: ");
      Serial.println(data);
    }
  }
}

Bolt Iot Cloud Code

JavaScript
This code is in Javascript to be written in Bolt IoT Cloud page in a Projects Tab
setChartTitle('Indoor Farm Monitor')
var lineGraph1 = new boltGraph();
lineGraph1.setChartType("lineGraph");
lineGraph1.setAxisName('Time','Temp C');
lineGraph1.plotChart('time_stamp','temp');
var lineGraph2 = new boltGraph();
lineGraph2.setChartType("lineGraph");
lineGraph2.setAxisName('Time','Humidity %');
lineGraph2.plotChart('time_stamp','hum');
var lineGraph3 = new boltGraph();
lineGraph3.setChartType("lineGraph");
lineGraph3.setAxisName('Time','Sunlight (0/1)');
lineGraph3.plotChart('time_stamp','ambi');
var lineGraph4 = new boltGraph();
lineGraph4.setChartType("lineGraph");
lineGraph4.setAxisName('Time','Soil Mositure %');
lineGraph4.plotChart('time_stamp','moist');

Credits

Ashley Jude

Ashley Jude

1 project • 3 followers

Comments