Le langage Arduino est un mélange de fonctions venant du C et C++ pouvant être appelées dans notre code. C'est ensuite passé dans un compilateur C/C++ (avr_g++).
Pour programmer la carte Arduino nous utiliserons l'IDE Arduino disponible gratuitement en téléchargement sur le site officiel Arduino.cc
Avant tout nous devons déclarer les différentes variables.
Maintenant procédons à l'initialisation.
Nous utiliserons des boucles dans le programme afin de le clarifier, car toutes les tâches sont répétées 5 fois. Maintenant nous pouvons passer au coeur du projet.
Notez que le mot binaire est codé sur 10 bits. Les mesures peuvent être affinées pour améliorer la fonction mapping à la ligne 21. Le code complet est disponible sur notre GitHub.
Dans cette partie nous présenterons les principales fonctionnalités des scripts python développées pour le projet. Pour en savoir plus sur le fonctionnement du logiciel, ainsi que son utilisation nous vous invitons à lire la dernière partie "SimaSLI".
Au lancement du programme nous aimerions lire un fichier de configuration et récupérer les paramètres de lancement.
Les paramètres de lancement possibles sont "-n" et "-v" qui vont définir l'état de 2 variables que la fonction GetArgs renvoie.
Pour ce qui est de la fonction GetConfig elle lit un fichier "config.cfg" que l'utilisateur peut modifier, et remplit des variables qu'elle renvoie. La commande "try" permet de gérer les différentes erreurs qui peuvent survenir à l'ouverture du ficher de configuration.
Le coeur du script est basé sur l'acquisition des valeurs envoyées par la carte Arduino. Nous allons donc nous voir en détails les fonctions d'interprétation.
Pour que l'interprétation fonctionne, il faut avant tout récupérer les valeurs de la carte, puis récupérer les valeurs de la base de données, et enfin tester si il y a une corrélation entre les deux.
Dans ce code les différentes fonctions interviennent toutes dans l'interprétation. La fonction GetCode lit le fichier base de données et récupère le "code" de chaque ligne. Les fonctions GetFr et GetEn font de même, mais récupèrent les mots en français et en anglais. Par exemple, si la première ligne de la base de données est "11411;bonjour;hello", GetCode va renvoyer "11411", GetFr "bonjour", et GetEn "hello".
Ensuite intervient la fonction GetArduinoCode. Là c'est le code envoyé par la carte qui est récupéré. Si la fonction détecte une erreur elle signale que le gant n'est pas connecté, sinon elle renvoie le code reçu.
Et enfin les fonctions interpreter_fr et interpreter_en sont les deux fonctions qui vont comparer le code reçu aux codes de la base de données. Si le code reçu est "11411", interpreter_fr va renvoyer "bonjour", et interpreter_en "hello".
Voilà tout pour les principales fonctions. Il y en a une quinzaine pour l'interprétation, l'apprentissage et les tests, mais toutes sont similaires et basées sur le même principe. Seulement le mode Apprentissage ne va pas tester la base de données mais va écrire une nouvelle ligne avec le code reçu.
Notez que tout le code de SimaSLI, ainsi que celui de tous les modules développés pour, est disponible sur notre GitHub.
Maintenant que les fonctions principales sont développées et fonctionnelles il est temps de commencer un logiciel utilisable et distribuable. C'est pourquoi a été développé SimaSLI. Dans sa version finale il regroupe tous nos modules, et scripts développés pour le projet, comme SimaGUI et SimaCLI qui sont deux outils similaires mais l'un en lignes de commandes et l'autre avec une interface graphique. SimaVoice est un module ajoutant une option de synthèse vocale des mots interprétés. Et SimaDirect est un module qui prendra en charge toutes les fonctionnalités en ligne, telles que la mise à jour automatique ou une base de données en ligne.
Maintenant que les fonctions principales sont développées et fonctionnelles il est temps de commencer un logiciel utilisable et distribuable. C'est pourquoi a été développé SimaSLI. Dans sa version finale il regroupe tous nos modules, et scripts développés pour le projet, comme SimaGUI et SimaCLI qui sont deux outils similaires mais l'un en lignes de commandes et l'autre avec une interface graphique. SimaVoice est un module ajoutant une option de synthèse vocale des mots interprétés. Et SimaDirect est un module qui prendra en charge toutes les fonctionnalités en ligne, telles que la mise à jour automatique ou une base de données en ligne.
Pour utiliser cet outil vous aurez besoin de Windows ou Linux (MacOs ne supporte pas bien Pygame). Télécharger la dernière version sur notre GitHub ou depuis la page téléchargements. Notez que sur GitHub SimaSLI correspond à la branche V4.X, tandis que les V2.X et V3.X correspondent aux anciennes versions SimaCLI et SimaGUI. Si vous utilisez le code source vous aurez besoin de modules pour votre installation de python 2.7.X, dans une console entrez "pip install colorama", "pip install pyserial", et "pip install pygame". Si vous utilisez l'application compilée nous n'avez qu'à éxecuter le fichier "main.exe". Que vous utilisiez ou la version compilée ou le code source, vous pouvez modifier la configuration dans le fichier "config.cfg", et définir des paramètres de lancement: "python main.py --nogui" permet, par exemple, de lancer le script depuis le code source en mode console, "main.exe -n -v" permet de lancer l'application compilée (sur Windows) en désactivant l'interface graphique, et en activant la synthèse vocale.
Si vous utilisez un Mac, préférez l'ancienne version SimaCLI, qui ne nécessite pas de Pygame, mais qui n'est plus mis à jour.
SimaVoice est un module permettant la synthèse vocale des mots interprétés. Un mode "semi-hors-ligne" y est incorporé. C'est à dire que vous pouvez précharger des mots qui resteront dans une base de données locale, (le mode persistance peut être désactivé dans les paramètres). Ensuite si vous n'avez pas de connexion internet le module utilisera les mots déjà téléchargés si ils existent. Pour cela nous utilisons le module gTTS de Python, qui génère des fichiers mp3 avec l'API de voix virtuelle de Google. Ces fichiers sont ensuite stockés dans une base de données. Pour limiter les erreurs dûes aux accents les mots sont cryptés en MD5, et les fichiers prennent ce cryptage en nom.
Par exemple si le mot est "bonjour", donc "hello". Les fichiers générés seront stockés comme cela:
SimaSLI/
├── en-uk/
│├── 5d41402abc4b2a76b9719d911017c592.mp3
├── fr/
│└── f02368945726d5fc2a14eb576f7276c0.mp3
SimaDirect est le module qui prend en charge toutes les fonctionnalités en ligne, telles que la vérification de mise à jour automatique, ou la possibilité de se connecter à une base de données collaborative. Ce module n'est qu'en phase de développement.