Offline
Sr. Member
Karma: 0
Posts: 273
|
 |
« on: January 23, 2012, 03:23:22 am » |
Bonjour à tous et bon lundi  J'ai reçu samedi mon module GPS, après quelques heures de galères, ça fonctionne et j'arrive à récupérer les trames GPS et les exploiter (récupérer lat. et long., altitude...), et je suis content  Mon GPS est branché à l'arduino comme ça : - Vcc sur +5 - GND sur GND - TX du GPS sur RX de l'Arduino (Pin 0)Mais il y a un hic que je n'arrive à expliquer et dont je n'ai pas trouvé la solution sur les autres forums... Si je laisse brancher Rx de l'Arduino sur TX du GPS, L'upload sur l'arduino depuis l'ide ne veut pas se faire, une erreur apparaît. Si alors je débranche la pin 0 donc, et que je relance l'upload du sketch, alors ça fonctionne. Une fois en marche je rebranche à nouveau ma pin 0 et là ça fonctionne. avrdude: stk500_getsync(): not in sync: resp=0x30 avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x51 Le cas s'applique aussi si j'alimente mon montage avec une source extérieure, je suis obligé de d'abord débrancher la pin 0 (rx), d'alimenter le montage et ensuite de rebrancher la pin 0 et là ça fonctionne. Si je mets sous tension le tout monté et prêt, alors rien ne se passe... j'ai l'impression que le code ne se lance pas. Donc pour résumer, si quelque chose est branché sur la pin digital 0, impossible de faire un upload du code et problème similaire lors du branchement au secteur, USB ou pile 9V, le code ne s'exécute pas si cette prise est branchée... J'espère avoir été clair, c'est pas évident. Merci pour votre aide 
|
|
|
|
« Last Edit: January 23, 2012, 03:26:06 am by arduimat »
|
Logged
|
|
|
|
|
0
Offline
God Member
Karma: 0
Posts: 763
Arduino rocks
|
 |
« Reply #1 on: January 23, 2012, 03:34:53 am » |
Yep! La réponse est toute simple. Le port usb partage ses connections avec Rx0 et Tx0. Ton programme ne veut pas s'uploader car la liaison série est perturbée par le module GPS. Si tu possèdes une mega, la solution consisterait à utiliser rx1/tx1 ou 2 ou 3. Dans le cas d'un duemilanove, la librairie softwareSerial pourrait palier ton problème en utilisant d'autres port. Un interrupteur/brochage pour couper la liaison entre l'arduino et le GPS, solution peu pratique. http://arduino.cc/en/Main/arduinoBoardDuemilanoveSerial: 0 (RX) and 1 (TX). Used to receive (RX) and transmit (TX) TTL serial data. These pins are connected to the corresponding pins of the FTDI USB-to-TTL Serial chip. Toutes les arduino sont faites ainsi  SoftwareSerial ici : http://arduino.cc/hu/Reference/SoftwareSerial@+ Zoroastre.
|
|
|
|
« Last Edit: January 23, 2012, 03:38:25 am by zoroastre »
|
Logged
|
Veuillez indiquer [RESOLU] dans l'entête du titre en éditant votre premier message 
|
|
|
|
Offline
Sr. Member
Karma: 0
Posts: 273
|
 |
« Reply #2 on: January 23, 2012, 03:41:14 am » |
Merci pour ta réponse, c'est bien ce qui me semblait.
Alors en fait, on ne peut jamais utiliser la pin D1 et D0 ?
Seulement je n'arrive plus à faire fonctionner le GPS en utilisant la librairie NewSoftSerial, le GPS ne veut pas communiquer avec, je retenterai à nouveau mais j'avais pas réussi. J'avais essayé le coupe TinyGPS et NewSoftSerial et pas moyen de recevoir le moindre du signal du GPS. Tandis qu'en le connectant à la Pin 0 ça fonctione (sans TinyGPS et NSS)...
J'ai pensé à l'interrupteur oui, mais c'est vrai que si je peux éviter, le but étant que je branche mon montage sur l'USB de la voiture et qu'il n'y ai aucune manipulation à faire...
Je retenterai à nouveau et je vous tiendrai au courant.
|
|
|
|
|
Logged
|
|
|
|
|
Chateau-Thierry (02)
Offline
Full Member
Karma: 0
Posts: 108
Arduino rocks
|
 |
« Reply #3 on: January 23, 2012, 05:09:38 am » |
Bonjour
Après avoir déclaré ta librairie SoftSerial, et écris le sketch dans le loop, as tu bien configuré tes PIN dans le setup (in et out)?
Je m'étais fait avoir...
Franck
|
|
|
|
|
Logged
|
|
|
|
|
France
Offline
Faraday Member
Karma: 36
Posts: 4331
Arduino Hacker
|
 |
« Reply #4 on: January 23, 2012, 05:38:07 am » |
Bonjour, Alors en fait, on ne peut jamais utiliser la pin D1 et D0 ?
Il n'est pas interdit d'utiliser D0/D1, mais c'est fortement déconseillé, en règle général il ne faut jamais utiliser D0/D1, sinon c'est courir après les ennuis. J'ai pensé à l'interrupteur oui, mais c'est vrai que si je peux éviter, le but étant que je branche mon montage sur l'USB de la voiture et qu'il n'y ai aucune manipulation à faire...
Si tu ne veut absolument pas d'interrupteur tu peut utiliser un transistor BC547 + 2 résistances, afin de bloquer le signal du gps tant que tu n'as pas envoyer un HIGH dans la base du transistor. GND -> résistance 10K -> base transistor Dx -> résistance 1K -> base transistor Tx gps -> collecteur transistor Rx arduino -> émetteur transistor Comme ça de base le transistor est bloqué et le signal Tx du gps sera aussi bloqué, des que ton sketch démarre il passe Dx à HIGH ce qui fait conduire le transistor et laisse le signal du gps aller dans Rx de l'arduino.
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Sr. Member
Karma: 0
Posts: 273
|
 |
« Reply #5 on: January 23, 2012, 07:32:45 am » |
Bonjour, Alors en fait, on ne peut jamais utiliser la pin D1 et D0 ?
Il n'est pas interdit d'utiliser D0/D1, mais c'est fortement déconseillé, en règle général il ne faut jamais utiliser D0/D1, sinon c'est courir après les ennuis. J'ai pensé à l'interrupteur oui, mais c'est vrai que si je peux éviter, le but étant que je branche mon montage sur l'USB de la voiture et qu'il n'y ai aucune manipulation à faire...
Si tu ne veut absolument pas d'interrupteur tu peut utiliser un transistor BC547 + 2 résistances, afin de bloquer le signal du gps tant que tu n'as pas envoyer un HIGH dans la base du transistor. GND -> résistance 10K -> base transistor Dx -> résistance 1K -> base transistor Tx gps -> collecteur transistor Rx arduino -> émetteur transistor Comme ça de base le transistor est bloqué et le signal Tx du gps sera aussi bloqué, des que ton sketch démarre il passe Dx à HIGH ce qui fait conduire le transistor et laisse le signal du gps aller dans Rx de l'arduino. D'accord pour les pins 0 et 1. En fait, une sorte d’interrupteur à retardement, mais j'aimerai faire fonctionner tout ça en en évitant les solutions de fortune, sinon mon projet risque d'être difficile à faire progresser. Je retenterai l'histoire de SoftwareSerial avec d'autres pins (si il m'en reste de dispo). Bonjour
Après avoir déclaré ta librairie SoftSerial, et écris le sketch dans le loop, as tu bien configuré tes PIN dans le setup (in et out)?
Je m'étais fait avoir...
Franck
Bubule, j'ai plus mon code sous les yeux, mais c'est pas impossible que ce soit qqchose du genre, à voir donc. Mais laquelle est IN et laquelle est OUT de Rx et Tx ? La déclaration NewSoftSerial nss(2,3); ne prendrai pas en compte le In et Out de ces pins donc ? Merci
|
|
|
|
« Last Edit: January 23, 2012, 10:52:32 am by arduimat »
|
Logged
|
|
|
|
|
Chateau-Thierry (02)
Offline
Full Member
Karma: 0
Posts: 108
Arduino rocks
|
 |
« Reply #6 on: January 23, 2012, 08:47:12 am » |
|
|
|
|
|
Logged
|
|
|
|
|
France
Offline
Edison Member
Karma: 12
Posts: 1800
There is an Arduino for that
|
 |
« Reply #7 on: January 23, 2012, 10:25:39 am » |
Bonjour
Après avoir déclaré ta librairie SoftSerial, et écris le sketch dans le loop, as tu bien configuré tes PIN dans le setup (in et out)?
Je m'étais fait avoir...
Franck
Bubule, j'ai plus mon code sous les yeux, mais c'est pas impossible que ce soit qqchose du genre, à voir donc. Mais laquelle est IN et laquelle est OUT de Rx et Tx ? La déclaration NewSoftSerial nss(2,3); ne prendrai pas en compte le In et Out de ces pins donc ? Merci Avec NewSoftSerial le constructeur s'en charge. Donc lors de la déclaration de l'objet les broches sont automatiquement définies en entrée et en sortie. Tu n'as pas besoin de le faire. Dans ton exemple: NewSoftSerial nss(2,3); la broche 2 c'est RX donc elle est en entrée la broche 3 c'est TX donc elle est en sortie
|
|
|
|
« Last Edit: January 23, 2012, 10:28:46 am by fdufnews »
|
Logged
|
|
|
|
|
France S-O ou exil en IDF
Offline
Edison Member
Karma: 12
Posts: 1058
|
 |
« Reply #8 on: January 23, 2012, 10:28:05 am » |
mais j'aimerai faire fonctionner tout ça en en évitant les solutions de fortune Je pense que ce que te propose Skywood est aux antipodes d'une solution de fortune. - Il y a eu analyse du problème. - Il y a eu conception et proposition d'une vraie solution sûre parce que expliquée, ce n'est pas une solution ou un code qui tombe en marche ...........................
|
|
|
|
|
Logged
|
Aides toi et la communauté t'aidera
|
|
|
|
Offline
Sr. Member
Karma: 0
Posts: 273
|
 |
« Reply #9 on: January 23, 2012, 10:50:42 am » |
Avec NewSoftSerial le constructeur s'en charge. Donc lors de la déclaration de l'objet les broches sont automatiquement définies en entrée et en sortie. Tu n'as pas besoin de le faire. Dans ton exemple: NewSoftSerial nss(2,3); la broche 2 c'est RX donc elle est en entrée la broche 3 c'est TX donc elle est en sortie Mmmh, du coup c'est mal barré (t'as tué mon espoir), car ça ne fonctionne pas, et pourtant j'ai essayé de bien différentes manières!  Mais je retenterai à nouveau ce soir. mais j'aimerai faire fonctionner tout ça en en évitant les solutions de fortune Je pense que ce que te propose Skywood est aux antipodes d'une solution de fortune. - Il y a eu analyse du problème. - Il y a eu conception et proposition d'une vraie solution sûre parce que expliquée, ce n'est pas une solution ou un code qui tombe en marche ........................... Pas de malentendu, je ne doute pas une seule seconde que la solution soit bonne, j'en suis sûr et d'ailleurs j'y avais songé (à l’interrupteur). Seulement j'aimerai faire au plus simple pour le moment. Si rajouter 50 lignes de codes me permettent de passer outre l'installation d'un transistor, je suis preneur. Sinon mon projet risque de se compliquer et je vais monter une usine à gaz que je ne serai maîtriser. Apparemment il est réellement possible d'affecter Rx et Tx à d'autres PIN que la 1 et la 0, certains l'on fait, pourquoi pas moi ?  Je prends compte de toutes vos remarques, et je vous tiens au courant de l'évolution.
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Jr. Member
Karma: 0
Posts: 67
|
 |
« Reply #10 on: January 23, 2012, 12:25:16 pm » |
Bonjour a tous c'est absolument inutile d'esperer sortir le RX et TX hardware sur d'autres pins que D0 et D1. C'est une fonctionalite de l'Atmega328, impossible de le modifier, il est fabrique ainsi. Si tu n'arrives pas a utiliser le port serie software, je te conseille de te diriger vers une carte compatible arduino avec le convertisseur USB > serial situe en dehors de la carte. On en parle ici : http://arduino.cc/forum/index.php/topic,66178.msg543378.html#msg543378C'est la solution que j'utilise pour les cartes que je fabrique et qui sont des copies de ceci : http://www.freetronics.com/products/kitten. Bon courage Jacques.
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Sr. Member
Karma: 2
Posts: 255
|
 |
« Reply #11 on: January 23, 2012, 12:33:53 pm » |
Salut,
Je peux savoir quel type de module GPS utilises-tu (shield ou standalone)? Dans tous les cas: - tu souhaites certes éviter l'emploi d'un interrupteur, mais pourquoi ne pas en placer un sur l'alimentation du module GPS? C'est simple, pas cher...
Sinon, si ton module consomme moins de 40mA, tu peux toujours mettre l'alimentation sur une broche que tu ne bascules qu'au bout de 10 secondes par exemple (laissant largement le temps d'uploader ton sketch à la mise sous tension). S'il consomme plus de 40mA, tu peux partir sur la même base, en passant par un transistor pour laisser passer le courant nécessaire.
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Sr. Member
Karma: 0
Posts: 273
|
 |
« Reply #12 on: January 23, 2012, 01:04:08 pm » |
Bonjour
Après avoir déclaré ta librairie SoftSerial, et écris le sketch dans le loop, as tu bien configuré tes PIN dans le setup (in et out)?
Je m'étais fait avoir...
Franck
Bubule Win !  Ceci est le graal : // include the SoftwareSerial library so you can use its functions: #include <SoftwareSerial.h> #define rxPin 2 #define txPin 3 // set up a new serial port SoftwareSerial mySerial = SoftwareSerial(rxPin, txPin); void setup() { // define pin modes for tx, rx: pinMode(rxPin, INPUT); pinMode(txPin, OUTPUT); // set the data rate for the SoftwareSerial port mySerial.begin(9600); Serial.begin(9600); } void loop() { char c = mySerial.read(); Serial.print(c); } Bon par contre ça capte plus, je reçois que des trames V, qui sont vides. Surement parceque je suis à l'intérieur (pourtant hier aprem ça marchait dedans). fdufnews : A croire que c'est la nouvelle version de SoftwareSerial() qui est foireuse (NewSoftSerial()). schizophrene : J'utilise un Skylab SKM53 suite aux conseils de Jean-François, ce n'est pas un shield non.
|
|
|
|
|
Logged
|
|
|
|
|
0
Offline
God Member
Karma: 0
Posts: 763
Arduino rocks
|
 |
« Reply #13 on: January 23, 2012, 01:06:07 pm » |
Yep!
Au fait, je ne sais pas si la question a été posé : Quelle version de l'IDE Arduino ?
La version 1.0 inclus la librairie softwareSerial.
@+
Zoroastre.
|
|
|
|
« Last Edit: January 23, 2012, 01:09:00 pm by zoroastre »
|
Logged
|
Veuillez indiquer [RESOLU] dans l'entête du titre en éditant votre premier message 
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 28
|
 |
« Reply #14 on: January 23, 2012, 05:18:18 pm » |
Pour ton pb de réception, pour un meme positionnement du récepteur, il se peut qu' hier tu etait en limite de reception, et qu'aujourd'hui, ça ne passe plus pour plusieurs raison : - temps fortement nuageux - neige, - forte pluie - différence dans l'alignement des satellites - plein d autre phénomènes physiques que je ne maitrisent pas ...  Essaies de le rapprocher d'une fenêtre .... 
|
|
|
|
« Last Edit: January 24, 2012, 03:36:34 pm by arsenic »
|
Logged
|
|
|
|
|
|