#include <WiFi.h>
#include "ThingSpeak.h"
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <random>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
const float BETA = 3950; // Beta Coefficient of the thermistor
#define OLED_RESET -1
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
const int TEMP_PIN = 14; // Analog pin connected to the NTC thermistor
const char* WIFI_NAME = "Wokwi-GUEST";
const char* WIFI_PASSWORD = "";
const int myChannelNumber = 2509275;
const char* myApiKey = "PCCKG8E5JMBCT10S";
const char* server = "api.thingspeak.com";
WiFiClient client;
void setup() {
Serial.begin(115200);
WiFi.begin(WIFI_NAME, WIFI_PASSWORD);
while (WiFi.status() != WL_CONNECTED){
delay(1000);
Serial.println("WiFi not connected");
}
Serial.println("WiFi connected!");
Serial.println("Local IP: " + String(WiFi.localIP()));
WiFi.mode(WIFI_STA);
ThingSpeak.begin(client);
if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("SSD1306 allocation failed"));
for(;;);
}
display.display();
delay(2000);
display.clearDisplay();
}
void loop() {
int temp = analogRead(TEMP_PIN);
std::random_device rd;
std::mt19937 gen(rd());
int min = -24;
int max = 80;
std::uniform_int_distribution<int> dist(min, max);
// Generate a random integer
int celsius = dist(gen);
ThingSpeak.setField(1, celsius);
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0, 0);
display.print("Temp: ");
display.println(celsius);
display.display();
int x = ThingSpeak.writeFields(myChannelNumber, myApiKey);
Serial.println("Temp: " + String(celsius) + "°C");
if (x == 200) {
Serial.println("Data pushed successfully");
} else {
Serial.println("Push error: " + String(x));
}
Serial.println("---");
delay(10000);
}