Chtit Panier de basket domotisé à base de raspberry

Pour exposer et présenter vos projets et réalisations en électronique et nano-ordinateurs.
Répondre
Avatar de l’utilisateur
morpheus
Administrateur
Administrateur
Messages : 10
Inscrit depuis : 3 ans 7 mois
Nom : lyon
Prénom : david
Localisation : 56230 Questembert
x 3
x 5
Contact :
août 2020 04 16:41

Chtit Panier de basket domotisé à base de raspberry

Message par morpheus

  • Citer
  • Veuillez vous connecter pour aimer ce message

L'objectif du projet : Rendre un petit panier de basket interactif à chaque fois que l'on marque
fonction 1 : incrémenter un compteur 4 chiffres
fonction 2 : émettre un son via une enceinte bluetooth
fonction 3 : faire clignoter les leds selon une séquence
fonction 4 : afficher le score et jouer une petite animation type GIF sur des éléments déportés et connectés en wifi sur la rasp
ceci est testé et validé par mes neveux de 6 à 13 ans .

panier.webm
(18.28 Mio) Téléchargé 186 fois

schema de cablage :

schema_panier.png

Matériels utilisés :
un raspberry B+
un capteur KY-032
une enceinte bluetooth
un afficheur 5641AH
7 leds
un mini panier de basket
une batterie 10000 mah ( avec 2 sortie Usb 1A et 2,5A )
du câbles femelles/femelle et femelle/mâle
un Carton pour le support

Logiciel utilisés :
Image Raspbian stretch lite
Script Python pour gestion des ports GPIO
Configuration d'un hotspot + serveur DHCP via le port wifi
installation de apache + PHP : pour l'affichage du score et gestion de l'animation
installation de l'outil bluetoothctl et aplay pour lecture des sons via l'enceinte bluetooth

Etapes de réalisation du projet

ETAPE 1
preparation du raspberry
télécharger la version lite de raspbian car la partie bureau nous servira à rien

ETAPE 2
Script Python
le script contient les fonctionnalités suivantes:
la détection du passage du ballon devant le capteur

la gestion d'un Compteur 4 digits pour les points

la gestion des leds pour faire un chenillard à chaque réussite

cliquer ici pour télécharger le script python ( il faudra le renomme en .py a l'enregistrement )

prog_python.txt
(5.99 Kio) Téléchargé 160 fois

pour le detail voir les commentaires dans le script

ETAPE 3
Creer sa page PHP avec les animations
Pour cette partie il existe beaucoup de Tuto pour apprendre à programmer en PHP
Le design et le fonctionnement de la page va dépendre de votre vision de ce qui est bien ou beau donc le mieux c'est que vous vous formiez
Perso je me suis formé grace et surtout sur openclassroom
lien vers site openclassrooms

ETAPE 4
configuration de la partie hotspot
lien vers tuto config

ETAPE 5
configuration de la partie serveur web apache
lien vers site utilisé pour config

photo du montage

panier_basket.jpg
arriere_panier_basket (1).jpg

Avatar de l’utilisateur
TazDevilBZH
Administrateur général
Administrateur général
Messages : 41
Inscrit depuis : 3 ans 9 mois
Nom : BOURHIS
Prénom : Fred
Localisation : 35600 Redon
Site internet : https://forum.makersbzh.fr
Profession : Technicien informatique
x 27
x 7
Contact :
août 2020 04 20:25

Chtit Panier de basket domotisé à base de raspberry

Message par TazDevilBZH

  • Citer
  • Veuillez vous connecter pour aimer ce message

😃😃😃 Bravo, m'sieur David pour ce superbe projet rondement mené et parfaitement bien présenté 👍👍👍


Avatar de l’utilisateur
Knightrider
Administrateur
Administrateur
Messages : 25
Inscrit depuis : 3 ans 7 mois
Nom : VATAN
Prénom : Eric
Localisation : Brittany - Morbihan - Kreiz Breizh
Profession : Gérant de société Informatique
x 24
x 8
Contact :
août 2020 05 17:33

Chtit Panier de basket domotisé à base de raspberry

Message par Knightrider

  • Citer
  • Veuillez vous connecter pour aimer ce message
TazDevilBZH a écrit : mar. août 04, 2020 20:25:23

😃😃😃 Bravo, m'sieur David pour ce superbe projet rondement mené et parfaitement bien présenté 👍👍👍

+1 :vulcan:


Live Long And Prosper

Knightrider


Avatar de l’utilisateur
TazDevilBZH
Administrateur général
Administrateur général
Messages : 41
Inscrit depuis : 3 ans 9 mois
Nom : BOURHIS
Prénom : Fred
Localisation : 35600 Redon
Site internet : https://forum.makersbzh.fr
Profession : Technicien informatique
x 27
x 7
Contact :
août 2020 06 15:05

Chtit Panier de basket domotisé à base de raspberry

Message par TazDevilBZH

  • Citer
  • Veuillez vous connecter pour aimer ce message

Et voilà une visualisation du script Python : :grinning:

Code : Tout sélectionner

# ce programme est prevu pour le pilotage d'un panier de basket
# il permet la detection du passage du balon dans l'anneau via a capteur type KY-032
# et compte les points au fur et a mesure 
# a chaque redemarrage du programme le compteur est remis a zero
# pour sortir du programme faire un CTRL + C 

# appel des bibliotheques python  
import RPi.GPIO as GPIO
import time
import os
liste_son=[
"aplay -D bluealsa:DEV=00:1F:81:34:08:28 /home/pi/okay_visiteur.wav",
"aplay -D bluealsa:DEV=00:1F:81:34:08:28 /home/pi/wahoo.wav",
"aplay -D bluealsa:DEV=00:1F:81:34:08:28 /home/pi/wazaa.wav",
"aplay -D bluealsa:DEV=00:1F:81:34:08:28 /home/pi/youpi.wav",
"aplay -D bluealsa:DEV=00:1F:81:34:08:28 /home/pi/aquecoucou.wav",
"aplay -D bluealsa:DEV=00:1F:81:34:08:28 /home/pi/caramba_bart.wav",
"aplay -D bluealsa:DEV=00:1F:81:34:08:28 /home/pi/tchoutchou.wav",
"aplay -D bluealsa:DEV=00:1F:81:34:08:28 /home/pi/tarzan.wav",
"aplay -D bluealsa:DEV=00:1F:81:34:08:28 /home/pi/droopy.wav",
"aplay -D bluealsa:DEV=00:1F:81:34:08:28 /home/pi/surprise_cartoon.wav",
"aplay -D bluealsa:DEV=00:1F:81:34:08:28 /home/pi/halelujah.wav",
"aplay -D bluealsa:DEV=00:1F:81:34:08:28 /home/pi/cavalerie.wav",
"aplay -D bluealsa:DEV=00:1F:81:34:08:28 /home/pi/bipbibdepart.wav",
"aplay -D bluealsa:DEV=00:1F:81:34:08:28 /home/pi/bienjouelepers.wav"]
#initialisation du mode de nommage des Ports GPIO 
# voir la correspondance via google images en recherchant GPIO
#https://faironnerie-abc.xyz/doc/electronique/raspberry-pi/pi-et-xbee.html
GPIO.setmode(GPIO.BCM)

GPIO.setwarnings(False) #desactivation des messages python indiquant les warnings 

liste_ports_sortie = [17,27,22,10,9,11,5,20,8] # liste des ports utilises pour les leds

liste_ports_Afficheur = [13,19,26,21,16,12,7] # liste des ports utilises pour l'afficheur
#     -A-
#   F|   |B
#     -G-
#   E|   |C
#     -D-
# G est a branche sur le GPIO 13
# F est a branche sur le GPIO 19
# A est a branche sur le GPIO 26
# B est a branche sur le GPIO 21
# C est a branche sur le GPIO 16
# D est a branche sur le GPIO 12
# E est a branche sur le GPIO 7
      
#initialisation des ports gerant les 4 afficheurs liste_ports_Digit = [25,24,23,18] #initialisation du port avec la capteur de detection liste_ports_entree = [6] # tableau contenant la sequence d'allumage des leds pour obtenir les chiffres de 0 a 9 num = {' ':(0,0,0,0,0,0,0), '0':(0,1,1,1,1,1,1), '1':(0,0,0,1,1,0,0), '2':(1,0,1,1,0,1,1), '3':(1,0,1,1,1,1,0), '4':(1,1,0,1,1,0,0), '5':(1,1,1,0,1,1,0), '6':(1,1,1,0,1,1,1), '7':(0,0,1,1,1,0,0), '8':(1,1,1,1,1,1,1), '9':(1,1,1,1,1,1,0)} # initialisation de la sequence d'allumage et d'extinction des leds # pour le projet on a 7 leds donc 7 valeurs par ligne # 1 = led allume 0 = led eteinte sequence4 = [ [1,0,0,0,0,0,1,1,1], [1,1,0,0,0,1,1,0,0], [1,1,1,0,1,1,1,1,1], [1,1,1,1,1,1,1,0,0], [1,0,0,0,0,0,1,1,1], [1,1,0,0,0,1,1,0,0], [1,1,1,0,1,1,1,1,1], [1,1,1,1,1,1,1,0,0], [1,0,0,0,0,0,1,1,1], [1,1,0,0,0,1,1,0,0], [1,1,1,0,1,1,1,1,1], [1,1,1,1,1,1,1,0,0], [1,0,0,0,0,0,1,1,1], [1,1,0,0,0,1,1,0,0], [1,1,1,0,1,1,1,1,1], [1,1,1,1,1,1,1,0,0], [0,0,0,0,0,0,0,1,1]] # fonction permettant la gestion de l'ordre d'allumage des leds a chaque panier # on passe en parametre # tempo : le delais voulu entre chaque sequence # *sequence : la liste des sequences d'allumage et d'extinction des leds def lancement(tempo,*sequence): a = len(sequence) j = 0
while j < len(sequence) : i = 0 while i < 9 : GPIO.output(liste_ports_sortie[i], sequence[j][i]) i = i + 1 j = j + 1 time.sleep(tempo) #initialisation des ports GPIO pour la gestion des capteurs d'entrees # for i in liste_ports_sortie : GPIO.setup(i, GPIO.OUT) GPIO.output(i, False) #initialisation des ports GPIO pour la gestion des leds en mode sortie for i in liste_ports_Afficheur : GPIO.setup(i, GPIO.OUT) GPIO.output(i, False) # initialisation des ports pour gestion les 4 digits du module 5641ah en mode sortie for i in liste_ports_Digit : GPIO.setup(i, GPIO.OUT) GPIO.output(i, False) #initialisation des ports pour gestion des ports d'entrees for i in liste_ports_entree : GPIO.setup(i, GPIO.IN, pull_up_down = GPIO.PUD_UP) # mise a zero du compteur Compteur = 0 CompteurSon=0 s = str(Compteur).rjust(4) fichier = open("/home/pi/Compteur.txt", "w") fichier.write(s) fichier.close() # boucle principale try: os.system("aplay -D bluealsa:DEV=00:1F:81:34:08:28 /home/pi/fanfare.wav") time.sleep(2) os.system("aplay -D bluealsa:DEV=00:1F:81:34:08:28 /home/pi/fanfare.wav") time.sleep(2) while True:
#print s if GPIO.input(6) == False: Compteur = Compteur + 1 s = str(Compteur).rjust(4) fichier = open("/home/pi/Compteur.txt", "w") fichier.write(s) fichier.close() lancement(0.03,*sequence4) if CompteurSon < 14 : os.system(liste_son[CompteurSon]) else : CompteurSon = 0 os.system(liste_son[CompteurSon]) CompteurSon = CompteurSon +1 for digit in range(4): for loop in range (0,7): GPIO.output(liste_ports_Afficheur[loop],num[s[digit]][loop]) GPIO.output(liste_ports_Digit[digit], 0) time.sleep(0.001) GPIO.output(liste_ports_Digit[digit], 1)
# gestion de la sortie du programme par un CTRL+C et liberer les ports GPIO except KeyboardInterrupt: GPIO.cleanup() # reinitialisation des PORTS GPIO

Pour récupérer ce scipt, il suffit de cliquer sur le petit bouton "Copier" en haut à droite de la fenêtre du script (à côté de Python puisqu'en l’occurrence il s'agit d'une script Python) puis de le coller dans votre éditeur de texte préféré.


Répondre

Revenir à « Les projets et réalisations - Electronique et nano-ordinateurs »