DIY Online Drybox

Bob's Auto's

On a breeding journey...
Cultivators Club
Joined
Jun 18, 2020
Messages
6,240
Reputation
5,435
Reaction score
25,697
Points
0
Currently Smoking
The current harvest
Hey Folks,

Who doesn't like a bit of tech? Well...that's exactly what I thought.
How about monitoring & controlling the drying process? Yup...Let's go.

Hardware:
  • NodeMCU v.3
  • L298N
  • DHT44
  • 12 or 24V Fan
  • 12V power supply
  • A bit of wiring
Software:
  • Smartphone with Blynk app
  • Account (free) on Blynk website or (which I prefer) a Local install of Blynk Server on a homecomputer or RPi
  • Arduino IDE
Code:
  • Since I can't upload the .ino file I'll write it down here...
C++:
/*
*  V5 = Humidity
*  V6 = Temperature
*  V0 = Gauge
*  V1 = Slider
*/

/* Comment this out to disable prints and save space */
//#define BLYNK_PRINT Serial
#define BLYNK_GREEN     "#23C48E"
#define BLYNK_RED       "#D3435C"

#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <DHT.h>

// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "Put token here";

// Your WiFi credentials.
// Set password to "" for open networks.
char ssid[] = "Put SSID here";
char pass[] = "Put network password here";

#define DHTPIN 2          // on the NodeMCU this is D4
#define fanPin 4          // on the NodeMCU this is D2

// Uncomment whatever type you're using!
//#define DHTTYPE DHT11     // DHT 11
#define DHTTYPE DHT22   // DHT 22, AM2302, AM2321
//#define DHTTYPE DHT21   // DHT 21, AM2301

DHT dht(DHTPIN, DHTTYPE);
BlynkTimer timer;

int gaugeValue = 55;

// This function sends Arduino's up time every second to Virtual Pin (5).
// In the app, Widget's reading frequency should be set to PUSH. This means
// that you define how often to send data to Blynk App.
void sendSensor()
{
  float h = dht.readHumidity();
  float t = dht.readTemperature();

  if (isnan(h) || isnan(t)) {
    Serial.println("Failed to read from DHT sensor!");
    return;
  }
  // You can send any value at any time.
  // Please don't send more that 10 values per second.
  Blynk.virtualWrite(V5, h);
  Blynk.virtualWrite(V6, t);
}

BLYNK_WRITE(V1)
{
  gaugeValue = param.asInt();
  Blynk.virtualWrite(V0, gaugeValue);

}

void controlFan()
{
  float h = dht.readHumidity();
  float t = dht.readTemperature();

  if (h >= gaugeValue)
  {
    digitalWrite(fanPin, HIGH);
    Blynk.setProperty(V0, "color", BLYNK_RED);
  }
  else
  {
    digitalWrite(fanPin, LOW);
    Blynk.setProperty(V0, "color", BLYNK_GREEN);
  }
}

void setup()
{
  // Debug console
  Serial.begin(9600);
  pinMode(fanPin, OUTPUT);
  Blynk.begin(auth, ssid, pass, "192.168.1.xx", 8080);    //Local server running on Raspberry Pi
  dht.begin();

  // Setup a function to be called every second = 1000L
  timer.setInterval(5000L, sendSensor);
  timer.setInterval(2000L, controlFan);
}

void loop()
{
  Blynk.run();
  timer.run();
}

A bit of Frankenstein building right here. Normally I print a case for this. Maybe I will, but for now a bit of tape will do the trick.
20200729_221259.jpg

20200729_221308.jpg

ScreenshotBlynk.jpg



Regards,

Bob
 
That's sweet man great job
 
And I thought I was into DIY... Nice setup, and should work well. Thanks for the tour. :thanks:
 
Back
Top