« I2L 2025 Groupe6 » : différence entre les versions

De wiki-se.plil.fr
Aller à la navigation Aller à la recherche
Ligne 70 : Ligne 70 :
* Allumer une LED et actionner un bouton poussoir  
* Allumer une LED et actionner un bouton poussoir  
* Allumer une LED avec l'Horloge avec le changement '''F_CPU à 8Mgh (8000000UL):''' Exemple : '''5s en ON et 5s en OFF'''
* Allumer une LED avec l'Horloge avec le changement '''F_CPU à 8Mgh (8000000UL):''' Exemple : '''5s en ON et 5s en OFF'''
'''Séance du 16/10/2025 :'''
Nous avons allumer les 4 Leds qui représente la maison avec un bouton qui allume et éteint un Led qui représente la chambre ou la douche ou salon.
Le but est de faire en sorte que chaque pièce possède son propre interrupteur.
Voici les différents code qui fait fonctionner ça :
{{Code|// Fichier config pour definir les Leds et les Boutons
#ifndef CONFIG_H
#define CONFIG_H
#define F_CPU 8000000UL
// LEDs
#define LED1 PB1
#define LED2 PB2
#define LED3 PB7
#define LED4 PE6
// Boutons
#define B1 PB3
#define B2 PC6
#define B3 PC7
#define B4 PF1
#define B5 PF4
#include <avr/io.h>
#include <util/delay.h>
#endif|2=// CODE POUR LES BOUTONS EN .h et .c
#ifndef BOUTONS_H
#define BOUTONS_H
#include "config.h"
void boutons_init();
uint8_t bouton_is_pressed(volatile uint8_t *pin_reg, uint8_t pin);
#endif
#include "../include/boutons.h"
// Configure les boutons en entrée avec Pull-up activée
void boutons_init() {
    DDRB &= ~(1 << B1);  PORTB {{!}}= (1 << B1);  // B1 sur PB3
    DDRC &= ~(1 << B2);  PORTC {{!}}= (1 << B2);  // B2 sur PC6
    DDRC &= ~(1 << B3);  PORTC {{!}}= (1 << B3);  // B3 sur PC7
    DDRF &= ~(1 << B4);  PORTF {{!}}= (1 << B4);  // B4 sur PF4
}
// Retourne 1 si bouton pressé (actif bas)
uint8_t bouton_is_pressed(volatile uint8_t *pin_reg, uint8_t pin) {
    if (!(*pin_reg & (1 << pin))) {
        _delay_ms(50); // Anti-rebond
        if (!(*pin_reg & (1 << pin))) {
            return 1;
        }
    }
    return 0;
}}}


= Rendus (étudiants) =
= Rendus (étudiants) =

Version du 16 octobre 2025 à 11:57

Proposition de système (étudiants)

L’idée de mon projet est de créer un système de contrôle par détection de mouvement pour la sécurité de ma maison. Une LED clignotera en rouge en cas de détection (sur une certaine portée) et un signal sonore sera émis par un haut-parleur pendant une durée déterminée ; ce signal pourra être arrêté par un bouton tout géré par le microcontrôleur. Éventuellement, la maison (Type T3 donc 4 Leds pour les chambres, salon et la douche complet) pourra aussi être contrôlée pour allumer/éteindre les lumières par claquement de doigts et/ou par un bouton.

  • Chaque chambre sera représentée par une LED pour allumer/éteindre
  • Le salon et la douche pareille
  • UN écran LCD pour afficher les informations (alarme déclenchée/éteinte et pareil pour la maison)

Contre-proposition (intervenant)

La carte doit pouvoir fonctionner avec la batterie en mode autonome (si les capteurs peuvent être alimentés en 3,3V).

Pour le mode connecté au PC par USB les informations de présence et de contrôle de l'éclairage doivent être remontées au PC (classe USB "vendeur"). Le PC affiche un plan de la maison (un seul étage) avec les indications de détection de présence et d'éclairage allumé ou éteint dans les différentes pièces.

Proposition définitive (étudiants)

Le système utilisera un microcontrôleur alimenté par batterie (3,3V ou 5V) en mode autonome, avec :

  • Capteur PIR HC-SR501 → détection de mouvement et déclenchement LED rouge + alarme sonore.
  • Bouton poussoir → arrêt manuel de l’alarme.
  • Simulation d’un T3 avec 4 LEDs pour les pièces (chambres, salon, douche) contrôlables par boutons et capteur sonore (claquement de doigts).
  • Écran LCD pour afficher les états : présence détectée, alarme ON/OFF, éclairage ON/OFF.

En mode USB connecté au PC (classe USB type "vendor") :

  • Les informations de présence et d’éclairage sont envoyées au PC.

Le PC affiche un plan simple de la maison avec indication en temps réel des pièces éclairées ou détectées.

Répartition du travail (étudiants)

Les les tâches sont repartie pour moi et donc seront divisé comme suit :

  • Tester la carte, allumer une LED et tester un bouton aussi
  • Allumer et éteindre les chambres avec les boutons
  • Allumer les informations dans l'écran LCD
  • Bouton pour arrêter l'alarme
  • Contrôler la maison avec le claquement de doigt pour allumer tout les chambres ou les éteindre.
  • Attaque pour les détecteurs de mouvements par chambre pour la maison
  • Partie graphique en python pour afficher la maison avec différents couleurs pour différencier les chambres et salon

Carte

Schéma initial (étudiants)

Schéma de la carte

Carte routée (intervenant)

Vous utiliserez la carte avec batterie.

Composants (intervenant)

Carte réalisée (intervenant)

Photo de la carte

La carte est entiérement soudée à l'exception d'un connecteur 16 broches pour l'écran (effectué le 10 octobre 2025).

A noter : les détecteurs de mouvement sont sur les mêmes lignes que les boutons. Il faut donc faire des tests pour arriver à distinguer la pression sur un bouton et la détection d'un mouvement (si possible).

Travaux (étudiants)

Séance 13/10/2025 :

  • Lecteur en USB avec lsusb pour voir sur le terminal si la carte est connecté ou pas.
  • Prise en contact avec le matériel en particulier la Carte
  • Allumer une LED et actionner un bouton poussoir
  • Allumer une LED avec l'Horloge avec le changement F_CPU à 8Mgh (8000000UL): Exemple : 5s en ON et 5s en OFF


Séance du 16/10/2025 :

Nous avons allumer les 4 Leds qui représente la maison avec un bouton qui allume et éteint un Led qui représente la chambre ou la douche ou salon.

Le but est de faire en sorte que chaque pièce possède son propre interrupteur.

Voici les différents code qui fait fonctionner ça :

// Fichier config pour definir les Leds et les Boutons 
#ifndef CONFIG_H
#define CONFIG_H

#define F_CPU 8000000UL

// LEDs
#define LED1 PB1
#define LED2 PB2
#define LED3 PB7
#define LED4 PE6

// Boutons
#define B1 PB3
#define B2 PC6
#define B3 PC7
#define B4 PF1
#define B5 PF4

#include <avr/io.h>
#include <util/delay.h>

#endif

}

Rendus (étudiants)

Projet KiCAD : Fichier:I2L-2025-Carte-G6-final.zip

Programmes :