SE3Groupe2024-2

De projets-se.plil.fr
Aller à la navigation Aller à la recherche

Description

Objectif

L'objectif de ce projet est de concevoir une station domotique capable de collecter et d'afficher des mesures provenant de capteurs. Elle devra également être capable d'activer des actionneurs, tels que des LEDs, des cadenas ou tout autre dispositif, en fonction des besoins.

Cahier des charges

La station domotique devra permettre l'affichage des informations suivantes concernant une pièce :

  • Température ambiante ;
  • Taux d'humidité ;
  • Présence humaine (via capteur de mouvement) ;
  • D'autres paramètres pourront être ajoutés en fonction de l'avancement du projet.

Elle devra aussi permettre de contrôler différents actionneurs dans la pièce, tels que :

  • L'éclairage, en fonction de la présence d'une personne (via un capteur de mouvement) ;
  • D'autres dispositifs pourront être intégrés en fonction des besoins.

Des capteurs et actionneurs supplémentaires pourront être ajoutés si le projet atteint ses objectifs initiaux.

Spécification techniques

Microcontrôleur

Le projet nécessite un microcontrôleur, qui contiendra le programme, et qui communiquera avec les autres composants via les GPIOs.

Nous avons le choix entre plusieurs modèles de microcontrôleur : ATmega16u4, AT90USB1286, AT90USB1287.

Voici un tableau comparatif afin de sélectionner le plus adapté pour notre usage :

Caractéristiques ATmega16U4 AT90USB1286 AT90USB1287
Architecture AVR 8 bits AVR 8 bits AVR 8 bits
Mémoire Flash 16 KB 128 KB 128 KB
RAM (SRAM) 1.25 KB 4 KB 4 KB
EEPROM 512 Bytes 4 KB 4 KB
Fréquence d'horloge max. 16 MHz 16 MHz 16 MHz
Nombre de broches GPIO 26 48 48
Interfaces de communication UART, SPI, I²C, USB 2.0 UART, SPI, I²C, USB 2.0 UART, SPI, I²C, USB 2.0
Contrôleur USB intégré Oui (USB 2.0) Oui (USB 2.0) Oui (USB 2.0)
Taille des registres 8 bits 8 bits 8 bits
Nombre de broches 32 64 64
Différences principales Conçu pour des applications compactes avec

moins de mémoire et d'E/S

Plus de mémoire, adapté à des projets complexes nécessitant de nombreuses E/S et de la mémoire Similaire au AT90USB1286 mais avec des fonctionnalités spécifiques

pour certaines configurations USB (e.g., modes host/OTG).

Lien documentation https://www.microchip.com/en-us/product/atmega16u4 https://www.microchip.com/en-us/product/at90usb1286 https://www.microchip.com/en-us/product/at90usb1287

Avec ce tableau, on constate que l'ATmega16U4 ne possède pas suffisamment de broches GPIOs. Cependant l'AT90USB1286 et son homologue l'AT90USB1287 dépassent notre cadre d'usage (utilisation mode USB spécifique HOST/OTG, etc... ).

Le compromis est donc d'opter pour un ATmega32u4 afin d'avoir suffisamment de broches et de mémoire.

Caractéristiques ATmega32U4
Architecture AVR 8 bits
Mémoire Flash 32 KB
RAM (SRAM) 2.5 KB
EEPROM 1 KB
Fréquence d'horloge max. 16 MHz
Nombre de broches GPIO 26
Interfaces de communication UART, SPI, I²C, USB 2.0
Contrôleur USB intégré Oui (USB 2.0)
Taille des registres 8 bits
Nombre de broches 32
Différences principales Conçu pour des applications nécessitant un contrôleur USB intégré, avec une mémoire et un nombre de broches intermédiaires

Datasheet ATmega32u4 :

Datasheet du microcontroleur : ATMEGA32U4

Communication

La station utilisera des puces NRF24L01 pour la communication sans fil entre les différents composants.

Lien tutoriel utilisation de puces à distance : NRF24L01

Datasheet NRF24L01 :

Datasheet module de communication : NRF24L01

Énergie

La station sera alimentée de manière hybride, selon les scénarios suivants :

  • Par un port USB, pour la programmation, les tests et la configuration avec affichage sur moniteur PC ;
  • Par une batterie Lithium, en mode autonome pour une utilisation prolongée (avec affichage écran LCD dans un second temps).

Les capteurs/actionneurs seront alimentées de manière hybride, selon les scénarios suivants :

  • Par un port USB, pour la programmation, les tests et la configuration ;
  • Par une batterie Lithium, en mode autonome pour son usage définitif.

Modèles de batterie à notre disposition :

  • Batterie 3.7V 100 mAh, connecteur molex mâle ;
  • Batterie 3.7V 300 mAh, connecteur molex mâle ;


Datasheet du chargeur et du régulateur :

Datasheet du chargeur : MAX1811
Datasheet du régulateur : LTC3531

Affichage

Dans un premier temps, les informations seront remontées via la connexion USB à un programme sur PC (selon les exigences du cahier des charges).

Dans un second temps, un écran LCD sera utilisé pour afficher les données directement sur la station, offrant ainsi une solution autonome, sous réserve du temps disponible pour cette implémentation.

Datasheet de l'écran : NHD‐C12832A1Z‐FSW‐FBW‐3V3

Diverses

La carte comportera également une led afin d'indiquer son état d'alimentation.

Lien GIT

https://gitea.plil.fr/ahouduss/se3_2024_B2.git

Programmateur AVR

Tutoriel

https://rex.plil.fr/Enseignement/Systeme/Systeme.PSE/systeme063.html

Schématique

Notre schéma électrique

Schéma original

Comprendre notre schéma

Document expliquant point par point le schéma réalisé sur KICAD

Datasheet ATmega8u2 :

Datasheet ATMEGA8U2

Aide AVR :

AVR Hardware Design Considerations

Vue 3D

MODELE 3D : Face ARRIERE originale, carte V0
MODELE 3D : Face AVANT originale, carte V0

Fichier kicad

Fichier:2024-PSE-G2-Prog.zip

Brasure

Programmation

Test leds et boutons

Afin de vérifier que notre carte fonctionne correctement après brasure, on code un programme permettant d'allumer une led périodiquement puis un autre programme allumant une led lorsqu'un bouton poussoir est pressé.

Afin de mettre le programme sur notre carte, on vérifie au préalable que notre carte est bien reconnue en tant que périphérique USB à l'aide de la commande lsusb.

Une fois notre carte détectée, on appuie sur le bouton HWB puis reset afin de mettre notre carte en mode DFU. On téléverse ensuite notre programme sur la carte à l'aide d'un makefile préalablement codé en tapant la commande make upload.

LUFA

Afin de pouvoir faire de notre carte un périphérique USB, nous allons utiliser la LUFA (Lightweight USB Framefork for AVRs).

  1. Tout d'abord, nous avons codé un programme permettant de voir si la lufa détecte bien les boutons-poussoirs de notre carte comme des points d'accès d'entrées en affichant sur le minicom quel bouton-poussoir était pressé par l'utilisateur.
  2. Notre code se trouve dans le répertoire se ci-dessous : https://gitea.plil.fr/ahouduss/se3_2024_B2/src/branch/main/01%20-%20Programmateur%20AVR/programmation/lufa-LUFA-210130-NSI/se/VirtualSerial On place la programme dans notre carte à l'aide de la commande make upload puis on lance la commande minicom afin de voir si le bouton pressé est bien affiché via la liaison série. On configure une vitesse et un flux adaptés pour le minicom.
  3. Nous avons ensuite implémenté un programme permettant d'allumer une led différente à chaque bouton-poussoir pressé.

Station

Schématique

Notre schéma électrique

Schematics V0 (manque seulement pin mais en process)

Comprendre notre schéma

Comprendre la schématique

Routage

Brasure

Programmation

Capteurs

Capteur de température

Capteur de mouvement

Actionneur

Détecteur de mouvement