---
# System prepended metadata

title: Projet carte mère
tags: [EVOLUTEK]

---

---
title: "Projet carte mère"
date: "14-12-2020"
link: "https://hackmd.io/CkFpWkDMTA27Tkod6V2XIg"
tags: EVOLUTEK
---

# Projet carte mère

## Introduction

Le but de ce document est de formaliser le projet et d'avoir une référence pour le développement du projet.
png)

Ce projet a pour but de remplacer l'architecture des robots Evolutek et Coffee Machine pour la coupe de France de robotique.

![](https://i.imgur.com/BQo0yU4.png =350x) ![](https://i.imgur.com/QsspMnK.png =350x)

La nouvelle architecture doit apporter un certain nombre de fonctionnalités :
* Alimentation des robots en utilisant une source de type Lipo 4S
* Une gestion du déplacement des robots en utilisant des moteurs avec une localisation précise
* Une gestion des actionneurs des robots (AX12, Pompes, Capteurs, Servos)
* Faire tourner un Linux embarqué
* Etre modulaire pour être ré-utilisée plusieurs années

## Architecture fonctionnelle

![Architecture fonctionelle](https://i.imgur.com/5eepQNZ.png)

### Alimentation

Cette partie de l'architecture électronique est en charge de la gestion de l'alimentation des robots.

Elle doit pouvoir gérer une entrée de type Lipo 4S et générer des tensions utilisées pour le reste du système :
* 12V - 10A
* 5V - 6A
* 3.3V - 6A

En plus de générer ces tensions, elle doit pouvoir :
* Gérer une entrée de puissance externe
* Pouvoir ON/OFF le robot grâce à un bouton standard
* Mesurer la tension de l'entrée de puissance ainsi que le courant consommé
* Se brancher facilement sur le reste de l'architecture

### Asservissement

Cette partie est en charge du déplacement du robot ainsi que de sa localisation sur la table.

Elle pemettra de contrôller deux motors DC avec un asservissement. Il doit être possible de limiter le courant consommer des moteurs pour eviter des surchauffes.

La localisation du robot se fera avec une odométrie se reposant sur des encodeurs rotatifs montés sur des roues folles, communiquant via une interface QEI ([Quadrature Encodeur Interface](http://ww1.microchip.com/downloads/en/DeviceDoc/70208A.pdf)).

Elle permettra aussi d'utiliser des capteurs supplémentaires pour améliorer la localisation du robot sur la table :
* En I2C
* En SPI
* En Analogique
* En Digital

### Actionneurs

Cette partie sera en charge de la gestion des actionneurs des robots.

Elle devra gérer :
* Des AX12 (serial Half Duplex)
* Des Servo moteurs classiques (PWM)
* Des capteurs en :
    * Analogiques
    * Digitaux
    * I2C
    * SPI


### Haut niveau et interfaces

Le haut niveau du robot (IA, Evitement, ..., ect.) est géré sur un Linux embarqué. Pour cela, cette partie de la carte devra pouvoir acceuillir un OS compatible avec le système actuel :
* Linux
* Python 3
* Go

De plus, la plateforme devra pouvoir gérer :
* La communication avec le bas niveau
* Des GPIOs
* Un écran tactile
* Une connection Wifi

### Bus EVO

Pour assurer la communication dans cette architecture et faciliter la mise en place de modules supplémentaires, il convient de créer un bus de communication interne au robot.

Ce bus devra donc comporter :
* Un bus de communication modulaire et multi-appareil
* Certains signaux importants (BAU, Reset)
* L'alimentation logique (12V, 5V, 3.3V)
* L'alimentation de puissance (Bat, 12V, 5V) -> Optionnel

## Choix techniques

### Alimentation

### Choix des contrôleurs bas niveau

Les contrôleurs bas niveau du robot seront tous identiques pour simplifier le développement et réduire la quantité de toolchain nécessaire.

En plus des contraintes évoquées dans Asservissement ou Actionneurs, le contrôleur choisi devra :
* Etre dans un format compact et facilement remplacable (type Arduino Nano)
* Etre programmable en USB
* Etre abordable
* Offrir un grand nombre de fonctionnalités standards
* Ne pas demander un grand niveau en programmation embarquée

Voici les différents contrôleurs envisagables :
* PIC 16/32
* STM32
* Teensy
* Arduino



| Contrôleur | Fonctionnalités disponibles | Facilité de programmation | Prix |
|:----------:|:---------------------------:|:-------------------------:|:----:|
|  PIC 16/3  |             ++              |             +             |  ++  |
|   STM32    |             +++             |            ++             |  +   |
|   Teensy   |             ++              |            +++            | +++  |
|  Arduino   |              +              |            +++            | +++  |

Nous avons donc choisi d'utiliser des STM32.

Chez STM32, il existe un grand nombre de cartes de dev avec un grand nombre de MC différents, cependant, il n'y a que peu de carte au format Arduino Nano.

Nous avons donc choisis de prendre une [Nucléo F303K8](https://www.st.com/en/evaluation-tools/nucleo-f303k8.html), la nucléo la plus puissante au format Nano. Elle nous revient à 7.50€ unité grâce à notre partenaire RS.

Il faut aussi noter que les étudiants Epita qui sont en GISTRE apprenent à programmer sur STM32.

### Choix de la plateforme haut niveau

Jusqu'à présent, le haut niveau des robots était assuré par une Raspberry Pi (2 ou 3).
Elle possède un certain nombre d'avantage :
- Compléte (USB, Ethernet, Wifi, GPIO, Caméra, Ecran)
- Un OS Linux très proche de Debian et facile à prendre en main
- Un grand nombre de bibliothéque Python
- Un coût relativement abordable (environ 35-40€)

Nous avons quand même chercher pour d'autres plateformes avec des caractéristiques similaires, et nous pouvons en citer quelques-unes :
* BeagleBone Black
* LattePanda

|    Plateforme    | Fonctionnalités disponibles | Facilités de prise en main | Prix |
|:----------------:|:---------------------------:|:--------------------------:|:----:|
|   Raspberry Pi   |             ++              |            +++             |  +   |
| BeagleBone Black |             +++             |             +              |  ++  |
|    LattePanda    |             ++              |             ++             | +++  |

Nous avons donc choisi de rester sur Raspberry Pi pour plusieurs raisons, le prix, la facilité à utiliser et surtout que nous avons déjà cette solution dans nos robots.

Cependant, il reste encore à choisir le modèle qui sera utilisé. Parmis toute la gamme disponible, nous avons sélectionner :
* La Raspberry Pi 3B(+)
* La Raspberry Pi 4B
* Le Pi Compute Module 3
* Le Pi Compute Module 4

Voici une comparaison de ces modèles :

|       Modèle        | Fonctionnalités | Travail nécessaire | Difficulté de mise en oeuvre | Prix |
|:-------------------:|:---------------:|:------------------:|:----------------------------:|:----:|
| Raspberry Pi 3B(+)  |       ++        |         +          |              +               |  ++  |
|   Raspberry Pi 4B   |       +++       |         ++         |              +               | +++  |
| Pi Compute Module 3 |        +        |        ++++        |             +++              |  +   |
| Pi Compute Module 4 |       ++        |        +++         |              ++              |  +   |

Nous avons décidé de partir sur une Raspberry Pi 4B, similaire à la Rapsberry Pi 3B


### Choix du bus de communication

Comme évoqué dans la partie BUS EVO, nous allons créer un bus interne au robot pour pouvoir rajouter facilement des modules et ainsi rendre cette architecture modulable.

Voici la liste des contraintes concernant le bus :
* Etre multi-appareil
* Etre facilement mis en place
* Ne pas trop être gourmand en nombre de signaux
* Etre supporté par les plateformes de l'architectureLivraison colis important
* Vitesse de communication
* Fiabilité

Voici une comparaison des bus existants :

|  Bus  | Facilité de mise en place | Nombre de signaux  | Support | Vitesse | Fiabilité |
|:-----:|:-------------------------:|:------------------:|:-------:|:-------:|:---------:|
|  CAN  |            ++             |         2          |   ++    |   +++   |    +++    |
|  I2C  |            +++            |         2          |   +++   |   ++    |     +     |
|  SPI  |            ++             | 2 + 1 par appareil |   +++   |   ++    |    ++     |
| RS485 |            ++             |         4          |    +    |   ++    |    +++    |
|  LIN  |             +             |         1          |    +    |    +    |    ++     |

Nous avons décidé d'utiliser du CAN puisque c'est le bus le plus modulaire avec de bonnes performances.

### Choix des connecteurs

### Entrée de puissance

|   Référence   |                                          Lien                                          |   Prix   |
|:-------------:|:--------------------------------------------------------------------------------------:|:--------:|
|    KRE 02     |      https://fr.farnell.com/lumberg/kre-02/bloc-de-jonction-ci-2-voies/dp/1216974      |  0.862   |
| ~~2604-3102~~ | ~~https://fr.farnell.com/wago/2604-3102/bornier-fil-a-carte-2-voies-12awg/dp/2899631~~ | ~~1.62~~ |
| 691413720002B |              https://www.rs-particuliers.com/Product.aspx?Product=1917524              |   0.94   |


### Sortie de puissance logique

|  Référence          |                                                      Lien                                                      | Prix  |
|:-------------------:|:--------------------------------------------------------------------------------------------------------------:|:-----:|
| 66200621122         |                       https://fr.rs-online.com/web/p/embases-circuits-imprimes/1725225/                        | 0.704 |
| Pin headaer 2.54 mm |                                                                                                                |       |
| 76825-0012          | https://fr.farnell.com/molex/76825-0012/connecteur-embase-12-voies-2-rang/dp/2517631                           | 3.23  |

### Sortie de puissance

|  Référence  |                                                      Lien                                                      | Prix  |
|:-----------:|:--------------------------------------------------------------------------------------------------------------:|:-----:|
| 64900621122 | https://fr.farnell.com/wurth-elektronik/64900621122/embase-male-droite-dble-ran-06p/dp/1641793?ost=64900621122 | 0.68  |
| 66200621122 |                       https://fr.rs-online.com/web/p/embases-circuits-imprimes/1725225/                        | 0.704 |
| 76825-0012  | https://fr.farnell.com/molex/76825-0012/connecteur-embase-12-voies-2-rang/dp/2517631                           | 3.23  |

### Moteurs

|   Référence    |                                                 Lien                                                 | Prix  |
|:--------------:|:----------------------------------------------------------------------------------------------------:|:-----:|
| MSTBA 2,5/ 2-G | https://fr.farnell.com/phoenix-contact/mstba-2-5-2-g/bornier-header-2-voies-90-traversant/dp/2671249 | 0.576 |


### Bus EVO

| Référence    | Lien                                                                                            | Prix |
| ------------ | ----------------------------------------------------------------------------------------------- | ---- |
| 690367281076 | https://fr.farnell.com/wurth-elektronik/690367281076/wrmm-femelle-cms-10-broches-cms/dp/1641851 | 1.02 |


### Autres

|  Référence  |                                                      Lien                                                      | Prix  |
|:-----------:|:--------------------------------------------------------------------------------------------------------------:|:-----:|
| B03B-PASK-1 | https://fr.farnell.com/jst-japan-solderless-terminals/b03b-pask-1/embase-male-pa-3v-dessus-2mm-avec/dp/1830736 | 0.318 |


## Etat du projet

### Liens utiles

### Idées à creuser

### Points bloquants