====== Lumière dans la nuit ====== {{{project picture:{{ :projets:lumiere_dans_la_nuit:morse_tw1.jpg?200 |}} machines: materiaux: logiciels: fichiers: liens: tags: usager:thierry_dasse licence:cc-by-sa }}} **Lumière dans la nuit** est un projet collaboratif //à la maison// qui se déroule du 11 au 30 mai 2020.\\ L'objectif est de réaliser un dispositif capable d’émettre des signaux lumineux en morse utilisable depuis sa fenêtre pour envoyer des messages à l'univers... proche.\\ Nicolas, Zaineb, Eve, Youssef, Luc, Miangaly, Patrick, Eric, Jérémie, Diane et Thierry ont participé à cette aventure. ===== SEMAINE 1 BRAINSTORMING ET VISION DU PROJET ===== Dès les premières discussions sur le projet, de nombreuses questions sont apparues : le dispositif devait-il émettre avec une grande ouverture et devait-on pouvoir cibler son ou sa destinataire ? Fallait-il incorporer un système de décodage ? Par qui devait-il être utilisable ? Pour quels usages ? Chacun a donné sa vision du dispositif faisant apparaître des notions, des choix originaux, complémentaires ou des concepts partagés. Voici les posters illustrant les différentes propositions. | {{:projets:lumiere_dans_la_nuit:poster1.png?200 |}} | {{:projets:lumiere_dans_la_nuit:poster2.png?200 |}} | {{:projets:lumiere_dans_la_nuit:poster3.png?200 |}} | {{:projets:lumiere_dans_la_nuit:poster4.png?200 |}} | | {{:projets:lumiere_dans_la_nuit:poster5.png?200 |}} | {{:projets:lumiere_dans_la_nuit:poster6.png?200 |}} | {{:projets:lumiere_dans_la_nuit:poster7.png?200 |}} | {{:projets:lumiere_dans_la_nuit:poster8.png?200 |}} | | {{:projets:lumiere_dans_la_nuit:poster9.png?200 |}} | ===== SEMAINE 2 CHOIX ET DÉBUT DE CONCEPTION ===== Des propositions individuelles, nous avons ensuite extrait les concepts qui nous paraissaient les plus importants à garder. Nous avons ensuite classé chaque item par un sondage avec une note de 1 (si on a le temps) à 5 (indispensable), afin de définir le //cahier des charges// du dispositif. Pour les propriétés : [ 41 ] facile à construire\\ [ 40 ] portable\\ [ 35 ] démontable réparable\\ [ 32 ] gamification\\ [ 29 ] adaptable à plusieurs cartes\\ [ 29 ] économie d'énergie (miroir)\\ [ 26 ] pliable, clavier rétractable\\ [ 20 ] look retro Pour les fonctionnalités : [ 34 ] mire de pointage\\ [ 31 ] aide à la saisie\\ [ 30 ] écran de contrôle\\ [ 30 ] carte simple (arduino)\\ [ 30 ] rechargement écologique\\ [ 29 ] manipulateur emblématique\\ [ 28 ] pré-enregistrement\\ [ 27 ] écriture rapide\\ [ 26 ] boutons multifonctions (type T9)\\ [ 26 ] manipulateur bluetooth\\ [ 23 ] connexion USB\\ [ 21 ] décodage par appli\\ [ 19 ] ballon (élévation, emission large)\\ [ 18 ] visée laser\\ [ 17 ] faire clignoter sa maison (IOT)\\ [ 16 ] disque rotatif\\ La suite de la semaine a été consacrée à des premiers programmes de tests avec un bouton poussoir, une led et un écran (ou moniteur série). Il faut pouvoir relever les états du manipulateurs (boutons poussoir), rendre compte sur la led et envoyer des infos à l'écran jusqu'à point, trait, ... Certains ont utilisé une carte arduino, d'autres avec un simulateur sur [[https://www.tinkercad.com/]] ==== Premiers Tests Expérimentaux ==== === Le montage tout simple === {{ :projets:lumiere_dans_la_nuit:sche_mamontage.png?direct&200|}} Un premier essai a été d’envoyer un message en morse à l’aide d’un interrupteur et d’observer la traduction en point et tiret sur un écran. Le montage est très simple : un interrupteur (avec une résistance de rappel de 10k) et une led (avec sa résistance de 220 Ohm) sont branchés sur l’Arduino Uno. L’affichage se fait sur le moniteur série. En effet, aucun écran n’avait été choisi et le moniteur série est disponible pour tous (simulation, ou logiciel arduino) L’idée principale du programme consiste à mesurer la durée pendant laquelle l’interrupteur est appuyé ou relâché, et de traduire cette durée en point, tiret ou le nombre d’espace correspondant. A l’utilisation, deux problèmes principaux apparaissent : * Le bouton possède un effet rebond (production d’une suite d’impulsions parasites lors du passage d’un état pressé à relâché) qui est interprété comme une succession de point. Cet effet peut être supprimé soit dans le programme, soit dans le circuit électronique en ajoutant un filtre passe-bas (RC) * Il est difficile pour un utilisateur de produire à la main un signal ou un silence d’exactement un temps ou trois temps. De sorte que la plupart des traits sont mal interprétés, les espaces imprévisibles. Il faudra ajouter une aide pour permettre à l’utilisateur d’envoyer de beaux signaux, avec des durées bien contrôlées. Le code est {{:projets:lumiere_dans_la_nuit:v1.ino|ici}} === La gestion du bouton poussoir par interruption === On peut aussi essayer de gérer le bouton poussoir par interruption. Dans cet exemple, une interruption récupère les changements d'état d'un bouton et note "l'heure" (nombre de millisecondes depuis le lancement de la carte avec millis()) et l'état du bouton dans un buffer. L'état du bouton est noté dans le bit de poids faible du long représentant "l'heure". Les changements d'état sont envoyés au moniteur série et la led représente l'état du bouton. Le code est {{:projets:lumiere_dans_la_nuit:interrupt_01.ino|ici}}. === Avec une aide sonore === == Tests dans l'environnement Arduino == Comme d'habitude, j'ai regardé ce qui existait sur internet et je suis tombé sur des codes très intéressant. Si on s'oriente sur une saisie par un manipulateur, j'ai remarqué qu'ajouter un buzzer permet de saisir correctement les points et les tirets et donc de ne pas se tromper dans son acquisition. L'exemple en vidéo pour le buzzer : {{youtube>LAa79t1yF2c?large}} Pour mon exemple, j'ai configuré un écran OLED pour afficher le résultat en direct mais pas d'inquiétude car si vous n'en avez pas sous la main, le résultat s'affiche en même temps dans le moniteur série du logiciel Arduino IDE (Outils->Moniteur série). {{:projets:lumiere_dans_la_nuit:prog1.jpg?200|}} {{:projets:lumiere_dans_la_nuit:prog2.jpg?200|}} Le code est {{:projets:lumiere_dans_la_nuit:proggo2v2.0.ino|ici}}. Nota : Une petite astuce si vous n'avez pas de LED avec sa résistance, j'ai câblé la sortie sur la Pin 13 qui est synchronisé sur la LED intégré à la carte Arduino Uno. Elle clignote quand vous appuyez sur le bouton ! == Tests avec un simulateur == https://www.tinkercad.com/things/a6uRr2qfwux-go2design/editel?sharecode=dAXwynBBgPMefbaMhHUs86sQd003fhG_j7BaK_oicPs {{:projets:lumiere_dans_la_nuit:go2design.jpg?200|}} Le résultat s'affiche en même temps dans le moniteur série (Code->Moniteur série). === Avec une aide visuelle === Pour aider un utilisateur à produire une signal plus régulier, on peut s’inspirer des modèles de métronomes électroniques des musiciens. Ces appareils battent les temps avec des bips sonores et/ou un clignotement de LED, et le musicien se repère à ce battement pour jouer en rythme. Dans cette version de dispositif pour morse lumineux, l’utilisateur ajuste la vitesse de clignotement d’une LED à l’aide d’un potentiomètre. En suivant ce clignotement des yeux, il peut envoyer, à l’aide de l’interrupteur, un signal assez régulier. {{youtube>SeGNGE_d6-E?large}} . Le signal, qui est envoyé par un humain et non une machine, n’est néanmoins pas parfait. Le programme doit donc être rendu tolérant pour la reconnaissance des points et tirets. Ainsi avec une tolérance de 0.5, un signe de durée inférieure à 1.5 temps sera reconnu comme un point (au lieu de un temps pour un signe parfait). un signe de durée supérieur à 2.5 temps sera reconnu comme un trait (au lieu de 3 temps) D’autre part, pour éviter les effets rebonds, un filtre RC (résistance, condensateur) a été ajouté. Il empêche toute les variations rapides de la tension et supprime efficacement tous les signaux parasites. {{:projets:lumiere_dans_la_nuit:sche_ma.png?direct&350|}} {{:projets:lumiere_dans_la_nuit:v1_metro.jpg?direct&350|}} Le code est {{:projets:lumiere_dans_la_nuit:v1_metronome.ino|ici}} == Réception manuelle et décodage d’un message == {{ :projets:lumiere_dans_la_nuit:carrefournume_rique2.gif|}} Voici un exemple de morse lumineux ci-contre. Decrypter un message de morse lumineux "à la main" est très difficile, surtout quand on ne maitrise pas l’alphabet morse. Même sur un message lent, il faut pouvoir différencier les traits et les points puis les retranscrire sans quitter la source de lumière des yeux. Les montages d’émetteur de morse peuvent être facilement adaptés en montage de récepteur. Ni le montage, ni le programme ont été modifiés. Il faut que la durée des points du message lumineux et celle du dispositif soient similaires. L’utilisateur suit le message lumineux des yeux et appuie sur le manipulateur quand la lumière est allumée, le relâche quand elle est éteinte. == Adaptation au rythme d’un message inconnu == Dans un premier temps, cette partie fait l’objet d’un programme indépendant, mais le montage reste identique. Pour réussir à decoder un message, il est essentiel pouvoir determiner son rythme. Le programme écoute un message et enregistre la durée des appuis. Il faut ensuite séparer les durées des points et celles des traits. Le programme trie la durée des appuis par ordre croissant et determine la limite entre les durées des points et des traits. Il calcule ensuite la durée moyenne correspondant à un point. L’utilisateur, guidé par un signal lumineux, ajuste le potentiomètre sur cette valeur de rythme. Une courte demonstration vidéo est [[https://www.youtube.com/watch?v=jpuSGXdWjRc|ici]] Le code est {{:projets:lumiere_dans_la_nuit:detecteurderythme.ino|ici}} === Réception optique et électronique d'un message === Lors de l’exposition des différentes visions du projet ainsi que lors des choix de conception, le problème de la réception d’un signal de morse lumineux s’est posé. Nous sommes arrivés à trois options : * l’utilisateur voit le signal * l’utilisateur filme le signal avec un téléphone portable, * le dispositif est capable de recevoir un signal lumineux (mais sans utiliser de téléphone portable ou de caméra). Voici un premier prototype de récepteur de morse lumineux, composé d’une partie optique et d’une partie électronique. Avec ce dispositif, il est possible de lire un message lumineux à une vitesse élevée (comme le gif ci dessus). La partie optique consiste en une loupe standard, d’un écran en carton et d’une photo-résistance. A l’aide de la loupe, un paysage plus ou moins lointain peut être projeté sur un écran. En ajustant la distance entre l’écran et la lentille, une image nette est obtenue. La zone d’interêt (par exemple la source de morse lumineux) est positionnée sur la photorésistante {{youtube>GcHDIy-61LA?large}} La partie électronique consiste à binariser le signal lumineux (noir -> 0, lumière -> 1). Deux approches sont possibles : * recueillir un signal analogique (la tension au borne de la photodiode) et utiliser la programmation Arduino pour obtenir un signal binaire. Cette méthode nécessite de modifier le programme de l’émetteur morse pour intégrer le détecteur * construire un circuit purement électronique capable de binariser le signal analogique. Le signal binaire est alors directement branché en entrée du dispositif de morse, remplaçant l’interrupteur. Pour cette dernière méthode, une puce électronique a été utilisée (LM311) dans un montage comparateur. La puce reçoit deux tensions en entrée. Si la tension de la voie V+ (liée à l’illumination de la photorésistance) est supérieure à celle de la voie de V- (ajustée par un potentiomètre), la puce sort un signal à 5V, et inversement. Une LED indicatrice aide à régler la position du potentiomètre. Un filtre passe bas RC supprime les variations parasites {{:projets:lumiere_dans_la_nuit:re_cepteur_autonome.png?direct&350|}} {{:projets:lumiere_dans_la_nuit:dsc01767.jpg?direct&350|}} === A venir === (? -> le dispositif de avec Raspberry Sense Hat ? ) ===== SEMAINE 3 CODE ET DISPOSITIF PHYSIQUE ===== ==== Le code final ==== à venir. ==== Le dispositif physique ==== Dans sa première version, le dispositif a été dessiné pour accueillir : - une carte arduino uno ou une carte Raspberry Pi et son shield - une batterie de type batterie de poche Anker - un écran LCD 16x2 - un shield 2 leds et un buzzer - une fiche embase 3 points pour un manipulateur externe Il comporte un chassis pour fixer un manipulateur intégré et l'ensemble des composants électroniques et un corps avec couvercle coulissant. {{:projets:lumiere_dans_la_nuit:boite1.png?200|la boite (manipulateur)}} {{:projets:lumiere_dans_la_nuit:boite2.png?200|la boite (chassis)}} {{:projets:lumiere_dans_la_nuit:boite3.png?200|la boite (corps)}} {{:projets:lumiere_dans_la_nuit:boite4.png?200|la boite (corps avec couvercle)}} le fichier de découpe de la boite {{:projets:lumiere_dans_la_nuit:ldn_proto.svg?200|ldn_proto.svg}} Et voici Les pièces 3D à imprimer : {{:projets:lumiere_dans_la_nuit:manipulateur.stl|le corps du manipulateur}} {{:projets:lumiere_dans_la_nuit:vis_bouton.stl|la vis de réglage pour le bouton}} {{:projets:lumiere_dans_la_nuit:vis_ressort.stl|la vis de réglage de tension du ressort}} {{:projets:lumiere_dans_la_nuit:platine_bouton.stl|la platine pour le shield bouton poussoir}} {{:projets:lumiere_dans_la_nuit:ecrou_chassis.stl|l'écrou pour la fixation du chassis (x4)}} {{:projets:lumiere_dans_la_nuit:entretoise_3mm.stl|L'entretoise 3mm pour la carte arduino (x4)}} {{:projets:lumiere_dans_la_nuit:entretoise_5mm.stl|L'entretoise 5mm pour l'écran et le shield leds-buzzer(x8)}} Il reste à intégrer : * le système émetteur * le système optique de visée pour la réception ===== LE CODE MORSE ===== ==== L'origine ==== L'alphabet Morse international est un code permettant de transmettre un texte à l’aide de séries d’impulsions courtes -les points- et longues -les traits-. Ce code international est proche du morse américain inventé par le scientifique Samuel Morse en 1832 pour la télégraphie et considéré plus tard comme le précurseur des communications numériques. Le principe phare du morse est l'efficacité en réservant les codes les plus courts aux caractères les plus fréquents: Le « e » est ainsi codé par 1 point. Les lettres les moins fréquentes se retrouvent codées sur 4 impulsions. Les chiffres sont tous codés en 5 impulsions. Les signes de ponctuation, symboles et caractères spéciaux ont aussi leurs codes plus ou moins longs car plus ou moins fréquents. Pour toujours plus d'efficacité, le code Q a été développé en 1912. Il permet d'envoyer une question fréquente en 3 lettres morse dont la première est toujours Q (comme « question »): par exemple QTR = Quelle est l'heure exacte? Depuis le début du XXe siècle et l’invention de la lampe Aldis, les bateaux peuvent communiquer silencieusement en morse lumineux appelé le Scott. ==== Le code ==== | **A** |**· - ** | **N** |**- · ** | **0** |**- - - - - ** | **'** |**· - - - - · ** | **$** |**· · · - · · - ** | | **B** |**- · · · ** | **O** |**- - - ** | **1** |**· - - - - ** | **!** |**- · - · - - ** | **@** |**· - - · - · ** | | **C** |**- · - · ** | **P** |**· - - · ** | **2** |**· · - - - ** | **/** |**- · · - · ** | **Erreur ** |**· · · · · · · · ** | | **D** |**- · · ** | **Q** |**- - · - ** | **3** |**· · · - - ** | **(** |**- · - - · ** | **Début de message ** |**- · - · - ** | | **E** |**·** | **R** |**· - · ** | **4** |**· · · · - ** | **)** |**- · - - · - ** | **Fin de message [+]** |**· - · - · ** | | **F** |**· · - ·** | **S** |**· · · ** | **5** |**· · · · · ** | **&** |**· - · · · ** | **Fin de contact ** |**· · · - · - ** | | **G** |**- - · ** | **T** |**- ** | **6** |**- · · · · ** | **:** |**- - - · · · ** | **Attendez** |**· - · · · ** | | **H** |**· · · · ** | **U** |**· · - ** | **7** |**- - · · · ** | **;** |**- · - · - · ** | **Tout compris** |**· · · - · ** | | **I** |**· · ** | **V** |**· · · - ** | **8** |**- - - · · ** | **=** |**- · · · - ** | **répétez [?]** |**· · - - · · ** | | **J** |**· - - - ** | **W** |**· - - ** | **9** |**- - - - · ** | **+** |**. - . - . ** | **STOP, nouveau paragraphe [=]** |**- · · · - ** | | **K** |**- · - ** | **X** |**- · · - ** | **.** |**· - · - · - ** | **-** |**- · · · · - ** | **Plus lentement** |**· · · · - · · ** | | **L** |**· - · · ** | **Y** |**- · - - ** | **,** |**- - · · - - ** | **_** |**· · - - · - ** | **Lumière plus forte** |**· - · · · - · · ** | | **M** |**- - ** | **Z** |**- - · · ** | **?** |**· · - - · · ** | **"** |**· - · · - · ** | **Lumière moins forte** |**· - - · · - - · ** | ==== Conventions de cadence ==== * Le rythme élémentaire est donné par la durée du point, le « ti ». Il se note par un point « . ». * Un « taah » est conventionnellement 3 fois plus long qu’un « ti ». Il se note par un trait horizontal « – ». * L’espacement entre les « ti » et « taah » dans une lettre a la longueur d’un « ti ». Il se note par le passage d’un symbole à l’autre. * L’espacement entre les lettres d’un mot a pour longueur un « taah » (3 « ti »). Il se note par un espace. * L’espacement entre les mots est d’au moins 5 « ti » (7 recommandés). Il se note par une barre oblique « / ». ==== Fréquence ==== La cadence internationale normalisée de transmission est de 16 mots/minute. La référence est le mot: « PARIS ».\\ Dans la pratique, la fréquence des émissions en morse est comprise entre 10 et 20 mots/minute. La longueur du mot Paris (avec l'espace suivant) est de 50 unités « ti ». {{:projets:lumiere_dans_la_nuit:paris_morse.png?200 |}} 10 mots/min : 10 x 50 = 500 unités/min soit environ 8 u/s d'où une durée d'impulsion de 120ms.\\ 16 mots/min : 16 x 50 = 800 unités/min soit environ 13 u/s d'où une durée d'impulsion de 75ms.\\ 20 mots/min : 20 x 50 = 1000 unités/min soit environ 17 u/s d'où une durée d'impulsion de 60ms.\\ ==== Illustrations ==== {{:projets:lumiere_dans_la_nuit:seaman_send_morse_code_signals.jpg?200|}} {{:projets:lumiere_dans_la_nuit:l-telegraph1.png?200|}} ==== sources ==== === morse === [[https://fr.wikipedia.org/wiki/Code_Morse_international]]\\ [[http://codemorse.fr/]]\\ [[https://morsify.net/fr/]]\\ [[https://www.lexilogos.com/clavier/morse.htm]]\\ === code Q === [[https://fr.wikipedia.org/wiki/Code_Q]]\\ [[https://www.electronique-radioamateur.fr/radio/morse-q/code-q.php]]\\ === manipulateur === [[https://f9wtchris.wixsite.com/manipulateursmorse]]\\ [[http://morsemad.com/]]\\ === lampe aldis === [[http://www.ref66.fr/2015/07/18/lampe-aldis-par-f6asm/]]\\ [[http://morsemad.com/lamps.htm]]\\ [[https://francis.co.uk/fr_FR/product/signalling-range/]]\\ [[https://www.traconed.com/product/230140/aldis-signalling-lamp-c-w-bulb]]\\ [[https://www.1st-relief.com/fr/sanshin-lampe-de-signalisation-de-jour-portable-al.html]]\\ === autres === [[https://www.dailymotion.com/video/x39vdwj]] Le prisonnier Jeremiah Denton dit le mot "torture" en code morse en clignant des yeux