Skip to content

ExploryKod/Tech-Race

Repository files navigation

HETIC Projet Final: “ Tech-Race “

image

Description du Projet

Le projet final HETIC, "Tech Race", vise à développer une application mobile permettant de contrôler un véhicule à distance via un réseau sans fil. L'application offre aux utilisateurs la possibilité de piloter le véhicule, d'accéder aux données de télémétrie en temps réel et de participer à des courses autonomes.

Ce projet se compose de plusieurs repositories hébergés sur Github :

Equipe Backend (ce repository) :

Equipe frontend :

🎯 Objectif

L'objectif principal est de créer une interface intuitive pour les pilotes afin de contrôler le véhicule et de visualiser ses performances. Deux niveaux de courses sont organisés : l'un où les pilotes contrôlent directement le véhicule depuis l'application mobile, et l'autre où le véhicule doit naviguer de manière autonome en suivant une ligne au sol.

💻 Fonctionnalités Principales

  • Contrôle à distance du véhicule via l'application mobile.
  • Visualisation en temps réel des données de télémétrie (vitesse, orientation, etc.).
  • Mode suiveur de ligne autonome pour les courses sans intervention humaine.

⚙️ Configuration locale de l'API Backend (ce repository)

🧮 Base générale

  1. Cloner ce repository
  2. Avoir installé Golang sur sa machine locale Installation de Go
  3. Avoir docker sur sa machine locale et avoir installé l'image docker de mosquitto : Cliquez ici
  4. Avoir postgresSQL (optionnel car on peux passer via docker)
  5. Installer MakeFile si vous êtes sur une platforme qui ne l'a pas nativement
  6. Avoir configurer votre véhicule freenov avec un esp32 ayant le programme avec les bons IP liés à vos réseaux dessus
    voir la base de code ici

🎥 Pour faire fonctionner le service de vidéos

  1. S'inscrire gratuitement sur Cloudinary : S'inscrire sur Cloudinary
  2. Récupérer son cloudinary ID et le cloudinary URL depuis son compte
  3. Configurer le service cloudinarace (service cloudinary de Tech Race) : Depuis la racine, se rendre dans pkg/other/cloudinary/.env :
CLOUDINARY_ID=mon-id-cloudinary-présente-sur-mon-compte
CLOUDINARY_URL=mon-url-cloudinary-présente-sur-mon-compte
GOOS=linux (ou d'autres os si vous n'avez pas linux) > doc de Golang
GOARCH=amd64 (vérifier aussi que c'est bien la bonne architecture pour vous aussi) > doc de Golang

📍Configurations du corps de l'API

  1. Configurer le .env du projet à la racine :
IP=127.0.0.1
BOUNDARY=--123456789000000000000987654321
UPLOAD_VIDEO_URL=http://localhost:8083/upload-video
CLOUDINARY_URL=xxxx > votre url de cloudinary
CLOUDINARY_ID=xxxxx > votre id cloudinary
PortVideo=7000
ESP32_ADDRESS=192.168.104.10
ESP32_PORT=7000
RELAY_ADDRESS=:8080
STREAM_BOUNDARY=123456789000000000000987654321
DATABASE_URL=postgresql://root:xxxxx@xxxx/tech_race > demandez-nous l'url de la bdd 
  1. 🛵 Aller à la racine du projet et lancer ces commandes :

Usage de nos scripts si Linux (ou wsl) (Attention cela kill des ports sur votre machine)

Vous devez pouvoir utiliser le mode sudo sans Linux, travaillez dans un environnement virtuel ou via WSL si vous êtes sur Windows

Il est nécessaire d'installer make si vous avez Windows. Il est natif sur Mac et Linux.

  • Lancer le script ./start_app.sh va ouvrir les ports utilisés par l'API et lancer les container docker puis l'app (go run)
  • Sur un autre terminal : make cloudinarace ou sans make : cd pkg/other/cloudinary && go run main/main.go --port=8083

Installation sous Windows de Make :

Manuellement :

  • Vérifier que les ports 1883 (mqtt), 8083 (cloudinarace), 9000, 8888 (pgAdmin), 8889 (adminer) et 5432 (postgres) sont libres.
  • Lancer docker : docker compose up -d
  • Installer les dépendances : go mod download et go mod tidy
  • Lancer le projet : go run cmd/api/main.go
  • Lancer cloudinarace pour la gestion vidéo (si besoin):
    cd pkg/other/cloudinary && go run main/main.go --port=8083`

Pour travailler sur le style: tailwind

  • Pour travailler en phase de developpement :
    npm run watch
  • Pour builder avant mise en prod :
    npm run build
  1. 📊 Configurer la base de donnée:
  • Se rendre sur adminer ou pgAdmin
  • Regarder les credentials présents dans le fichier docker-compose.yaml
  • Choisir PostgresSQL et utiliser ces credentials :
Bdd : tech_race  
User : root
Sur PgAdmin, default email : tech@race.com
Mot de passe : password
serveur : db 

🧰 Matériel et Logiciel du véhicule lié à cet API

=======

  • Importer le dump de la base de donnée présent sur dump/tech_race_bdd.sql

Matériel et capteurs présent sur le véhicule

  • Architecture ESP32
  • 4 roues motrices pilotées indépendamment
  • Connexion sans fil wifi/bluetooth
  • Capteur de distance
  • Capteur de suivi de ligne
  • Caméra embarquée

Logiciel

Voir le repository : cliquez ici

  • APIs de contrôle pour les roues et les capteurs
  • Données de télémétrie fournies par les capteurs
  • Communication en temps réel entre l'application mobile et le véhicule

Contribuer

Les contributions sont les bienvenues ! Pour contribuer à ce projet, veuillez suivre ces étapes :

  1. Forker le projet
  2. Créer une branche pour votre fonctionnalité (git checkout -b feature/AmazingFeature)
  3. Commiter vos modifications (git commit -m 'Ajouter une fonctionnalité incroyable')
  4. Pousser vers la branche (git push origin feature/AmazingFeature)
  5. Ouvrir une Pull Request

Licence

Ce projet est sous licence MIT. Pour plus d'informations, veuillez consulter le fichier LICENSE.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages