Go Down

Topic: ARduino ID ? (Read 772 times) previous topic - next topic

freeseb

bonjour,

comment recuperer par programmation sur arduino le ID de la carte (celui qui s'affiche dans Tools....Serial port).

Merci

Seb

Luj06

Ce n'est pas l'ID de la carte mais le numéro du port série de ton PC/Mac donc l'Arduino ne connait pas du tout ce numéro.

Si tu en as plusieurs dans Tools... Serial Port, c'est à toi de savoir lequel est le bon en faisant des tests. Je sais que c'est pas facile, j'ai parfois jusqu'à 5 numéros différents (deux Arduino, une carte myAVR, un programmeur ISP AVR, un module XBee...) mais généralement ils ne varient pas d'une session à l'autre donc on retrouve les mêmes nombres.

freeseb

Merci. en fait je cherche une solution pour identifier chaque carte sans avoir a injecter un code different (ou une valeur de variable differente).

Luj06

#3
Feb 27, 2009, 08:14 am Last Edit: Feb 27, 2009, 08:15 am by julien@pobot.org Reason: 1
Je ne comprends pas ce que tu veux faire. Tu veux mettre le même code dans chacune des cartes mais que chaque carte puisse s'identifier indépendamment ? utilise une entrée analogique et un potentiomètre. Selon la section dans laquelle tu pointeras le potentiomètre, la carte pourra se donner un numéro.

freeseb

J'ai 10 arduino qui doivent envoyer des infos a une 11eme et j'ai besoin de savoir de quelle arduino viennent les infos.

Donc il me faut une moyen de les identifier. Et si possible sans charger chacune avec un code different.




interlol

D'abord: pas de faux espoirs, je n'ai pas de réponse à te donner !

Je crois comprendre que tu cherches un genre de CPUID comme chez Intel, et on dirait que rien n'existe pour l'ATmega utilisé par Arduino :-/

Si on regarde les spécifications de l'ATmega168, page 346 il n'existe pas de telle instruction qui pourrait donner des infos sur le CPU. Enfin page 287 ils parlent de 3 "signature bytes" mais qui sont fixes et ne définissent que le modèle de processeur utilisé (ATmega48, 88, ou 168), pas un identifiant unique.

Il faudrait donc voir du côté de l'Arduino elle même.

Je vois que l'Arduino possède une EEPROM de 512 octets ! Peut-être que ça pourrait t'être utile d'y stocker un numéro de série (avec EEPROM.write(...) avant toute communication dans un programme indépendant), et que tu lirais une fois (avec EEPROM.read(...)) au début du programme et que tu pourrais envoyer aux différentes Arduinos ?

Luj06

Oui mais ça oblige à avoir un code différent envoyé dans chaque carte (pour avoir un numéro dans l'EEPROM différent).

La solution avec un codeur sur la carte est la meilleure, avec 1 entrée analogique ou 4 entrées numériques.

Mais franchement, s'embêter pour ne pas avoir à changer une variable au moment de la programmation c'est un peu inutile.

Go Up