tahamajs's picture
|
download
raw
5.18 kB

Embedded Systems Project – Air Mouse

University of Tehran, Faculty of Electrical and Computer Engineering

Second Semester 1404-1405 (2025-2026)


Group Information

Full Name Student ID Primary Role
Taha Majlesi 810101504 Android Developer, Sensor Processing
Javad Mohammadi 810101510 PC Server Developer, Mouse Control
Arman [Last Name] 220701089 UI/UX Designer, Data Transmission
Mehdi Mokhtari 810101514 Profiling, Documentation, Testing

Project Breakdown by Section

1. Android Side

1-1. User Interface (UI)

Task Responsible Status
Design main screen (Calibrate button, Start button, orientation indicator) Arman Assigned
Design calibration screen with step‑by‑step instructions Arman Assigned
Display raw and filtered sensor values for debugging Arman Assigned
Visual feedback for click and scroll actions (e.g., flash or color change) Arman Assigned
IP address input field for laptop connection Arman Assigned
Responsive layout adapting to different screen sizes Arman Assigned

1-2. Sensors and Filters

Task Responsible Status
Read raw data from gyroscope, accelerometer, magnetometer Taha Assigned
Gyroscope bias calibration (stationary average) Taha Assigned
Accelerometer calibration (6 orientations, offset/scale) Taha Assigned
Magnetometer hard‑iron calibration (figure‑8 pattern, min/max) Taha Assigned
Implement Madgwick (or Mahony/Kalman) sensor fusion filter Taha Assigned
Implement low‑pass and high‑pass filters for noise reduction Taha Assigned

1-3. Motion to Commands

Task Responsible Status
Map Z‑axis rotation to horizontal cursor movement Taha Assigned
Map X‑axis rotation to vertical cursor movement Taha Assigned
Detect click via quick Y‑axis rotation (with speed threshold) Taha Assigned
Detect scroll via quick linear Y‑axis movement (with threshold) Taha Assigned
Implement hysteresis to prevent false detections Taha Assigned
Send delta (incremental) values instead of absolute positions Taha Assigned

1-4. Data Transmission to Laptop

Task Responsible Status
Implement TCP socket for data transmission Arman Assigned
Format data as JSON (fields: DeltaX, DeltaY, Click, Scroll) Arman Assigned
Implement ACK and Retransmit mechanism for click/scroll packets Arman Assigned
Add Internet permission and cleartext traffic in AndroidManifest Arman Assigned

2. Laptop (PC) Side

Task Responsible Status
Implement TCP server in Python (or Go) to receive data Javad Assigned
Parse JSON and extract DeltaX, DeltaY, Click, Scroll Javad Assigned
Control mouse using PyAutoGUI (or equivalent library) Javad Assigned
Send ACK for received packets (click and scroll) Javad Assigned
Simple UI to show connection status and received data Javad Assigned

3. Profiling with Perfetto

Task Responsible Status
Enable USB Debugging and run trace on device Mehdi Assigned
Save trace output and analyse with Perfetto UI Mehdi Assigned
Answer questions 1–11 (trace analysis) Mehdi Assigned
Write config.pbtx configuration file Mehdi Assigned

4. Documentation and Submission

Task Responsible Status
Record final video (max 5 minutes) All Members Assigned
Write final report (including explanations and answers) Mehdi Assigned
Build APK and test on Android 10+ Taha, Arman Assigned
Upload project to GitLab/GitHub Javad Assigned
Final packaging (ZIP) and submission Javad Assigned

Main Challenges and Solutions

Challenge Solution
Gyroscope noise and drift Used Madgwick filter and bias calibration
Accurate click and scroll detection Used speed thresholds and hysteresis
Latency in data transmission from phone to laptop Optimised socket and reduced message size
Different send/receive rates Used buffering and ACK mechanism
Running Perfetto without internet access Used Docker Image and trace_processor_shell

Repository Link

[Link to GitHub/GitLab repository]


Submission Deadline

22/03/1404 (June 12, 2025) – 23:59


Group Members' Signatures

Name Student ID
Taha Majlesi 810101504
Javad Mohammadi 810101510
Arman Karami 220701089
Mehdi Mokhtari 810101514

Notes

  1. All members contributed equally to the project.
  2. Regular team meetings were held to coordinate efforts.
  3. Code reviews were performed by all members to ensure quality.
  4. The project was tested on multiple devices and platforms.

Date: June 2025

Xet Storage Details

Size:
5.18 kB
·
Xet hash:
b606b0e9cbd8323e03b0d267b2e91039a38eeab1461755c80e3d292dceb1ae6b

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.