Go Down

Topic: Déporter le connecteur USB de programmation (Read 1 time) previous topic - next topic

kafifi

Bonsoir,

Je vais utiliser des Arduino Mega 2560 en production pour piloter ma domotique (1 carte dans chaque pièce).Les cartes seront dans des boites murales. Afin de pouvoir upgrader le logiciel sans tout démonter à chaque fois, je cherche à déporter le connecteur USB.

Avez-vous été confronté à ce besoin ? Je pense à des connecteurs coudés ou un petit adaptateur pour fixer une embase en façade, mais je n'ai pas trouvé mon bonheur... Une piste ?

erlik

#1
Oct 31, 2010, 12:00 am Last Edit: Oct 31, 2010, 12:01 am by erlik Reason: 1
Et pourquoi ne pas simplement passer par les pins TX/RX, pour la reprogrammation ? Tu prends une arduino simple comme interface, tu retires l'atmega, et tu connectes d'un coté les RX/TX de ton "interface" aux TX/RX de ta carte et de l'autre l'usb a ton ordi, et roulez jeunesses...
Il n'y aurait alors que 2 petits connecteurs visibles (et encore ... )

Par contre, petit hors sujet mais ... une Arduino Mega 2560 par pièces, n'est-ce pas un peu excessif ?... On peut facilement gérer un nombre illimité de plafonniers avec 3 pins et des registres à décalages, les relevés environnementaux avec le onewire, sans oublier l'indispensable bus I2C et ses horloge temps reel/mémoire eeprom/détecteurs de proximité/extensions de port parallèle 8bits ...

kafifi

#2
Oct 31, 2010, 12:59 am Last Edit: Oct 31, 2010, 01:06 am by kafifi Reason: 1
Quote
Et pourquoi ne pas simplement passer par les pins TX/RX, pour la reprogrammation ? Tu prends une arduino simple comme interface, tu retires l'atmega, et tu connectes d'un coté les RX/TX de ton "interface" aux TX/RX de ta carte et de l'autre l'usb a ton ordi, et roulez jeunesses...
Il n'y aurait alors que 2 petits connecteurs visibles (et encore ... )

Euh, désolé mais je n'ai pas bien compris...  

Quote
Par contre, petit hors sujet mais ... une Arduino Mega 2560 par pièces, n'est-ce pas un peu excessif ?... On peut facilement gérer un nombre illimité de plafonniers avec 3 pins et des registres à décalages, les relevés environnementaux avec le onewire, sans oublier l'indispensable bus I2C et ses horloge temps reel/mémoire eeprom/détecteurs de proximité/extensions de port parallèle 8bits ...
Non au contraire ;-)
En fait j'ai pris la Mega parce que c'est la seule qui dispose de 256K de flash. Cela me permet d'avoir de la marge côté code. De plus, ces multi UART (pour utiliser du RS485). Vu la différence de prix avec les autres (20 ?) cela vaut la peine.

PS : Je trouve plus souple que chaque carte gère son environnement (voire deux pièces), cela permet de "charger"en nombre de fonctions domotique + alarme + divers.

erlik

#3
Oct 31, 2010, 02:13 am Last Edit: Oct 31, 2010, 02:01 am by erlik Reason: 1
L'USB uploade le programme sur l'atmega via les pins TX et RX (digital 0 et 1). En effet, le bootloader écoute ces pins au demarrage (ou reboot) de la carte, en attente de recevoir un programme. S'il n'y a rien, il lance le programme déjà chargé
Ces pins sont aussi accessibles directement sur la carte pour les communications serial.

Donc, il est possible de passer outre le connecteur usb, en envoyant directement les données par les pins RX/TX de la carte. Pour cela, tu prend une carte arduino, tu le branches à ton ordi et tu enleves le microcontroleur. Vu qu'il n'y a plus de puce, tu as une interface simple qui convertie les données envoyées en USB en données serial. Tu connectes alors les 2 cartes comme pour un communication serie classique, les sorties 0 et 1 de cette "interface" aux entrées 1 et 0 de la mega a programmer et tu lance un upload classique.
Le programme est envoyé par l'usb a la 1ere carte, et tente de se charger sur sa puce via ses entrées RS/TX. Or comme il n'y a plus de puces, elles passent dans la mega, et s'installent au chaud sur l'atmega ...
J'espere avoir été plus claire...

EDIT: ha j'ai failli oublier, il faut aussi connecter les pins Reset des 2 cartes ensemble

Seconde possibilité, le port ICSP (mais plus adapté pour charger le booloader sur une atmega vierge, ou une prog sans aucun bootloader )

kafifi

C'est plus clair comme cela, merci Erlik !

erlik

Je viens de retrouver dans le playground, comment uploader avec une carte arduino un code sur un atmega avec bootloader (avec des shemas )  et donc ,par extension, une autre arduino :

http://arduino.cc/en/Tutorial/ArduinoToBreadboard
chapitre "Uploading Using an Arduino Board"

Et la traduction sommaire :

Quote
Une fois que votre ATmega328p a le bootloader Arduino, vous pouvez uploader des programmes à l'aide du convertisseur USB-serial (puce FTDI) sur une carte Arduino.
Pour ce faire, vous supprimez le microcontrôleur de la carte Arduino pour que la puce FTDI puisse communiquer  à la place avec le microcontrolleur sur la plaque de prototypage. Le schéma de droite montre comment connecter les lignes RX et TX de la carte Arduino avec l'atmega sur la carte de test. Pour programmer le microcontrôleur, sélectionnez "Arduino Duemilanove or Nano w/ ATmega328" dans le menu Tools > Board menu (ou "ATmega328 on a breadboard (8 MHz internal clock)"  si vous utilisez la configuration minimale décrite ci-dessous). Ensuite, télécharger, comme d'habitude


C'est quand même plus claire que mes explications ....  ::)

kafifi


Go Up