BerryConnect!
Par Adrien, pendant la sixième édition du Tremplin Numérique des Petits Débrouillards Grand Ouest (à Rennes).
C'est déroulé du lundi 17 au vendredi 28 mars 2025.
Projet personnel visant à allumer mon ordinateur à distance, même par Internet, avec deux méthodes, dont une plus difficile. Projet accompli en une semaine et demie, conception d'une boîte en 3D avec le temps restant.
Sommaire
[masquer]Informations du projet
Lieu
Le projet s'est déroulé à 3 endroits différents :
- Dans la salle de formation, là où je travaillais la plupart du temps.
- Chez moi, pour mettre au point les paramètres du réseau local, auquel je n'ai pas accès dans la salle de formation.
- Dans le FabLab des Petits Débrouillards, pour l'impression en 3D de la boîte.
Matériel requis
- Terminal d'accès à distance (ordinateur, console de jeu portable, téléphone).
- L'ordinateur de jeu ou serveur.
- Raspberry Pi
- Câble Ethernet (RJ45).
Autre : Il faut deux connexions à Internet pour tester la fonctionnalité sur des réseaux locaux différents (un simple partage de connexion en plus d'une box suffit).
Logiciels utilisés
- Apollo - Application de partage d'écran à distance. À utiliser avec une application de visualisation d'écran à distance.
- Moonlight - Application de visualisation d'écran à distance. À utiliser avec une application de partage d'écran à distance.
- RealVNC - Application de visualisation d'écran sur réseau local en utilisant le protocole "VNC".
- WSL - Machine virtuelle Linux sur Windows. Ce n'est pas obligatoire.
- AnyDesk - Application de partage et visualisation d'écran à distance. Utilisée finalement pour ses nombreux avantages. Ce n'est pas obligatoire mais recommandé.
- TinkerCad - Conception d'objets en 3D.
- BambuStudio - Logiciel pour l'utilisation d'imprimantes 3D BambuLab, permettant la transformation de fichiers 3D (stl ici) en fichiers par couches (gcode).
Compétences utilisées
- Unix Shell
- Utilisation et configuration Raspberry Pi
- Utilisation et configuration Windows
- Configuration d'un réseau
- Configuration BIOS/UEFI
- Conception 3D + Impression
Préparation du projet
Idée du projet
J'ai d'abord beaucoup réfléchi à mon projet et ce que je souhaitais faire comme projet personnel.
Comme j'utilise mon ordinateur portable de plus de 10 ans pour la formation, il est parfois difficile de jouer pendant les pauses en raison du manque de puissance. De plus, faire un projet sur ce thème me permettrait de le mettre en avant dans mon projet professionnel axé sur les systèmes et réseaux. J'ai donc fait des recherches, notamment en regardant des vidéos en anglais sur YouTube sur si c'était possible comme projet, et d'après mes recherches, cela l'était.
Cahier des charges
J'ai alors élaboré un cahier des charges sur Canva avec l'aide des formateurs. J'ai fini par utiliser certaines solutions différentes, donc il n'a pas complètement été suivi.
Fonctionnement du projet
Le fonctionnement initial, comme il est noté dans le cahier des charges, est le suivant :
Allumage
Utiliser un circuit électrique qui connecte le bouton d'allumage de l'ordinateur au Raspberry Pi pour envoyer un signal d'allumage.
J'ai finalement changé pour l'utilisation du "Wake on LAN", une méthode permettant à la carte réseau d'un ordinateur de rester allumée même quand ce dernier est éteint, pour l'allumer en envoyant un message spécial dit "magic packet" à travers le réseau.
IP statique DHCP
Configurer de beaux DHCP statiques pour les adresses physiques du Raspberry Pi et de l'ordinateur de jeu.
Connexion Raspberry Pi
Configurer le Raspberry Pi de manière "headless", c'est-à-dire sans périphériques (pas du tout obligatoire, mais je n'avais pas de périphériques à ma disposition), puis se connecter avec le protocole SSH (Secure Shell) au Raspberry Pi en ouvrant le port 22.
J'ai aussi fini par utiliser AnyDesk en plus, car il existe une version pour Raspberry Pi qui facilite grandement la connexion, en plus d'apporter de la redondance avec une autre manière de se connecter au Raspberry Pi. De plus, cela fonctionne hors réseau local.
Connexion à l'ordinateur de jeu
Configurer l'ordinateur de jeu, installer Apollo, puis ouvrir un port pour se connecter à l'ordinateur de jeu hors réseau local.
J'ai remarqué durant le projet que l'application utilisée, Apollo, propose des paramétrages UPnP qui ouvrent les ports automatiquement si l'option est activée dans les paramètres du réseau local (box). Puis j'ai dû configurer le Wake on LAN dans le BIOS et dans Windows, car j'ai finalement utilisé cette option pour l'allumage.
Création d'une boîte
Création en 3D d'une boîte pour accueillir le Raspberry Pi.
Déroulement du projet
1ère étape
3 jours
J'ai d'abord mis en place le Raspberry Pi, j'ai suivi un tutoriel vidéo[1] pour configurer le Raspberry Pi, pouvoir d'abord y accéder par réseau local en shell, puis en partage d'écran.
2ème étape
3 heures
J'ai par la suite paramétré mon ordinateur de jeu/serveur pour activer le Wake on LAN, dans le BIOS et dans Windows en utilisant le tutoriel en pdf[2] de MSI, le constructeur de ma carte mère, car la carte réseau y est intégrée.
3ème étape
3 heures
J'ai passé l'après-midi chez moi pour paramétrer le serveur DHCP du réseau local pour configurer le Raspberry Pi et l'ordinateur de jeu/serveur avec une IPv4 statique. J'ai aussi eu le temps de commencer l'étape suivante.
4ème étape
2 jours
Tester le Wake on LAN en utilisant le Raspberry Pi pour allumer le serveur de jeu sur un réseau local. Cette étape a été la plus difficile car, dû aux limitations de la salle de formation, en effet sans pouvoir utiliser le paramétrage DHCP fait plus tôt, j'ai dû configurer sur les machines elles-mêmes (Raspberry Pi et ordinateur de jeu/serveur) leurs propres IPs.
Cela n'est pas un problème en temps normal, mais pas pour moi, je suis resté coincé pendant 12 heures à chercher pourquoi le Wake on LAN ne marchait pas. J'ai essayé de corriger tous les paramètres, mettre à jour les drivers, puis j'ai passé des heures sur des forums avec des problèmes similaires. Au final, il s'avérait tout simplement que la commande que j'utilisais pour envoyer le message d'allumage utilisait l'adresse physique de la carte réseau à allumer (c'est obligatoire) mais aussi l'IPv4 (ce n'est pas obligatoire). Seulement comme les paramètres DHCP ne sont pas disponibles dans la salle de formation et que j'utilisais l'ordinateur de jeu lui-même pour choisir sa propre IP, j'utilisais cette dernière. Jusqu'au moment où je me suis posé la question : se souvient-il de son IP auto-proclamée s'il est éteint ? J'ai alors essayé avec une autre commande qui n'utilise pas l'IP mais l'interface réseau spécifique (ici Ethernet, car j'ai connecté l'ordinateur de jeu au Raspberry Pi par câble). Et à ma plus grande surprise, cela a marché après 12 heures. Cela m'a redonné énormément de motivation !
5ème étape
4 heures
J'ai ensuite installé AnyDesk sur le Raspberry Pi, j'ai choisi un mot de passe d'accès sans surveillance pour y accéder à tout moment avec le mot de passe choisi. J'ai fait la même chose pour l'ordinateur de jeu. Grâce à cela, le projet fonctionne déjà même par Internet. J'ai pu tester avec les données cellulaires (4G/5G) avec l'application sur téléphone et j'ai pu accéder au Raspberry Pi avec mon téléphone, envoyer la commande d'allumage, puis accéder à mon ordinateur de jeu sur l'écran de connexion Windows (du moment qu'AnyDesk est configuré pour se lancer au démarrage, cela devrait être le cas par défaut). J'ai eu des problèmes avec AnyDesk qui, après l'installation, ne fonctionnait pas. Je suis parti le vendredi soir pour le week-end sans avoir pu régler le problème, mais quand je suis revenu le lundi matin, le logiciel fonctionnait parfaitement. Il suffisait juste de redémarrer le Raspberry Pi, mais je n'y avais pas pensé.
6ème étape
4 heures
Installer Apollo sur l'ordinateur de jeu et Moonlight sur l'ordinateur de travail (dans mon cas), et toutes les machines qui vont pouvoir accéder à l'ordinateur de jeu en suivant un autre tutoriel vidéo[3], puis tester la fonctionnalité des logiciels pour s'assurer que le partage d'écran fonctionne.
7ème étape
5 heures
De retour chez moi, j'ai commencé à faire le ménage dans les câbles du coin réseau et de la box pour y loger mon Raspberry Pi.
Ensuite, dans l'interface Apollo, activé le paramétrage UPnP pour pouvoir y accéder hors réseau local. J'ai suivi un tutoriel[4] qui propose aussi une solution utilisant un VPN. Il faut aussi vérifier que l'autorisation UPnP est activée dans les paramètres du réseau local (box Internet).
Ensuite, toujours dans les paramètres du réseau local, ouvrir le port 22 (SSH) pour le Raspberry Pi pour y accéder depuis Internet. Cela permet même de l'utiliser depuis certaines applications mobiles avec des options SSH.
Boîte BerryConnect
Une fois le projet complètement fonctionnel, je me suis attelé à l'aspect physique : la création d'une boîte en impression 3D. Sur Tinkercad, j'ai créé une à partir d'un modèle de Raspberry Pi trouvé sur Tinkercad[5] en cherchant "Raspberry Pi 3" (mon modèle est un 3B+). J'ai modifié un problème sur le modèle original et j'ai vérifié les dimensions, puis créé un nouveau modèle[6].
Je recommande aussi de faire une boîte d'au moins 91x62mm(intérieur) même si les dimensions d'un Raspberry Pi sont de 85x56mm, car les ports sont plus grands et il faut non seulement que le Raspberry passe dans la boîte, mais qu'il puisse aussi y entrer, ce qui a causé problème pour mon premier modèle qui a assez de place pour le Raspberry, mais pas assez pour l'y faire entrer.
Il faut aussi ne pas oublier de faire un trou pour la carte microSD qui se trouve sous la carte électronique.
Il faut aussi penser à faire des trous d'aération pour laisser la chaleur s'échapper.
Avec tout cela, j'ai créé ma boite[7]. Ce modèle contient des éléments esthétiques de différentes couleurs. Pour les imprimer de différentes couleurs sans utiliser trop de filament, il faut faire plusieurs impressions différentes : la boîte seule en noir, les portes seules en bleu, la grande étoile seule, le texte "berryconnect" (que vous pouvez modifier) avec la décoration bleue en dessous, et finalement la petite étoile jaune seule.
Documentations
J'ai, tout au long du projet, créé une documentation[8], étape par étape, en même temps que mon avancement dans le projet.
De plus, à la suite du projet, j'ai créé cette page wiki pour mon projet.
Mes Impressions
J'ai beaucoup apprécié ce projet, à tel point que j'ai eu du mal à m'arrêter. Il m'a beaucoup apporté et j'ai vraiment apprécié la liberté de travailler sur quelque chose que je choisis. Il m'aidera certainement à me mettre en avant pour mon projet professionnel.
Sources
- Aller ↑ Vidéo explicative (anglais) : Comment paramétrer un Raspberry Pi sans périphériques
- Aller ↑ Tutoriel pour les cartes mère MSI (anglais) : Comment activer le Wake on LAN
- Aller ↑ Vidéo tutoriel et explications des logiciels (anglais) : Installer Apollo et Moonlight
- Aller ↑ Vidéo tutoriel : Utiliser Moonlight et Apollo par Internet
- Aller ↑ Modèle TinkerCad de PalmerMason : Raspberry Pi Model 3
- Aller ↑ Modèle TinkerCad que j'ai modifié : Raspberry Pi 3
- Aller ↑ Modèle TinkerCad : Boîte BerryConnect
- Aller ↑ Documentation : BerryConnect étape par étape