#include <WiFi.h>
#define LED_PIN 2
#define BUTTON_PIN 13
#define BUZZER_PIN 12
const char* ssid = "Wokwi-GUEST";
const char* password = "";
int interactionCount = 0;
void connectWiFi() {
Serial.println("Connecting to WiFi...");
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\nWiFi Connected!");
Serial.print("IP Address: ");
Serial.println(WiFi.localIP());
}
void aiGreeting() {
Serial.println("\n==============================");
Serial.println(" ESP32 INTERNET AI ASSISTANT");
Serial.println("==============================");
Serial.println("AI: Hello Sumedh 👋");
Serial.println("AI: System Ready.");
}
void aiSystemStatus() {
Serial.println("\nAI: Checking system status...");
Serial.print("WiFi Status: ");
Serial.println(WiFi.status() == WL_CONNECTED ? "Connected" : "Disconnected");
Serial.print("Free Heap Memory: ");
Serial.println(ESP.getFreeHeap());
}
void aiInternetKnowledge() {
Serial.println("\nAI: Accessing Internet Knowledge...");
WiFiClient client;
if (client.connect("httpbin.org", 80)) {
client.println("GET /uuid HTTP/1.1");
client.println("Host: httpbin.org");
client.println("Connection: close");
client.println();
while (client.connected() || client.available()) {
if (client.available()) {
String line = client.readStringUntil('\n');
if (line.indexOf("uuid") >= 0) {
Serial.print("AI Unique ID: ");
Serial.println(line);
}
}
}
client.stop();
} else {
Serial.println("AI: Internet connection failed.");
}
}
void aiSmartReply() {
Serial.println("\nAI: Thinking...");
delay(1000);
switch (interactionCount % 3) {
case 0:
Serial.println("AI: Intelligence is the ability to adapt to change.");
break;
case 1:
Serial.println("AI: The future belongs to embedded AI systems.");
break;
case 2:
Serial.println("AI: You are building something powerful 🚀");
break;
}
}
void setup() {
Serial.begin(115200);
pinMode(LED_PIN, OUTPUT);
pinMode(BUTTON_PIN, INPUT_PULLUP);
pinMode(BUZZER_PIN, OUTPUT);
connectWiFi();
aiGreeting();
}
void loop() {
if (digitalRead(BUTTON_PIN) == LOW) {
interactionCount++;
digitalWrite(LED_PIN, HIGH);
digitalWrite(BUZZER_PIN, HIGH);
delay(200);
digitalWrite(BUZZER_PIN, LOW);
Serial.println("\n--------------------------------");
Serial.print("User Interaction #");
Serial.println(interactionCount);
aiSmartReply();
aiSystemStatus();
aiInternetKnowledge();
Serial.println("--------------------------------\n");
digitalWrite(LED_PIN, LOW);
delay(5000);
}
}