// channel id : 2549736
//channel api key : PLQFARB3MYHA75OE
#include <WiFi.h>
#include <Wire.h>
#include "Adafruit_MCP9808.h"
#include "ThingSpeak.h"
#include <ThingsBoard.h>
#include <ThingSpeak.h>
#include <LiquidCrystal_I2C.h>
#include <Arduino_MQTT_Client.h>
#define MCP9808_ADDRESS 0x18
const int LED_PIN = 13;
const int VIBRATION_SENSOR_PIN = 12; // Exemple, ajustez le numéro de broche selon votre câblage
const char* WIFI_NAME = "Wokwi-GUEST";
const char* WIFI_PASSWORD = "";
const int myChannelNumber = 2549736;
const char* myApiKey = "PLQFARB3MYHA75OE";
const char* server = "api.thingspeak.com";
#define TB_SERVER "thingsboard.cloud"
#define TOKEN "cKukYPLJUJMTR2A5y97v"
constexpr uint16_t MAX_MESSAGE_SIZE = 256U;
WiFiClient espClient;
Arduino_MQTT_Client mqttClient(espClient);
ThingsBoard tb(mqttClient, MAX_MESSAGE_SIZE);
void connectToWiFi() {
Serial.println("Connecting to WiFi...");
int attempts = 0;
}
void connectToThingsBoard() {
if (!tb.connected()) {
Serial.println("Connecting to ThingsBoard server");
if (!tb.connect(TB_SERVER, TOKEN)) {
Serial.println("Failed to connect to ThingsBoard");
} else {
Serial.println("Connected to ThingsBoard");
}
}
}
void sendDataToThingsBoard(float temp) {
String jsonData = "{\"tempIn\":" + String(temp) + "}";
tb.sendTelemetryJson(jsonData.c_str());
Serial.println("Data sent");
}
Adafruit_MCP9808 mcp;
WiFiClient client;
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
Serial.begin(115200);
Wire.begin();
mcp.begin();
pinMode(LED_PIN, OUTPUT);
pinMode(VIBRATION_SENSOR_PIN, INPUT); // Configuration de la broche comme entrée pour le capteur de vibration
WiFi.begin(WIFI_NAME, WIFI_PASSWORD);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Wifi not connected");
}
{
Serial.begin(115200);
Wire.begin();
mcp.begin(MCP9808_ADDRESS);
Serial.println("Server started");
}
Serial.println("Wifi connected !");
Serial.println("Local IP: " + String(WiFi.localIP()));
WiFi.mode(WIFI_STA);
ThingSpeak.begin(client);
lcd.init();
lcd.backlight();
}
void loop() {
float temperature = mcp.readTempC();
ThingSpeak.setField(1, temperature);
// Lecture de la valeur du capteur de vibration
int vibrationValue = digitalRead(VIBRATION_SENSOR_PIN);
if (temperature > 45 || temperature < 20) {
digitalWrite(LED_PIN, HIGH);
lcd.setCursor(0, 0);
lcd.print("Temp out of range!");
} else {
digitalWrite(LED_PIN, LOW);
lcd.setCursor(0, 0);
lcd.print("Temperature: ");
lcd.print(temperature);
lcd.print(" C");
lcd.setCursor(0, 1);
lcd.print("Vibration: ");
lcd.print(vibrationValue == HIGH ? "Detected" : "None"); // Affiche "Detected" si la vibration est détectée
}
int x = ThingSpeak.writeFields(myChannelNumber, myApiKey);
Serial.println("Temperature: " + String(temperature, 2) + "°C");
Serial.println("Vibration: " + String(vibrationValue == HIGH ? "Detected" : "None"));
if (x == 200) {
Serial.println("Data pushed successfully");
} else {
Serial.println("Push error: " + String(x));
}
connectToWiFi();
// Lecture de la température depuis le capteur MCP9808
float temp = mcp.readTempC();
Serial.println(temp);
if (!tb.connected()) {
connectToThingsBoard();
}
sendDataToThingsBoard(temp);
delay(10000);
}