Table des matières:
- Étape 1: Les matériaux
- Étape 2: Le circuit électrique
- Étape 3: Codage des capteurs
- Étape 4: Préparation et placement des capteurs
- Étape 5: Préparation et placement du module matriciel
- Étape 6: Faire de l'IoT
- Étape 7: Connecter le Raspberry Pi
- Étape 8: Configuration de la base de données
- Étape 9: Création du site Web
- Étape 10: Connexion au World Wide Web
- Étape 11: Terminer
2025 Auteur: John Day | [email protected]. Dernière modifié: 2025-01-23 14:46
Bienvenue dans ma version d'un baby-foot piraté, dans le cadre d'un projet étudiant pour les nouveaux médias et les technologies de la communication. J'ai essentiellement grandi autour du baby-foot et des tables de billard, alors j'ai pensé que ce serait génial d'essayer de connecter l'un de ces appareils à Internet.
La configuration principale utilise une table de baby-foot existante connectée à un Raspberry Pi qui peut effectuer toutes les tâches suivantes:
- Utilise des broches GPIO pour piloter les LED/récepteurs IR et les modules matriciels 8x8
- Exécute un site Web Flask à l'aide de nginx
- Exécute une base de données MySQL/MariaDB pour le stockage des données
Pour pouvoir recréer ce projet, vous aurez besoin des compétences suivantes:
Arrière-plan:
- Comprendre HTML/CSS/Javascript pour le client du site
- Comprendre Python avec Flask/Flask-SocketIO/Jinja2 pour le côté serveur du site Web
- Connaissance de base de MySQL
- Savoir exécuter un serveur Web
Prototype
- Connaissances de base sur la façon de câbler un circuit électrique
- Soudure
- Compréhension de base sur la façon d'écrire un script en Python
- Travailler avec Linux (Raspbian)
- Avoir beaucoup de patience car il y aura beaucoup de débogage impliqué
Étape 1: Les matériaux
Voici la liste avec toutes les pièces nécessaires pour la table:
- Raspberry Pi modèle 3 (avec boîtier)
- T-Cobbler pour connecter le Pi à la maquette
- Table de baby-foot (j'ai utilisé une très vieille table similaire à celle-ci. Doit être prêt à y percer des trous)
- Module de matrice de points Arduino MAX7219 (2)
- Émetteurs LED IR (2+ car ils se cassent, similaires à celui-ci)
- Récepteurs IR (2+ car ils se cassent également, similaires à celui-ci)
- Planche à pain sans soudure de base
- Beaucoup, beaucoup de fil (dépend de la taille de la table de baby-foot)
- connecteurs mâles (30+)
- connecteurs femelles (10+)
- Résistances 100-220 Ohm (4+)
- matériaux de soudure
- sangles de fil
- Supports LED
- du bois/des vis au cas où vous voudriez relayer la balle dans la gouttière
Le coût total de ce projet dépend entièrement du coût de votre baby-foot (cher). Outre la table, les matériaux seront au maximum de 150 euros.
Étape 2: Le circuit électrique
Avant d'essayer de souder, assemblez tous les composants que je recommande fortement de tester d'abord sur une maquette. Il est plus facile de remplacer les composants défectueux avant d'avoir passé des heures à les souder.
Au début, j'ai essayé d'implémenter la matrice LED 8x8 avec un registre à décalage 74HC595 (première image) et un réseau de transistors, mais en raison des nombreux fils et de la très faible sortie, je suis passé au module matriciel MAX7219 car il ne prend que 5 fils et est directement piloté par un bus SPI.
Le circuit que j'ai finalement utilisé est dessiné avec Fritzing. Veuillez noter que les LED IR et les récepteurs peuvent être connectés à n'importe laquelle de vos broches GPIO gratuites.
Les récepteurs IR et la LED doivent être directement l'un en face de l'autre et le haut de la LED doit être orienté vers le récepteur. Parce que nous voulons simuler un faisceau direct qui peut être brisé par le mouvement de la balle auquel cas il y aura un changement d'état de la ligne DATA du récepteur de 0 à 1.
Étape 3: Codage des capteurs
J'ai codé la plupart de ce projet à l'aide de Pycharm car il permet un déploiement SSH facile sur votre Raspberry Pi à l'aide d'un interpréteur distant. Je n'entrerai pas dans les détails sur le fonctionnement de ce programme, mais de nombreuses informations peuvent être trouvées sur le site Web de pycharm.
Je travaille actuellement toujours sur le projet mais une fois que tout sera terminé, l'ensemble du projet sera disponible sur mon profil github
Le code des capteurs se compose de 3 classes qui sont exécutées dans un thread d'arrière-plan sur mon serveur Flask (qui sera expliqué plus tard):
- La classe d'objectif (lien) - Ce fichier initie tous les composants séparés, qui peuvent être appelés en insérant le bon périphérique/bus SPI et le numéro de broche
- La classe Matrix (lien) -C'est la classe principale pour alimenter le module MAX7219
- La classe LED et récepteur (lien) - Il s'agit de la classe principale pour alimenter le faisceau infrarouge en utilisant des threads séparés pour réduire la charge CPU du RPi
La LED et le récepteur fonctionnent tous les deux sur une fréquence de 38 kHz et les récepteurs s'attendent toujours à une impulsion de 50 % vers le haut et 50 % vers le bas pour fonctionner correctement.
Étape 4: Préparation et placement des capteurs
Nous allons maintenant préparer la LED IR et le récepteur. Dans l'image du tableau, vous pouvez trouver les emplacements où le RPi et les capteurs doivent être placés.
Mais nous devons d'abord préparer le câblage:
- Assurez-vous de mesurer la quantité de fil nécessaire de l'emplacement du RPi/planche à pain à l'emplacement du capteur
- Soudez les broches du récepteur IR à une extrémité du fil (COM/GND/V+)
- Soudez les pièces du connecteur mâle à l'autre extrémité du fil
Maintenant, nous allons préparer le tableau:
- Faites un dessin de base (basé sur l'image) sur l'endroit où percer. Il est très important que les 2 trous soient alignés l'un sur l'autre car ce sera l'emplacement du faisceau.
- Percez les trous
- Si vous avez des supports LED (lien), vous pouvez les mettre à l'intérieur du trou pour le rendre plus solide
- Insérez + scotchez la LED + le récepteur des deux côtés
- Attachez les fils + collez-les sur le bois pour qu'ils ne se croisent pas trop
- Insérez les broches mâles sur la planche à pain selon le circuit fourni précédemment
Étape 5: Préparation et placement du module matriciel
Ensuite, nous allons connecter les 2 modules matriciels LED
Noter:
Parce que j'ai utilisé une vieille table de baby-foot il y avait déjà des trous qui montaient vers la partie supérieure à cause des fume-cigarettes. Si vous ne les avez pas, vous devrez les créer.
Pour préparer les fils:
- Mesurez le fil de la planche à pain vers la partie supérieure de la table
- Soudez des connecteurs femelles à la première extrémité du fil
- Soudez des connecteurs mâles à l'autre extrémité du fil
Placer la matrice:
- Sortez la matrice à travers le trou sur le dessus
- Sangle + scotchez les fils à l'intérieur sur le bois pour éviter les croisements
- Insérez les broches mâles sur la planche à pain selon le circuit fourni précédemment
À un moment donné, j'ajouterai une petite étape de bricolage pour ajouter un boîtier pour le module matriciel, mais pour l'instant, ils sont nus.
Étape 6: Faire de l'IoT
Si vous souhaitez simplement enregistrer et afficher les scores, vous pouvez terminer le projet en écrivant un petit script python en cours d'exécution qui boucle jusqu'à ce que l'un des scores atteigne 9 puis se réinitialise.
Cependant, si vous souhaitez connecter votre table à Internet, les prochaines étapes devraient vous convenir.
Dans les prochaines étapes, nous aborderons les points suivants:
- Configuration du Raspberry Pi
- Créer une base de données pour le stockage
- Création du site internet
- Le mettre en ligne
À ce stade, si vous connaissez git, je vous recommande de créer un référentiel sur GitHub/GitLab pour garder une trace de vos fichiers. Si vous ne l'êtes pas, vous pouvez créer un dossier avec la même structure que dans l'image.
Le projet complet sera bientôt disponible sur GitHub. Cependant, un fichier rar temporaire avec tous les fichiers nécessaires est disponible.
Étape 7: Connecter le Raspberry Pi
Ensuite, nous allons configurer l'environnement raspberry pi, pour ce faire, vous devez exécuter les étapes suivantes:
- Connectez-vous via SSH à votre Rasberry Pi (vous pouvez utiliser PuTTY)
- Créez un dossier (exemple de projet mkdir) et déplacez-vous vers ce dossier à l'aide de la commande cd
- Créez un environnement Python virtuel dans ce dossier à l'aide de la commande python3 -m venv --system-site-packages env
- Activez l'interpréteur virtuel avec la commande source /env/bin/activate
- Installez les packages à partir du fichier requirements.txt avec la commande python -m pip install package-name
- Transférez les fichiers du fichier project_example.rar précédemment fourni via SSH dans votre dossier de projet
Vous devriez maintenant pouvoir exécuter le projet complet sur votre Raspberry Pi. Je vous conseille d'utiliser un IDE Python comme PyCharm qui vous permet de déboguer à partir de votre interpréteur distant via SSH et de télécharger directement les modifications si nécessaire.
Étape 8: Configuration de la base de données
Vous devez maintenant mettre en place une base de données très basique, basée sur ce modèle.
Le moyen le plus simple de procéder est de créer votre base de données dans l'atelier MySQL où vous pouvez également effectuer des tests.
Une fois cela fait, vous pouvez exporter un dump de votre base de données et le télécharger sur votre RPi, puis l'exécuter avec sudo mariadb < pathtofile/file.sql
Étape 9: Création du site Web
Ensuite, vous pouvez analyser (et utiliser) le code fourni dans le fichier project_example.rar.
Le fichier principal est le Flask.py qui est le pain et le beurre de ce projet:
- Exécute une application Flask-SocketIO qui gère le backend du site Web
- Crée une connexion entre la base de données et Flask
- Fournit la validation de connexion et l'enregistrement de l'utilisateur
- Fournit le code nécessaire sur la façon de jouer à un jeu utilise socketio pour mettre à jour le site Web en temps réel pendant le jeu
- Met les résultats du jeu dans la base de données
Dans les dossiers static et templates, vous pouvez trouver le HTML/CSS/JS qui fournit la partie frontale du site Web. N'hésitez pas à les modifier selon vos propres goûts.
Étape 10: Connexion au World Wide Web
Pour connecter notre site Web au Web, nous utiliserons nginx et uwsgi. Dans l'exemple de projet, vous pouvez trouver les fichiers nécessaires dans le dossier conf.
Tout d'abord, vous devez mettre à jour les éléments suivants dans ces fichiers:
- Dans le uwsgi-flask.ini, vous devez changer le chemin du paramètre virtualenv vers votre interpréteur
- Dans project1-flask.service, vous devez mettre à jour la partie [Service] du fichier avec vos informations d'identification et les chemins d'accès aux fichiers associés
- Dans le fichier nginx, vous devez mettre à jour le serveur et l'emplacement/chemin vers votre socket associé
Ensuite, vous devez remplacer le fichier de serveur Web nginx par défaut par l'emplacement de votre fichier de configuration nginx. Vous trouverez ci-dessous un exemple de commandes Linux pour ce faire.
- moi@mon-rpi:~/project1 $ sudo cp conf/nginx /etc/nginx/sites-available/project1
- moi@mon-rpi:~/project1 $ sudo rm /etc/nginx/sites-enabled/defaul t
- moi@mon-rpi:~/project1 $ sudo ln -s /etc/nginx/sites-available/project1 /etc/nginx/sites-enabled/project1
- me@my-rpi:~/project1 $ sudo systemctl restart nginx.service
Enfin, vous devez ajouter les services personnalisés à votre dossier systemd, voici un exemple sur la façon de procéder:
- me@my-rpi:~/project1 $ sudo cp conf/project1-*.service /etc/systemd/system/
- me@my-rpi:~/project1 $ sudo systemctl daemon-reload
- me@my-rpi:~/project1 $ sudo systemctl start project1-*
- me@my-rpi:~/project1 $ sudo systemctl status project1-*
Si vous souhaitez que le serveur Web démarre au démarrage de votre raspberry pi, vous devez utiliser la commande sudo systemctl enable project1-*.service.
Si cela est fait correctement, après un redémarrage du système, votre site Web devrait fonctionner sur votre adresse IP. Si vous souhaitez modifier l'un de ces fichiers de configuration, vous devez toujours arrêter le service, télécharger à nouveau les fichiers et utiliser la commande daemon-reload suivie d'un démarrage, sinon les modifications ne seront pas effectives.
Étape 11: Terminer
Tout en tapant la dernière partie de cette instructable, ce petit projet d'école est toujours un travail en cours.
J'ai passé d'innombrables heures à faire cela en 2,5 semaines. Même si tout a été un peu précipité, je suis toujours fier de ce que j'ai accompli. Pendant la phase d'assemblage, j'ai rencontré d'innombrables bugs/erreurs/capteurs défectueux, alors ne vous découragez pas trop si tout ne fonctionne pas du premier coup.
La meilleure chose que vous puissiez faire est de demander ou de chercher de l'aide sur Internet, il y a beaucoup de gens avec de bien meilleures connaissances qui sont très désireux de vous aider.
Enfin, je tiens à remercier mes professeurs des Nouveaux Médias et Technologies de la Communication pour m'avoir donné beaucoup de conseils et m'avoir aidé à terminer ce projet.
Conseillé:
Baby MIT Cheetah Robot V2 Autonome et RC : 22 étapes (avec photos)
Baby MIT Cheetah Robot V2 Autonomous and RC: Very Very Désolé Maintenant, seul le design des jambes dans le tinkercad a un problème, merci à Mr.kjellgnilsson.kn pour vérifier et m'informer. Modifiez maintenant le fichier de conception et téléchargez-le. Veuillez vérifier et télécharger. Ceux qui ont déjà téléchargé et imprimé je suis très ve
ET Smart Baby Monitoring System : 10 étapes
Système de surveillance ET Smart Baby : Le système de surveillance ET Smart Baby est un système qui vise à ajouter du confort aux parents ou aux gardiens qui s'occupent des bébés. Le système de surveillance gardera une trace de la température du bébé et si elle dépasse la normale, un SMS sera envoyé aux parents ou à la voiture
Table de jeu MAME avec Raspberry Pi : 5 étapes
Table de jeu MAME avec Raspberry Pi : Inspiré par des projets similaires en ligne, j'ai travaillé avec un voisin pour construire une paire de tables de jeu rétro basées sur MAME. Le plus compact est le mien; le plus grand avec deux jeux de commandes est le sien. Des photos des deux sont utilisées dans cet instr
Table d'harmonie Raspberry Pi : 3 étapes
Table d'harmonie Raspberry Pi : Le but de ce projet est de créer une table d'harmonie avec un Raspberry Pi, pour tous les sons. Je l'ai personnellement créé pour l'ambiance de la table d'harmonie de Donjons et Dragons. Cependant, vous pouvez l'utiliser pour n'importe quoi si vous le personnalisezSETUPPour ce p
Table d'harmonie prototype Arduino-Raspberry Pi : 9 étapes (avec photos)
Prototype de table d'harmonie Arduino-Raspberry Pi : la table d'harmonie prototype créée avec un Arduino et un Raspberry Pi est censée être un moyen simple de jouer 4 sons ou bruits différents tout en ayant la possibilité de changer de jeu de sons avec un bouton et d'afficher le jeu de sons actuel avec un Écran LCD.*Veuillez