#include <DHT.h>
#include <WiFi.h>
#include <ThingSpeak.h>
#include <WiFiClient.h>
WiFiClient client;
long myChannelNumber = 2642954;
const char * myWriteAPIKey = "9GYRI60762A7COQC";
int statusCode;
#define DHTPIN 21
#define DHTTYPE DHT22
#define STEPPIN 18
#define DIRPIN 19
#define BUTTONPIN 2
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
DHT dht(DHTPIN, DHTTYPE);
int motorSpeed = 0;
bool motorEnabled = false;
void setup() {
Serial.begin(115200);
ThingSpeak.begin(client);
WiFi.mode(WIFI_STA);
dht.begin();
pinMode(STEPPIN, OUTPUT);
pinMode(DIRPIN, OUTPUT);
pinMode(BUTTONPIN, INPUT_PULLUP);
digitalWrite(DIRPIN, HIGH);
}
void loop() {
if (digitalRead(BUTTONPIN) == LOW) {
motorEnabled = !motorEnabled;
delay(300);
}
float temperature = dht.readTemperature();
if (isnan(temperature)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
if (temperature <= 25) {
motorSpeed = 2500;
} else if (temperature <= 40) {
motorSpeed = 2000;
} else if (temperature <= 50) {
motorSpeed = 1500;
} else if (temperature <= 60) {
motorSpeed = 1000;
} else {
motorSpeed = 500;
}
int rpm = 12000000 / motorSpeed;
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.print(" °C, RPM: ");
Serial.print(rpm);
Serial.print(", Motor Enabled: ");
Serial.println(motorEnabled ? "Yes" : "No");
if (motorEnabled) {
for (int i = 0; i < 200; i++) {
digitalWrite(STEPPIN, HIGH);
delayMicroseconds(motorSpeed);
digitalWrite(STEPPIN, LOW);
delayMicroseconds(motorSpeed);
}
} else {
delay(100);
}
if(WiFi.status() != WL_CONNECTED)
{
Serial.print("Attempting to connect");
while(WiFi.status() != WL_CONNECTED)
{
WiFi.begin(ssid, pass);
Serial.print(".");
delay(5000);
}
Serial.println("\nConnected.");
}
ThingSpeak.setField(1, temperature);
ThingSpeak.setField(2, rpm);
statusCode = ThingSpeak.writeFields(myChannelNumber,myWriteAPIKey);
if(statusCode == 200) {
Serial.println("Channel update successful.");
}
else {
Serial.println("Problem Writing data. HTTP error code :" +
String(statusCode));
}
}