Bonjour à tous,
Je suis étudiant en informatique et mathématiques, et le domaine de la programmation embarquée m'interesse particuliérement, d'autant plus qu'on entend de plus en plus parler d'objets connectée, drones, robots etc…
Voila déjà quelques années que j'utilise la platerforme Arduino, celle-ci utilisant le language C++. Cependant mon language de prédilection reste le Python avant tout. Voila un peu mon background actuel.
Mon projet Exode
Genèse
Comme je l'expliquais dans l'introduction je m'interesse à la programmation d'objets connectés, et mon but est notamment d'ajouter de l'intelligence à mes divers projets, pour qu'il puisse interagir avec leur environnements. Par exemple ,un robot capable de se déplacer intelligement dans un espace inconnu. Or, pour simplifier le prototypage (et devellopement) de mes projets, j'avais besoin d'un outil adapté, et c'est de là qu'est né Exode. Exode permet de prendre le contrôle d'une carte Arduino grâce au language Python. Généralités et avancement
Exode est aujourd'hui dans sa version Beta 0.4, certe le projet est loin d'être terminé mais voila un aperçu de ses fonctionnalités actuelles :
- Communication serial (usb/Bluetooth) avec une carte Arduino
- Implémentations de composant basiques (Led, servo, capteur ultrason etc..)
- Programmation evenementielle
- Multithread asynchrone
- Interface utilisateur
clignoter une led
1 2 3 4 5 6 7 8 | from Exode import * # Connection avec la carte et initiation de la Led uno = Board('/dev/tty.wchusbserial1420') led = Led(13) # Clignotement toute les 500ms (sans blocage) led.blink(500) |
Exemple d'interface utilisateur
et son code
1 2 3 4 5 6 7 8 | from Exode import * from Exode.UI import * # Compilation du script à l'intérieur de l'APP APP.compile('script.py', '<file>') # Execution de l'APP APP.run() |
1 2 3 4 5 6 7 8 9 10 | #script.py # Connection avec la carte et déclaration du Servo uno= Board('/dev/cu.wchusbserial1420') servo= Servo(13) # Controller pour le servo et ajout au STACK servoController= ExdSliderBox(minv=0, maxv=180, target= servo, valueName="angle") APP.STACK.add_widget(servoController) |
Objectifs
Le principal objectif est de simplifier la phase de dévellopement, grâce à la syntaxe légére du language Python et aussi grâce à sa puissance. En plus, grâce au language Python, le code n'a pas besoin d'être compilé et recharger sur la carte à chaque étapes.. c'est un grand gain de temps.
L'autre objectif est de permettre aux cartes Arduino de bénéficier d'une grande puissance de calcul (pour des applications intelligentes). En effet grâce à Exode, les gros calculs peuvent être désentralisés sur l'ordinateur. Je pense notamment à l'implémentation de réseaux de neurones.
Pour le long termes les objectifs sont d'ajouter plus de composants à la Bibliothéque Python, et aussi d'améliorer le coeur du programme en le rendant plus flexible et plus robuste, tout en optimisant ses capacités.
Le projet et son originalité
Des projets similaires à celui-ci existent, mais ne sont pas maintenus ou bien reste très basiques. Exode a été conçu pour simplifier le développement d'application connectées, en étant le plus souple possible.. les possibilités sont énormes robotiques, surveillances, capteurs etc..
J'espére en tout cas qu'il sera utile et simplifira la vie à beaucoup d'autres développeurs