C Β· STM32 Β· SPI Β· Python Β· Blender Β· Embedded

STM32 Gyro 3D Plane Visualizer

Overview

A full-stack embedded-to-3D pipeline that translates physical motion into a real-time 3D environment. The STM32 reads raw angular velocity from an L3GD20H gyroscope via SPI, transmits parsed data over UART, and a multi-threaded Python script animates a 3D F-15 aircraft model in Blender with zero perceptible latency.

Architecture

[L3GD20H Gyroscope] ──SPI──► [STM32F429] ──UART──► [Python Script] ──► [Blender 3D Model]

Technical Highlights

  • Bare-Metal SPI: Uses STM32 HAL for efficient burst reads, capturing X, Y, and Z axes simultaneously.
  • Optimized UART: Fixed-point arithmetic formats and transmits sensor data, intentionally bypassing heavy floating-point printf to save MCU flash.
  • Real-Time Integration: Converts raw angular velocity (Β°/s) into absolute Euler angles (Pitch, Roll, Yaw) on the fly using numerical integration: ΞΈ_current = ΞΈ_previous + (Ο‰ Γ— Ξ”t).
  • Multi-Threaded Engine: Background daemon thread + Blender Modal Operator parses live serial data without freezing the 3D rendering UI.
  • Deadband Filtering: Customizable noise threshold prevents model drift from inherent sensor noise.
gyro_spi_read.c
/* Burst-read X, Y, Z angular velocity registers via SPI */
uint8_t tx_buf[7] = { 0xA8 | 0x80 | 0x40 }; /* auto-increment + read */
uint8_t rx_buf[7];

HAL_SPI_TransmitReceive(&hspi5, tx_buf, rx_buf, 7, HAL_MAX_DELAY);

int16_t raw_x = (int16_t)(rx_buf[2] << 8 | rx_buf[1]);
int16_t raw_y = (int16_t)(rx_buf[4] << 8 | rx_buf[3]);
int16_t raw_z = (int16_t)(rx_buf[6] << 8 | rx_buf[5]);

Demonstration

CSTM32SPIPythonBlenderEmbedded
TypeScript Β· Next.js Β· Tailwind Β· Firebase Β· Full-Stack

Al-Midan

Overview

Al-Midan is a full-stack application that connects student athletes across Moroccan universities. It facilitates spontaneous sports event organization β€” matching players, balancing teams, and coordinating campus field reservations in real time.

The platform tackles student isolation and promotes physical well-being by making pickup games as frictionless as sending a message.

Architecture

[Next.js Frontend] β†’ [Firebase Auth] β†’ [Firestore DB]
       ↓                                      ↑
  [Tailwind UI]                     [Realtime Listeners]
       ↓                                      ↑
  [Vercel CDN] ←──── SSR/ISR ────→ [API Routes]

Core Features

  • Smart Matchmaking: Auto-balances teams based on player skill scores and reliability ratings derived from post-match feedback.
  • Location-Aware: Surfaces nearby matches and available campus fields using geolocation.
  • Real-Time Updates: Firestore subscriptions push live player counts and match status changes instantly.
  • Venue Integration: Partner sports complexes appear in-app with availability, pricing, and student discounts.
  • Trust System: Post-match reporting identifies toxic behavior and maintains community quality.

Why It Matters

University life in Morocco often leads to sedentary habits and social isolation. Al-Midan leverages the neurobiological benefits of group sports β€” endorphin release, cortisol reduction β€” as a healthy alternative to excessive screen time. Initial projections target 11,000+ users across Rabat’s 35 universities within the first semester.

TypeScriptNext.jsTailwindFirebaseFull-Stack
Python Β· React Β· FastAPI Β· OpenShift Β· OpenStack Β· AIOps

Cloud AI Monitor

Overview

Cloud AI Monitor is a production-grade AIOps platform built during an internship at CIRES Technologies (Tanger Med). It monitors hybrid cloud infrastructure across OpenShift and OpenStack, detects anomalies using a custom mathematical AI model, predicts resource exhaustion, and executes autonomous remediation β€” all without human intervention.

Architecture

[OpenShift Connector] ──┐
[OpenStack Connector] ──┼──► [PostgreSQL] ──► [AI Decision Engine] ──► [Remediation Engine]
[Grafana Connector]  β”€β”€β”€β”˜                           β”‚
                                                    β–Ό
                                        [React Dashboard + Email Reports]

AI Engine β€” Anomaly Detection

The core pipeline operates on a three-dimensional anomaly vector:

PythonReactFastAPIOpenShiftOpenStackAIOps
Python Β· AWS Β· ESP32 Β· Flask Β· IoT Β· C++

FaceRecon Bridge

Overview

A real-time face recognition access control bridge built for INPT. The system captures frames from a camera (webcam or ESP32-CAM), identifies enrolled faces via AWS Rekognition, and triggers a servo on the ESP32 to unlock a door. All access events are logged to SQLite with timestamps and confidence scores.

Architecture

[ESP32-CAM + Servo] ◄──WiFi──► [Flask Backend] ──AWS API──► [AWS Rekognition]
                                      β”‚
                                      β–Ό
                               [Browser Dashboard]
                               [SQLite Access Log]

How It Works

  1. Browser shows live camera feed (MJPEG stream from ESP32 or webcam).
  2. Every 2 seconds, a frame is sent to the /scan endpoint.
  3. Backend forwards the frame to AWS Rekognition SearchFacesByImage.
  4. If a match is found (confidence β‰₯ threshold) β†’ ESP32 /open endpoint is called β†’ servo unlocks the door.
  5. Access event is logged to SQLite with name, timestamp, and confidence score.

Key Features

  • Dual Camera Modes: Seamlessly switch between webcam (development) and ESP32-CAM (production) via a single config flag.
  • Face Enrollment UI: Browser-based interface to register new faces into the Rekognition collection.
  • Real-Time Dashboard: Live MJPEG feed with auto-scanning and access log display.
  • Hardware Feedback: LCD display (GPIO14/15) and buzzer (GPIO2) on the ESP32 for access granted/denied indication.
  • RESTful API: Full CRUD for face management, access logs, and system status.

Team

  • Software & AWS β€” Meriche Redouane & IbnHabib Imane
  • Hardware & ESP32 β€” El Harti Med & Ennaciri Abderahim

INPT β€” Expedition 2 | 2026

PythonAWSESP32FlaskIoTC++
C Β· Python Β· IoT Β· STM32 Β· MQTT Β· Real-Time

Agricultural Monitoring System

Overview

A complete IoT pipeline for agricultural field monitoring, from raw sensor data on an STM32 microcontroller, through an MQTT broker, to a real-time web dashboard.

The system monitors soil moisture, ambient temperature, and humidity, triggering alerts when values cross configurable thresholds.

Architecture

[STM32 + Sensors] β†’ UART β†’ [ESP8266 Wi-Fi] β†’ MQTT β†’ [Broker]
                                                          ↓
                                               [Python FastAPI]
                                                          ↓
                                               [InfluxDB] β†’ [Dashboard]

Embedded Layer

The STM32 firmware reads sensors via ADC and I2C, packages readings into a JSON string, and sends them over UART to the ESP8266 co-processor every 5 seconds.

CPythonIoTSTM32MQTTReal-Time