Je vous fais un petit tuto basique sur l'utilisation de la Sbrick avec un linux.
La source des informations est ici https://social.sbrick.com/wiki/view/pag ... nt-scripts
Vous aurez besoin :
- - Sbrick (of course...)
- Un ordi avec un linux installé dessus (vous pouvez utiliser une clé bootable, un rapsberry, etc.)
- Une interface Bluetooth Low Energy 4.0 (Possible qu'il soit intégré à votre Pc Portbale s'il est recent, perso j'ai pris un Asus https://www.asus.com/fr/Networking/USBBT400/, ca se trouve à 15€)
1. Installer le package BlueZ, permet de gérer les transactions Bluetooth Low Energy
- Pour vérifier si vous l'avez déjà ou s'il est bien installé :
- Code: Tout sélectionner
hcitool --help
Lancer la commande :
Vous devriez voir une ligne "lescan Start LE scan" LE pour Low Energy
- Code: Tout sélectionner
hciconfig -a
Vous devriez trouver une ligne "HCI Version: 4.0", noter le nom du hci associé, exemple : hci1
3. Trouver votre SBrick
- Allumer votre SBrick
- Code: Tout sélectionner
hcitool -i hci1 lescan
Lancer la commande (remplacer hci1 par le numéro précédement trouvé)
Noter l'adresse MAC de votre SBrick, exemple : 00:07:80:2E:2A:5D
4. Envoyer des commandes à votre SBrick
- Pour cela il faut utiliser gatttool
- Code: Tout sélectionner
gatttool -b 00:07:80:2E:2A:5D -i hci1 --char-write --handle=0x0025 --value=01000080
- Code: Tout sélectionner
-b <MAC_ADDRESS> : Adresse de votre SBrick
-i hci1 : Nom de votre interface bluetooth 4.0 Low Energy
--char-write : Indique le type de de commande Bluetooth
--handle=0x0025 : Indique sur quel slot de la SBrick on veut communiquer, 0x0025 est celui du controlleur moteur
--value=01000080 : valeur que l'on envoie à la SBrick, composé de 4 octets, ici : 01 + 00 + 00 + 80- Code: Tout sélectionner
# Puissance compris entre 0 et 255
puissance=128
echo "obase=16; $puissance" | bc
# Puissance en pourcentage de 0 à 100
pourcentage=50
puissance=$(echo "256*$puissance/100" | bc)
echo "obase=16; $puissance" | bc
Voici la commande type :
Ici la valeur signifie: RUN (01) + Port A (00) + Sens (00) + Puissance 50% (80), on fait tourner le moteur A dans le sens horaire à 50% de la puissance
Actions :
- 01 = RUN
00 = STOP
- A = 00
B = 01
C = 02
D = 03
Sens / direction
- Sens horaire = 00
Sens anti horaire = 01
Puissance
- Il y a 256 paliers de puissance (1 octet = 8 bits = 2 exposant 8 = 256). La valeur indiquée est en hexadécimal.
Vous pouvez utiliser la commande suivante pour convertir (je pense que l'on est plus familié avec le décimal ou le pourcentage...)
/!\ Il y a un bug dans les premiers firmware, la puissance 100% ne fonctionne pas
Voici un petit script vous permettant de tester cela.
Il lance le moteur par palier de 5% de puissance.
Renseigner les premières lignes qui correspond à votre matériel : HCI, MAC_ADDRESS, PORT
- Code: Tout sélectionner
# Mettre la valeur de votre interface Bluetooth. Ex:hci1
HCI="hciX"
# Mettre l'adresse MAC de votre SBrick
MAC_ADDRESS="xx:xx:xx:xx"
# Mettre le port sur lequel votre moteur est connecté : 00=A, 01=B, 02=C ou 03=D
PORT="00"
# Mettre 00 pour sens horaire, 01 pour sens anti-horaire
SENS="00"
#Variable d'init
pourcentage=0
ACTION=01
while [ $pourcentage -le 100 ]; do
echo "Run port $PORT a ${pourcentage}%"
puissance=$(echo "256*$pourcentage/100" | bc)
puissanceHexa=$(echo "obase=16; $puissance" | bc)
gatttool -b $MAC_ADDRESS -i $HCI --char-write --handle=0x0025 --value=${ACTION}${PORT}${SENS}${puissanceHexa}
sleep 1
((pourcentage=pourcentage+5))
done
# Stop du moteur
ACTION=00
gatttool -b $MAC_ADDRESS -i $HCI --char-write --handle=0x0025 --value=${ACTION}${PORT}${SENS}${puissanceHexa}
Je posterai ultérieurement mes scripts réalisés pour la Détection des SBrick et la gestion avec la wiimote ainsi que les liens qui m'ont été utiles pour les réaliser.
Ce tuto explique dans les grandes lignes comment faire pour contrôler la SBrick depuis un linux.
Si vous rencontrez des difficultés sur le bluetooth n'hésitez pas à chercher sur le net des solutions, c'est assez bien documenté.
Je précise que je ne ferai pas de support! L'utilisation est assez basique, vous trouverez facilement les solutions par vous-même
.gif)