IOT - TP 3 : "Simulation" d'une Block-Chain

Thomas S.

2016-2017

IOT - TP 3 : "Simulation" d'une Block-Chain

Sommaire

  • Les bases
  • Pour communiquer

Les bases

Qu'est ce qu'une Block-Chain ?

  • Ensemble d'éléments électriques/électroniques fonctionnant ensemble
  • IA, IOT, Robots, ...
  • Certains y voient la 4ème révolution industriel

Les bases

La simulation dans notre cas

  • Chaque groupe est un élément
  • Utilisation de la puce NRF24L01 et de MySensors
  • Objectif : Éclairer un chemin

Les bases

Branchement de la puce NRF24L01

C'est ici, mais Attention !!! NE SURTOUT PAS BRANCHER LE 5V SUR LE NRF24L01

Installation de la librairie MySensors

RTFM 🦄

Pour communiquer

Découverte de MySensors 2.1

À partir d'ici, l'utilisation de MySensors n'est pas celle prévue, mais une version plus light.

  • Protocole Open Source et DIY basé sur NRF24L01
  • Présent sur beaucoup de projets domotiques
  • Message : dest;sensor;command;ack;type;payload

Pour communiquer

Base de MySensors 2.1

4 méthodes :
  • void setup() : Méthode de l'Arduino;
  • void presentation() : Méthode pour présenter les capteurs. Appelée juste au début lorsque l'Arduino démarre;
  • void loop() : Méthode de l'Arduino;
  • void receive(const MyMessage &message) : Méthode appelée lorsqu'un message arrive

Pour communiquer

MyMessage

Il s'agit de la classe qui gère les messages. Un message est associé à un capteur. Un nœud contient plusieurs capteurs.
  • MyMessage msg(CHILD_ID, TYPE) : Constructeur, le type vient d'une énumération et commence par V_;
  • msg.setDestination( int ) : Change le nœud de destination (0 par défaut, la passerelle);
  • send( msg.set( VARIABLE )) : Envoi une variable au nœud de destination.

Pour communiquer

MyMessage

  • msg.sender : ID du nœud émetteur;
  • msg.sensor : Capteur lié au message;
  • msg.type : Type du message (énum. mysensor_sensor/mysensor_data/mysensor_internal);
  • mGetCommand(msg.command_ack_payload) : Commande du message (énum. mysensor_command).
  • msg.getString(), msg.getBool(), msg.getFloat(), msg.getInt(), ...

Pour communiquer

Détail du TP

L'objectif ici est de créer un réseau Block-Chain très basique. Un nœud maitre (le 0) enverra à l'un des nœuds esclaves (10,11,12,13,14,15) un nœud de destination.

Le nœud de départ devra alors s'allumer et transmettre à un nœud adjacent un message pour lui dire d'aller au nœud suivant. Ainsi de suite jusqu'au nœud final. Les Arduinos sur le passage devront s'allumer. Le message de transmission sera sur fait sur le capteur 1.

C'est flou ? Allons à la slide suivante !

Pour communiquer

Détail du TP

Par exemple, 0 envoie au nœud 14 la valeur 11 sur le capteur V_POSITION (49), voici un résultat possible que l'on doit obtenir :

10 12 14 42
11 13 15

Autre détail important, si le capteur reçoit un message de la passerelle avec le type V_LIGHT_LEVEL (23), la lumière doit s'éteindre.

Pour communiquer

Le code de base

Link

Code à compléter. Il suffit de faire correspondre votre code avec vos voisins.

PS : J'ai mis des TODOs un peu partout

EXTRA

Fin ...

Prenez 5 minutes de feedback en allant ici s'il vous plait
Dernière maj : Voir Github 🐻 1 /
Précédent
Suivant