Skip to content
Snippets Groups Projects
Commit bf0a0e02 authored by Lucas PICHON's avatar Lucas PICHON
Browse files

mise à jour du readme, modification d'une fonctionnalité dans le code,...

mise à jour du readme, modification d'une fonctionnalité dans le code, supression d'un fichier inutile
parent 2fbd1e5a
No related branches found
No related tags found
No related merge requests found
......@@ -4,35 +4,52 @@ Simulation d'un keyfinder
## Objectif
Ce projet a pour objectif de simuler un keyfinder en utilisant les fonctionnalités de la carte nRF52Dk de NORDIC SEMICONDUCTOR.
## Les services
Dans un premier temps, j'ai initialisé les différents services avec leurs caractéristiques pour mon keyfinder (voir fichier nommé "tableau des services").
Cette inialisation des services est faite grâce aux fichiers services.c et services.h ainsi qu'à uuid.h où sont situés les déclarations des UUID de mes differents services.
Je vais expliquer le fonctionnement des deux services les plus important :
# Comment démarrer le projet ?
Pour démarrer le projet, vous devez cloner le dépôt Git et avoir installé sur votre PC le logiciel *nRF Connect for Desktop*. Dans ce dernier, téléchargez la section *Toolchain Manager*. Une fois cela fait, rendez-vous sur la dernière version de *Visual Studio Code* pour télécharger toutes les extensions suivantes : *nRF kconfig*, *nRF DeviceTree*, *nRF Terminal*, *nRF Connect for VS Code* et *nRF Connect for VS Code Extension Pack*. Une fois tout ceci fait, ouvrez le projet grâce à l'extension nRF Connect, puis créez un build pour compiler le projet (choisissez le modèle pour la carte : nRF52Dk52832). Enfin, appuyez sur le bouton *flash* pour téléverser le programme sur la carte.
1 - Le service Alert
Pour disposer de toutes les fonctionnalités du projet, entre autre les différents services, vous devez également avoir l'application nRF Connect sur votre téléphone.
Il contient les caractéristiques Buzzer et LED. Les structures correspondantes à ces caractéristiques valent 0x00 si elles ne sont pas actives et 0x01 si elles le sont.
Pour simuler le Buzzer sur la carte, j'utilise la LED1 en augmentant petit à petit sa luminiosité.
Le LED2 permet de simuler la LED du keyfinder.
# Les fonctionnalités
Les fonctionnalités proposées par mon application sont des simulations simples d'un keyfinder.
2 - Le service Interact
**Fonctionnalité 1 : simulation du bouton du téléphone portable**
Lorsque l'on veut retrouver le keyfinder grâce à son téléphone, on appuie sur un bouton sur notre téléphone, et ainsi notre keyfinder se met à sonner. Alors, pour simuler le bouton, j'ai implémenté un service nommé *Interact* qui contient une caractéristique bouton qui prend deux valeurs : 0x00 lorsque l'on ne cherche pas le keyfinder et 0x01 lorsqu'on le cherche. C'est ce bouton qui me permet de réaliser la première fonctionnalité.
Il contient les caractéristiques Bouton et Bouton du keyfinder.
**Fonctionnalité 2 : simulation du buzzer**
Lorsqu'on a activé le bouton dont on a parlé précédemment, le keyfinder doit sonner. Cependant, la carte n'étant pas dotée d'un haut-parleur, la simulation du buzzer se fait grâce à la LED1 qui augmente de luminosité petit à petit (lorsque le bouton vaut 0x01 seulement).
La caractéristique Bouton permet de simuler la recherche du keyfinder grâce au téléphone. A l'initialisation, sa structure vaut 0x00. Si on décide d'envoyer la donnée 0x01 grâce à l'application nRF Connect, alors la LED2 s'allume (simulation de la LED du keyfinder) et la LED1 s'allume petit à petit (simulation du buzzer). Si on envoie 0x00, les lEDs s'éteignent.
**Fonctionnalité 3 : simulation du bouton du keyfinder**
Le keyfinder est aussi doté d'un bouton. Pour le simuler, j'ai utilisé le bouton 1 de la carte.
La deuxième caractéristiques permet de simuler l'appui sur le bouton du keyfinder. Pour simuler l'envoi de notifications au téléphone, lorsque qu'il y a appui sur le bouton 1 de la carte, la valeur de la structure passe de 0x00 à 0x01. Puis inversement quand on rappuit sur le bouton 1 de la carte pour simuler l'arrêt d'envoi de notifications.
**Fonctionnalité 4 : simulation de la LED**
Lorsqu'on appuie sur le bouton du keyfinder, donc celui de la fonctionnalité 3, une LED s'allume. Cette même LED s'allume aussi lorsque l'on appui sur le bouton de la fonctionnalité 1. J'ai choisi d'utiliser la LED2 pour le simuler.
## Explication de la fonction main
## Les fichiers
La fonction main commence par configurer le bluetooth et initialiser la gestion des structures des caractéristiques des services Alert et Interact.
Ensuite, on rentre dans une boucle infinie qui à chaque étape vérifie, avec une pause de 1 seconde :
1 - Que vaut la valeur de la strcture de la caractéristique Bouton. Si elle vaut 0x01, on rechercher alors le keyfinder avec le téléphone. On gère alors l'allumage de la LED et du Buzzer.
Sinon, on éteint tout.
**Le fichier *uuid.h***
Il contient les déclarations des différents UUID utilisés pour les services et caractéristiques.
2 - Est-ce qu'il y a appui sur le bouton du keyfinder (le bouton 1 de la carte). Si oui, on modifie la valeur de la structure de la caractéristque Bouton du keyfinder pour simuler l'envoi d'une notification.
**Les fichiers *services.c* et *services.h***
Ces fichiers permettent de déclarer les différents services. Il y a aussi toutes les déclarations des structures des caractéristiques et des fonctions permettant la lecture ou l'écriture des caractéristiques.
**Le fichier *Led.h***
Ce n'est pas moi qui ai réalisé ce fichier, mais je l'ai récupéré du module Zephyr. Il contient les fonctions permettant de gérer les LEDs et boutons de la carte.
**Le fichier *main.c***
Ce fichier contient la fonction main, dont le fonctionnement est expliqué ci-dessous.
La fonction main commence par configurer le Bluetooth et initialiser la gestion des structures des caractéristiques des services Alert et Interact. Ensuite, on rentre dans une boucle infinie qui à chaque étape vérifie, avec une pause de 1 seconde :
1. Que vaut la valeur de la structure de la caractéristique Bouton. Si elle vaut 0x01, on recherche alors le keyfinder avec le téléphone. On gère alors l'allumage de la LED et du Buzzer. Sinon, on éteint tout.
2. Est-ce qu'il y a appui sur le bouton du keyfinder (le bouton 1 de la carte). Si oui, on allume la LED.
## Documents annexes
Dans le projet, il y a un document annexe. C'est un tableau Excel regroupant différents services. Il est essentiel pour repérer les services et caractéristiques disponibles sur l'application nRF Connect, puisque je n'arrive pas à afficher les noms.
## Limitations
La première limitation de mon application est que le bouton de la fonctionnalité 3 est censé faire sonner le téléphone aussi.
Une deuxième limitation est, comme dit précédemment, les noms des services qui n'apparaissent pas.
......
This diff is collapsed.
......@@ -112,6 +112,7 @@ int main(void)
{
int err;
int ret;
int cligno = 0;
uint32_t pulse_width;
uint32_t step;
uint8_t dir;
......@@ -149,20 +150,35 @@ int main(void)
dir = 0U;
}
}
nrf_gpio_pin_clear(LED2_PIN); //on allume aussi la LED de pin 18
if(cligno) //puis on fait clignotter la LED
{
nrf_gpio_pin_clear(LED2_PIN);
}
else
{
nrf_gpio_pin_set(LED2_PIN);
}
cligno = !cligno;
}
else if (button_state == 0)
{
buzzer_state = 0;
led_state = 0;
dir = 1U;
pulse_width = 0U;
ret = pwm_set_pulse_dt(&pwm_led0,pulse_width); //mise en off du buzzer
nrf_gpio_pin_set(LED2_PIN); //pareil pour la led
if (button_keyfinder !=1)
{
nrf_gpio_pin_set(LED2_PIN); //pareil pour la led
led_state = 0;
}
}
if(!nrf_gpio_pin_read(BOUTON1_PIN))
{
button_keyfinder = !button_keyfinder;
nrf_gpio_pin_clear(LED2_PIN); //allumage de la LED
led_state = 1;
}
}
return 0;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment