LaserNet Project (Jérôme & Corentin)

Presentation

Boite RaspberryPi

Nous avons aussi travaillé sur la construction d’une coque de support pour les deux raspberry PI.

Rendu boitier 3D RaspberryPi

Rendu du boitier réalisé avec Fusion360

Principe LaserNet

LaserNet est un projet de transfert de données entre deux RaspberryPi.

Pour ce faire, chaque Raspberry dispose d'un capteur (KY-018) et d'un laser (KY-008, longueur d'onde: 650nm) afin de communiquer avec l'autre RaspberryPi.

La transmission se fait en binaire via les pins GPIO du RaspberryPi (disponibles grâce à l'API WiringPi), mais pour simplifier le programme nous utilisons des objets tels que les "String" et les "Array" qui sont ensuite transformés en chaîne binaire qui seront décodés à l'arrivée.

Pour commencer nous avons fait un programme de test afin d'envoyer un simple text. Celui ci est comparable à un télégraphe informatisé car les Raspberry n'était reliés que par câble.

Afin d'intéragir avec le réseau nous avons utilisé l'API LibTins. Cette librairie permet de "sniffer" un réseau afin d'en extraire les paquets qui transitent par l'appareil.

Pour avoir notre interface réseau (afin d'envoyer des paquets), nous avons dû émuler une "dummy networkinterface" sur les raspberry Pi (une interface réseau qui ne posséde aucune interface hardware).

Les Technologies

Afin de réaliser le projet nous avons fait :

  • De l'électronique : connexion et gestion des lasers
  • Du C++ : bonne connaissance, partie LibTins et WiringPi dans les RaspberryPi
  • Du JavaScript, HTML, CSS : afin de controller les RaspberryPi via un site sans avoir l'application Putty
  • En savoir plus

Objectif

Un RaspberryPi connecté au réseau (box, clé 4G, ordinateur) répondant aux demandes de l'autre RaspberryPi.

Un RaspberryPi connecté à un ordinateur n'ayant aucun autre réseau disponible (ordinateur déconnecté).

Les RaspberryPi vont servir de pont pour le réseau afin de permetre à l'ordinateur déconnecté d'avoir internet.

Simuler une carte réseau avec l'un des RaspberryPi afin qu'un ordinateur connecté à lui puisse aller sur internet (échanges des paquets réseau via les raspberryPi

Cette communication par laser est plus utile que par câble pour :

  • Communiquer dans l'espace
  • Communiquer sur de longues distances
  • Sécuriser la transmission (un observateur coupera la connexion car le signal du laser ne passer plus)

Limitations importantes

Les RaspberryPi ne sont pas asser rapide, avec 1 microseconde (μs) par bit (actuellement: 2000μs) le débit ne serait que de 1Mbit/s

Retards dû au même problème

Putty est nécessaire tant que le site n'a pas assez d'amélioration

"WiringPi deprecated" : la question était de savoir si il fallait changer de librairie mais il se trouve que wiringPi est suffisant

Liens

    Github REPO
  • LaserNet (communication des RaspberryPi)
  • WebServer (communication avec le site)

Documentation

Authentification

!auth [secretKey]

Se connecter au RaspberryPi

Connexion

!connect

Activé par défaut, nécessaire après un !disconnect

Déconnexion

!disconnect

Forcer la déconnexion

Debug mode

!debug [enable/disable]

Active/désactive les messages de debug du site

Debug (Putty)

debug [enable/disable]

Necessite une connexion

Active/désactive les messages de debug sur le RaspberryPi (console Putty)

Refresh

!refresh

Necessite une connexion

Force le rafraichissement des informations du RaspberryPi

Chat

chat [message]

Necessite une connexion

Discuter avec toutes les autres personnes connectées au RaspberryPi

Stop

stop

Arrete le programme sur le RaspberryPi

Restart

restart

Redemarre LaserNet (utile pour changer un parametre tel que les pins ou l'interface internet utilisée)

SimLine

SimLine est un projet de comparaison de chaînes de caractères (similaire à Anagene mais pour tous types de chaînes)

Il a été réalisé entre le 17/02/2020 et le 23/02/2020

Accessible en ligne via files.octanne.eu/web/SimLine

Credits

Les différentes bibliothéques et technologies utilisées :

Le projet « LaserNet » a été développé par Corentin Levalet et Jérôme Lécuyer. Le software de contrôle du système laser ainsi que le serveur web ont été développé en C++, mais le « backend » de la page web est quant à lui développé en JavaScript pour la parti client. Ainsi nous avons utilisé différentes librairies et technologies au sein de se projet que vous pouvez retrouver ci-dessous

  • Les Technologies :
    • JavaScript (Scripting Language)
    • HTML / CSS (Structure & Style Language)
    • C++ (OOP Language)
  • Les Librairies :
    • RapidJson (JSON Parser Lib)
    • Libtins (Network Lib)
    • Mongoose (Network Lib)
    • WiringPi (GPIO Pins Lib Controller)

Les droits des différentes bibliothèques ci-dessus appartiennent à leurs propriétaires respectif.

Répartition des tâches

Taches de Corentin:

  • Achat et choix des RaspberryPi et des composants (répartition du coût de l'achat)
  • Modélisation 3D de la cage des RaspberryPi
  • Impressions 3D
  • Installation Debian sur les RaspberryPi

  • Exploration WiringPi
  • Programme de test de transfert (transfert d'un message entre les RaspberryPi pour connaitre la faisabilitée du projet)

  • Design principale du site
  • WebServer et js WebSocket: communication entre le site et le RaspberryPi

Taches de Jérôme:

  • Modélisation 3D du support pour laser/capteur avec attache sur la cage des RaspberryPi

  • Exploration LibTins
  • LaserNet: objets ByteArray, sensor

  • Commandes WebServer
  • Console du site (design et idée des commandes)
  • Design JavaScript du site

Secret

Secret N°1

Ceci est une page secrete.

Secret N°2

La majeure partie des tests des RapsberryPi se sont fait sans les lasers.