Comment introduire le monde réel dans nos applications ? Comment interagir avec nos créations numériques dans le monde concret qui nous entoure ? Une solution relativement facile à mettre en œuvre consiste à utiliser la plateforme de développement matériel Arduino et de l’interfacer avec Arduino IHM 2.1.
Principe
La solution repose sur une bibliothèque (library) appelée IHM2_1_PDE qui implémente un protocole de communication entre la carte Arduino et l’ordinateur-hôte.
En termes plus simples, cette librairie permet de faire dialoguer facilement la carte et l’ordinateur en permettant depuis l’ordinateur de modifier directement la configuration de la carte sans avoir à modifier le code que l’on a chargé initialement dans celle-ci.
Cette solution s’avère particulièrement pratique lorsque la carte est embarquée dans un dispositif difficile d’accès, avec seulement une communication sans-fil pour intervenir.
Pourtant, ce dispositif de contrôle par ordinateur n’est pas incompatible avec une utilisation autonome, comme nous le verrons plus tard.
Utilisation
Étape 1 : Installer IHM2_1_PDE sur une carte Arduino
Ouvrez le sketch disponible dans l’archive ci-jointe :
Depuis l’application Arduino, sélectionnez la bonne plateforme correspondant au modèle de la carte arduino que vous avez : UNO, Duemilanove,...
Sélectionnez le port USB qui communiquera avec la carte Arduino.
Téléchargez ensuite IHM2_1_PDE dans l’Arduino.
Étape 2 : Installer le logiciel
L’archive ci-dessous contient tout ce qu’il faut pour fonctionner sur un ordinateur PC équipé de Windows. Les bibliothèques logicielles (Qt) sont incluses. Contactez-nous en cas de problème.
Il suffit de dézipper l’archive à l’endroit voulu sur votre machine, et c’est tout (comme le logiciel Arduino).
Étape 3 : Ouvrir l’exécutable Arduino IHM 2.1
Choisissez le port de communication de l’arduino.
La vitesse de communication par défaut est de 115200 : ne la modifiez pas si vous n’avez pas aussi modifié le code IHM2_1_PDE chargé dans l’Arduino.
Connectez-vous après vous être assuré qu’aucune autre application (logiciel Arduino ou application tierce) n’a déjà ouvert le port série associé.
L’utilisation des sorties numériques ("Digital"), ainsi que les entrées analogiques sont accessibles dans la version actuelle.
Différents modes sont disponibles : vous pourrez contrôler les sorties numériques en tout ou rien, connecter des servomoteurs, et changer les valeurs des pattes PWM disponibles selon votre modèle.
Fonctionnalités avancées
Il est possible d’enregistrer une séquence de commandes en cliquant sur RECORD. C’est particulièrement utile pour reproduire des mouvements de moteurs.
Vous exécutez la séquence courante en appuyant sur PLAY. Le bouton CLEAR permettra d’effacer l’enregistrement.
En haut à droite, deux boutons : "Sauver" vous permet d’enregistrer votre séquence en fichier texte (.txt) sur votre PC. Le bouton "Ouvrir" vous permet de récupérer des fichiers texte (.txt) sur votre PC.
Exemple
Le robot Quarduino est entièrement contrôlé par cette application. Une carte mémoire permettra de stocker chacune des chorégraphies élémentaires afin que le robot soit autonome.
Evolutions
Vous constaterez dans l’interface PC qu’un onglet "Oscilloscope" prévoit déjà l’utilisation de la seconde moitié de la carte, avec un tracé des sorties analogiques.
Une seconde version est également développée spécifiquement à chaque robot afin d’associer plusieurs sorties de servomoteurs entre-elles. Le langage de communication est alors étendu pour permettre de faire passer des consignes spécifiques à la morphologie du robot avec toujours la même économie de caractères.
Vos commentaires
# Le 8 mai 2020 à 16:05, par Arnaud Feuillien En réponse à : Une interface IHM pour Arduino
Bonjour,
Juste pour dire que ce petit programme est une grande merveille. On l’installe... et ça marche à la perfection. Un vrai bonheur pour faire des petits tests faciles. Un grand merci :)
Répondre à ce message
# Le 17 février 2017 à 11:51, par Olivier_V En réponse à : Une interface IHM pour Arduino
Bonjour,
Petit nouveau dans le monde Arduino, j’ai chargé, testé et approuvé le fonctionnement de IHM 2.1.
Simple et fonctionnel : c’est parfait ; félicitation !
Une unique petite question : est-il aisé d’envisager d’avoir des temps variables entre 2 commutations de sorties.
Actuellement, un temps d’attente pour 100ms est généré par deux lignes de commandes successives : $ ?0050.
Si je souhaite avoir, par exemple, 35ms, comment dois-je procéder ?
Grand merci
Olivier
# Le 17 février 2017 à 13:55, par Eric P. En réponse à : Une interface IHM pour Arduino
Bonjour,
Loïc n’est plus venu au club depuis un certain temps, et je ne sais pas s’il consulte le site régulièrement. Et comme il n’a pas fourni les sources de son application, impossible d’essayer de répondre à sa place malheureusement.
Un volontaire pour réécrire cela de manière ouverte, en Python par exemple pour ne pas être confiné au monde Ouindoz ;) ?
Cordialement
# Le 19 février 2017 à 18:43, par Olivier_V En réponse à : Une interface IHM pour Arduino
Bonjour
merci pour votre message.
Il me reste à espérer une lecture de Loïc de ce forum.
Connaissez vous son nom de famille ?
Cordialement.
Répondre à ce message
# Le 1er mars 2014 à 12:07, par momorac En réponse à : Une interface IHM pour Arduino
re, j’ai fait comme le topic, mais rien ne se passe.
carte arduino uno, ce connect mais dés que je lance pour un servo, rien ne se passe.
le digital fonctionne mais rien dans l’ossiliscope tous reste blanc. la seule led allumer sur arduino c’est TX. réaction dés ke je bouge servos mais aucun mouvement de ce dernier.
merci par avance, je ne sais pas koi vous dire de plus.
cdt
# Le 1er mars 2014 à 13:08, par Eric P. En réponse à : Une interface IHM pour Arduino
OK, je vais essayer d’être plus explicite concernant ce que j’appelle des "éléments précis" :/
carte arduino uno, ce connect
En Français compréhensible et correct, ça donne : LA carte Arduino Uno Se connectE". Soigner l’écriture aide à être compris. Ceci étant, la carte se connecte A QUOI ? Au PC ?
rien dans l’ossiliscope tous reste blanc
Soit : "rien ne se passe dans l’oscilloscope dont l’affichage reste blanc". Dans l’article il est écrit :
« [...] un onglet "Oscilloscope" prévoit déjà l’utilisation [...] »
Il semble que cette fonction n’est pas encore développée et est prévue pour des signaux analogiques.
le digital fonctionne : Ca veut dire quoi ça concrètement ?
la seule led allumer sur arduino c’est TX
Correction : la seule LED allumée est TX. Quelles autres LEDs vous attendiez-vous à voir s’allumer ?
réaction dés ke je bouge servos => IL Y A UNE réaction dès QUE je bouge LES servos
Quelle réaction avez-vous constatée ? Que se passe-t-il exactement ?
je ne sais pas Koi vous dire de plus. Vous voyez bien qu’il y a encore pas mal de choses à nous dire pour qu’on puisse vous aider.
Cordialement
PS : par pitié, PLUS DE LANGAGE SMS et d’orthographe massacrée. C’est très impoli vis à vis des personnes dont vous sollicitez de l’aide. Nous prenons le temps de vous lire et de vous répondre, alors prenez SVP le temps d’écrire correctement. Merci ;)
# Le 12 décembre 2015 à 17:50, par TRX En réponse à : Une interface IHM pour Arduino
Salut, beau travail à part... l’orthographe... ça pique à toutes les lignes et dans l’application elle même.
Si tu n’y es pas sensible,... penses aux autres.
L’orthographe, c’est un peu comme l’haleine,... on ne s’en rend pas forcément compte mais bon...
Bonne continuation dans cette voie.
Répondre à ce message
# Le 23 juin 2015 à 13:33, par pascal En réponse à : Une interface IHM pour Arduino
bonjour,
merci pour votre travail qui permet a un "parfait débutant"comme moi de pouvoir utilisé rapidement les capacités technique de mon UNO R3 sans savoir vraiment compilé !!! Même uniquement pour les possibilités techniques, super !!!!!!
encore merci pour votre travail qui permet a un débutant d’avoir les outils pour comprendre et se former !!!
ayant un raspberrypi, j espère au plus vite l’équivalent debian avec votre philosophie OPEN.
cordialement
pascal, électricien de base
Répondre à ce message
# Le 20 février 2015 à 14:18, par jp En réponse à : Une interface IHM pour Arduino
Bonjour,
et super tuto !!!
J’ai pour projet de réaliser un lampemètre piloté par PC. Toute la partie purement électronique est finalisée (alims, mesure, etc...)
Je butais sur un certain nombre de choses, et, TADA !! je tombe sur votre interface.
Il y atout ce que je désire : piloter les ES de l’arduino, faire varier des servos (et donc des tensions).
D’où première question : puis-je partir de votre projet pour avancer dans mon projet ?
Deuxième question : pourriez-vous me communiquer le code source de la partie WIN de votre interface ? Je m’explique : je compte utiliser 2 mega 2560 (besoin de 100 e/s numériques et 8 analogiques), et je souhaiterais étendre votre travail sur 1 -voire 2- MEGA 2560.
A vous lire, et encore bravo !!!
Répondre à ce message
# Le 5 avril 2014 à 11:25, par pif En réponse à : Une interface IHM pour Arduino
Bonjour,
La traduction de cet article dit "nous contacter pour une version Unix", alors je vous contacte 🙂
Est-il possible d’avoir une version Linux, voire les sources, pour recompiler sans avoir divers soucis de dépendences ?
Merci d’avance
# Le 8 avril 2014 à 07:21, par Julien H. En réponse à : Une interface IHM pour Arduino
Nous attendions depuis longtemps un volontaire pour nous aider à réaliser une version Unix / Mac, merci de nous avoir contacté ! Vous êtes le bienvenu pour nous aider à la développer.
Répondre à ce message
# Le 28 février 2014 à 11:16, par momorac En réponse à : Une interface IHM pour Arduino
bjrs,
marche pas avec arduino UNO ...
tous ok mais aucun mouvement de servo effectuer. connection carte ok rx seulement.
merci de votre aide
# Le 28 février 2014 à 16:53, par Eric P. En réponse à : Une interface IHM pour Arduino
Avec aussi peu d’information sur ce que vous voulez faire, comment vous essayez de le faire et les recherches d’anomalie effectuées et ce qu’elles ont donné, c’est plutôt à Mme Irma qu’il aurait fallu envoyer le message :)
Pourriez-vous décrire les choses d’une manière un peu moins lapidaire, plus factuelle et plus technique ?
Cordialement.
Répondre à ce message
# Le 5 février 2014 à 02:24, par Seb En réponse à : Une interface IHM pour Arduino
Excellent ! Super !
Exactment ce qui manquait pour faire démarre des néophytes (comme mes collégiens) !!!
Où en êtes vous de votre développement ? Je ne peux que vous encourager à continuer.
Répondre à ce message
# Le 25 septembre 2011 à 11:59, par lordcuty En réponse à : Une interface IHM pour Arduino
Superbe projet et effectivement bien pratique, j’ai juste un problème, j’ai changé le débit des deux côtes, en 9600 bauds et là, c’est le dram, je ne reçois plus rien, est-ce juste chez moi ?
je n’ai modifier que le Serial.begin(9600) ;
et ton logiciel, mettant 9600 en débit.
# Le 25 septembre 2011 à 14:59, par ? En réponse à : Une interface IHM pour Arduino
Effectivement, en 9600 ça ne marche pas. J’ai essayé aussi. La vitesse la plus basse est de 14400. Mais merci de m’avoir préciser le problème, je vais corriger l’erreur.
Répondre à ce message
# Le 1er juillet 2013 à 15:53, par Yousaf En réponse à : Une interface IHM pour Arduino
Bonjour,
Voici le programme suivant :
const int hallPin=2 ;
const unsigned long sampleTime=1000 ;
const int maxRPM = 10200 ;
int kount2rpm ;
const int HallPin=3 ;
const unsigned long sampleTime1=1000 ;
const int maxRPM1 = 10200 ;
int kount2rpm1 ;
void setup()
pinMode(hallPin,INPUT) ;
pinMode(HallPin,INPUT) ;
Serial.begin(14400) ;
void loop()
delay(100) ;
int rpm=getRPM() ;
int rpm1=getRPM1() ;
Serial.println(kount2rpm) ;
Serial.println(kount2rpm1) ;
int getRPM()
int kount=0 ;
boolean kflag=LOW ;
unsigned long currentTime=0 ;
unsigned long startTime=millis() ;
while (currentTime<=sampleTime)
if (digitalRead(hallPin)==HIGH)
kflag=HIGH ;
if (digitalRead(hallPin)==LOW && kflag==HIGH)
kount++ ;
kflag=LOW ;
currentTime=millis()-startTime ;
kount2rpm = int(60000./float(sampleTime))*kount ;
return kount2rpm ;
int getRPM1()
int kount1=0 ;
boolean kflag1=LOW ;
unsigned long currentTime1=0 ;
unsigned long startTime1=millis() ;
while (currentTime1<=sampleTime1)
if (digitalRead(HallPin)==HIGH)
kflag1=HIGH ;
if (digitalRead(HallPin)==LOW && kflag1==HIGH)
kount1++ ;
kflag1=LOW ;
currentTime1=millis()-startTime1 ;
kount2rpm1 = int(60000./float(sampleTime1))*kount1 ;
return kount2rpm1 ;
Comment je peux voir que mon capteur fonctionne et j’obtiens une vitesse ?
# Le 1er juillet 2013 à 20:16, par Julien H. En réponse à : Une interface IHM pour Arduino
Bonjour,
Il faudrait peut-être commenter ce code et le découper en différentes parties pour analyser ce qu’il fait ? Si tu veux documenter ton projet et détailler les différentes interprétations que tu as déjà faites de ce code, cela permettra de gagner du temps et d’être efficace dans l’aide que l’on pourrait t’apporter.
A bientôt !
Répondre à ce message