====== L'Arduino 2009 ====== {{:elec:arduino2009-c.png?640}} L'Arduino version **Duemilanove** ("2009" : [[http://arduino.cc/en/uploads/Main/Arduino_Duemilanove.wav|wav]] , [[http://arduino.cc/en/uploads/Main/Arduino_Duemilanove.ogg|ogg]] , [[http://arduino.cc/en/uploads/Main/Arduino_Duemilanove.mp3|mp3]] , [[http://arduino.cc/en/uploads/Main/Arduino_Duemilanove.flac|flac]] , [[http://arduino.cc/en/uploads/Main/Arduino_Duemilanove.wma|wma]] ) est une carte basée sur le microcontrôleur [[http://www.atmel.com/dyn/resources/prod_documents/doc2545.pdf|ATmega168]] ou [[http://www.atmel.com/dyn/resources/prod_documents/doc8161.pdf|ATmega328]]. Il possède : * 14 entrées/sorties digitales (dont 6 peuvent être utilisées comme des sorties [[http://arduino.cc/en/Tutorial/PWM|PWM]] "Pulse Width Modulation"). * 6 sorties analogiques * une horloge à 16 MHz * un connecteur USB (adaptateur du port série, et alimentation) * un jack d'alimentation (alternative à l'alimentation par l'USB) * des broches pour l'[[http://fr.wikipedia.org/wiki/Programmation_in-situ|ICSP]] (In-Circuit Serial Programming) * un bouton RESET ===== Alimentation ===== L'Arduino Duemilanove peut être alimenté par sa connection USB ou par son connecteur d'alimentation. La source est sélectionnée automatiquement. Le connecteur d'alimentation accepte une fiche de 2.1mm, borne positive au centre. Celle-ci peut être reliée à un transformateur AC/DC branché sur le secteur. On peut aussi utiliser des piles ou batteries, qui pourront être reliées de façon équivalente entre les bornes //GND// et //VIN// du groupe "POWER" (qui sont elles mêmes directement reliées au connecteur d'alimentation). Bien que la carte puisse fonctionner théoriquement entre 6V et 20V, il est conseillé de se limiter à l'intervalle **7-12V** pour éviter une surchauffe ou que la tension de sortie "5V" devienne inférieure et instable. Si on utilise une alimentation externe, //VIN// peut être utilisée comme une source de même tension. La borne **5V** fournit cette tension soit depuis la source externe VIN grâce au regulateur interne, soit directement depuis l'USB. On peut aussi y fournir une alimentation externe **régulée** de 5V . La borne **3.3V** fournit cette tension à partir du chipset [[ http://en.wikipedia.org/wiki/FTDI|FTDI]] (qui convertit les signaux série RS-232 en signaux USB). ===== Mémoire ===== L'//ATmega368// dispose de * 32 Ko de mémoire flash pour le code, dont 2 Ko sont réservés pour le //bootloader//. * 2 Ko de SRAM * 1 Ko d'EEPROM, qui peut être lue/écrite avec la [[http://www.arduino.cc/en/Reference/EEPROM|librairie EEPROM]]. ===== Entrées/Sorties ===== ==== 14 entrées/sorties digitales ==== Chacune des 14 bornes digitales peut être utilisée comme entrée ou comme sortie, avec les fonctions ''[[http://arduino.cc/en/Reference/pinMode|pinMode()]]'', ''[[http://arduino.cc/en/Reference/digitalWrite|digitalWrite()]]'' et ''[[http://arduino.cc/en/Reference/DigitalRead|digitalRead()]]''. Elles opèrent en 5V, avec une intensité maximale de 40mA chacune. Une résistance de 20-50 kOhms interne peut être montée avec chacune d'elles. Certaines ont des fonctions spécifiques: * Série: 0 (RX) et 1 (TX). Utilisées pour recevoir et transmettre des données en série. Ces bornes sont connectées aux broches corrrespondantes du FTDI. * Interruptions externes: 2 et 3. Ces bornes permettent de déclencher une interruption, soit par une valeur basse, soit par un front montant ou descendant, soit par un changement de valeur. Voir la fonction [[http://arduino.cc/en/Reference/AttachInterrupt|attachINterrupt()]] pour plus de détails. * PWM: 3, 5,6, 9, 10, et 11. Fournissent des sorties PWM sur 8 bits, avec la fonction [[http://arduino.cc/en/Reference/AnalogWrite|analogWrite()]] * SPI: 10(SS), 11(MOSI), 12(MISO), 13(SCK). Ces bornes assurent les communications SPI. Bien que les composants nécessaires soient présents dans la carte Arduino, actuellement aucune fonction du langage ne s'y applique. * LED: 13. Une LED intégrée à la carte est connectée à la borne 13. Lorsqu'une valeur haute y est présente, la LED est allumée, lorsque la valeur est basse, la LED est éteinte. ==== 6 entrées analogiques ==== Chacune d'elles a une résolution de 10bits (1024 valeurs distinctes). Par défaut elles mesurent entre la masse et 5 volts, bien qu'il soit possible de modifier la limite supérieure de l'intervalle en utilisant la borne AREF et la fonction [[http://arduino.cc/en/Reference/AnalogReference|analogReference()]]. Certaines bornes sont spécialisées: * I2C: 4(SDA) et 5(SCL). Assurent les communications I2C (TWI) en utilisant la [[http://arduino.cc/en/Reference/Wire|librairie Wire]] ==== Autres bornes ==== * AREF. Tension de référence pour les entrées analogiques, utilisée avec [[http://arduino.cc/en/Reference/AnalogReference|analogReference()]]. * Reset. Appliquer une tension basse pour réinitialiser le microcontrolleur. Utilisé typiquement pour ajouter un bouton RESET aux cartes filles, ce qui bloque celui de l'Arduino. Voir aussi: [[http://arduino.cc/en/Hacking/PinMapping168|Correspondance entre les bornes de l'Arduino et les ports de l'ATmega168/328.]] ===== Communication ===== L'Arduino Duemilanove offre plusieurs possibilités pour communiquer avec un ordinateur, un autre Arduino, ou un autre microcontrôleur. === RS232 (Série) === l'ATmega168 et l'ATmega328 disposent de communications série de type UART TTL (5V), accessible * sur les bornes digitales 0 (RX) et 1 (TX), * sur le port USB après conversion par FTDI FT232RL intégré sur la carte * sur n'importe quelle autre borne digitale via la [[http://www.arduino.cc/en/Reference/SoftwareSerial|librairie SoftwareSerial]] === I2C (2-wire Serial Interface: TWI) === La [[http://www.arduino.cc/en/Reference/Wire|librairie Wire]] simplifie l'utilisation du bus I2C. Le protocole TWI permet de connecter jusqu'à 128 appareils différents en n'utilisant que deux fils : un pour l'horloge (SCL) et un pour les données (SDA). === SPI (Serial Peripheral Interface) === L'interface série de périphériques permet un transfert de données synchrone à haute vitesse entre l'ATmega48PA/88PA/168PA/3 28P et des équipements périphériques ou entre plusieurs AVR. Pour plus d'information, consulter la documentation de l'ATmega. ===== Programmation ===== L'Arduino Duemilanove peut être programmé avec l' [[http://arduino.cc/en/Main/Software|environnement Arduino]]. N'oubliez pas de spécifier la carte cible dans le menu //Tools -> Board// : * //Arduino Diecimila or Duemilanove w/ ATmega168// , ou * //Arduino Duemilanove w/ ATmega328// ==== Bootloader ==== Sur l'Arduino Duemilanove, l'ATmega168/328 est préprogrammé avec un //bootloader// qui permet de charger du code sans passer par un programmateur matériel externe. Il communique grâce au [[http://www.atmel.com/dyn/products/tools_card.asp?tool_id=2735|protocole STK500]] ([[http://www.atmel.com/dyn/resources/prod_documents/doc2525.pdf|référence]], [[http://www.atmel.com/dyn/resources/prod_documents/avr061.zip|en-têtes C]]). Mais on peut se passer de cette portion de code et programmer le microcontrôleur par l'ICSP: In-Circuit Serial Programming ([[http://arduino.cc/en/Hacking/Programmer|instructions]]). ===== Réinitialisation Automatique ===== Avant d'installer un programme sur la carte, vous n'êtes pas obligé d'appuyer physiquement sur le bouton RESET, car l'Arduino est conçu pour pouvoir être réinitialisé par programme depuis l'ordinateur connecté. L'une des broches de contrôle de flux ([[http://en.wikipedia.org/wiki/Data_Terminal_Ready|DTR]]) du //FT232RL// est connectée à la broche RESET de l'ATmega via un condensateur de 100 nanoFarads. Lorsque cette ligne est activée (en la mettant à 0), la broche RESET chute assez longtemps pour réinitialiser le microcontrôleur. L'IDE arduino exploite cette fonctionalité pour vous permettre de charger du code sur votre carte simplement en cliquant sur l'icône //Upload//. La reinitialisation peut ainsi être finement coordonnée avec le téléchargement du programme, et {:?:} le temps d'inactivité de la carte significativement réduit. Cette caractéristique a d'autres implications: lorsque le Duemilanove est connecté à un ordinateur tournant sous Mac OSX ou Linux, il est redémarré à chaque fois qu'un programme établit une connexion avec lui (via USB). Pendant environ une demi-seconde, le //bootloader// tourne sur le Duemilamove. Bien qu'il soit programmé pour ignorer les données malformées (c-a-d n'importe quoi d'autre que le téléchargement d'un nouveau programme), il va intercepter les premiers octets de données envoyés à la carte après qu'une connexion soit ouverte. Si le programme installé sur la carte attend des informations de configuration ou autres envoyées une seule fois au démarrage, assurez-vous que le programme qui communique avec lui attende **une seconde après avoir ouvert la connexion** avant d'envoyer ces données. Le Duemilamove comporte une {:?:} trace, libellée "RESET-EN" qui peut être coupée pour désactiver l'//auto-reset//. Les plots de chaque côté de cette trace peuvent être soudés ensemble pour le réactiver. Vous devriez aussi pouvoir désactiver l'//auto-reset// en connectant une résistance de 110 ohms entre la borne 5V et la borne RESET. Voir [[http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1213719666/all|cette discussion]] pour en savoir plus. ===== Protection du port USB ===== L'Arduino Duemilamove est équipé d'un {:?:} //fusible réarmable// qui protège le port USB de votre ordinateur contre les court-circuits et surintensités. Bien que presque tous les ordinateurs comportent leur propre protection interne, ce fusible offre un niveau de protections supplémentaire. Si plus de **500 mA** traversent le port USB de l'Arduino, le fusible interrompt automatiquement la connection jusqu'à ce que la surcharge ait disparu. ===== Caractéristiques Physiques ===== * Dimensions extérieures du PCB: 2.7x2.1 pouces , soit 68.6x53.3 mm (sans les connecturs USB et Alim, qui dépassent) * Fixation : 3 trous de vis Notez que l'espace entre les bornes digitales 7 et 8 est de 0.16" (4.06 mm), qui n'est pas un multiple des 0.10" (2.54 mm) qui séparent les autres bornes digitales. ====== Liens ====== * [[http://www.arduino.cc]] * [[http://www.atmel.com]] * [[http://www.arduino.cc/en/Main/ArduinoBoardDuemilanove| Arduino Duemilamove]] * [[http://arduino.cc/en/uploads/Main/arduino-duemilanove-schematic.pdf| Le schéma]] ====== NDLR ====== Cette page est basée sur la [[http://www.arduino.cc/en/Main/ArduinoBoardDuemilanove| description officielle en anglais]], plus quelques infos et liens complémentaires. Qui dit traduction dit interprétation. J'ai utilisé le symbole {:?:} pour marquer les points qui devraient être vérifiés ... par plus compétent que moi en électronique ! Merci de votre aide :-) Michelle