test du nRF51-DK

J’ai ressorti mon nRF51-DK de la poussière en me disant qu’après deux ans d’absence dans ce projet-là, peut-être que les choses auraient changé concernant le monde mystérieux de l’interfaçage BLE. Je dirais oui et non, car si ça marche un peu plus que dans mes souvenirs, c’est encore plus ou moins sur la coche.

J’utilise bluez 5.50 sur Fedora. Pour une raison obscure, l’interface par défaut de KDE de bluetooth est très aléatoire. J’y vais donc avec le terminal. J’ai commencé par faire un restart : service bluetooth restart, ensuite bluetoothctl pour avoir l’interface de contrôle.

Avec power on et scan on/off, on peut pas mal tout faire.

Donc ce qui est bizarre aussi c’est que mon nRF51-DK doit être nouvellement programmé avec le code. J’utilise celui-ci pour tester l’uart : https://os.mbed.com/teams/Bluetooth-Low-Energy/code/BLE_LoopbackUART/

et j’alterne avec BLE puck juste pour être capable de voir ce qu’il se passe. Donc voici toutes les étapes pour arriver à me connecter avec mon nRF en mode uart. (Avec mbed, on peut compiler en ligne et glisser le fichier hex directement par usb)

power off -> loader le firmware puck ->power on -> scan on -> scan off -> power off -> loader le firmware uart ->power on-> scan on

Ensuite on peut se connecter avec l’interface graphique de bluetooth.

J’ai essayé le code d’Adafruit https://github.com/adafruit/Adafruit_Python_BluefruitLE , mais après beaucoup de gossage (j’ai enlevé le bout du code qui flush la cache pour être capable de voir mon périphérique), il arrive à le trouver et à identifier son UUID comme étant du uart, mais il bogue rendu à device.connect() :

dbus.exceptions.DBusException: org.freedesktop.DBus.Error.UnknownObject: Method « Connect » with signature «  » on interface « org.bluez.Device1 » doesn’t exist

Donc ça me semble être un bug dans la librairie d’Adafruit. Avec le connect de fedora, il l’enregistre comme un service uart, je ne sais simplement pas comment y avoir accès par la suite.

Tentative exploratoire de filage de soie d’asclépiade

J’ai fait une première tentative de filage de l’asclépiade en plaçant du médium glacis clair dans un pot en plastique, suivi par des soies. C’était davantage un test exploratoire pour débroussailler la suite des choses.

J’ai tout d’abord essayé de mélanger le tout à l’aide d’un bâton, puis l’idée m’est venue d’enrouler le début de l’accumulation de soie autour, afin d’avoir une base solide. En rajoutant progressivement des soies au mélange et en tournant le fil imbibé d’adhésif dans le pot, j’ai obtenu une manière de filer les soies en un fil potentiellement infini, tant que les paramètres sont bien contrôlés.

Tout porte à croire qu’en contrôlant le flux de soie et d’adhésif, un fil très fin pourrait être produit.
Le bout opposé au bâton, lorsqu’il ne restait plus de médium glacis clair dans le pot.
Le fil dans toute sa longueur, est un peu rigide par endroits à cause de son épaisseur
Les fibres sont bien maintenues ensembles.

En enroulant la fibre autour du bâton, j’ai pu continuer presque indéfiniment, n’étant limité que par la quantité de médium dans le pot. Ensuite, je l’ai déroulé au complet et accroché pour laisser sécher. Toutes ces étapes devront être bien contrôlées dans un prototype éventuel.

Piano midi avec fluidsynth

J’ai installé Ubuntu Studio sur une tour pour faire un piano midi qui s’ouvre automatiquement.

Voici le script bash que j’ai adapté d’ici : https://superuser.com/questions/1291367/bash-condition-not-met-when-executed-by-crontab

#!/bin/bash
sleep 60
echo "Starting"
/usr/bin/fluidsynth -is -a jack -j -m alsa_seq /home/fred/Nice-Keys-Ultimate-V2.3.sf2 &
echo "Fluidsynth started"
while true; do /usr/bin/aconnect -o; if [[ $(/usr/bin/aconnect -o ) = FLUID ]]; then break; fi; sleep 2; done
/usr/bin/aconnect 20:0 128:0
echo "Connected"

J’ai rajouté un sleep 60 pour attendre que l’os ait fini de démarrer comme du monde, sinon il y avait des erreurs bizarres (probablement qu’il faut que la carte de son soit chargée avant d’exécuter le script.

Ensuite, j’ai ajouté ceci dans la crontab :

@reboot bash /home/fred/pianolauncher.sh >> /home/fred/out.log 2>&1

où pianolauncher est mon script ci-haut. Ça fonctionnait lorsque mon écran était connecté, mais sans écran, il y avait un bug. Il faut ajouter la ligne suivante au fichier /etc/environment :

JACK_NO_AUDIO_RESERVATION=1

Eh voilà! Un piano avec une latence très faible grâce au kernel préemptoire d’Ubuntu Studio, qui s’ouvre automatiquement sans besoin d’avoir d’écran, avec une librairie de sons vraiment géniale!