SE3Binome2023-10

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

Bienvenue sur notre Wiki PSE ! Ce wiki est organisé de manière chronologique, et l'avancement est mis à jour à chaque séance.

5 Mars 2024

Nous avons choisi de concevoir un capteur de température sans fil.

Le capteur sera alimenté par une batterie, il faut donc qu'il consomme le moins possible pour maximiser l'autonomie (utilisation de sleep() d'où le nom tired-sensor pour notre projet).

Les données seront envoyées via RF (NRF24L01) à un intervalle prédéfini à un récepteur USB.

Une requête pourra être envoyée au capteur pour obtenir une lecture de la température à n'importe quel moment.

12 Mars 2024

Création d'un git pour le projet : GIT du projet

Nous allons utiliser le capteur de température MCP9700 (pas très précis mais disponible en E306).

Nous utilisons le projet exemple Radio fourni mais nous remplaçons l'atmega16u2 par un atmega16u4 pour pouvoir utiliser une thermistance pour obtenir la température (plus simple que de dialoguer avec un capteur plus complexe).

L'utilisation de l'atMega16u4 nous permettra également de lire le voltage de la batterie pour estimer son niveau de charge.

Schéma mis à jour avec l'atmega16u4

19 Mars 2024

Nous ajoutons la partie batterie, le chargeur et le capteur de température à notre schéma.

Pour le chargement de la batterie, il faut pouvoir déconnecter totalement la partie batterie du microcontrôleur (jumpers) et utiliser une prise USB séparée

Schéma mis à jour

26 Mars 2024

Finalement nous choisissons de changer le capteur de température et optons pour un TMP112 (disponible en E302) et plus précis que le MCP9700.

Nous l'ajoutons sur le schéma ainsi que des boutons Reset, HWB (DFU) et un bouton qui permettra de sortir le microcontrôleur de veille, chacun avec un pull up ou down adapté.

Schéma mis à jour

Nous commençons le routage du PCB

2 Avril 2024

Premier routage (incomplet) :

Premier routage

9 Avril 2024

Nous modifions le schéma légèrement afin de faciliter le routage, suppression de la prise série et d'une LED qui ne seront pas utilisées.

Nous ajoutons aussi un connecteur pour exposer deux pins supplémentaires de l'atmega (PF0 et PF1), ces deux pins (utilisés comme CE et CSN) en complément du port ISP permettront de relier un module NRF24L01 à notre PCB pour effectuer des tests avant de souder notre NRF24L01 directement sur le PCB (ou en cas de problème sur le NRF24L01 intégré il sera possible d'en utiliser un externe).

Le Schéma mis à jour:

Schema final

Le routage est terminé:

Routage final
PCB v1 avant
PCB v1 arrière

Nous avons choisi de placer la partie charge et gestion de la batterie sur l'arrière du PCB pour miniaturiser le PCB.

16 Avril 2024

Suite aux remarques de Monsieur Boé, nous modifions le PCB. L'interrupteur est remplacé par un jumper, nous ajoutons un condensateur de découplage pour le 3.3v du microP et modifions le connecteur de la batterie (3 pins au lieu de 2). De plus, des légendes sont ajoutées sur les jumpers qui permettent de contrôler la charge de la batterie

Les erreurs de DRC sont corrigées (les restantes concernent le silkscreen et sont à ignorer).

PCB v1.1

Fichier Gerber : Fichier:SE3-tired-sensor-GERBER.zip

Nous entamons la phase de programmation avec deux Arduinos et des modules NRF24L01 en attendant d'avoir notre PCB opérationnel.

7 Mai 2024

Notre magnifique PCB
Notre carte partiellement soudée en cours de tentative de prog ISP

Les PCB sont arrivés nous commençons la soudure des composants lors de cette séance.

Les composants minimum sont soudés, la carte n'apparait pas en USB sur l'ordinateur. Peut être que le problème est le même que pour la manette (voir wiki Louis BONNINGRE) et qu'il faut installer le bootloader et changer les fuses sur l'atmega. Nous n'arrivons pas à programmer le bootloader sur la carte, celle ci n'apparait pas. Lors de la prochaine séance nous essayerons de ressouder le Quartz à l'air chaud.

14 Mai 2024

Après le ressoudage du quartz à l'air chaud nous arrivons à modifier les fuses et flasher le bootloader sur l'AtMega avec les commandes suivantes:

avrdude -c stk500v1 -p atmega16u4 -P /dev/ttyACM0 -b 19200 -U lfuse:w:0xFF:m -U efuse:w:0xF7:m

avrdude -c stk500v1 -p atmega16u4 -P /dev/ttyACM0 -b 19200 -U flash:w:ATMega16U4-usbdevice_dfu-1_0_1.hex

Malheureusement notre carte n'est toujours pas détectée en USB. Le problème vient encore une fois du quartz, en effet comme nous alimentons notre Atmega en 3.3v (régulateur de l'autre coté de la carte) il faut utiliser un quartz de 8Mhz maximum pour pouvoir utiliser la partie USB. Après avoir échangé notre quartz 16Mhz avec un 8Mhz notre carte est bien reconnue en USB.

Programmation en USB

Nous flashons un programme blink avec dfu-programmer et la led reliée à PB4 clignote bien. Nous soudons ensuite les boutons reset et HWB, le capteur de temperature ainsi que les resistances et condensateurs nécessaires.

La led clignote bien

21 Mai 2024

Les composants soudés à l'arrière de la carte
La carte charge

Nous avons soudé le MAX1811 et les autres composants qui permettent d'utiliser la batterie.

En configurant les jumpers SELI et SELV pour notre batterie nous pouvons tester le chargement de la batterie, la led de chargement s'allume bien.

Il suffit donc de placer un jumper sur les pins Alimentation et la carte est alimentée par la batterie.

La carte est alimentée par la batterie

Avant de souder le NRF24l01 et ses composants nous allons tester le code en utilisant un module NRF24l01 externe connecté au pins que nous avons prévu, le récepteur est une Arduino avec un autre module NRF24l01

L'Arduino récepteur et le module NRF24l01 connecté à notre carte

25 Mai 2024

Nous utilisons l'IDE Arduino pour pouvoir facilement utiliser les librairies NRFLite et Wire pour le module radio et la communication I2C avec le capteur de temperature. Pour compiler le code pour notre carte (Atmega16U4 à 8Mhz) il faut modifier le fichier device.txt de l'IDE Arduino pour créer une nouvelle board en utilisant l'Arduino Leonardo (32U4 16Mhz) comme base. Il suffit ensuite de compiler en sélectionnant "Export compiled binary" et utiliser dfu-programmer pour programmer la carte.

L'Arduino UNO attend le message du (ou des) capteur(s) et affiche dans le moniteur série les informations reçues. Le capteur envoi toutes les 3 secondes sont ID, la temperature et le voltage de la batterie. Pour l'instant la temperature et le voltage de batterie ne sont pas correct. En effet la communication en I2C avec le TMP112 n'est pas encore fonctionnelle (en utilisant un scanner I2C aucun périphérique n'est reconnu), nous tenterons de ressouder le capteur lors de la prochaine séance. Le voltage de la batterie ne peux pas être récupéré car nous avons relié le signal sur le pin PB7 qui est un pin digital alors qu'il fallait le connecter au pin PF7 (pin analogique), si nous avons du temps nous essayerons de couper la piste et de souder un fil vers un des pins analogique disponible.

28 Mai 2024