Pages: [1]   Go Down
Author Topic: Communication 4D Shield <=> Arduino  (Read 491 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Newbie
*
Karma: 0
Posts: 16
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour à tous,

Je suis en train de développer une petite télécommande qui s'appuie d'une part sur un arduino nano et d'autre part sur un display 4D system 128.
Les commandes seront émises depuis le display. L'arduino interprétera et exécutera les commandes.

Coté Arduino, j'utilise l'excellent protocole partagé par Barbudor (http://arduino.cc/forum/index.php/topic,102540.0.html) et coté display, j'ai implémenté une couche protocole (nettement moins bien codé  smiley-confuse).

Avant de relier les deux systèmes par deux fils Rx et Tx, j'ai fait des essais de chaque système, indépendamment, via un moniteur série. Chaque système répond correctement, comme souhaité.

Là où je bloque, c'est lorsque je fais mes essais " grandeur réelle", avec chaque système raccordé via deux fils Rx et Tx.
La communication ne s'établit pas.
En creusant un peu, je m'aperçois que le protocole coté Arduino ne perçoit pas (via la fonction available) les caractères envoyés par le display.

Je ne sais plus par quel bout prendre l'affaire.
  • est-ce que quelqu'un a déjà eu ce problème ?
  • quel moyen de débogage je pourrais mettre en place pour avancer ?
  • ... ???????

Merci à tous pour votre aide.

Philippe.
Logged

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

Quel modèle Arduino ?
Un petit schéma de principe sur les connexions entre modules pourrait peut être nous éclairer.
(même un gribouillu papier photographié avec une webcam ou un téléphone c'est mieux que rien  smiley-wink)
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 ?

Offline Offline
Sr. Member
****
Karma: 2
Posts: 259
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Une erreur simple, que beaucoup de "nouveaux" font: il faut relier le Rx Arduino avec le Tx 4D, et le Tx Arduino avec le Rx 4D. Et non pas les Rx ensembles, Tx ensembles.
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 16
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Alors, voici quelques éléments.
@schizophrene : les Tx et Rx de chaque module sont bien inversés.

Voici un petit schéma de principe :


Pour le moment, j'ai une alimentation commune, les masses sont reliées et donc deux fils de communication.

Merci.

A+
Logged

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

N'oublie pas que l'ATmega328 n'a qu'une seule liaison série.
Donc si tu essaye de t'en servir à la fois pour communiquer avec le PC et l'écran en même temps, tu risque d'avoir des problèmes de conflit électriques d'une part et logiciel d'autre part.
La ProMini328 n'ayant pas d'interface USB intégrée comment fais-tu tout cela ?
Le PC est-il relié ?
Comment débogues tu ?


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
Newbie
*
Karma: 0
Posts: 16
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Effectivement. Pour tester mon montage, je déconnecte le FTDI que j'utilise pour téléverser mon programme de l'arduino. Le PC n'est donc pas relié pendant mes essais, et du coup, le débogage est super-galère.
Naïvement, je pensais qu'en testant unitairement chaque module via un moniteur série, ça marcherait tout seul lorsque je brancherait  smiley-cool

Donc, pour creuser, je mets "des petits indicateurs lumineux" dans le protocole. Notamment, je voulais savoir si après avoir émis un caractère, la condition "if ( prot_pStream->available() )" de prot_loop était valide. Ce qui n'est pas le cas. Maintenant, je n'arrive pas à savoir si le problème est logiciel ou "électrique" (au sens transmission des signaux).
Pour le debug, j'ai aussi une Duemilanove, il y aurait peut-être un truc à faire avec ???


------------------------------------------------------------------------------------
Programme modifié pour debug (une LED a été ajouté sur TEST_PIN)
void prot_loop()
{
  // variable pour recevoir le prochain caractère reçu
  char c;
  // indicateur pour boucler dans la fonction tant qu'il y a des caractères dispo
  // Par defaut : true : on boucle ici jusqu'à épuisement des caractères
  // false dans certains état de l'automate : RECEIVED car comme on ne consomme
  // pas les caractères, on resterait bloqué
  bool loop_on_available = true;
 
  if ( prot_pStream->available() )
  {
    digitalWrite(TEST_PIN, HIGH);
    delay(200);
    digitalWrite(TEST_PIN, LOW);
    while ( loop_on_available && prot_pStream->available() )
...
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 16
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Bon, j'ai un peu les b....s  smiley-evil

Je viens de transférer mon programme sur la Duemilanove et ça fonctionne nickel. Avec le même raccordement entre le Display et l'Arduino, enfin tout pareil.

Est-ce que quelqu'un aurait une explication ? Y a t-il une différence de gestion du port série ?
Logged

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

Est-ce que quelqu'un aurait une explication ? Y a t-il une différence de gestion du port série ?
Au niveau de la gestion non, mais au niveau du câblage il me semble qu'il y a une astuce à base de résistances pour faire cohabiter le chipset FTDI avec la "liaison série utilisateur" sur D0/D1.
Si tu débranche ton câble FTDI de l'arduino ProMini cela reviens au même, tu doit avoir un problème autre pars (câblage, fréquence F_CPU, config port série, ...).
Logged

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

Ales
Offline Offline
Faraday Member
**
Karma: 29
Posts: 3163
Do or DIY
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Peut-être un problème de masse : sa connexion entre l'arduino et le display n'est pas directe. Dans la théorie c'est bon puisque indirectement, par le biais des régulateurs, elles sont reliées. En pratique il y a peut-être une perturbation.
Logged


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

Peut-être un problème de masse : sa connexion entre l'arduino et le display n'est pas directe. Dans la théorie c'est bon puisque indirectement, par le biais des régulateurs, elles sont reliées. En pratique il y a peut-être une perturbation.
Une masse reste une masse, qu'elles soit connectées au niveau du régulateur ou directement ça revient au même ...
Ça serait différent si il y avait une masse virtuelle, mais ce n'est pas le cas sur les cartes arduino ...
Logged

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

Pages: [1]   Go Up
Jump to: