YG

Youssef Gaied

Embedded systems and IoT

Third-year Licence student in Computer Systems Engineering.

Projects

Smart Irrigation

Connected irrigation with an AI decision step

ESP32, C/C++, MQTT, Firebase, Android (Java), n8n, Ollama

  • ESP32 board with a calibrated soil-moisture sensor, a DHT22 for temperature and humidity, a light sensor, and a relay-driven pump.
  • Firmware sends readings to Firebase every hour over HTTPS and takes pump commands in real time over MQTT.
  • A native Android app shows live readings and starts watering remotely.
  • A daily n8n workflow asks a local Mistral model whether to irrigate and publishes the answer to the device.

How a watering command travels

Every morning an n8n workflow asks a local language model whether the soil needs water. Press the button to replay that decision.

  1. n8n + MistralReads sensor data, decides at 08:00
  2. MQTT brokerHiveMQ, topic irrigation/command
  3. ESP32C/C++ firmware, subscribed to the topic
  4. Pump relaySwitches on for 30 seconds

Waiting for a command.

The assembled Smart Irrigation board: pump, relay, DHT22, ESP32 and soil sensor on a mouse pad12345
  1. 1
    Soil sensorCapacitive, calibrated with dry (2615) and wet (926) readings
  2. 2
    DHT22Temperature and humidity
  3. 3
    ESP32Wi-Fi, MQTT subscribe, HTTPS uploads to Firebase
  4. 4
    Relay2-channel, active LOW, held off at boot
  5. 5
    PumpMini submersible, runs 30 s per command

See it work

App → MQTT → ESP32 → relay → pump. The captions in the video are in English.

Pin by pin

Every wired signal and power pin on the ESP32, and where it goes.

Soil sensor AOUTanalog inputLDR junctionwith the 10 kΩ resistorRelay IN1pump control, active LOW5 V to the relayVCC and the NO terminalDHT22 DATAtemperature, humidity3.3 V railsoil sensor, DHT22, LDR

Code and docs

Firmware, Android app, n8n workflow and setup guide.

github.com/YoussefGaied/smart-irrigation

What I would fix

  • Private MQTT broker with credentials and TLS
  • On-device moisture rule as an offline fallback
  • Authenticated Firebase access

Tested end to end

App tap, MQTT message, relay, pump. The serial log confirms it: command received, pump on, watering done.

Ludus

Social app for people who train

React Native, Expo, TypeScript, Supabase

  • Share workouts, follow other athletes, comment in nested threads, and keep a profile with training stats, achievements and personal records.
  • Private accounts with follow requests, plus a real-time feed and notifications through Supabase subscriptions.
  • Supabase backend: authentication with persistent sessions, PostgreSQL, storage, realtime and server functions.
  • Built in TypeScript with Expo, React Navigation and Zustand for state, and packaged as an Android APK.
  • tested and used by me and my local gym freinds.
Ludus feed screen with a sample post, sample data
Feed, sample data
Ludus profile screen with training stats and achievements
Profile and records
Ludus comment thread screen, sample data
Comment threads, sample data

Contact me if you want an APK demo.

AR Dish Scanning

A restaurant menu you can see on your table

Next.js, TypeScript, Supabase, Three.js (WebXR), Polycam, Meshy.ai

  • Built with a friend for the restaurant Per Voi, who asked for a QR menu where tapping a dish shows it on the table.
  • The 3D dishes are made with Polycam scans and Meshy.ai generation, then cleaned of mesh artifacts and compressed (WebP textures) into light GLB files.
  • A guest scans the QR code, browses the menu, taps “Voir en AR”, and the dish appears on their table through the phone camera. On Android, Chrome runs a real WebXR AR session with ARCore, on iPhone it opens AR Quick Look, and other devices get an interactive 3D viewer.
  • A full-stack web app: Next.js and TypeScript front end, Supabase for PostgreSQL, authentication, file storage and an admin area for uploading dishes, in French, English and Arabic (right-to-left).
  • Feedback from the restaurant: they want the 3D dishes to look more realistic, which what we are working on right now.

Try it on your phone(demo)

Scan the code, open any dish and tap “Voir en AR”. Tested on Android (Chrome) and iPhone.

pervoi.vercel.app

How it works

A mobile-first Next.js app. Dishes are GLB models loaded with Three.js, which starts a WebXR AR session with ARCore hit-testing on Android. On iPhone it opens AR Quick Look with a USDZ file.

Resume

Preview of Youssef Gaied's CV, page 1

A one-page summary of my education, projects and skills.

PDF, 1 page, in English.

Contact

I’m happy to talk about a project, an opportunity, or how any of the above works.