Skip to content

nimaldanyathk/Semicolon-Embedded-C-Project

Repository files navigation

👁️‍🗨️ Semicolon — Where Syntax Meets Sight

An assistive vision & navigation device built using ESP32-CAM, TF-Luna LiDAR, and HC-SR04 Ultrasonic sensors.
Runs an on-device Edge Impulse model for real-time Indian currency detection with haptics and buzzer feedback.

Build Platform Lang License AI Model


✨ Features

  • 👣 Navigation:
    LiDAR as primary + ultrasonic as backup → vibration intensity scales with distance.
    Uses SSE-based web hosting for low-latency updates.

  • 💵 Currency Detection:
    On-device Edge Impulse model detects and identifies Indian banknotes via the ESP32-CAM.
    Provides voice output feedback for blind or visually impaired users.

  • 🔀 Modes:

    • Short press: toggle between Navigation ↔ Currency
  • 🌐 Camera Server:
    Built-in web interface for live streaming, capture, and remote configuration.


🗂️ Repository Layout

📦 Semicolon-Embedded-C-Project


├── 📂 currencydetection_c
│   ├── currency_detector_wrapper.cpp      # Wrapper for currency detection logic
│   ├── currency_detector_wrapper.o        # Compiled object file
│   ├── main.c                             # Main application entry for currency detection
│
├── 📂 lidar
│   ├── lidar_realtime_working_appupdated.c  # Real-time LiDAR data acquisition and processing
│   ├── lidar_with_ui.c                      # LiDAR integration with web/UI interface
│
├── 📂 CameraWebServer1
│   ├── CameraWebServer1.ino               # Main ESP32-CAM web server sketch
│   ├── app_httpd.cpp                      # HTTP server application for streaming
│   ├── board_config.h                     # Board configuration and pin definitions
│   ├── camera_index.h                     # HTML page template for camera streaming
│   ├── camera_pins.h                      # Camera pin mapping for various ESP32 boards
│   ├── cl.json                            # Configuration or class label file
│   ├── partitions.csv                     # ESP32 partition layout file
│
├── EdgeImpulseModel.c                     # Embedded Edge Impulse model for ML inference
│
├── README.md                              # Documentation for setup and usage
└── LICENSE                                # License file (if applicable)


⚙️ Hardware Setup

Component Description / Notes
ESP32-CAM (AI-Thinker) PSRAM enabled, main controller
TF-Luna LiDAR (UART) For distance sensing
HC-SR04 Ultrasonic Backup sensor (TRIG/ECHO; ECHO via 5V→3.3V divider)
Vibration Motor (ERM) Controlled via NPN transistor (2N2222) with 1 kΩ base resistor
Active Buzzer / I²S Speaker Audio or vibration feedback
Li-ion / LiPo (3.7 V) Power source with TP4056 + boost converter
Momentary Push Button Mode selector (short = toggle / long = mute)

🧩 Pin Configuration

Signal ESP32-CAM Pin Function / Notes
TF-Luna TX/RX GPIO14 (UART) / GPIO15 (RX2) Serial2 for LiDAR
HC-SR04 TRIG/ECHO GPIO14 / GPIO15 ECHO via voltage divider
Vibration Motor GPIO12 → transistor 1 kΩ base resistor, diode across motor
Buzzer GPIO13 Active buzzer output
Button GPIO2 INPUT_PULLUP
Power 5 V / GND From boost converter, common ground

🧰 Build & Flash Instructions

🔹 Arduino IDE

  1. Install ESP32 board support via Board Manager.
  2. Select board: AI Thinker ESP32-CAM
    • PSRAM: Enabled
    • Partition: Huge APP or partitions.csv
  3. Open and upload CameraWebServer1/CameraWebServer1.ino
  4. Monitor serial output (115200 baud) to find the device IP.
  5. Access web UI via:

🔹 PlatformIO (Arduino IDE)

[env:esp32cam]
platform = espressif32
board = esp32cam
framework = arduino
board_build.partitions = partitions.csv
build_flags =
-DEI_CLASSIFIER_TFLITE_ENABLE_ESP_NN=1
-DEI_CLASSIFIER_ALLOCATION_STATIC=1
monitor_speed = 115200

Typing SVG

About

A C programming–based assistive device for the visually impaired, integrating ESP32-CAM, ultrasonic and LiDAR sensors, and AI-powered object recognition.

Topics

Resources

License

Stars

5 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors