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
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.
Bonsoir,
sujet intéressant
(souvent le cas d'ailleurs , et réponses de pros... )
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,
au format texte...
Merci
Oui, pour Processing.
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.
Yep!
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 : server.py - Pastebin.com
Remarque : le proxy écoute le port com et internet ici. Si l'application est résidente uniquement, toute la partie socket est inutile.
@+
Zoroastre.
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 :
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é!
Rifldern:
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
Tu as aussi pas mal de projet dans le genre sur le web
AVR Controlled Rubik’s Cube Solver | Hackaday (PC + AVR)
Android phone solves Rubik's cube in 12.5 seconds | DeviceGuru (Android + Arduino)
Rifldern:
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
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 :
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
Bonjours skywodd
moi aussi je cherche à lire un fichier texte (ou .csv ) qui contient les coordonnées des points test (x , y , z) pour commander mes moteurs pas à pas. est ce que la liaison série est faisable pour mon projet ?
Bonjour Naoumee,
là, tu essaies de faire du spiritisme, je te suggère d'ouvrir un nouveau topic, d'exposer ton projet et nous te répondrons