#include <WiFi.h>
#include <PubSubClient.h>
#include <NewPing.h>
// Replace with your own WiFi credentials
const char* ssid = "your_SSID";
const char* password = "your_PASSWORD";
// Replace with your own
#include <SoftwareSerial.h>
#include <WiFi.h>
#include <PubSubClient.h>
// WiFi credentials
const char* SSID = "your_wifi_ssid";
const char* PASSWORD = "your_wifi_password";
// IBM Cloud credentials
const char* ORG = "zp8kep";
const char* DEVICE_TYPE = "abcd";
const char* DEVICE_ID = "1234";
const char* AUTH_TOKEN= "12345678";
const char* SERVER = "your_server_url";
// MQTT topics
const char* EVENT_TOPIC= "iot-2/evt/status/fmt/ json";
const char* COMMAND_TOPIC= "iot-2/cmd/led/ fmt/json";
// Ultrasonic sensor pins
const int TRIGGER_PIN = 1;
const int ECHO_PIN = 2;
WiFiClientSecure wifiClient;
PubSubClient mqttClient (wifiClient);
void connectWiFi()
{
WiFi.begin(SSID, PASSWORD);
while (WiFi.status() != WL_CONNECTED)
{
delay(1000);
Serial.println("Connecting to WiFi...");
}
Serial.println("Connected to WiFi");
}
void connectMqtt() {
mqttClient.setServer (SERVER, 8883);
mqttClient.setBufferSize(1024);
mqttClient.setCallback(callback);
// Connect to MQTT Broker while (!mqttClient.connected())
{
Serial.println("Connecting to MQTT Broker...");
mqttClient.connect(DEVICE_ID, DEVICE_TYPE,AUTH_TOKEN);
delay(1000);
}
Serial.println("Connected to MQTT Broker");
mqttClient.subscribe (COMMAND_TOPIC);
}
void callback(char* topic, byte* payload, unsigned int length) {
// Handle incoming MQTT messages
}
long measure Distance()
{
digitalWrite(TRIGGER_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIGGER_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIGGER_PIN,LOW);
long duration = pulseln (ECHO_PIN, HIGH);
long distance = duration * 0.034/2;
return distance;
}
void setup() {
Serial.begin(9600);
pinMode(TRIGGER_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
connectWiFi();
connectMqtt();
}
void loop() {
long distance = measure Distance();
Serial.println(distance);
if (distance < 100) {
// Create JSON payload with distance value String payload= "{\"d\":{\"distance\":" +String(distance) +"}}";
// Publish MQTT event mqttClient.publish(EVENT_TOPIC, payload.c_str());
Serial.println("Distance uploaded to IBMCloud");
}
mqttClient.loop(); // Maintain MQTT connection
delay(1000); // Wait for 1 second
}