// Implémentation des bibléothèque
#include <Adafruit_SSD1306.h>
#include <WiFi.h>
#include <HTTPClient.h>
#include <Adafruit_GFX.h>
#include "ThingSpeak.h"
#include <DallasTemperature.h>
#include <OneWire.h>
const int myChannelNumber =2783969 ;
const char* myApiKey = "RIAFHNRIONNYSG12";
const char* server = "api.thingspeak.com";
int sensorPin = 15;
const int LED_PIN = 13;
int ConnectedPin = 2;
int oilSensor = 4;
char* state =" ";
int ledRed = 23;
int buzzer = 5;
// Configuration de l'écran OLED
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
// Configuration WiFi
const char* ssid = "Wokwi-GUEST";
const char* password = "";
OneWire oneWire (sensorPin); // creates the OneWire object using a specific pin
DallasTemperature sensor (&oneWire);
WiFiClient client;
void setup() {
Serial.begin(115200);
sensor.begin ();
pinMode(LED_PIN, OUTPUT);
pinMode(ConnectedPin, OUTPUT);
pinMode(oilSensor, INPUT);
pinMode(ledRed, OUTPUT);
pinMode(buzzer, OUTPUT);
// Initialisation de l'écran OLED - pin21 : SDA - PIN22 : SCL
if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println("Erreur : OLED non trouvé !");
while (true);
}
display.clearDisplay();
// Connexion au WiFi
display.setCursor(0, 0);
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.println("Connexion WiFi...");
display.display();
display.clearDisplay();
display.setCursor(0, 0);
display.println("Connected to wifi jsdjerba !");
display.display();
delay(2000);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connexion...");
display.println(".");
display.display();
}
ThingSpeak.begin(client);
}
void alarme()
{
tone(buzzer, 262, 2500);
}
void loop() {
digitalWrite(ConnectedPin,0);
digitalWrite(ledRed,HIGH);
digitalWrite(ConnectedPin,LOW);
sensor.requestTemperatures ();
int temp = sensor.getTempCByIndex (0);
bool level =digitalRead(oilSensor);
if (level) {
state ="Level OK";
digitalWrite(ledRed,LOW);
} else {
state="Low Level";
digitalWrite(ledRed,HIGH);
}
// Affichage des données sur l'OLED
display.clearDisplay();
display.setCursor(0, 0);
display.setTextSize(2);
display.print("Temp:");
display.print(temp);
display.println(" C");
display.println(" --------");
display.println("Oil state:");
display.print(state);
// display.println("ok");
display.display();
// Envoi des données vers ThingSpeak
ThingSpeak.setField(1,temp);
ThingSpeak.setField(2,level);
if (temp>=28){
alarme();
}else{
digitalWrite(5, LOW);
}
int x = ThingSpeak.writeFields(myChannelNumber,myApiKey);
Serial.println("Temp: " + String(temp, 2) + "°C");
if(x == 200){
Serial.println("Data pushed successfull");
digitalWrite(ConnectedPin,HIGH);
}else{
Serial.println("Push error" + String(x));
digitalWrite(ConnectedPin,LOW);
}
Serial.println("---");
delay(10000);
}
Loading
ssd1306
ssd1306
Loading
ds18b20
ds18b20