#include <Adafruit_ADS1X15.h>
#include <WiFi.h>
#include <PubSubClient.h>
Adafruit_ADS1015 ads;
const char* ssid = "Wokwi-GUEST";
const char* password = "";
const char* MQTT_BROKER = "mqtt3.thingspeak.com";
const char* MQTT_CLIENT_ID = "NigsDxcPDiUoGiMPIAAPCiE";
const char* MQTT_USER = "NigsDxcPDiUoGiMPIAAPCiE";
const char* MQTT_PASSWORD = "YYiS2vIfaZL1cm/S6GHlog4P";
const char* MQTT_TOPIC_ANALOG = "channels/2559409/publish/fields/field1";
WiFiClient wifiClient;
PubSubClient mqttClient(wifiClient);
void setup() {
WiFi.begin("Wokwi-GUEST", "");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
connectToMQTT();
// initialize serial communication at 115200 bits per second:
Serial.begin(115200);
//set the resolution to 12 bits (0-4096)
analogReadResolution(12);
ads.begin();
}
void loop() {
int16_t adcValue;
float voltage;
// read the analog / millivolts value for pin 2:
int analogValue = analogRead(34);
int analogVolts = analogReadMilliVolts(2);
delay(100); // delay in between reads for clear read from serial
// Read from AIN0 (assuming your sensor is connected to A0)
adcValue = ads.readADC_SingleEnded(0);
// Convert ADC value to voltage
voltage = ads.computeVolts(adcValue);
// Print the result
Serial.print("ADC Value: "); Serial.print(adcValue);
//Serial.print(" Voltage: "); Serial.print(voltage); Serial.print(" V");
Serial.print(" Analog Value: "); Serial.print(analogValue);
Serial.println(" ");
mqttClient.publish(MQTT_TOPIC_ANALOG, String(analogValue).c_str());
delay(3000); // Delay for readability
}
void connectToMQTT() {
Serial.print("Connecting to MQTT server...");
mqttClient.setServer(MQTT_BROKER, 1883);
mqttClient.setCallback(callback);
while (!mqttClient.connected()) {
if (mqttClient.connect(MQTT_CLIENT_ID, MQTT_USER, MQTT_PASSWORD)) {
Serial.println("Connected to MQTT server");
} else {
Serial.print("Failed, rc=");
Serial.print(mqttClient.state());
Serial.println(" Trying again in 5 seconds...");
delay(5000);
}
}
}
void callback(char* topic, byte* payload, unsigned int length) {
// Handle MQTT messages if needed
}