Binome2022-8 : Différence entre versions

De Wiki de bureau d'études PeiP
(Rendus)
(Rendu)
 
(17 révisions intermédiaires par 2 utilisateurs non affichées)
Ligne 15 : Ligne 15 :
 
et les resistance microcontroleur liées au pcb
 
et les resistance microcontroleur liées au pcb
  
[[Fichier:screenschemakicad.png|1000px]]
+
[[Fichier:screenschemakicad.png|500px|left]]
[[Fichier:screenskicad2.png|1000px]]
+
[[Fichier:screenskicad2.png|500px|right]]
 +
<div style="clear: both;"></div>
  
 +
Une fois la carte imprimer nous avons soudé nos composants puis verifié si la carte était opérationnelle. Nous avons eu un leger problème de led soudé a l'envers mais a part ca tous fonctionnait. Nous sommes donc passé au code.
  
  
Une fois la carte imprimer nous avons soudé nos composants puis verifié si la carte était opérationnelle. Nous avons eu un leger problème de led soudé a l'envers mais a part ca tous fonctionnait. Nous sommes donc passer au code.
+
[[Fichier:photo_carte.jpg|600px|center]]
  
  
  
[[Fichier:photo_carte.jpg|1000px]]
+
Sur cette petite carte nous avons pu faire un code basique permettant d'allumer nos leds et les faires changer de couleurs quand nos touches sont appuyé.
  
 
 
Sur cette petite carte nous avons pu faire un code basique permettant d'allumer nos leds et les faires changer de couleurs quand nos touches sont appuyé ( ajouter photo du code
 
  
 
[[Fichier:code_first.png|500px]]
 
[[Fichier:code_first.png|500px]]
  
[[Fichier:vid_carte.MOV]]
+
Démonstration : [[Media:vid_carte.MOV]]
  
 
=<div class="mcwiki-header" style="border-radius: 15px; padding: 15px; font-weight: bold; color: #FFFFFF; text-align: center; font-size: 80%; background: #c87777; vertical-align: top; width: 98%;"> Carte finale </div>=
 
=<div class="mcwiki-header" style="border-radius: 15px; padding: 15px; font-weight: bold; color: #FFFFFF; text-align: center; font-size: 80%; background: #c87777; vertical-align: top; width: 98%;"> Carte finale </div>=
Ligne 42 : Ligne 41 :
  
 
En tout nous avons 20 pates disponible, nous en gardons 2 pour TR-RX et donc 3 pour le tlc. (à verfier avec les profs)
 
En tout nous avons 20 pates disponible, nous en gardons 2 pour TR-RX et donc 3 pour le tlc. (à verfier avec les profs)
Il nous en reste donc 15 disponibles ce qu gèrent 49 touches.
+
Il nous en reste donc 15 disponibles ce qu gèrent 49 touches. ( à verifier aussi)
  
Un TLC a 24 pates ce qui nous donne 8 leds. Il nous faudrait donc soit 8 TLC ce qui nous parrait beaucoup soit une led pour deux touches ce qui nous amène donc a 4 TLC ce qui nous parrait plus resonnable. Mais il faudrait d'abord verifier que 1leds our deux touches permte un retro-éclairage satisfaisant.
+
Un TLC a 24 pates ce qui nous donne 8 leds. Il nous faudrait donc soit 8 TLC ce qui nous parrait beaucoup soit une led pour deux touches ce qui nous amène donc a 4 TLC ce qui nous parrait plus resonnable. Mais il faudrait d'abord verifier que 1 leds pour deux touches permet un retro-éclairage satisfaisant.
 +
 
 +
 
 +
 
 +
séance du 30 mars :
 +
avancé du schéma kicad. reste à verifier pour les TLC comment relier et mettre plus de switcj. Associer les footprint et ensuite faire le rootage. attention au placement des leds ( plus proche des switchs)
 +
 
 +
31 mars : avancé du schéma : mise en matrice des switch ( a verifier) et connexion du tld ( a verifier aussi)
 +
 
 +
prochaine fois : faire tout verifier et footprint puis ensuite routage
  
 
=<div class="mcwiki-header" style="border-radius: 15px; padding: 15px; font-weight: bold; color: #FFFFFF; text-align: center; font-size: 80%; background: #c87777; vertical-align: top; width: 98%;"> Liste de composant utilisé </div>=
 
=<div class="mcwiki-header" style="border-radius: 15px; padding: 15px; font-weight: bold; color: #FFFFFF; text-align: center; font-size: 80%; background: #c87777; vertical-align: top; width: 98%;"> Liste de composant utilisé </div>=
  
Réaliser un petit clavier test pour faire un petit pcb : - 1 ou 2 switch mécanique hotswap (eventuellement avec led RGB), Keycaps, De quoi réaliser le pcb (microcontrolleur, sortie USB etc...)
+
Réaliser un petit clavier test pour faire un petit pcb : 1 ou 2 switch mécanique hotswap (eventuellement avec led RGB), Keycaps, De quoi réaliser le pcb (microcontrolleur, sortie USB etc...)
  
  
Ligne 64 : Ligne 72 :
 
= Lien d'accès aux photos et vidéo additionnels =
 
= Lien d'accès aux photos et vidéo additionnels =
  
= Rendus =
+
=<div class="mcwiki-header" style="border-radius: 15px; padding: 15px; font-weight: bold; color: #FFFFFF; text-align: center; font-size: 80%; background: #c87777; vertical-align: top; width: 98%;"> Rendu </div>=
  
 
[[media:binome8.zip]]
 
[[media:binome8.zip]]
  
= Conclusion =
+
 
 +
#include <stdio.h>
 +
#include <avr/io.h>
 +
#include <util/delay.h>
 +
#include "tlc5947.h"
 +
 +
#define LED_DIR DDRB
 +
#define LED_PORT PORTB
 +
#define LED_BIT 5
 +
#define SW1 7
 +
#define SW2
 +
#define SW3 7
 +
#define SW7 0
 +
#define SW10
 +
#define SW13 0
 +
#define SW16
 +
#define SW17 0
 +
 +
int main(void)
 +
{
 +
CLKSEL0 = 0b00010101;  // sélection de l'horloge externe
 +
CLKSEL1 = 0b00001111;  // minimum de 8Mhz
 +
CLKPR = 0b10000000;    // modification du diviseur d'horloge (CLKPCE=1)
 +
CLKPR = 0;
 +
LED_DIR |= (1<<LED_BIT);
 +
#if 0
 +
while(1){
 +
  LED_PORT ^= (1<<LED_BIT);
 +
  _delay_ms(100);
 +
  }
 +
#endif
 +
unsigned int pwm[DLED_CHANNELS];
 +
init_LED_Drivers(1);
 +
int l=500;
 +
for(int i=0;i<DLED_CHANNELS;i++) pwm[i]=l;
 +
set_LED_Drivers(pwm,1);
 +
 
 +
return 0;
 +
}
 +
 +
if (digitalRead(SW2) == 0)
 +
        // teste si le bouton a une valeur de 1
 +
        // ...on allume la LED
 +
    {
 +
        analogWrite(RED2, 125);  // allume la LED
 +
        analogWrite(GREEN2, 255);
 +
        analogWrite(BLUE2, 125);
 +
        delay(100);
 +
    }
 +
[[Fichier:BE1.jpeg|200px|thumb|left|Aperçu du clavier final]]
 +
[[Fichier:BE2.jpg|200px|thumb|left|Aperçu du clavier final]]
 +
[[Fichier:BE3.jpg|200px|thumb|left|Aperçu du clavier final]]
 +
 
 +
=<div class="mcwiki-header" style="border-radius: 15px; padding: 15px; font-weight: bold; color: #FFFFFF; text-align: center; font-size: 80%; background: #c87777; vertical-align: top; width: 98%;"> Conclusion</div>=

Version actuelle datée du 18 mai 2023 à 00:20

Introduction

L'objectif de ce BE est de réaliser complètement un clavier mecannqiue 60% avec des leds. Pour cela nous devons d'abord réaliser un PCB de clavier mécanique comportant les switchs mécaniques ainsi que des leds. Nous pourrons ensuite coder celui-ci pour eventuellement lancer une application ou agir sur des fonctions multiples comme le changement de couleur des leds et fonctions multi-média grâce à des combinaisons de touches.

Première carte

Pour commencer nous avons donc réaliser une petite carte, petit PCB, pour tester notre projet avec nos switch, nos led et nos autres composant.(rajouter photo et de la carte) nous avons tous d'abords etablie la liste de nos composant :

   boutons pressions "Glorious Kailh Switches x120 (Noir)" (voir LDLC, en stock à l'école) ;
   LED RGB ;
   ATtiny84
   connecteur USB

et les resistance microcontroleur liées au pcb

Screenschemakicad.png
Screenskicad2.png

Une fois la carte imprimer nous avons soudé nos composants puis verifié si la carte était opérationnelle. Nous avons eu un leger problème de led soudé a l'envers mais a part ca tous fonctionnait. Nous sommes donc passé au code.


Photo carte.jpg


Sur cette petite carte nous avons pu faire un code basique permettant d'allumer nos leds et les faires changer de couleurs quand nos touches sont appuyé.


Code first.png

Démonstration : Media:vid_carte.MOV

Carte finale

Une fois la première carte finalisé nous pouvons passer à la carte finale. Nous devons d'abords determiner combien de touches on peut gérer avec 1 micro processeur. Dans le cas idéale nous voudronsfaire 64 touches et 64 leds. Pour gerer nos leds nous allons utiliser un TLC5947

En tout nous avons 20 pates disponible, nous en gardons 2 pour TR-RX et donc 3 pour le tlc. (à verfier avec les profs) Il nous en reste donc 15 disponibles ce qu gèrent 49 touches. ( à verifier aussi)

Un TLC a 24 pates ce qui nous donne 8 leds. Il nous faudrait donc soit 8 TLC ce qui nous parrait beaucoup soit une led pour deux touches ce qui nous amène donc a 4 TLC ce qui nous parrait plus resonnable. Mais il faudrait d'abord verifier que 1 leds pour deux touches permet un retro-éclairage satisfaisant.


séance du 30 mars : avancé du schéma kicad. reste à verifier pour les TLC comment relier et mettre plus de switcj. Associer les footprint et ensuite faire le rootage. attention au placement des leds ( plus proche des switchs)

31 mars : avancé du schéma : mise en matrice des switch ( a verifier) et connexion du tld ( a verifier aussi)

prochaine fois : faire tout verifier et footprint puis ensuite routage

Liste de composant utilisé

Réaliser un petit clavier test pour faire un petit pcb : 1 ou 2 switch mécanique hotswap (eventuellement avec led RGB), Keycaps, De quoi réaliser le pcb (microcontrolleur, sortie USB etc...)


Pour la première carte :

  • boutons pressions "Glorious Kailh Switches x120 (Noir)" (voir LDLC, en stock à l'école) ;
  • LED RGB ;
  • ATtiny84.

Voir si les boutons pressions en stock conviennent. Permettent-il d'installer des LED ? Si oui lesquelles.

Ne pas oublier le connecteur ISP (2x3 broches, espacement 2,54mm) pour programmer l'ATtiny84 et le connecteur USB (https://www.sparkfun.com/products/587) pour alimenter la carte.

Vous pouvez commencer à concevoir le schéma du premier circuit.

Lien d'accès aux photos et vidéo additionnels

Rendu

media:binome8.zip


#include <stdio.h>
#include <avr/io.h>
#include <util/delay.h>
#include "tlc5947.h"

#define LED_DIR DDRB
#define LED_PORT PORTB
#define LED_BIT 5
#define SW1 7
#define SW2 
#define SW3 7
#define SW7 0
#define SW10
#define SW13 0
#define SW16
#define SW17 0

int main(void)
{
CLKSEL0 = 0b00010101;   // sélection de l'horloge externe
CLKSEL1 = 0b00001111;   // minimum de 8Mhz
CLKPR = 0b10000000;     // modification du diviseur d'horloge (CLKPCE=1)
CLKPR = 0;
LED_DIR |= (1<<LED_BIT);
#if 0
while(1){
  LED_PORT ^= (1<<LED_BIT);
  _delay_ms(100);
  }
#endif
unsigned int pwm[DLED_CHANNELS];
init_LED_Drivers(1);
int l=500;
for(int i=0;i<DLED_CHANNELS;i++) pwm[i]=l;
set_LED_Drivers(pwm,1);
 
return 0;
}

if (digitalRead(SW2) == 0)
       // teste si le bouton a une valeur de 1
       // ...on allume la LED
   {
       analogWrite(RED2, 125);  // allume la LED
       analogWrite(GREEN2, 255);
       analogWrite(BLUE2, 125);
       delay(100);
   }
Aperçu du clavier final
Aperçu du clavier final
Aperçu du clavier final

Conclusion