An IoT-Enabled, AI-Powered Smart Desk System with Multi-Device Communication, Posture Correction, and Interactive Learning Features
Watch the Smart Interactive Desk in action!
Experience automatic height adjustment, posture correction, multi-interface control, and seamless IoT connectivity in this cinematic demonstration.
- Project Overview
- Team Members
- Key Features
- System Architecture
- Technology Stack
- Hardware Components
- Installation & Setup
- Project Structure
- Usage
- Project Resources
- Contributing
The Smart Interactive Desk (BEMO) is a comprehensive IoT-enabled workstation system designed for modern classrooms, offices, and collaborative learning environments. This senior graduation project integrates hardware control, computer vision, artificial intelligence, network communication, and ergonomic assistance into a unified, intelligent desk system.
- ๐ค Full-Stack IoT System: Complete integration from hardware firmware to web interfaces
- ๐ Multi-Device Communication: Desks can communicate with each other across classrooms via WiFi
- ๐ฑ Multiple Control Interfaces: Web app, desktop GUI, Bluetooth controller, and manual buttons
- ๐ง AI-Powered Features: Handwriting recognition using Microsoft TrOCR, computer vision for posture monitoring
- ๐ Automatic Posture Correction: Real-time sensor feedback with motorized height and tilt adjustment
- ๐ Comprehensive Analytics: Usage statistics, posture tracking, and data logging
- ๐จ Modern UI/UX: Custom-built GUI with theming support and responsive web interface
- Rami Kronbi
- Bassam Kousa
- Ali Daaboul
- Mohamad Berjawi
- Mohamad Hariri
-
Motorized Standing Desk
- Automatic height adjustment (80-100cm range)
- Tilt adjustment for optimal viewing angle
- Safety limits and position feedback
- Real-time height and angle display on LCD
-
Automatic Posture Correction
- Ultrasonic sensors for height measurement
- ToF (Time-of-Flight) sensors for tilt detection
- Kalman filtering for sensor data smoothing
- Real-time posture monitoring and alerts
- Automatic desk adjustment based on user position
-
WiFi Connectivity
- Network-enabled communication between desks
- Cross-classroom desk-to-desk messaging
- Real-time status synchronization
-
Bluetooth Support
- PS4 controller integration for desk control
- Wireless control interface
-
Web-Based Control
- Responsive web interface accessible from any device
- Real-time Socket.io communication
- RESTful API for desk control
- Multi-user support with user database
-
AirDrop-like File Sharing
- Network-based file transfer between desks
- Seamless document sharing in classroom environments
-
Desktop GUI Application
- Modern Tkinter-based interface
- Customizable themes and styling
- Multi-page navigation (Home, Notes, Music, Lists, Alarm, Settings)
- Real-time desk status display
-
Notes & AI Integration
- Handwriting capture via webcam
- AI-powered text recognition using Microsoft TrOCR
- Image segmentation and processing
- Digital note-taking and storage
-
Music Player
- Built-in audio playback
- Play, pause, stop controls
- File browser integration
-
Task Management
- To-do lists and reminders
- Alarm system with notifications
- User-specific task storage
-
Dual Motor System
- Height adjustment motor (PWM controlled)
- Tilt adjustment motors (dual motor control)
- Safety interlocks and position limits
-
Sensor Array
- Ultrasonic sensors (HC-SR04) for height measurement
- VL53L0X ToF sensors for precise distance measurement
- Manual control buttons with interrupt handling
-
Display System
- Nokia 5110 LCD display (84x48 pixels)
- Real-time height and tilt angle display
- Status messages and welcome screen
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Smart Interactive Desk โ
โ System Architecture โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ
โ Web App โ โ Desktop GUI โ โ Bluetooth โ
โ (Node.js) โโโโโโโบโ (Python) โโโโโโโบโ Controller โ
โ โ โ โ โ โ
โโโโโโโโฌโโโโโโโโ โโโโโโโโฌโโโโโโโโ โโโโโโโโโโโโโโโโโ
โ โ
โ Socket.io / HTTP โ
โ โ
โโโโโโโโโโโโฌโโโโโโโโโโโ
โ
โโโโโโโโโโโโผโโโโโโโโโโโ
โ Flask API Bridge โ
โ (Python/Flask) โ
โโโโโโโโโโโโฌโโโโโโโโโโโ
โ
โ Serial/USB
โ
โโโโโโโโโโโโผโโโโโโโโโโโ
โ ESP32/Arduino โ
โ Microcontroller โ
โโโโโโโโโโโโฌโโโโโโโโโโโ
โ
โโโโโโโโโโโโผโโโโโโโโโโโ
โ โ โ
โโโโโผโโโโ โโโโโผโโโโ โโโโโผโโโโ
โMotors โ โSensorsโ โDisplayโ
โโโโโโโโโ โโโโโโโโโ โโโโโโโโโ
- User Input โ Web App / GUI / Bluetooth Controller
- Command Processing โ Node.js Server / Python GUI
- API Bridge โ Flask API (localhost:5001)
- Serial Communication โ ESP32/Arduino (115200 baud)
- Hardware Control โ Motors, Sensors, Display
- Feedback Loop โ Sensor data โ Display โ User Interface
-
Python 3.x
- Flask (REST API)
- Tkinter (Desktop GUI)
- PySerial (Serial communication)
- OpenCV (Computer vision)
- Pygame (Audio playback)
- Transformers (AI/ML - TrOCR)
- NumPy (Image processing)
- PyYAML (Configuration)
-
Node.js
- Express.js (Web server)
- Socket.io (Real-time communication)
- CORS (Cross-origin support)
-
Arduino/ESP32 (C++)
- Hardware abstraction
- Motor control libraries
- Sensor libraries (NewPing, Adafruit_VL53L0X)
- LCD display drivers (Adafruit_PCD8544)
-
HTML/CSS/JavaScript
- Responsive web interface
- Real-time updates via Socket.io
- Modern UI components
-
Tkinter (Python)
- Custom GUI framework
- Theming system
- Multi-page navigation
-
Microsoft TrOCR (Transformer-based OCR)
- Handwritten text recognition
- Image-to-text conversion
-
OpenCV
- Image segmentation
- Computer vision processing
- Webcam integration
- ESP32 or Arduino Mega (primary controller)
- 2x DC Motors (height adjustment)
- 2x DC Motors (tilt adjustment)
- Motor drivers (H-bridge configuration)
- 2x HC-SR04 Ultrasonic Sensors (height and tilt measurement)
- 2x VL53L0X Time-of-Flight Sensors (precise distance measurement)
- 4x Manual Control Buttons (up, down, tilt up, tilt down)
- Nokia 5110 LCD (84x48 pixel monochrome display)
- WiFi Module (ESP32 built-in or external)
- Bluetooth Module (for PS4 controller)
- Python 3.8+
- Node.js 14+
- Arduino IDE (for firmware upload)
- USB-to-Serial driver (for ESP32/Arduino communication)
git clone https://github.com/Kronbii/smart-interactive-desk.git
cd smart-interactive-deskpip install -r requirementsNote: The requirements file contains:
- serial / pyserial
- opencv-python
- python-box
- tkinter (usually pre-installed)
- ttkinter
- numpy
Additional dependencies (install separately):
pip install flask pygame transformers torch pillow pyyamlcd model/web-app
npm installEdit model/config.yaml or config.yaml to set your serial port:
serial:
port1: "/dev/ttyUSB0" # Linux
# port1: "COM3" # Windows
baudrate: 115200
timeout: 1- Open
model/esp/esp.inoin Arduino IDE - Select your board (ESP32 or Arduino Mega)
- Select the correct COM port
- Upload the firmware
Option A: Using Launch Script
cd model
chmod +x launch.sh
./launch.shOption B: Manual Launch
# Terminal 1: Start Node.js web server
cd model/web-app
npm start
# Terminal 2: Start Python GUI
cd model
python3 -m gui.mainOpen your browser and navigate to:
- Web Interface:
http://localhost:3000(or your local IP) - Desktop GUI: Launches automatically when running
gui.main
smart-interactive-desk/
โ
โโโ model/ # โ
Production code (use this)
โ โโโ esp/ # ESP32/Arduino firmware
โ โ โโโ esp.ino # Main firmware code
โ โ โโโ bemo.h # Hardware definitions & classes
โ โ
โ โโโ gui/ # Desktop GUI application
โ โ โโโ main.py # GUI entry point & Flask API
โ โ โโโ home.py # Home page with controls
โ โ โโโ notes.py # Notes & AI features
โ โ โโโ music.py # Music player
โ โ โโโ lists.py # Task management
โ โ โโโ alarm.py # Alarm system
โ โ โโโ setting.py # Settings page
โ โ โโโ control.py # Desk control interface
โ โ โโโ web.py # Web integration
โ โ โโโ icons/ # GUI icons
โ โ
โ โโโ notes/ # AI & Computer Vision
โ โ โโโ ai.py # TrOCR handwriting recognition
โ โ โโโ segment.py # Image segmentation
โ โ โโโ notes.py # Notes processing
โ โ
โ โโโ web-app/ # Web interface
โ โ โโโ server.js # Node.js/Express server
โ โ โโโ public/
โ โ โ โโโ index.html # Web UI
โ โ โ โโโ script.js # Client-side logic
โ โ โ โโโ styles.css # Styling
โ โ โโโ package.json # Node dependencies
โ โ
โ โโโ config.yaml # Configuration file
โ โโโ control.json # Control state storage
โ โโโ users.json # User database
โ โโโ launch.sh # Launch script
โ
โโโ koubeisically/ # โ Deprecated (early prototype)
โ โโโ src/ # Old Python modules
โ
โโโ bash-scripts/ # Utility scripts
โ โโโ bluetooth.sh # Bluetooth setup
โ โโโ run_pipeline.sh # Pipeline execution
โ โโโ web.sh # Web server management
โ
โโโ website/ # Project website
โ โโโ website.html # Main page
โ โโโ pages/ # Additional pages
โ โโโ styles/ # Website styling
โ
โโโ readme/ # Documentation
โ โโโ install-node # Node.js installation guide
โ โโโ remove-sudo-passwd # System setup
โ โโโ static-ip # Network configuration
โ
โโโ user-database/ # User data storage
โ โโโ users.json
โ
โโโ config.yaml # Root configuration
โโโ requirements # Python dependencies
โโโ README.md # This file
- โ
model/- This is the production-ready code. Use this directory for all development and deployment. - โ
koubeisically/- Deprecated early prototype. Kept for reference only. - ๐ Configuration - Edit
model/config.yamlfor serial ports, themes, and system settings.
- Start the servers (see Installation)
- Open browser to
http://localhost:3000 - Control the desk using the web interface buttons
- Monitor status in real-time via Socket.io updates
- Launch
python3 -m gui.main - Navigate using the sidebar menu
- Control desk from the Home page
- Access features:
- ๐ Notes: Capture and recognize handwriting
- ๐ต Music: Play audio files
- โ Lists: Manage tasks
- โฐ Alarm: Set reminders
- โ๏ธ Settings: Configure preferences
- Pair your PS4 controller via Bluetooth
- Run the controller script (if available)
- Use arrow keys to control desk height and tilt
- Physical buttons on the desk allow direct control
- Safety limits prevent over-extension
- LCD display shows current height and tilt angle
For detailed documentation, reports, and project resources, visit:
Project Resources - Google Drive
This includes:
- Project proposal and design documents
- Technical specifications
- User manuals
- Presentation materials
- Research papers and references
This is a senior graduation project. While contributions are welcome, please note:
- Main branch contains the production code in
model/ - Documentation improvements are always appreciated
- Bug reports should include:
- Hardware configuration
- Software versions
- Error logs
- Steps to reproduce
- Lines of Code: 10,000+ (across all components)
- Languages: Python, JavaScript, C++ (Arduino), HTML/CSS
- Components: 15+ major modules
- Hardware Interfaces: 4+ (Serial, WiFi, Bluetooth, USB)
- AI/ML Models: 1 (Microsoft TrOCR)
- Development Time: Full academic year
This project was developed as a Senior Graduation Project demonstrating:
- Full-stack development capabilities
- IoT system integration
- Hardware-software interfacing
- AI/ML implementation
- Network programming
- Real-time systems
- User interface design
This project is developed for academic purposes. All rights reserved by the project team.
- Microsoft for TrOCR model
- Adafruit for sensor libraries
- OpenCV community
- Arduino and ESP32 communities
- Faculty advisors and reviewers
For questions or inquiries about this project, please contact the team members or refer to the project resources link above.
Built with โค๏ธ by the Smart Interactive Desk Team
Last Updated: 2024
