Hello World !
Petit addendum avant de commencer cet article, cela fait au moins 6 mois est classé dans les brouillons du blog. J’aurai aimé ajouter des photos de mon travail de prototypage, mais pas moyen de les retrouver… 🙁
Les tests unitaires sur Aquila Reloaded sont terminés, comme vous avez pu le voir au cours du chapitre précédent.
Il est temps de passer aux choses sérieuses : créer un circuit imprimé ! Mais avant toute chose, il va falloir vérifier la faisabilité technique de mes fonctions et commencer à avancer sur le développement du code.
Pinout de l’Arduino Nano
Alors autant le dire tout de suite, faire rentrer toutes les fonctions que je souhaite mettre en place sur un Arduino Nano, c’est tricky vu le faible nombre de broches d’entrées/sorties à disposition.
J’ai proposé une première approche que voici :
Pin | Fonction | Connecté à | Broche | Commentaire |
---|---|---|---|---|
D0 | RX | Reception DMX | - | Prévoir cavalier pour isolation |
D1 | TX | Emission DMX | - | Prévoir cavalier pour isolation |
D2 | Digital | Moteur Pan | 1 | Compatible Interruption |
D3 | PWM (timer 2) | Power LED 1 | 3 | Compatible Interruption |
D4 | Digital | Moteur Pan | - | |
D5 | PWM (timer 0) | Moteur Pan | 2 | |
D6 | PWM (timer 0) | Moteur Pan | 4 | |
D7 | Digital | Moteur Color | 1 + 3 | |
D8 | Digital | Moteur Color | 2 + 4 | |
D9 | PWM (timer 1) | Moteur Tilt | 1 | |
D10 | PWM (timer 1) | Moteur Tilt | 3 | |
D11 | PWM (timer 2) | Moteur Tilt | 2 | |
D12 | Digital | Moteur Tilt | 4 | |
D13 | Digital + LED (timer 0) | LED Témoin | - | |
A0 | Analogique | Microphone analogique ou numérique | - | |
A1 | Analogique | Moteur Gobo | 1 + 3 | |
A2 | Analogique | Moteur Gobo | 2 + 4 | |
A3 | Analogique | DIP Switch | 1 + 2 | |
A4 | Analogique | DIP Switch | 3 + 4 | |
A5 | Analogique | DIP Switch | 5 + 6 | |
A6 | Analogique | DIP Switch | 7 + 8 | Analogique uniquement |
A7 | Analogique | DIP Switch | 9 + 10 | Analogique uniquement |
Toutes les broches sont utilisées, on est obligé d’utiliser quelques astuces pour économiser le nombre de broches :
- Adressage des moteurs PAP « Gobo » et « Color » avec l’astuce de câblage expliquée au chapitre 2 , ce qui ne consomme que 2 broches au lieu de 4. On perd en précision mais ce n’est pas trop grave.
- Une broche compatible Analogique et Numérique pour capter le signal audio (mais n’est pas compatible Interrupt)
- Systèmes de pont de résistances pour câbler 2 interrupteurs sur une broche analogique : les interrupteurs font varier la résistance, et donc la tension lue par l’Arduino.
Je suis obligé de faire l’impasse sur les CTN, sur le contrôle PWM / monitoring des ventilateurs, et sur des témoins LED supplémentaires.
Arduino Mega : oui mais pas la version standard !
« Mais pourquoi tu ne prends pas un Arduino Mega ?! » Réponse simple : il est gros… trop gros par rapport au circuit imprimé de l’Aquila. il prendrait plus de la moitié de la surface à lui tout seul.
Je pourrais construire mon circuit sous forme d’un « shield » Arduino Mega, mais cela risque de faire trop épais pour rentrer dans l’habitacle… pas facile…
J’ai donc cherché un modèle d’Arduino Méga miniature, et j’ai jeté mon dévolu sur ce modèle : il n’a pas un brochage standard, mais est bien plus petit ! Et il est prévu pour de l’électronique embarquée. Bingo !
Vous pouvez le trouver sur Aliexpress pour moins de 8€.
Sélection des broches : attention aux fonctions supportées !
Comme nous l’avons vu dans les chapitres précédents, chaque fonctionnalité de notre Aquila Reloaded nécessite des broches spécifiques. Il va donc falloir faire une sélection.
Compatibilité numérique pour les moteurs PAP
Sur un Arduino Mega, toutes les broches sont compatibles Numériques, y compris les Analogiques, on a l’embarras du choix !
Compatibilité « INPUT_PULLUP » pour les DIP Switchs
Facile, sur un Arduino Mega, toutes les broches, y compris les analogiques, sont compatibles PULLUP ! On peut câbler notre DIP Switch sur n’importe quelle broche.
Compatibilité PWM pour les LED de puissance
L’Arduino Mega dispose de 12 broches compatibles PWM (dont la LED Interne). Elles sont réparties sur 5 timers.
- timer0 : broches 4 et 13
- timer1 : broches 11 et 12
- timer2 : broches 9 et 10
- timer3 : broches 2, 3 et 5
- timer4 : broches 6, 7 et 8
A savoir cependant que les broches 4 et 13 étant sur le timer0, on va éviter de les utiliser pour les LED. Pourquoi ? Car changer la fréquence PWM de timer0 impacte également les fonctions internes de l’Arduino (delay ou millis par exemple).
Compatibilité PWM pour le contrôle de la vitesse des ventilateurs
Idem que pour les LED de puissance, on va éviter d’utiliser timer0. On évitera aussi d’utiliser des broches ayant le même timer que les LED, pour pouvoir changer la fréquence PWM indépendamment.
Compatibilité Interrupt pour le monitoring de la vitesse des ventilateurs et pour le capteur de bass
L’Arduino Mega dispose de 6 broches « Interrupt » : 2, 3, 18, 19, 20 et 21.
On va éviter d’utiliser les broches 18 et 19, car ce sont des broches compatibles avec la librairie DMXSerial.
Compatibilité analogique pour le monitoring de température
A vrai dire, pourquoi je parle de ça… c’est forcément compatible ! 😉
Réalisation des tests
Pour tester mon circuit en « grandeur nature » sur une plaque expérimentale, il va falloir créer un déport. Du coup j’ai récupéré un vieux câble d’imprimante en port parallèle. La densité de fils disponible rend possible la connexion des 4 moteurs pas à pas. J’ai soudé des connecteurs DIL Male aux extrémités des fils, et j’ai inséré le câble dans le châssis de l’Aquila au travers de l’emplacement des DIP Switchs.
Idem, j’ai passé un câble pour l’alimentation des moteurs et de la LED de puissance.
Malheureusement, je ne retrouve pas les photos de mon travail… Je ne peux que vous laisser imaginer… 🙁
Next step, mettre tout ça sur circuit imprimé 😉