{{{ #!html

Programmation des Micro-Contrôleurs Industriels
Université Pierre et Marie Curie, niveau L3
LI326

}}} [[PageOutline]] == Objectifs et organisation du module Un microcontrôleur est un circuit intégré à usage général qui intègre sur une seule puce un microprocesseur programmable et des contrôleurs de périphériques. La conception d'un système à base de microcontrôleur réclame des compétences en logiciel et en matériel. Le module utilise la plateforme Arduino. Il est nécessaire d'avoir des connaissances de base en architecture des ordinateurs : codage des informations, notions d'assembleur. Ces prérequis correspondent au contenu des enseignements d'initiation à l'informatique et à la structure des machines des deux premières années de la licence. Même si elle est bienvenue, aucune connaissance en électronique n'est nécessaire. Notez que l'apprentissage des microcontrôleurs est d'autant plus facile que vous aimez le travail minutieux et que vous avez un peu de sens pratique. Même si beaucoup de ressources en français existent, la documentation technique est principalement en anglais. Les TME se déroulent dans les locaux du département SoC du LIP6 dans la barre 24-25 salle 305. Nous vous attribuerons un compte spécifique. Les étudiants souhaitant accéder à leur compte de l'ARI depuis le compte SoC peuvent le faire en demandant à l'administrateur système ([mailto:root] depuis les salles machines) que leur compte soit ouvert sur la passerelle durian. Notez que pour le transfert de données, vous pouvez aussi utiliser une clé USB. * 11 cours de 1h45, le mardi de 14h à 15h45. * 11 TME de 3h30, le vendredi de 16h à 19h45. La notation de ce module provient de 60% de l'examen final et de 40% du contrôle continu. == Modalités pour le projet Comme convenu, vos soutenances se dérouleront **vendredi 29 mai à partir de 14h** et vous présenterez votre projet devant vos collègues de l'UE. Nous vous demanderons de présenter votre projet suivant deux variantes : 1. de très courte durée 180 s (3 minutes), avec 3 transparents au maximum, destinée à un **public non expert** donc pas de jargon spécifique. Il faudra vous placer au niveau d'un auditoire profane que vous devez convaincre de l'utilité de votre projet. 2. une version longue 10 minutes où vous présentez et justifiez vos choix techniques pour cette fois-ci un **public expert**. Une fois toutes les présentations réalisées, le jury circulera pour assister aux différentes démonstrations qui auront et mises en place au préalable. Vous remettrez également un rapport imprimé en deux exemplaires. La rédaction de ce rapport devra avoir été réalisée dans l'objectif de produire un tutoriel permettant à un étudiant de niveau équivalent au vôtre de réaliser le projet de A à Z. == Séances 1. [htdocs:2015_cours1_intro_micro.pdf Introduction aux microcontrôleurs] 1. [htdocs:2015_cours2_arduino_bases.pdf Bases d'Arduino] 1. [htdocs:2015_cours3_arduino_temps.pdf La gestion du temps avec l'Arduino] 1. [htdocs:2015_cours4_arduino_analog.pdf Les entrées analogiques] 1. [htdocs:2015_cours5_arduino_moteurs.pdf Bref aperçu des moteurs] 1. [htdocs:2015_cours6_arduino_codage_RC-5.pdf Télécommande infrarouge] 1. [htdocs:2015_cours7_arduino_fsm.pdf programmation par fsm] 1. [htdocs:2015_cours8_web-nup.pdf Librairie de gestion des tâches/fsm] 1. [htdocs:2015_cours9_arduino_serial.pdf Ports série] 1. [htdocs:2015_cours10_arduino_i2c.pdf Bus I2C] {{{#!comment 1. [htdocs:2015_cours11_arduino_.pdf ] }}} == TME 1. [wiki:arduino_tme1 Prise en main de l'environnement, échange avec le terminal et Calculatrice] 1. [wiki:arduino_tme2 Gestion du temps] 1. [wiki:arduino_tme3 Entrées analogiques] 1. [wiki:arduino_tme4 Commande de moteurs à courant continu] 1. [wiki:arduino_tme5 Moteurs pas à pas et servo-moteurs] 1. [wiki:arduino_tme6 Télécommande infrarouge, protocole RC5] {{{#!comment 1. [wiki:arduino_tme7 tme7] 1. [wiki:arduino_tme8 tme8] 1. [wiki:arduino_tme9 tme9] 1. [wiki:arduino_tme10 tme10] 1. [wiki:arduino_tme11 tme11] }}} == Sites intéressants * Documentation sur le microcontrôleur [[BR]] http://www.atmel.com/Images/doc2549.pdf * Vendeur utilisé par le fablab de l'UMPC : sérieux et bon marché [[BR]] http://www.electrodragon.com/product-category/interface/lcds/ * Site officiel [[BR]] http://arduino.cc/ * Référence Arduino français [[BR]] http://www.mon-club-elec.fr/ * Tutoriel détaillé (ex: Site-du-Zéro / !OpenClassrooms) [[BR]] http://eskimon.fr/ * Tutoriel plus spécialisé [[BR]] http://fr.wikiversity.org/wiki/Micro_contrôleurs_AVR/Arduino * Tutoriel un autre… [[BR]] http://www.flossmanualsfr.net/arduino/ * Le fablab de l'UPMC utilisateur des platines Arduino [[BR]] http://www.flossmanualsfr.net/arduino/ * les forums et les bibliothèques de fonctions sont innombrables [[BR]] https://www.google.fr/search?q=arduino {{{ #!comment == Objectifs et organisation du module Un microcontrôleur est un circuit intégré à usage général qui intègre sur une seule puce un microprocesseur programmable et des contrôleurs de périphériques. La conception d'un système à base de microcontrôleur réclame des compétences en logiciel et en matériel. Ce module utilise le microcontrôleur PIC16F877A de Microchip et la programmation se fait en assembleur. Il est nécessaire d'avoir des connaissances de base en architecture des ordinateurs : codage des informations, notions d'assembleur. Ces prérequis correspondent au contenu des enseignements d'initiation à l'informatique et à la structure des machines inculquées lors des deux premières années de la licence. Même si elle est bienvenue, aucune connaissance en électronique n'est nécessaire. Notez que l'apprentissage des microcontrôleurs est d'autant plus facile que vous aimez le travail minutieux et que vous avez un peu de sens pratique. Notez également que la documentation est principalement en anglais, car c'est celle fournie directement par les constructeurs. La connaissance de l'anglais technique est donc indispensable. Les TME se déroulent dans les locaux du département SoC du LIP6 dans la barre 65-66 salle 408. Nous vous attribuerons un compte spécifique. Les salles sont ouvertes en libre-service sauf aux heures où elles sont utilisées pour les TME. Les étudiants souhaitant accéder à leur compte de l'ARI depuis le compte SoC peuvent le faire en demandant à l'administrateur système ([mailto:root] depuis les salles machines) que leur compte soit ouvert sur la passerelle durian. Notez que pour le transfert de données, vous pouvez aussi utiliser une clé USB. * 11 cours de 1h45, le mardi de 14h à 15h45. * 11 TME de 3h30, le vendredi de 16h à 19h45, en salle 408 du couloir 65-66. La notation de ce module provient de 60% de l'examen final et de 40% du contrôle continu qui dépend de votre participation aux séances. == Séances 2014 1. [wiki:li326-Intro Introduction aux microcontrôleurs et codage de base] // [htdocs:2014_cours1_intro_micro.pdf cours introduction] 1. [wiki:li326-BasePIC Bases de l'assembleur PIC et environnement de Programmation.] // [htdocs:2014_cours2_base.pdf cours base assembleur] 1. [wiki:li326-ProgPic Programmation en assembleur PIC : directives, macro-instructions, boucles, switch-case.] 1. [wiki:li326-Evenements Gestion des évènements et programmation par composants : interruptions] // [htdocs:2014_cours3_interruptions cours interruptions] -- [htdocs:2014_cours4_led_bp.pdf cours led et bp] 1. // [htdocs:2014_cours5_taches.pdf cours taches] 1. [wiki:MicroTmeRs232 Communication série RS232 : terminal de commandes.] // [htdocs:2014_cours6_serial.pdf cours rs232] 1. // [htdocs:2014_cours7_lcd.pdf cours lcd] 1. // [htdocs:2014_cours8_timers_pwm.pdf cours timers et pwm] 1. // [htdocs:2014_cours9_analogique.pdf cours analogique] 1. [wiki:MicroTmeI2c Gestion du port i2c] // [htdocs:2014_cours10_i2c.pdf cours i2c] 1. [htdocs:2014_cours11_rc5.pdf RC-5 protocole des télécommandes infrarouges] {{{ #!comment 1. [wiki:li326-Intro Introduction aux microcontrôleurs et codage de base] // [htdocs:2014_cours1_intro_micro.pdf cours introduction] 1. [wiki:li326-BasePIC Bases de l'assembleur PIC et environnement de Programmation.] // [htdocs:2014_cours2_base.pdf cours base assembleur] 1. [wiki:li326-ProgPic Programmation en assembleur PIC : directives, macro-instructions, boucles, switch-case.] 1. [wiki:li326-Evenements Gestion des évènements et programmation par composants : interruptions] // [htdocs:2014_cours3_interruptions cours interruptions] -- [htdocs:2014_cours4_led_bp.pdf cours led et bp] 1. [wiki:li326-IOsimples Entrées-sorties numériques simples et bibliothèques de fonctions : leds et bouton poussoir idéal.] 1. // [htdocs:2014_cours5_taches.pdf cours taches] 1. [wiki:MicroTmeRs232 Communication série RS232 : terminal de commandes.] // [htdocs:2014_cours6_serial.pdf cours rs232] 1. [wiki:li326-PeriphBase Périphériques basiques : afficheur LCD.] ([htdocs:2014_cours7_lcd.pdf cours lcd]) 1. [wiki:li326-Periph1fil Périphériques sur 1 fil : commandes PWM] ([htdocs:2014_cours8_timers_pwm.pdf cours timers et pwm]) 1. [wiki:li326-ConvAnaNum Conversion analogique numérique.] ([htdocs:2014_cours9_analogique.pdf cours analogique]) 1. [wiki:li326-i2c bus I2C : commande de périphériques standardisés.] 1. [wiki:li326-infrarouge protocole des télécommandes infrarouges.] == Séances 2013 1. [wiki:li326-ProgPic Programmation en assembleur PIC : directives, macro-instructions, boucles, switch-case.] 1. [wiki:li326-Evenements Gestion des évènements et programmation par composants : interruptions, timer, reset, watchdog, sleep, automates.] 1. [wiki:li326-IOsimples Entrées-sorties numériques simples et bibliothèques de fonctions : leds et bouton poussoir idéal.] 1. [wiki:li326-rs232 Communication série RS232 : bootloader et terminal de commandes.] 1. [wiki:li326-PeriphBase Périphériques basiques : clavier matriciel et afficheur LCD.] 1. [wiki:li326-Periph1fil Périphériques sur 1 fil : clavier, commande PWM et échange de données.] 1. [wiki:li326-ConvAnaNum Conversion analogique numérique.] 1. [wiki:li326-i2c bus I2C : commande de périphériques standardisés.] 1. [wiki:li326-infrarouge protocole des télécommandes infrarouges.] 1. [htdocs:2013_cours1_microcontroleurs_p1.pdf Qu’est-ce qu’un microcontrôleur] ?[[BR]][htdocs:2013_cours1_microcontroleurs_p2.pdf Architecture du PIC16f877] 2. [htdocs:2013_cours2_pic16f877.pdf Premier pas avec le PIC16f877] 3. [htdocs:2013_cours3_fonction_interruption.pdf Les fonctions et les interruptions] 4. [htdocs:2013_cours4_gpio_lcd.pdf Les GPIO / LCD] 5. [htdocs:2013_cours5_serial.pdf La communication RS232] 6. [htdocs:2013_cours6_analogique.pdf Conversion A-N] 7. [htdocs:2013_cours7_i2c.pdf Protocole i2c] 5. [htdocs:2011_cours5_timer.pdf La gestion du temps] 8. [htdocs:2011_cours8_prognds.pdf Architecture NDS, Environnement de programmation][[BR]][htdocs:2011_cours8_archiarm.pdf Architecture NDS, Jeu d'instruction du processeur ARM] 9. API et premier programme 10. programmation graphique 11. Architecture de l’ARM 7 et 9 1. [wiki:MicroTmeBase Prise en mains de l'assembleur pic et des outils de développement] 2. [wiki:MicroTmeFonction Plus loin en assembleur : la mémoire, le temps et les fonctions] 3. [wiki:MicroTmeInter Le bouton poussoir, usage des interruptions] 4. [wiki:MicroTmeRs232 Gestion du port RS232] 5. [wiki:MicroTmeAnapwm Les entrées analogiques] 6. [wiki:MicroTmeI2c Gestion du port i2c] 6. [wiki:MicroTmeI2cArduino Premier pas avec Arduino] 3. [wiki:MicroTmeLcd L'affichage LCD] 7. [wiki:MicroTmeNDSDTW Reconnaissance des chiffres avec la NDS] 5. [wiki:MicroTmeTimers Production d'un signal périodique modulé] 8. [wiki:MicroTmeTaches Mise en évidence du multitâches] 9. [wiki:MicroTmeSloop Mise en oeuvre de sloop] == Aide mémoire * [wiki:file-p16f877.inc Noms des symboles du pic16f877] * [wiki:file-picmips.inc Quelques macros utiles pour faire croire qu'on a un vrai assembleur] * [wiki:doc-assembleur-pic16 Instructions assembleur PIC16 et extraits de code] == Plateforme de développement Les logiciels fournis fonctionnent sous Linux. ce sont des logiciels libres, dont les sources et les exécutables sont chargeables sur le net. A titre indicatif, la société Microchip® qui fabrique le PIC16F877 fournit une suite logicielle complète et gratuite pour Windows®. * [http://www.olimex.com/dev/pic-mt-usb.html la carte de développement pic-mt-usb] [[Image(htdocs:pic-mt-lcd.jpg,nolink,width=300px,align=left)]][[Image(htdocs:pic-mt-pcb.jpg,nolink,width=330px)]] * [htdocs:gpsim_0.21.2.pdf Simulateur/debugger graphique PIC] * [htdocs:gpasm.pdf Assembleur PIC] * [htdocs:picprog_1.17.pdf Programmateur PIC] == Extraits de la documentation officiel du PIC16F877 * [htdocs:1_pic16f877_overview.pdf Vue d'ensemble du microcontrôleur.] * [htdocs:2_pic16f877_memory.pdf Description de l'espace mémoire, rôle des registres spéciaux.] * [htdocs:3_pic16f877_instruct.pdf Liste des instructions.] * [htdocs:4_pic16f877_ioport.pdf Comportement électrique des ports d'entrées-sorties.] * [htdocs:5_pic16f877_conf_reset_int_wd.pdf Bits de configuration, types de reset, d'interruption et watchdog.] * [htdocs:6_pic16f877_timerccp.pdf Description des timers et des modules.] * [htdocs:7_pic16f877_mssp.pdf Module serial synchronous protocol (SPI et I2C)] * [htdocs:8_pic16f877_usart.pdf Universal Synchronous Asynchronous Receive Transmit (RS232)] * [htdocs:9_pic16f877_can.pdf Convertisseur Analogique Digital] == Documents annexes * [htdocs:i2c_spec.pdf Spécifications de la norme I2C] * [htdocs:srf08.pdf Spécification du télémetre ultra-son] * [htdocs:tda8444.pdf Spécification du convertisseur numérique Analogique] * Documentations en anglais sur le protocole rs232 * [http://www2.rad.com/networks/1995/rs232/rs232.htm rs232 (version courte)], * [http://www.beyondlogic.org/serial/serial.htm rs232 (version longue)] * [http://www.oumnad.123.fr Oumnad : des cours et des projets] * [http://www.sonelec-musique.com/index.html sonelec : une base impressionnantes de montages expliqués] }}}