Tuesday, September 30, 2025

Swastik Ghanghas 8F hand band for deaf people

 #include <WiFi.h>

#include <WebServer.h>

#include <HTTPClient.h>


const char* ssid = "ESP32-Network";

const char* password = "12345678";


WebServer server(80);


#define BUTTON_PIN 14

#define BUZZER_PIN 26


String serverIP = "192.168.4.1"; // ESP32 #1’s IP (Server)


void handleOn() {

  digitalWrite(BUZZER_PIN, HIGH);

  server.send(200, "text/plain", "Buzzer ON");

}


void handleOff() {

  digitalWrite(BUZZER_PIN, LOW);

  server.send(200, "text/plain", "Buzzer OFF");

}


void sendRequest(String path) {

  HTTPClient http;

  http.begin("http://" + serverIP + path);

  http.GET();

  http.end();

}


void setup() {

  Serial.begin(115200);

  pinMode(BUTTON_PIN, INPUT_PULLUP);

  pinMode(BUZZER_PIN, OUTPUT);

  digitalWrite(BUZZER_PIN, LOW);


  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {

    delay(500);

    Serial.print(".");

  }

  Serial.println("\nConnected to AP");


  server.on("/on", handleOn);

  server.on("/off", handleOff);

  server.begin();

}


void loop() {

  server.handleClient();


  if (digitalRead(BUTTON_PIN) == LOW) {

    sendRequest("/on");   // Tell Server to turn buzzer ON

  } else {

    sendRequest("/off");  // Tell Server to turn buzzer OFF

  }

  delay(200);

}


Thursday, September 11, 2025

SMART_HELMET_WITH_MOTOR_DRIVER_12_VOLTS_MOTOR

 // Pin definitions

const int trigPin = 2;   // HC-SR04 trigger
const int echoPin = 3;   // HC-SR04 echo
const int ENA     = 9;   // L298N Enable A (PWM)
const int IN1     = 10;  // L298N IN1
const int IN2     = 11;  // L298N IN2

// Distance threshold (in cm)
const int detectDist = 10;  

void setup() {
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  pinMode(ENA, OUTPUT);
  pinMode(IN1, OUTPUT);
  pinMode(IN2, OUTPUT);

  // Motor off initially
  digitalWrite(IN1, LOW);
  digitalWrite(IN2, LOW);
  analogWrite(ENA, 0);

  Serial.begin(9600);
}

long readDistanceCm() {
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);

  long duration = pulseIn(echoPin, HIGH, 30000UL); // 30ms timeout
  if (duration == 0) return -1;
  return duration / 58; // Convert µs to cm
}

void loop() {
  long distance = readDistanceCm();

  if (distance > 0 && distance <= detectDist) {
    // Object detected → Run motor forward full speed
    digitalWrite(IN1, HIGH);
    digitalWrite(IN2, LOW);
    analogWrite(ENA, 255); // Full speed

    Serial.print("Object at ");
    Serial.print(distance);
    Serial.println(" cm → Motor ON");
  } else {
    // Stop motor
    digitalWrite(IN1, LOW);
    digitalWrite(IN2, LOW);
    analogWrite(ENA, 0);

    Serial.println("No object → Motor OFF");
  }

  delay(100);
}

Monday, September 8, 2025

Dravin_Audio_LED_model

 Link trained model:  https://teachablemachine.withgoogle.com/models/xn12VJXSr/


Trained Model HTML code : <div>Teachable Machine Audio Model</div>

<button type="button" onclick="init()">Start Recognition</button>
<button type="button" onclick="connect()">Connect to Arduino</button>
<div id="label-container"></div>

<script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@1.3.1/dist/tf.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/@tensorflow-models/speech-commands@0.4.0/dist/speech-commands.min.js"></script>

<script type="text/javascript">
    const URL = "https://teachablemachine.withgoogle.com/models/xn12VJXSr/";
    let recognizer;
    let port, writer;

    async function createModel() {
        const checkpointURL = URL + "model.json";
        const metadataURL = URL + "metadata.json";

        recognizer = speechCommands.create("BROWSER_FFT", undefined, checkpointURL, metadataURL);
        await recognizer.ensureModelLoaded();
        return recognizer;
    }

    async function init() {
        recognizer = await createModel();
        const classLabels = recognizer.wordLabels();
        const labelContainer = document.getElementById("label-container");

        for (let i = 0; i < classLabels.length; i++) {
            labelContainer.appendChild(document.createElement("div"));
        }

        recognizer.listen(result => {
            for (let i = 0; i < classLabels.length; i++) {
                const classPrediction = classLabels[i] + ": " + result.scores[i].toFixed(2);
                labelContainer.childNodes[i].innerHTML = classPrediction;
            }

            // Decide based on prediction
            const noiseScore = result.scores[0];
            const gunshotScore = result.scores[1];

            if (gunshotScore > 0.75) {
                sendToArduino("gunshot\n");
            } else if (noiseScore > 0.75) {
                sendToArduino("noise\n");
            }
        }, {
            probabilityThreshold: 0.75,
            overlapFactor: 0.5
        });
    }

    // Connect to Arduino via Web Serial API
    async function connect() {
        try {
            port = await navigator.serial.requestPort();
            await port.open({ baudRate: 9600 });
            writer = port.writable.getWriter();
            alert("Connected to Arduino!");
        } catch (err) {
            console.error("Connection failed: ", err);
        }
    }

    async function sendToArduino(message) {
        if (writer) {
            const encoder = new TextEncoder();
            await writer.write(encoder.encode(message));
        }
    }
</script>


Arduino code:

int redLED = 7;   // Red LED for noise
int greenLED = 8; // Green LED for gunshot

void setup() {
  pinMode(redLED, OUTPUT);
  pinMode(greenLED, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  if (Serial.available() > 0) {
    String command = Serial.readStringUntil('\n');
    command.trim();

    if (command == "noise") {
      digitalWrite(redLED, HIGH);
      digitalWrite(greenLED, LOW);
    }
    else if (command == "gunshot") {
      digitalWrite(redLED, LOW);
      digitalWrite(greenLED, HIGH);
    }
    else {
      digitalWrite(redLED, LOW);
      digitalWrite(greenLED, LOW);
    }
  }
}




MUD Three Mode operation Manual Automatic GPS

 Code for three mode operation: /*   3-Mode Headlight Controller   - Manual mode (driver uses a toggle to pick high/low)   - Auto mode (LDR...