Pages: [1]   Go Down
Author Topic: Liaison série  (Read 2044 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 2
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour,
prévoyant une utilisation prochaine d'un arduino, je voudrait savoir si il est possible de cominuquer avec l'arduino via le cable USB sans passer pas le monitor sérial du logicielle Arduino?
Est-il également possible d'ouvrir un fichier contenu sur l'ordinateur(par exemple un  .txt) avec un arduino(via le cable USB) et d'en lire/modifier le contenu?
Si on peut faire le tout via un programme écit en C se serai top.
Merci d'avance
« Last Edit: June 02, 2012, 11:12:58 am by Rifldern » Logged

Ile-de-France (92 sud), France
Offline Offline
Edison Member
*
Karma: 24
Posts: 2055
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Le port USB d'une carte Arduino est reconnue par le PC comme une liaison série de type COM.
La communication entre le PC et l'Arduino se fait via cette liaison série.

Le SerialMonitor de l'Arduino est un outil facile pour communiquer et debugger.
C'est une console qui te permet d'afficher des éléments depuis l'Arduino en utilisant Serial.print(...) comme tu utiliserais un printf() dans un programme C en mode console sur PC.
Tu peux aussi taper des réponse et les envoyer vers l'Arduino avec le bouton Send. Sur l'Arduino tu récupère avec Serial.read() comme un getch() sur PC. Il y a aussi des fonctions qui feront l'équivalent d'un gets() par exemple et bien d'autre.

Tu peux très bien utiliser un autre terminal si celui fournit dans le logiciel Arduino ne te convient pas.
Hyperterminal, Kermit, TeraTermPro ... font la même chose.

Mais sans écrire toi même un programme sur PC et implémenter un protocole pour cela, tu ne pourra pas accéder directement aux ressources du PC.
Il faut écrire un PC qui partagera ces ressources et une bibliothèque sur Arduino pour communiquer avec le logiciel PC et accéder à ces ressources.

Peut être que si tu nous décris ce que tu cherche à faire, nous pourrons te conseiller sur la faisabilité dans le monde Arduino.
Logged

Barbuduino: Arduino sur Breadboard & VinciDuino: Clone Leonardo // WR703: Mini-routeur hacké // LauchPad MSP430 et Stellaris // Panda II Arduino-like .NetMF sous VisualC#
RTFC: Read That F.....g Code / RTFD: Read That F.....g Doc / RTFDS: Read That F.....g DataSheet / RTFS: Read That F.....g Schematic / Wot da ya wanna D.I.Y. today ?

Bretagne
Offline Offline
Full Member
***
Karma: 2
Posts: 197
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonsoir,

sujet intéressant
(souvent le cas d'ailleurs , et réponses de pros...    smiley-eek-blue)

Justement en utilisant un programme Processing (langage proche de l'arduino) sur le Pc, Arduino peut-il lire/ecrire sur des fichiers du PC, restons modestes, smiley-red
au format texte...


Merci


Logged

...ils embarquèrent la logique, coupèrent les cordons, alors, libérés de leurs chaînes, une immensité s'ouvrait devant eux...

Forum Moderator
Geneva
Offline Offline
Faraday Member
*****
Karma: 30
Posts: 3231
Yoplait... le pt'it suisse
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Oui, pour Processing.
Logged

MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

Ile-de-France (92 sud), France
Offline Offline
Edison Member
*
Karma: 24
Posts: 2055
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Peut importe que tu utilises Processing,  basic ou en C#/C/C++
Il faut écrire un logiciel "serveur" coté PC pour partager les ressources à travers la liaison série PC/Arduino.

Mais est-ce vraiment la meilleure voie ?
Ecrire un serveur généraliste pour faire ce partage de ressource risque d'être lourd et décourageant.

C'est pourquoi j'invite Rifldern à exposer son projet pour qu'on puisse le conseiller au mieux.
Logged

Barbuduino: Arduino sur Breadboard & VinciDuino: Clone Leonardo // WR703: Mini-routeur hacké // LauchPad MSP430 et Stellaris // Panda II Arduino-like .NetMF sous VisualC#
RTFC: Read That F.....g Code / RTFD: Read That F.....g Doc / RTFDS: Read That F.....g DataSheet / RTFS: Read That F.....g Schematic / Wot da ya wanna D.I.Y. today ?

0
Offline Offline
God Member
*****
Karma: 2
Posts: 802
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Yep!

Quote
Il faut écrire un logiciel "serveur" coté PC
Je dirais même plus, il faut écrire avant tout une appli "proxy" qui interconnecte le logiciel et l'arduino via le port com.

Pour avoir experimenter cette voie, je dirais que ce n'est pas si compliqué que celà. Il faut juste du temps et des objectifs clairement définis.

Pour ma part, j'avais opté pour le langage python qui me semblait apporter un deploiement rapide :

Exemple proxy, inspiré de bitty.py : http://pastebin.com/kZKziLAa

Remarque : le proxy écoute le port com et internet ici. Si l'application est résidente uniquement, toute la partie socket est inutile.

@+

Zoroastre.
« Last Edit: June 02, 2012, 01:00:00 pm by zoroastre » Logged

Veuillez indiquer [RESOLU] dans l'entête du titre en éditant votre premier message smiley-wink

France
Offline Offline
Faraday Member
**
Karma: 55
Posts: 5413
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour,

Pour la communication pc <> arduino tout passe par le port série, tu peut donc utiliser n'importe quel terminal série (je vais pas m'attarder sur ce point).

Pour le transfert de fichier via le port série il te faudra une application PC et une application arduino utilisant un même protocole pour communiquer.
Pour le protocole de communication regarde du coté de Xmodem, Ymodem ou Zmodem il existe des implémentations sous de nombreux langage pour PC et aussi pour Arduino.

Sinon voici un exemple simple de "streaming" de fichier (en lecture uniquement) avec un programme python coté pc :
http://skyduino.wordpress.com/2012/04/20/arduino-w-python-streamer-un-fichier-via-le-port-serie/
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Offline Offline
Newbie
*
Karma: 0
Posts: 2
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Désolé pour l'attente(petit soucis de PC).
Alors mon objectif est de faire un robot qui résoud les rubik's cube. Il se composerai d'un logicielle sur PC qui traite les données et résoud le cube, d'un caméra(relié au PC) pour scanner le cube et du robot commandé par l'arduino pour effectuer les mouvements.
J'avait l'intentions de faire passer les ordre du PC à l'arduino soit par la liaison série(d'où la question si on est obligé de passer par le programme arduino) soit par un .txt(chaque lettre représentant une action).
Au niveau de la programmation, il faut dire qu'on est 4 a travaillé sur le projet donc le temps passé dessus ne devraait pas être un problème.
Merci en tout cas pour les réponses déjà posté! smiley-mr-green
Logged

France
Offline Offline
Faraday Member
**
Karma: 55
Posts: 5413
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Alors mon objectif est de faire un robot qui résoud les rubik's cube. Il se composerai d'un logicielle sur PC qui traite les données et résoud le cube, d'un caméra(relié au PC) pour scanner le cube et du robot commandé par l'arduino pour effectuer les mouvements.
Pour le logiciel tu as déja fixé un choix ? Parce que dans le genre résolution de rubik's cube + caméra il y a "Cube explorer".
Ou sinon il ya aussi pas mal d'application pour smartphone android smiley-wink

Tu as aussi pas mal de projet dans le genre sur le web smiley-wink
http://hackaday.com/2009/09/11/avr-controlled-rubiks-cube-solver/ (PC + AVR)
http://deviceguru.com/android-phone-controlled-robot-solves-rubiks-cube/ (Android + Arduino)

J'avait l'intentions de faire passer les ordre du PC à l'arduino soit par la liaison série(d'où la question si on est obligé de passer par le programme arduino) soit par un .txt(chaque lettre représentant une action).
Transférer un fichier .txt par le port série n'ajoutera rien de plus que de transmettre directement les données par le port série smiley-wink

Il te suffit d'attendre d'avoir un octet sur le port série avec while(Serial.avalaible() < 1); puis de faire un switch sur l'octet reçu.
Exemple :
Code:
void loop() {
  while(Serial.avalaible() < 1);
  switch(Serial.read()) {
    case 'U':
      // Up
      break;
    case 'D':
      // Down
      break;
    // ...
  }
}
Et côte PC de te faire un script / programme qui envoi les bonne commandes quand il faut smiley-wink
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Pages: [1]   Go Up
Jump to: