# Fabrication

# Liste des composants

## Sparkfun Pro Micro <span class="emoji">🧠</span>

💲 Officiel : [https://www.sparkfun.com/products/12640](https://www.sparkfun.com/products/12640)  
💲 Clone (Amazon) : [https://www.amazon.fr/KeeYees-ATmega32U4-Développement-Leonardo-Bootloader/dp/B07FQBQ4Z6](https://www.amazon.fr/KeeYees-ATmega32U4-D%C3%A9veloppement-Leonardo-Bootloader/dp/B07FQBQ4Z6)  
💲 Clone (Aliexpress) : [https://fr.aliexpress.com/item/1871481789.html?spm=a2g0s.9042311.0.0.20aa6c37z4qLog](https://fr.aliexpress.com/item/1871481789.html?spm=a2g0s.9042311.0.0.20aa6c37z4qLog)

Voici le **"cerveau"** de notre instrument, pour cette tâche nous allons utiliser un clone de **Sparkfun Micro.** Souvent confondu avec l'[Arduino Micro](https://store.arduino.cc/arduino-micro), le **Sparkfun Pro Micro est plus petit mais n'a pas les broches A4 / A5 / D11 / D12 / D13 / D17 (SS)**

<p class="callout success"><span class="emoji">📗</span> Les [plans](http://cdn.sparkfun.com/datasheets/Dev/Arduino/Boards/SparkFun_Pro_Micro_v13a.zip) sous Eagle (et fusion 360) sont disponibles sous licence open source.</p>

[![image-1592737001274.png](https://doc.labsud.org/uploads/images/gallery/2020-06/scaled-1680-/image-1592737001274.png)](https://doc.labsud.org/uploads/images/gallery/2020-06/image-1592737001274.png)

Cette carte se programme comme un Arduino Uno, mais elle est capable d'émuler le fonctionnement d'un **périphérique USB** (Un **clavier** / Une **souris** / Un **joystick** et un **instrument midi**) car elle utilise un [atmega32u4](https://www.microchip.com/wwwproducts/en/ATmega32U4#datasheet-toggle) (au lieu du [atmega328](https://www.microchip.com/wwwproducts/en/ATmega328) sur l'arduino uno)

<p class="callout warning">⚡ J'ai utilisé la version 5V, les capteurs capacitifs fonctionnant en 3.3V, on pourrait simplifier le circuit en utilisant la version 3.3v.</p>

[![image-1592651307379.png](https://doc.labsud.org/uploads/images/gallery/2020-06/scaled-1680-/image-1592651307379.png)](https://doc.labsud.org/uploads/images/gallery/2020-06/image-1592651307379.png)

## Capteurs Capacitifs MPR121 **🖐️**

💲 Officiel : [https://www.sparkfun.com/products/retired/9695](https://www.sparkfun.com/products/retired/9695)  
💲 Clone (Amazon) : [https://www.amazon.fr/TECNOIOT-Breakout-Capacitive-Controller-Keyboard/dp/B084BVLXCB](https://www.amazon.fr/TECNOIOT-Breakout-Capacitive-Controller-Keyboard/dp/B084BVLXCB)  
💲 Clone (Aliexpress) : [https://fr.aliexpress.com/item/32821362153.html](https://fr.aliexpress.com/item/32821362153.html)

Les capteurs MPR121, réagissent quand on les touchent **avec la main 🖐️**, ou **avec un objet conducteur 🔧.** Il nous suffit donc d'exposer la broche à l'aide de **pastilles de soudures,** ce qui nous permet de créer les formes que nous voulons.

<p class="callout success"><span class="emoji">📗</span> Les [plans](http://cdn.sparkfun.com/datasheets/BreakoutBoards/MPR121-Breakout-v13.zip) sous Eagle (et fusion 360) sont disponibles sous licence open source.</p>

<p class="callout success">Chaque module est capable de gérer **12 pads** et il est possible d'en utiliser **4 à la fois** (**46 Pads**)</p>

[![image-1592738426233.png](https://doc.labsud.org/uploads/images/gallery/2020-06/scaled-1680-/image-1592738426233.png)](https://doc.labsud.org/uploads/images/gallery/2020-06/image-1592738426233.png)

<p class="callout success">Ces modules communiquent en [i²c](https://en.wikipedia.org/wiki/I%C2%B2C), il ne nécessite que 2 broches (SDA / SCL) pour pouvoir l'utiliser, peut importe le nombre de MPR121 utilisés.</p>

[![image-1592821864446.png](https://doc.labsud.org/uploads/images/gallery/2020-06/scaled-1680-/image-1592821864446.png)](https://doc.labsud.org/uploads/images/gallery/2020-06/image-1592821864446.png)

## Boutons 🟩

💲 Sparkfun : [https://www.sparkfun.com/products/15326](https://www.sparkfun.com/products/15326)  
💲 Amazon : [https://www.amazon.fr/POPESQ®-Interrupteur-instantane-Momentary-A2105/dp/B07DRRX4P3](https://www.amazon.fr/POPESQ%C2%AE-Interrupteur-instantane-Momentary-A2105/dp/B07DRRX4P3)  
💲 Aliexpress : [https://fr.aliexpress.com/item/32834276752.html](https://fr.aliexpress.com/item/32834276752.html)

Grâce à l'économie de broches que les capteurs capacitifs nous offrent, il est possible d'ajouter 10 boutons sur les broches restantes sur le Sparkfun micro.

<p class="callout success">Les boutons sont reliés sans résistances à l'Arduino grâce aux [résistances de rappel](https://fr.wikipedia.org/wiki/R%C3%A9sistance_de_rappel) (pull-up resistors) intégrées à celui-ci</p>

4 des boutons sont placés au niveau des potentiomètres et les 6 autres à coté.

[![image-1592651246681.png](https://doc.labsud.org/uploads/images/gallery/2020-06/scaled-1680-/image-1592651246681.png)](https://doc.labsud.org/uploads/images/gallery/2020-06/image-1592651246681.png)

## Potentiomètres ⚫

💲 Amazon : [https://www.amazon.fr/potentiometre-Simple-lineaire-Conique-rotatif/dp/B018S9GUKI](https://www.amazon.fr/potentiometre-Simple-lineaire-Conique-rotatif/dp/B018S9GUKI)  
💲 Aliexpress : [https://fr.aliexpress.com/item/33051479190.html](https://fr.aliexpress.com/item/33051479190.html)

Le Sparkfun micro a 4 sorties analogiques, parfait pour gérer 4 potentiomètres.  
Ceux ci vont nous permettre de régler des effets / synthétiseurs au sein des logiciels de musique assisté par ordinateur.

<p class="callout warning">La résistance mécanique des potentiomètres est uniquement soutenu par les soudures.</p>

[![image-1592651282428.png](https://doc.labsud.org/uploads/images/gallery/2020-06/scaled-1680-/image-1592651282428.png)](https://doc.labsud.org/uploads/images/gallery/2020-06/image-1592651282428.png)

## Afficheur OLED 128x64 🖼️

💲 Aliexpress : [https://fr.aliexpress.com/item/32957159545.html](https://fr.aliexpress.com/item/32957159545.html)

Ces afficheurs de 128x64 utilise la technologie OLED, à la différence des afficheurs LCD, le contraste est plus élevé , l'image très clair (car chaque pixel sont éclairés individuellement).  
Ils fonctionnent en i²c et utilise donc les mêmes broches que pour les capteurs capacitifs.

<p class="callout danger">Certains modules inversent les broches VCC / GND et d'autres ont plus de broches car ils utilisent le protocoles SPI, faites très attention en les commandant.</p>

[![image-1592821990945.png](https://doc.labsud.org/uploads/images/gallery/2020-06/scaled-1680-/image-1592821990945.png)](https://doc.labsud.org/uploads/images/gallery/2020-06/image-1592821990945.png)

## Régulateur de tension 5v vers 3.3v ⚡

💲 Aliexpress : [https://fr.aliexpress.com/item/32718499724.html](https://fr.aliexpress.com/item/32718499724.html)

<p class="callout danger">Tout les modules de régulation de tension n'ont pas les broches aux même endroit.  
Il faut qu'il est Vo / GND / Vi</p>

Le sparkfun Micro 5v n'a pas de broche 3.3V, il va donc nous falloir réduire la tension à 3.3v afin d'alimenter les capteurs capacitifs.[![image-1592822592555.png](https://doc.labsud.org/uploads/images/gallery/2020-06/scaled-1680-/image-1592822592555.png)](https://doc.labsud.org/uploads/images/gallery/2020-06/image-1592822592555.png)

## Convertisseur de niveau logique ⚡

💲 Sparkfun : [https://www.sparkfun.com/products/12009](https://www.sparkfun.com/products/12009)  
💲 Amazon : [https://www.amazon.fr/Hiletgo-modules-convertisseur-bidirectionnel-canaux/dp/B07F7W91LC](https://www.amazon.fr/Hiletgo-modules-convertisseur-bidirectionnel-canaux/dp/B07F7W91LC)  
💲 Aliexpress : [https://fr.aliexpress.com/item/4000587260340.html](https://fr.aliexpress.com/item/4000587260340.html)

Afin que les capteurs capacitif communique avec le Sparkfun micro il nous faut aussi un convertisseur de niveau (Logic Level Converter)

Celui-ci est alimenté d'un coté en 5v (HV) et de l'autre en 3.3v (LV) est converti le signal i²c (SDA/SCL) entre ces deux tensions (HV1 / HV2 &lt;--&gt; LV1 / LV2)

[![image-1592822867471.png](https://doc.labsud.org/uploads/images/gallery/2020-06/scaled-1680-/image-1592822867471.png)](https://doc.labsud.org/uploads/images/gallery/2020-06/image-1592822867471.png)

[![image-1592822832378.png](https://doc.labsud.org/uploads/images/gallery/2020-06/scaled-1680-/image-1592822832378.png)](https://doc.labsud.org/uploads/images/gallery/2020-06/image-1592822832378.png)

# Commande du PCB

## Téléchargement du gerber 📁

Afin de commander les PCB, nous avons besoins du **[gerber](https://fr.wikipedia.org/wiki/Gerber_(format_de_fichier))** de celui-ci

> Le format de fichier **Gerber** est le standard de-facto utilisé pour transmettre des informations concernant la fabrication des [circuits imprimés](https://fr.wikipedia.org/wiki/Circuit_imprim%C3%A9 "Circuit imprimé"). Il contient la description des diverses couches de connexions électriques (les pistes, les pastilles, les plages [CMS](https://fr.wikipedia.org/wiki/Composant_mont%C3%A9_en_surface "Composant monté en surface"), les [vias](https://fr.wikipedia.org/wiki/Via_(%C3%A9lectronique) "Via (électronique)")…).

Vous pouvez les télécharger sur github  
📁 Gerbers: [https://github.com/usini/m1d1\_36/releases](https://github.com/usini/m1d1_36/releases)

[![image-1592654662356.png](https://doc.labsud.org/uploads/images/gallery/2020-06/scaled-1680-/image-1592654662356.png)](https://doc.labsud.org/uploads/images/gallery/2020-06/image-1592654662356.png)

## Commande du PCB 💲

Après avoir essayer plusieurs fournisseurs, le seul a avoir un prix raisonnable pour un PCB de cette taille est JLCPCB.  
5 exemplaires du PCB coûtent 12.16€, et en livraison rapide le tout revient à 28.69€ soit 5,7€ le PCB.

[![image-1592654745709.png](https://doc.labsud.org/uploads/images/gallery/2020-06/scaled-1680-/image-1592654745709.png)](https://doc.labsud.org/uploads/images/gallery/2020-06/image-1592654745709.png)

Toutefois la commande d'un PCB est a peu près identique sur chaque plateforme, voici les étapes pour commander le PCB

Aller sur [https://jlcpcb.com/ ](https://jlcpcb.com/)puis cliquer sur **QUOTE NOW**

[![image-1592654849579.png](https://doc.labsud.org/uploads/images/gallery/2020-06/scaled-1680-/image-1592654849579.png)](https://doc.labsud.org/uploads/images/gallery/2020-06/image-1592654849579.png)

Cliquer sur le bouton **Add your gerbers** et ajouter le fichier **m1d1\_36\_gerbers\_v1.zip 📁**

[![image-1592655142488.png](https://doc.labsud.org/uploads/images/gallery/2020-06/scaled-1680-/image-1592655142488.png)](https://doc.labsud.org/uploads/images/gallery/2020-06/image-1592655142488.png)

[![image-1592655016637.png](https://doc.labsud.org/uploads/images/gallery/2020-06/scaled-1680-/image-1592655016637.png)](https://doc.labsud.org/uploads/images/gallery/2020-06/image-1592655016637.png)

Vous n'avez pas besoin de changer la moindre option, mais si vous voulez la couleur noir (par ex.) vous pouvez la changer ici (**cela augmentera la durée de fabrication**)

[![image-1592655064119.png](https://doc.labsud.org/uploads/images/gallery/2020-06/scaled-1680-/image-1592655064119.png)](https://doc.labsud.org/uploads/images/gallery/2020-06/image-1592655064119.png)

- Cliquer sur **Save to Cart**
- Cliquer sur **Checkout securely**

# Assemblage du PCB

### Modification sur le MPR121 ✂️

<p class="callout danger">Attention si vous ne faites pas cette modification, les MPR121 dont les adresses sont modifiés physiquement bloqueront l'exécution du programme.  
[https://electronics.stackexchange.com/questions/325702/how-to-cut-the-add-to-gnd-trace-on-a-mpr121-capacitive-touch-sensor#325714](https://electronics.stackexchange.com/questions/325702/how-to-cut-the-add-to-gnd-trace-on-a-mpr121-capacitive-touch-sensor#325714)</p>

✖️ Les clones de MPR121 ont un défaut, on ne peut pas changer leur adresse i²c, et donc en utiliser plusieurs.  
Pour [changer l'adresse d'un MPR121](https://learn.adafruit.com/adafruit-mpr121-12-key-capacitive-touch-sensor-breakout-tutorial/wiring), il suffit de relier la broche **ADD** soit au 3V, au SDA ou au SCL

- **ADD non connecté : 0x5A**
- **ADD sur 3V : 0x5B**
- **ADD sur SDA : 0x5C**
- **ADD sur SCL : 0x5D**

Pas de panique, même si cela semble un peu risqué, c'est une modification relativement simple (avec les bons outils)  
Pour que cela marche, **il faut couper une piste** (par ex à l'aide d'un petit tournevis plat)  
 **Grattez la surface** **entre** **les deux pads** de soudures jusqu'à ce que le contact soit rompu (vérifier ceci à l'aide d'**un multimètre**)

[![image-1593679699671.png](https://doc.labsud.org/uploads/images/gallery/2020-07/scaled-1680-/image-1593679699671.png)](https://doc.labsud.org/uploads/images/gallery/2020-07/image-1593679699671.png)

[![image-1592739672087.png](https://doc.labsud.org/uploads/images/gallery/2020-06/scaled-1680-/image-1592739672087.png)](https://doc.labsud.org/uploads/images/gallery/2020-06/image-1592739672087.png)

## <iframe allowfullscreen="allowfullscreen" height="314" src="//www.youtube.com/embed/VhU-bXgKgZ0" width="560"></iframe>



## Soudure des composants

Ici rien de bien compliquer, le sens de chaque module est indiqué sur le PCB.

<p class="callout success">Vous pouvez utiliser des broches 2.54mm femelles si vous voulez pouvoir retirer les modules (mais cela augmentera la hauteur des modules)  
Pour l'afficheur c'est plus embêtant vu qu'il ne sera pas soutenu correctement.</p>

<p class="callout danger">J'attends de recevoir les composants pour souder les PCB restants et documenter la fabrication</p>

# Programmation

La programmation de la carte est relativement simple,

Vous pouvez télécharger la dernier version ici  
Code : [https://github.com/usini/m1d1\_36/releases](https://github.com/usini/m1d1_36/releases)

### Bibliothèques

Toutes les bibliothèques peuvent s'installer à l'aide du gestionnaire de bibliothèques

<div id="bkmrk-acebutton-%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0">- **AceButton** (Brian Park - MIT [https://github.com/bxparks/AceButton](https://github.com/bxparks/AceButton))
- **MIDIUSB** (Arduino, Gary Grewa - GNU v2.1 [https://www.arduino.cc/en/Reference/MIDIUSB](https://www.arduino.cc/en/Reference/MIDIUSB))
- **Adafruit** **SSD1306** (Adafruit Industries - BSD Licence [ https://github.com/adafruit/Adafruit\_SSD1306](https://github.com/adafruit/Adafruit_SSD1306))
- **Adafruit** **MPR121** (Adafruit Industries - BSD Licence [https://github.com/adafruit/Adafruit\_MPR121 ](https://github.com/adafruit/Adafruit_MPR121))

</div>## Téléversement

Choisissez la carte Arduino Micro, **le port correspondant** à votre carte et appuyez sur **téléverser**.

[![image-1592740064079.png](https://doc.labsud.org/uploads/images/gallery/2020-06/scaled-1680-/image-1592740064079.png)](https://doc.labsud.org/uploads/images/gallery/2020-06/image-1592740064079.png)

<p class="callout warning">Les Arduino Micro ont parfois du mal à être programmer car elle change de port série (COM sous Windows) avant que le programme se copie.  
Si c'est le cas appuyez sur le bouton RESET après avoir lancer le téléversement.</p>

Si vous n'arrivez pas à la programmer, vous pouvez vérifier que la programmation se passe bien en changeant ce paramètre dans **les préférences**

[![image-1592740199422.png](https://doc.labsud.org/uploads/images/gallery/2020-06/scaled-1680-/image-1592740199422.png)](https://doc.labsud.org/uploads/images/gallery/2020-06/image-1592740199422.png)

## Configuration

Il est possible de changer les notes des pads (**capNote**) dans l'onglet **settings.h** ainsi que les valeurs CC (Control Change) des boutons et des potentiomètres.

- [https://newt.phys.unsw.edu.au/jw/notes.html](https://newt.phys.unsw.edu.au/jw/notes.html)
- [https://www.midi.org/specifications-old/item/table-3-control-change-messages-data-bytes-2](https://www.midi.org/specifications-old/item/table-3-control-change-messages-data-bytes-2)

[![image-1592740257795.png](https://doc.labsud.org/uploads/images/gallery/2020-06/scaled-1680-/image-1592740257795.png)](https://doc.labsud.org/uploads/images/gallery/2020-06/image-1592740257795.png)[![image-1592824427419.png](https://doc.labsud.org/uploads/images/gallery/2020-06/scaled-1680-/image-1592824427419.png)](https://doc.labsud.org/uploads/images/gallery/2020-06/image-1592824427419.png)

[![image-1593680020114.png](https://doc.labsud.org/uploads/images/gallery/2020-07/scaled-1680-/image-1593680020114.png)](https://doc.labsud.org/uploads/images/gallery/2020-07/image-1593680020114.png)

# Points à améliorer