- Joined
- Jun 18, 2020
- Messages
- 6,240
- Reputation
- 5,445
- Reaction score
- 25,727
- 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:
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.
Regards,
Bob
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
- 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
- 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.
Regards,
Bob