Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
fr:electronics:choisir_microcontroleur [18/08/2021 23:05]
Keuronde créée
fr:electronics:choisir_microcontroleur [04/09/2021 21:22] (Version actuelle)
Keuronde [STM32F3DISCOVERY]
Ligne 4: Ligne 4:
 Sinon, trouver une carte de développement qui dispose des entrées-sorties dont vous avez besoin. Sinon, trouver une carte de développement qui dispose des entrées-sorties dont vous avez besoin.
  
-Dans la réflexion ci-après, le postulat est qu'il n'y a qu'un seul microcontrôleur. Il est possible d'utiliser plusieurs microcontrôleurs qui communique entre eux.+Dans la réflexion ci-après, le postulat est qu'il n'y a qu'un seul microcontrôleur. Il est possible d'utiliser plusieurs microcontrôleurs qui communiquent entre eux.
  
 ===== De quelles entrées-sorties avez vous besoin ? ===== ===== De quelles entrées-sorties avez vous besoin ? =====
Ligne 12: Ligne 12:
 Vous n'aurez probablement pas fini totalement la conception de votre robot au moment de choisir votre microcontrôleur. Pire, vous souhaiterez peut-être réutiliser l'électronique d'une année sur l'autre...  Vous n'aurez probablement pas fini totalement la conception de votre robot au moment de choisir votre microcontrôleur. Pire, vous souhaiterez peut-être réutiliser l'électronique d'une année sur l'autre... 
  
 +Alors, vous n'avez pas vraiment d'autres choix que de faire un pari raisonnable. Prévoyez quelques capteurs / actionneurs supplémentaire, garder un protocole de communication en réserve, il pourra vous servir pour rajouter une seconde carte.
 +
 +Ce qui suit n'est qu'une estimation grossière, assez minimaliste. Adaptez-la à vos besoins ou vous le regretterez !
 +2 moteurs de propulsion à courant continu :
 +  * Consigne de vitesse (2x) : PWM
 +  * Consigne de sens (1 ou 2 par moteurs : 4) : IO généraliste
 +2 servomoteurs : 
 +  * Consigne de position (2x) : IO généraliste (attention, il faut un peu de code derrière) 
 +2 capteurs de distance :
 +  * Distance lue (2x) : Entrée analogique
 +1 port de communication :
 +  * UART (liaison série) : c'est une fonction sur 2 broches, notées RX et TX.
 +
 +Gardez 2 entrée analogique en réserve, 2 ou 4 IO généraliste et vous avez tout ce qu'il faut pour **réaliser un robot qui ne marche pas !**
 +
 +Pourquoi ? Parce qu'avec ceci, votre robot n'avancera pas droit et ne saura pas où il est sur le terrain. Ayez bien défini votre base roulante avant de choisir votre microcontrôleur. [[fr:basics:base_roulante|Nous avons un article sur les bases roulantes ici]].
 +
 +===== Côté performance  =====
 +
 +Les microcontrôleurs d'entrée de gamme peuvent être limités en terme de puissance de calcul.
 +
 +Ceci se ressentira d'autant plus :
 +  * si vous effectuez de la trigonométrie avec les bibliothèques standard.
 +  * si vous utilisez des nombres en virgule flottante 
 +
 +Du côté de la mémoire, il faut distinguer la ROM qui contient votre programme et certaines valeurs fixes définies dans votre code, de la RAM qui contient vos variables.
 +
 +Par exemple, si vous avez une grande liste de messages d'erreur, ceux-ci peuvent être stockés dans la ROM. Seuls quelques caractères à la fois, seront stockés en RAM, lors de l'émission du message d'erreur. 
 +
 +Côté RAM, Ce n'est pas une stratégie à états finis qui va vous créer des soucis. Par contre, méfiez vous si vous comptez utiliser de grands tableaux, notamment :
 +  * si vous souhaitez implémenter des solutions de recherche de chemin/contournement d'obstacles (pathfinding)
 +  * si vous enregistrez ou traitez une image
 +  * si vous utilisez des moyennes glissantes (sur de nombreuses valeurs)
 +
 +===== Les programmateurs et bootloader =====
 +
 +La programmation des microcontrôleurs se fait à l'aide de programmateurs. C'est un outil commun à une gamme de microcontrôleurs. Cet outil peut aussi servir de débogueur.
 +
 +Cet outil est  indispensable, au moins pour injecter un premier programme. Ce premier programme peut-être un bootloader qui permet au microcontrôleurs de se reprogrammer sans programmateur, avec des données reçues par une liaison série ou USB.  
 +
 +===== Quelques cartes =====
 +
 +L'intérêt des cartes est qu'elle sont livrés prêtes à l'emploi, ne nécessitant pas de programmateur.
 +
 +==== Arduino Uno ====
 +
 +  * 14 entrées sorties numériques 
 +  * 6 entrées analogiques
 +  * 6 sorties PWM 
 +  * basé sur un ATmega328P (8bits - RISC -Microchip) à 16 MHz
 +  * ROM : 32 ko
 +  * RAM : 2 ko 
 +  * Prix approximatif : 25 €
 +
 +==== Arduino Mega ====
 +
 +  * 54 entrées sorties numériques
 +  * dont 14 pouvant générer des signaux PWM
 +  * 16 entrées analogiques 
 +  * 4 liaisons séries (UART)
 +  * basé sur un ATmega1280 (8bits - RISC -Microchip) à 16 MHz
 +  * ROM : 128 ko
 +  * RAM :  8 ko
 +  * Prix approximatif : 25 €
 +
 +==== STM32F3DISCOVERY ====
 +
 +  * 47 entrées sorties diverses (voir fiche technique de la carte)
 +  * Gyroscope, accéléromètre, magnetomètre
 +  * basé sur un STM32F303VCT6 (Cortex-M4 - 32 bits - RISC - ST Microelectonics) à 75 MHz
 +  * ROM : 256 ko
 +  * RAM : 48 ko
 +  * Prix approximatif : 20 €
 +
 +==== MSP‑EXP430G2ET ====
 +
 +  * 16 entrées-sorties
 +  * dont : 8 entrées analogique, un port série I2C, SPI ou UART.
 +  * basé sur un MSP430G2553 (16 bits - RISC - Texas Instruments) à 16 MHz
 +  * ROM : 16 ko
 +  * RAM : 512 o
 +  * Prix approximatif : 15 €