Dad 3.0

C'est un papa du futur avec son appareil photo

Communiquez avec votre Arduino, en Python.

Lego FR

This article is also available in english

Après avoir pris connaissance de la plate forme Arduino, il est temps de commencer à réaliser des montages un peu plus utiles que simplement faire clignoter des LEDs. Nous avons vu qu’il était possible de communiquer avec l’Arduino via le câble USB. Exploitons donc cette fonction pour que notre PC puisse réagir en fonction de conditions extérieurs.

L’Arduino communique avec le PC via le câble USB, qui est une communication série. L’Arduino envoi donc un flux de données vers Le PC qui peut en envoyer en retour. Pour le prototype de notre montage, nous allons juste tester cette communication.

Préparation

Côté matériel, nous allons utiliser ce que nous avions déjà dans les articles précédents. Il va nous falloir programmer le client côté PC. Pour cela, prenons le langage Python.

Python est efficace pour lire les flux, comme nous avons pu le voir dans l’article sur le Mir:ror. Il est évidemment possible d’interagir avec l’Arduino avec d’autres langages et à chacun de choisir selon sa convenance.

Si vous ne disposez pas d’un Arduino, l’Arduino UNO est disponible par exemple via Amazon. Les composants se trouvent dans n’importe quel revendeur de matériel électronique.

Le montage

Pour le montage en lui même, nous allons rester simple et reprendre celui avec la photoresistance et la diode. Avec le programme existant, nous avons un capteur qui envoi une valeur sur l’interface série, donc tout ce qu’il faut pour lire un état extérieur. Nous allons donc nous concentrer sur la partie Python.

Arduino, photorésistance et LED

Python possède une bibliothèque assez complète pour communiquer par l’interface série, pySerial. Les informations pour l’installation sont disponibles sur http://pyserial.sourceforge.net/.

La bonne pratique consiste à créer un Virtualenvs pour travailler sur votre projet au sein duquel vous installerez la bibliothèque par le classique

La lecture de l’état de l’Arduino.

Passons à du code. Le script suivant doit être adapté à votre configuration en ce qui concerne le chemin de lecture (/dev/tty.usbserial).

Lançons ce scripte, et on doit voir sur la console s’afficher la ligne avec la valeur captée par le récepteur. Et voilà… Il n’y a réellement aucune difficulté pour la lecture. Il faut juste à partir de ce code proposer un traitement plus intelligent. On peut commencer par limiter la quantité d’affichage :

Commander l’arduino

Envoyer un message vers l’arduino est aussi simple que le lire puisqu’il suffit d’écrire sur l’interface série plutôt que de lire. Par contre, nous allons devoir revoir notre code sur l’arduino car dans l’état, il ne lit pas les entrées du port série. Changeons donc ce programme par

Avec ce programme, l’Arduino envoie en permanence sur le port série la valeur du capteur, et lit sur le port série. Dans la pratique, si une donnée est envoyée à l’Arduino par le port série, elle est stockée dans un tampon (de taille maximum de 64 bytes). La fonction Serial.available() vérifie si une donnée est présente dans ce tampon. Si oui, nous lisons un byte et allumons pendant 1 seconde la LED.

Après avoir chargé ce programme sur l’Arduino, la première partie de cet article fonctionne toujours. Pour tester l’écriture, nous n’allons pas écrire un gros scripte, mais l’exécuter via l’interpréteur intéractif.

Nous ne nous occupons pas ici de ce que nous envoyons à l’Arduino. En effet, ce dernier allume la LED en consommant un byte. Dans le but de tester la communication, c’est satisfaisant. Dans la pratique, il faudra évidemment adapter en fonction de son besoin de traitement.

Voici donc les bases pour envoyer et recevoir des données entre un Arduino et un PC connecté en USB. Le PC en lui même peut être un autre type de machine (NAS, routeur…) sur lequel on peut déployer un client. Le gros du travail sera donc bien de définir les données à échanger. A voir dans un prochain article.

Si vous êtes impatient d’en découvrir d’avantage, le livre Démarrez avec Arduino – 3e édition du cocréateur de l’arduino est une bonne initiation.

À propos de... Darko Stankovski

iT guy, photographe et papa 3.0, je vous fais partager mon expérience et découvertes dans ces domaines. Vous pouvez me suivre sur les liens ci-dessous.

Précédent

Rentabiliser ses applications mobile

Suivant

Le Seigneur des Anneaux, la gamme Lego est disponible en France.

  1. Camus

    Bonjour,

    Tout d’abord merci pour ton article fort intéressant!
    Je suis débutant et je ne comprend pas:
    « le script suivant doit être adapté à votre configuration en ce qui concerne le chemin de lecture (/dev/tty.usbserial). »
    En effet lorsque je met ton code dans Python, il me renvoie que le chemin spécifié est introuvable, donc en effet je doit le modifier. Le problème est que je n’ai aucune idée de comment… Je sais déjà coder en python (un peu) mais la je vois pas comment faire…

    Merci d’avance,

    Amaury

    • Camus

      En fait c’est bon sous Windows il fallait simplement mettre COM5 au lieu de /dev/tty.usbserial.
      Par contre je me vois l’accès refusé à chaque fois que je relance un programme sur python. La premiere fois c’est bon et la deuxieme bloque…

      • Merci pour l’autoréponse 🙂

        Je ne vais pas être d’une grande aide là dessus, cet article a été rédigé sous Linux. Si j’ai ajouté le script suivant doit être adapté à votre configuration, c’est justement parce que je n’ai pas testé sur d’autres plate-formes. Et n’ayant plus de Windows…

        La seule piste que je pourrai donner pour le blocage c’est est-ce que le premier lancement ne bloque-t-il pas COM5 qui du coup n’est pas libre pour les accès suivants. Mais à nouveau, je ne saurai pas informer sur Windows…

Laisser un commentaire

Fièrement propulsé par WordPress & Thème par Anders Norén

En naviguant sur Dad 3.0, vous acceptez l’utilisation de cookies pour une navigation optimale et nous permettre de réaliser des statistiques de visites. Plus d'informations

Le blog Dad 3.0 utilise les cookies pour vous permettre une navigation optimale et nous permettre de réaliser des statistiques de visite. Dad 3.0 affichant des publicités, celles-si utilisent également des cookies pour un ciblage publicitaire. En continuant la navigation sur Dad 3.0, vous acceptez le dépôt et la lecture de cookies.

Fermer