I2L 2025 Groupe5
Proposition de système (étudiants)
Un début d'ordinateur connecté à un clavier USB. Il permet de récupérer les inputs du clavier afin de les afficher sur l'écran LCD du microcontrôleur.
Contre-proposition (intervenant)
Il ne vous est pas demandé de faire en sorte que votre carte soit utilisable comme un périphérique USB. En effet vous devrez déjà utiliser la bibliothèque LUFA pour récupérer les informations du clavier USB.
Il est par contre demandé que :
- votre carte puisse fonctionner en autonomie à l'aide de la batterie, en mode recharge vous afficherez la progression de la dite recharge ;
- vous utiliserez un écran LCD avec 4 lignes de 20 caractères.
Proposition définitive (étudiants)
Répartition du travail (étudiants)
Carte
Schéma initial (étudiants)
- schéma (projet KiCAD) : Fichier:I2L-2025-Carte-G5.zip
Carte routée (intervenant)
Vous utiliserez la carte AVR7 spécifique à votre projet.
Composants (intervenant)
A la date du 9 octobre 2025, il manque l'inductance de 10 microhenry pour que le releveur de tension puisse fonctionner.
A la date du 10 octobre 2025, une inductance a été soudée mais l'empreinte n'est vraiment pas adaptée, il faudra peut-être revoir ce point. En tout cas vérifier la présence de 5V en sortie du releveur de tension.
Carte réalisée (intervenant)
La carte est entiérement soudée à l'exception de l'inductance de 10mH (effectué le 10 octobre 2025).
Travaux (étudiants)
Lors de nos premiers tests, nous avons essayé de faire clignoter une LED en réglant l'horloge. Puis nous avons essayé de faire en sorte que lorsqu'on appuie sur un bouton la LED en PB5, en mode interruption. Mais le problème avec le mode interruption sur un bouton: lorsque le bouton est pressé, le bouton envoie un signal qui n'est pas fixe, il fluctue, ce qui ne permet pas à la LED de s'allumer.
Les boutons sur la carte ne permet donc pas de travailler en interruption.
Mais avec ce code:
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
#define LED PB5
#define BOUTON PF0
ISR(INT2_vect){
PORTB |= (1 << LED);
}
ISR(INT3_vect){
PORTB &= ~(1 << LED);
}
int main(void){
CLKPR = 0b10000000; // modification du diviseur d'horloge (CLKPCE=1)
CLKPR = 0; // 0 pour pas de diviseur
// Conf LED
DDRB |= (1 << LED);
// Conf Bouton
DDRF &= ~(1 << BOUTON);
PORTF |= (1 << BOUTON);
DDRD &= ~((1 << PD2)|(1 << PD3));
PORTD |= (1 << PD2)|(1 << PD3);
EICRB |= (1 << ISC21)|(1 << ISC31);
EICRB &= ~((1 << ISC20)|(1 << ISC30));
EIFR |= (1 << INTF2)|(1 << INTF3);
EIMSK |= (1 << INT2)|(1 << INT3);
sei();
while(1);
return 0;
}
Le fait de créer un pont entre la masse et TX, cela éteint la LED en PB5 et créer un pont entre la masse et RX, cela allume la LED en PB5. (vidéo exemple):
Extraits significatifs de code (étudiants)
Rendus (étudiants)
Projet KiCAD : Fichier:I2L-2025-Carte-G5-final.zip
Programmes :
- microcontrôleur : Fichier:I2L-2025-Programmes-uC-G5.zip
- ordinateur Fichier:I2L-2025-Programmes-PC-G5.zip