Dans cet article, nous allons vous présentez une carte programmable de la marque Bare Conductive : la Pi Cap.
La carte Pi CAP est basée sur 12 électrodes capacitives et permet d’ajouter des interactions tactiles à votre Raspberry Pi.
Cette carte est notamment adaptée pour une utilisation avec de la peinture conductrice mais fonctionne aussi avec des cordons crocodiles ou tout élément conducteur.
Vous aurez besoin d’une carte Raspberry Pi avec Raspbian d’installé [Installation de Raspbian]. Vous aurez également besoin de VNC pour administrer à distance Raspberry [Installation de VNC].
Dans les paramètres de Raspbian, vérifiez que le SSH est activé : Menu Démarrer (logo Raspberry), Préférences, Configuration du Raspberry Pi, onglet Interfaces, ligne SSH bouton Activé coché.
Lancez un Terminal, exécutez les commandes suivantes, les unes à la suite des autres en appuyant sur la touche Entrée :
Nous allons concevoir un programme permettant de reproduire un capteur de proximité grâce à la peinture conductrice. En passant la main au-dessus de la peinture, le système allumera une LED.
NB : pour ce projet nous utiliserons des pinces crocodiles pour relier la Pi Cap à nos connexions de peinture conductrice, mais vous pouvez très bien appliquer la peinture directement sur la carte.
Nous aurons besoin du nécessaire de soudage. Si vous n’avez pas le matériel nécessaire, nous vous conseillons ce kit de soudage.
Vous débutez en soudure ? Suivez le guide :
Retournez la carte Pi Cap et soudez le connecteur 7 points.
Insérez le connecteur HE40 RPI sur le port GPIO de votre Raspberry, puis insérez la Pi Cap sur le connecteur.
Sur la plaque de montage, montez les LEDs en série avec les résistances et en cathodes communes.
Reliez grâce aux jumpers :
Reliez les cathodes communes à l’électrode GND de la Pi Cap grâce au câble crocodile-jumper.
Reliez les électrodes avec les pinces crocodiles:
import RPi.GPIO as GPIO import MPR121 sensor = MPR121.begin() sensor.set_touch_threshold(4) sensor.set_release_threshold(2) #Plus la valeur du "threshold" est basse, plus on capte loin #Valeurs par defaut : 40 ; 20 num_electrodes = 12 rouge = 27 #J8.13 jaune = 23 #J8.16 vert = 25 #J8.22 GPIO.setmode(GPIO.BCM) GPIO.setup(rouge,GPIO.OUT) GPIO.setup(jaune,GPIO.OUT) GPIO.setup(vert,GPIO.OUT) while True: if sensor.touch_status_changed(): #si une electrode a ete touchee sensor.update_touch_data() #mise a jour is_any_touch_registered = False for i in range(num_electrodes): if sensor.get_touch_data(i): #on identifie le numero de l'electrode is_any_touch_registered = True if sensor.is_new_touch(i): print ("Electrode : " + str(i)) if i==2: #si on appuie sur l'electrode 2, alors on change l'etat de la LED rouge GPIO.output(rouge, not GPIO.input(rouge)) #inversement de l'etat On/Off if i==5: #si on appuie sur l'electrode 5, alors on change l'etat de la LED jaune GPIO.output(jaune, not GPIO.input(jaune)) #inversement de l'etat On/Off if i==8: #si on appuie sur l'electrode 8, alors on change l'etat de la LED verte GPIO.output(vert, not GPIO.input(vert)) #inversement de l'etat On/Off
Dans un Terminal [wp-svg-icons icon= »console » wrap= »i »], tapez la commande suivante et appuyez sur la touche Entrée :
sudo python proximite.py
En passant votre main au-dessus d’un carré, la LED qui lui est raccordée changera d’état (allumée/éteinte).
Nous allons concevoir un programme permettant de reproduire une sound table. Chaque électrode jouera un son différent.
NB : pour ce projet nous utiliserons des pinces crocodiles pour relier la Pi Cap à nos connexions de peinture conductrice, mais vous pouvez très bien appliquer la peinture directement sur la carte.
Insérez le connecteur HE40 RPI sur le port GPIO de votre Raspberry, puis insérez la Pi Cap sur le connecteur.
Reliez à l’aide du câble Jack l’enceinte au port de Jack :
Ici, nous utilisons une 3B, le Jack est donc relié à la Raspberry.
Reliez les électrodes aux boutons de la « sound table » avec les pinces crocodiles.
On peut associer automatiquement une piste audio à une électrode. Pour cela, il faut que la piste audio soit nommée TRACK0XX où XX est le numéro de l’électrode. Exemple : la piste TRACK003 sera jouée lorsque l’électrode 3 sera appuyée. Il faut impérativement garder ce système de nommage pour assurer cet automatisme. Il n’est pas obligatoire d’avoir 12 fichiers audio : si une électrode n’est associée à aucun fichier, elle n’émettra pas de son si l’on appuie dessus.
Alimentez votre Raspberry. Lancez VNC pour naviguer dans Raspbian. Téléchargez la bibliothèque sonore [Bare Conductive ®], et faites extraire l’archive dans vos Documents [/home/pi/].
Lancez un Terminal et exécutez la commande alsamixer.
La commande alsamixer permet de régler le volume de l’enceinte. Sur votre clavier, la touche « Flèche du haut » augmente le volume, la touche « Flèche du bas » diminue le volume, et la touche « Echap » valide et retourne au Terminal.
Nous pouvons débuter la programmation. Dans vos Documents [/home/pi/], créer un fichier vide soundtable.py. Ouvrez le fichier et copiez-collez le programme suivant :
import MPR121 from gpiozero import RGBLED import subprocess import pygame from pygame.mixer import Sound from glob import glob from time import sleep sensor = MPR121.begin() sensor.set_touch_threshold(40) sensor.set_release_threshold(20) led = RGBLED(6, 5, 26, active_high=False) num_electrodes = 12 # Convertion des fichier MP3 en WAV led.blue = 1 subprocess.call("picap-samples-to-wav soundtable", shell=True) #soundtable = nom du dossier led.off() # init pygame.mixer.pre_init(frequency=44100, channels=64, buffer=1024) pygame.init() sounds = [Sound(path) for path in glob("soundtable/.wavs/*.wav")] #soundtable = nom du dossier def play_sounds_when_touched(): if sensor.touch_status_changed(): #verifie si une electrode a ete touchee sensor.update_touch_data() is_any_touch_registered = False for i in range(num_electrodes): #regarde quelle electrode a ete touchee if sensor.get_touch_data(i): is_any_touch_registered = True if sensor.is_new_touch(i): print ("Son joue : " + str(i)) sound = sounds[i] #joue le son dont le numero est le meme que celui de l'electrode sound.play() if is_any_touch_registered: led.red = 1 else: led.off() running = True while running: try: play_sounds_when_touched() except KeyboardInterrupt: led.off() running = False sleep(0.01)
Dans un Terminal [wp-svg-icons icon= »console » wrap= »i »], tapez la commande suivante et appuyez sur la touche Entrée :
sudo python soundtable.py
Votre sound table est prête !
Date de dernière modification 10 novembre 2020 16 h 12 min