Exode - objets connectés

a marqué ce sujet comme résolu.

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

Utilisation d'un Servo

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 ;)

http://sne3ks.github.io/Exode/

+4 -0

Je sais pas si j'ai bien compris entre ça

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.

Et ça

enfaite le script python envoie un genre de "bytecode" à la carte qui est ensuite décodé et executé

Sinon pourquoi ne pas utiliser une raspberrypi ou autre beaglebone qui te permettrait de développer en python nativement tout en gardant l'aspect "physical computing" ?

+1 -0

@Eskimon Certe, je parle beaucoup de python dans ma présentation, mais mon but n'est pas de coder absolument en Python, mais surtout de pouvoir parler à distance à mon Arduino(ou un autre microcontrolleur pourquoi pas). Lui envoyer des instructions, recevoir les données des capteurs, et traiter le tout depuis un Ordinateur. J'avais besoin de cette interface pour différentes raisons, par exemple pour la robotique traitement et enregistrement des données directement sur l'ordinateur, piloter la carte depuis un terminal sans avoir à reset et compiler le code, interraction avec le clavier, affiche des données en direct etc…

@the_new_sky Oui mon projet se rapproche énormement de Nanpy, mais reste différent structurellement et mon but est aussi d'ajouter une couche supplémentaire d'abstraction à la Arduino, par exemple la gestion evennementielle, le multithreading, l'utilisation des classes abstraites pour manipuler les composants Arduinos, avec des méthodes prédéfinies pour les manipulations habituelles. Exode à une petite documentation que je maintiens http://sne3ks.github.io/ExodeDoc/

Pour l'instant le projet est encore jeune, mais je compte bien le faire gagner en maturité :)

+0 -0

Bonjour à tous,

Quelques news à propos du projet, la nouvelle version est très bientôt disponible, j'essaye de bien faire les choses avoir un code propre, souple et surtout compréhensible.

Pour vous faire patienter, voici quelques images de l'interface graphique :)

Image utilisateur

En plus de l'interface graphique, voici d'autres nouveautés qui accompagneront cette mise à jour :

  • Gestion des Steppers (moteur pas à pas)
  • Thread sur le Timer1
  • Et d'autre modifications de l'architecture interne

Pour te répondre bufallo974 (coz créol kwé ?)

Salut, une fois un projet abouti, est t il possible de le compiler pour accélérer son fonctionnement ? ===> http://nuitka.net/pages/overview.html aussi : http://sametmax.com/les-interpreteurs-alternatifs-de-python/

buffalo974

Je suppose que tu veux dire executer directement le code sur le micro-controleur ? Malheureusement non, ce n'est pas possible. Exode est avant tout une interface de communication.. utile pour le prototypage, le développement d'object connecté, ou encore l'acquisition de données.. Cependant pour l'avenir cela pourrait être intéressant de pouvoir coder en python avec les concepts de programmation d'Exode, et compiler en un code executable sur le micro-controleur.

Le code est toujours disponible ici et la documentation ici. N'hésitez pas à me donner votre feed-back !!

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte