IMA4 2017/2018 P22 : Différence entre versions

De Wiki de Projets IMA
(Semaine 6)
(Semaine 6)
Ligne 340 : Ligne 340 :
  
 
Pour chercher l'origine du problèmes nous  sommes rendu dans la salle de transmission de  signal de Lille 1, avec de l'aide de M.Wichmann nous avons pu tester la mauvaise/impossible  réception du signal. Dans la salle de Lille1 nous obtenions une puissance -83dbm à 77.5 kHz. Nous avons tester si l'antenne était  défectueuse , en  utilisant 2 antenne  une en émission une réception, on a pu mesuré un signal sur la deuxième donc l'antenne  n'est pas "casser". En conclusion : sur la locations  du campus la réception du signal émis  par la antenne  dcf77 situé  en Allemagne est compliqué et  pratiquement impossible avec notre antenne actuel.
 
Pour chercher l'origine du problèmes nous  sommes rendu dans la salle de transmission de  signal de Lille 1, avec de l'aide de M.Wichmann nous avons pu tester la mauvaise/impossible  réception du signal. Dans la salle de Lille1 nous obtenions une puissance -83dbm à 77.5 kHz. Nous avons tester si l'antenne était  défectueuse , en  utilisant 2 antenne  une en émission une réception, on a pu mesuré un signal sur la deuxième donc l'antenne  n'est pas "casser". En conclusion : sur la locations  du campus la réception du signal émis  par la antenne  dcf77 situé  en Allemagne est compliqué et  pratiquement impossible avec notre antenne actuel.
 +
 +
'''Communication Bluetooth Horloge'''
  
 
=Documents Rendus=
 
=Documents Rendus=

Version du 13 mars 2018 à 22:30


Présentation générale

Notre projet consiste à étudier le fonctionnement d'une horloge connectée réalisé par des secondes, en vue de l'améliorer ou d'y ajouter des fonctionnalités. L'horloge servira de serveur de temps et diffusera la date sur les ordinateurs de la salle de projet. Un utilisateur pourra interagir avec elle pour afficher par exemple l'actualité ou jouer à un jeu vidéo.

Description

L'horloge sur laquelle nous travaillerons possède plusieurs fonctionnalités actuellement:

  • Elle reçoit l'heure par onde radio depuis l'Allemagne via protocole DCF77.
  • Elle affiche l'heure sur une matrice de LED.

Le but de notre projet est de lui ajouter des fonctionnalités supplémentaires en vue de la rendre plus interactive avec le ou les utilisateurs.

L'horloge est principalement constituée d'une Rasperry Pi et de 2 matrices de LED. La Raspberry nous permettra de rajouter la plupart des fonctionnalités.

Objectifs

  • Installer un serveur de temps NTP.
  • Améliorer la réception DCF77.
  • Protéger le système contre les coupures de courant ou les débranchements inopinés.
  • Trouver une application à la 2e matrice de LED.
  • Faire interagir l'utilisateur avec l'horloge (personnalisation de l'affichage, jeu-vidéo).
  • Gérer les fuseaux horaires.

Analyse du projet

Positionnement par rapport à l'existant

Le marché des objets connectés est en plein essor. Il est donc naturel que beaucoup de produits sont très semblables au notre, en effet il n'en manque pas :

  • Montre connectée : se porte au poignet, accès aux réseaux sociaux, aux sms, aux appels téléphonique, etc.
  • Réveil connectée : réveil comme fonction principale, affiche la météo, affiche des rappels.
  • Horloge connectée : affiche des rappels, la météo, les grands titres de l'actualité.

Analyse du premier concurrent

LaMetric

LaMetric


Caractéristique :

  • matrice de led 37x8
  • connecté au smartphone en wifi
  • ajout de fonction via un store
  • électriquement dépendent
  • orientation réseau sociaux
  • synchronise son heure via serveur LaMetric


Exemple de fonctionnalité : Météo , compteur de “j’aime / abonnée” ,Domotique , ...

Analyse du second concurrent

Glance Clock

Glance Clock
  • Affichage de l’heure
  • Réveil et chronomètre
  • Sonorisations
  • Rappels
  • Appels téléphoniques entrants et sortants
  • Afficheur météo
  • Calendrier compatible Google, Microsoft, etc.
  • Affiche diverses informations dans le cas d’une maison connectée

Scénario d'usage du produit ou du concept envisagé

L’utilisateur entre dans la salle où se trouve l’horloge, elle est accrochée à un mur. Si elle n’est pas allumée, il la branche et actionne un interrupteur. L’heure s’affiche automatiquement.

Cas “ludique” :

L’utilisateur a quelques minutes à perdre. Il lance le jeu depuis son smartphone android. Le jeu se lance sur la deuxième matrice de LEDs. Son téléphone fait office de manettes. Il joue et essaie de battre le score des personnes ayant joué précédemment.

Cas “informations” :

L’utilisateur souhaite suivre les nouvelles en temps réel. Il configure la deuxième matrice de LEDs en se rendant sur une application web accessible via tout support possédant un navigateur internet. Sur l’application web il indique l’adresse d’un ou plusieurs sites d’actualités ou disposant d’un flux (RSS par exemple). La deuxième matrice de LED fait défiler les titres de l’actualité. Quand il veut éteindre l’horloge, il actionne l’interrupteur, celle-ci s'éteint correctement. En cas de coupure de courant l’horloge s’éteint aussi correctement grâce à l’appui énergétique d’un accumulateur.

Réponse à la question difficile

Question: Comment gérer les différents fuseau horaire ainsi que les décalages horaires heure été / heure d'hiver ?

Solution envisagé : Choix du fuseau horaire à l'initialisation de l'horloge ( choix par pays), questionnement d'une base de données qui fait correspondre le pays au fuseau horaire.

Préparation du projet

Cahier des charges

  • Réception de l'heure par onde radio DCF77 (77.5 kHz)
  • Ajout d'un jeu sur la 2e matrice de LEDs
  • Ajout d'un bandeau d'information sur la 2e matrice de LEDs
  • Ajout d'une batterie à la Raspberry Pi pour effectuer une extinction propre en cas de coupure de l'alimentation
  • Mise en place d'un serveur NTP sur l'horloge

Choix techniques : matériel et logiciel

Application mobile :

  • Programmée en Java avec Android Studio

Liaison mobile/horloge :

  • Technologie Bluetooth, la personne qui interagie avec l'horloge sera forcément à proximité.

Extinction propre :

  • Batterie rechargeable.
  • Contrôleur de batterie.

Réception DCF77 :

  • Module BN 641138

Liste des tâches à effectuer

  • Configurer l'heure de la raspberry sur l'heure DCF77
  • Créer l'application mobile (manette)
  • Créer le jeu et l'afficher sur la 2e matrice de LEDs
  • Mettre en place l'extinction propre (batterie)
  • Mettre en place le serveur NTP

Calendrier prévisionnel

Réalisation du Projet

Matériels nécessaire

une batterie pour alimenter la raspberry en cas de panne électrique: 4,8 v | 500mAh lien : http://fr.farnell.com/varta/55750404014/pack-de-batterie-nimh-510mah-4/dp/1903286

un contrôleur permettant d'assurer une charge autonome de la batterie : https://fr.rs-online.com/web/p/controleurs-de-charge-de-batterie/5456852/


Feuille d'heures

Tâche Prélude Heures S1 Heures S2 Heures S3 Heures S4 Heures S5 Heures S6 Heures S7 Heures S8 Heures S9 Heures S10 Total
Analyse du projet 15


Prologue

  • Recherche sur les systèmes existant.
  • Analyse du fonctionnement de l'antenne DCF 77
  • Réponse à la question "difficile" .

Semaine 1

  • Analyse du matériels nécessaire :

Batterie permettant à la Raspberry en cas de coupure électrique. Calcul de la puissance instantané consommée par l'horloge.

Raspberry Panneau LED Antenne Total
Consommation 4 W 2 x 10 W 0,015 W 24,015 W

On choisit une batterie avec 5 min d'autonomie (largement le temps d'extinction de la raspberry) sois environ 2Wh la raspberry s'alimente entre 4,5 et 5,7v , nous avons choisit une batterie de 4,8 v et 500 mah. La charge de la batterie est gérée par un contrôleur MicroChip.


  • Décision sur l'interaction utilisateur/horloge

Après avoir comparé les avantages et inconvénients de l'application web et de l'application mobile, nous avons choisi de réaliser une application mobile. Celle-ci communiquera par bluetooth avec l'horloge. Il est inutile qu'elle communique par internet étant donné que les interactions se feront à proximités de l'horloge. L'application mobile sera sur Android et sera développée en Java avec Android studio.

Information la configuration de la raspberry:

Wifi :

     nom :  HorlogeICN
     mdp : fenelonlille

Wlan0 :

      address : 192.168.100.1

Eth0:

    address : 192.168.0.42
    gateway : 192.168.0.1

Semaine 2

Le horloge n'affiche pas l'heure correcte. Le problème peut venir d'une mauvaise réception , perturbation ou du programme qui récupère l'heure.

on commence par l'analyse du programme de récupération de l'heure.

Le message de la 2e matrice de LED est modifiable via le fichier /var/www/html/index.php. Celui-ci écrit le message dans le fichier "message". On suppose ensuite que "message" est ouvert par le programme "horloge" qui se charge d'envoyer les 2 lignes sur la matrice de LED.

Semaine 3

Le récepteur intégré à l'horloge est trouvable sur le site du revendeur "Conrad". Sur ce site nous avons trouvé une doc sur la connexion des fils au module mais pas de datasheet sur le module électronique nommé BN 641138 qui se charge de transformer le signal en bit.

Le signal DCF77 est envoyé depuis une antenne en Allemagne à Mainflingen (près de Francfort-sur-le-Main) par le Physikalisch-Technische Bundesanstalt (PTB). Le signal de fréquence 77.5 kHz est envoyé à une puissance environnant les 30 kW. L'information est numérique et modulée semblable à une OOK. Une trame dure 60 secondes, chaque secondes correspond à un bit :

L'information est codée sur un abaissement de l'amplitude pendant une durée donnée. Pour signifier un 1 ou un 0, l'amplitude est de 15% sa taille maximale. Un bit 0 correspond à un changement d'amplitude pendant 100ms, pour un bit 1 c'est 200 ms.

TrameDCF77.png

Décodage de la trame :

Un trame de 60 seconde est constitué des informations suivantes :


 Bit0 :                Début de trame (bit à 1).
 Bit1 à 14 :        Réservé pour une utilisation future.
 Bit 15 :                Bit d'antenne (0 = antenne normal 1 = antenne de réserve)
 Bit 16 :                Changement heure d'hiver/heure d'été (1= passage heure été/hiver)
 Bit 17 :                0: inactif / 1: heure d'été (GMT+2)
 Bit 18 :          0: inactif / 1: heure d'hiver (GMT+1)
 Bit 19 :                1 quand une minute de 61 secondes est insérée
 Bit 20 :                Bit de début (start) (Toujours à 1)
 Bit 21..27 :        Valeur des Minutes ( Bit: 21 = 1, 22 = 2, 23 = 4 , 24 = 8 , 25 = 10 , 26 = 20, 27 = 40)
 Bit 28 :                Parité pour tous les bit transmis minutes (Bit de parité paire)
 Bit 29..34        Valeur des heures ( Bit: 29 = 1, 30 = 2, 31 = 4 , 32 = 8 , 33 = 10 , 34 = 20)
 Bit 35 :                Parité pour tous les bit transmis heures (Bit de parité paire)
 Bit 36..41 :        Valeur du jour ( Bit: 36 = 1, 37 = 2, 38 = 4 , 39 = 8 , 40 = 10 , 41 = 20)
 Bit 42..-44 :        Valeur du jour dans la semaine (  Bit: 42 = 1, 43 = 2, 44 = 4)
 Bit 45..49 :        Valeur du mois ( Bit: 45 = 1, 46 = 2, 47 = 4 , 48 = 8 , 49 = 10)
 Bit 50..57 :        Valeur de l'année ( Bit: 50 = 1, 51 = 2, 52 = 4 , 53 = 8 , 54 = 10 , 55 = 20, 56 = 40, 57 = 80)
 Bit 58 :                Parité pour tous les bit transmis date (Bit de parité paire)
 Source : http://s159401799.onlinehome.fr/600HorlogeAtomiqueDCF77.html


Branchement du module de réception sur la Raspberry Pi

Nous avons installé RaspBian Jessie sur une seconde Raspberry Pi pour pouvoir faire nos test de réception et coder les programmes nécessaire au projet. Ces programmes pourront ensuite être transférés sur la Raspberry Pi du projet.

Raspberry PI n°2

    IP salle E304 :"172.26.145.183"

Pour récupérer les bits du module BN 641138, nous allons utiliser la bibliothèque C, wiringPI. Elle permet de faciliter l'accès aux GPIOs des RaspberryPi.

Le module, demandant très peu de courant peu être alimenté par la Raspberry Pi, nous branchons sont alimentation sur la pin 3.3 Volts et la pin non inverseuse sur le GPIO 17.



Nous avons installé python pour pouvoir rapidement observer un signal à l'aide d'un petit programme trouvé sur internet. Celui-ci n'a pas voulu fonctionner.


Semaine 4

Lundi : Test du récepteur BN 641138 (récepteur DCF77). Nous nous sommes documentés sur comment recevoir correctement le signal DCF77. Globalement les utilisateurs de ce modules n'ont pas eu de problème pour recevoir les signaux, ce qui n'a pas été notre cas. Nous avons effectué les premiers test dans la salle E306, nous n'avons pour l'instant eu aucun signal.

Mercredi :

Prise en main de l'outil de développement Android Studio avec "formation" open classroom.

Analyse de la trame du récepteur BN 641138

PinCircuitDCF.png

Face aux multiples échec de réception en salle E306 nous avons testé l'antenne en salle C201. Pour cela nous avons utilisé un oscilloscope . Nous avons effectués les test sur la pin inverseuse et la pin non inverseuse du module DCF77. Nous avons pu enfin obtenir un signal quelques instants.


La réception du signal est très sensible, une variation de l'orientation de l'antenne de quelque degrés empêche une bonne réception. Nous pensons que les alimentations à découpage des ordinateurs polluent le spectre électromagnétique local et qu'elle peuvent donc générer des signaux parasites sur la bande de 77.5 kHz. Une autre hypothèse plus probable est que la composition du bâtiment de Polytech atténue le signal déjà très faible, envoyé depuis Mainflingen.

Analyse trame .jpg

Lorsque nous avons pu capter le signal nous l'avons récupéré sur une durée dépassant les 120 secondes. Nous avons pu ainsi décoder une trame de 60 secondes et pu récupérer l'heure. Pour récupérer cette trame nous avons simplement noté la valeur affichée à l'oscilloscope. La trame suivante est extraite de notre échantillons, après correction sur 4-5 bits nous avons pu décoder l'horaire diffusé par le système DCF77.


"trame enregistré en salle c201"



Doc, réception DCF77 : https://www.compuphase.com/mp3/h0420_timecode.htm https://blog.blinkenlight.net/experiments/dcf77/dcf77-receiver-modules/

Semaine 5

Support de transmission S.Baranowski

Étude visant à améliorer la réception du signal DCF77:

- Dans le but de placer (éventuellement redimensionner) l'antenne au mieux dans l'horloge, nous nous sommes aidé de l'analyseur de spectre présent en c203.

- Après avoir demandé conseil auprès de Mme Baranowski notre professeur de "Support de Transmission" nous avons appri que la réception pouvait être améliorée en augmentant la tension du signal reçu par l'antenne. En effet le circuit électronique post-antenne ne détecte pas nécessairement la composante de 77,5 khz qui a trop peu d'amplitude. Pour augmenter la tension du signal on s'appuie sur la formule de réception d'une antenne boucle.


Les 3 paramètres qui nous permettent d'avoir une meilleure réception sont : la surface délimité par une spire et le nombre de spires , c'est ce dernier paramètre qui est le plus facilement modifiable et que nous allons explorer.




Prise en main de l'environnement de développement Android Studio :

- Suivi d'une formation open classroom (https://openclassrooms.com/courses/creez-des-applications-pour-android)pour découvrir les différentes bibliothèque , les outils graphique , le language XML.

- Développement du classique jeux du nombre aléatoire pour ce familiarisé avec IDE et les bibliothèques , outils graphique.

Page entrée jeux test.PNG

Page d'accueil qui sera de la forme pour notre jeux final.

Page deux jeux test.PNG

Page comprenant un jeux.Le jeux final sera basé sur un concept différent l'affichage ce fera sur le panneau de LED de l'horloge.

Semaine 6

Lundi : Préparation Bluetooth

La communication bluetooth est basée sur un protocole maître-esclave (ou serveur-client). Dans notre cas l'horloge est maître et l'esclave sera le smartphone.

Nous utiliserons une communication par sockets Bluetooth (vue en cours de PSR). La norme Bluetooth propose de transférer des données en mode connecté grâce à la couche RFCOMM. Le système en couche de Bluetooth fonctionne de la même manière que pour TCP/IP, c'est pourquoi il est possible de l'utiliser via les sockets. La connexion se fait de la sorte : Si le smartphone n'a jamais été connecté à l'horloge, alors il y a appairage avec l'horloge. Cette opération n'est pas une connexion à proprement parlé mais une façon pour l'horloge de connaître l’existence du smartphone. Ensuite le smartphone se connecte avec l'horloge. L'utilisateur communique via une application faisant office d'interface user-friendly avec l'horloge. (PLACER IMAGE APPLICATION)

(DECRIRE APPLICATION)


Paramétrage bluetooth

Le côté horloge de la communication est réalisé en C a l'aide des librairies sys/socket.h et celles offerte par le noyau BlueZ, l'implantation Linux officielle de Bluetooth.


Récepteur DCF77

Nous n'avons toujours pas réussi à obtenir à nouveau une trame depuis les essais sur oscilloscope en semaine 4. Des test vont être réalisé sur Arduino pour vérifier que le problème ne vient pas des modules DCF77 ou de la Raspberry Pi sur laquelle les tentatives sont habituellement effectuées. Nous allons aussi essayer d'améliorer la réception en augmentant la taille de l'antenne en ferrite. La raison de la présence d'une ferrite au milieu de l'antenne spiral reste pour nous plutôt inconnu mais nous avons pu voir qu'il existait un bâtonnet de ferrite en vente sur internet permettant d'améliorer la synchronisation des montres utilisant le DCF77 juste en le plaçant à proximité de la montre.

Pour chercher l'origine du problèmes nous sommes rendu dans la salle de transmission de signal de Lille 1, avec de l'aide de M.Wichmann nous avons pu tester la mauvaise/impossible réception du signal. Dans la salle de Lille1 nous obtenions une puissance -83dbm à 77.5 kHz. Nous avons tester si l'antenne était défectueuse , en utilisant 2 antenne une en émission une réception, on a pu mesuré un signal sur la deuxième donc l'antenne n'est pas "casser". En conclusion : sur la locations du campus la réception du signal émis par la antenne dcf77 situé en Allemagne est compliqué et pratiquement impossible avec notre antenne actuel.

Communication Bluetooth Horloge

Documents Rendus