Réseau de lampes : Différence entre versions

De Wiki de Projets IMA
(Séance 2)
m (Étapes du projet)
Ligne 14 : Ligne 14 :
 
==Étapes du projet==
 
==Étapes du projet==
  
===Partie 1 :===
+
===Partie 1===
 
*Installation de Contiki, RIOT ou tout autre OS sur les OpenMote permettant la communication entre elles.
 
*Installation de Contiki, RIOT ou tout autre OS sur les OpenMote permettant la communication entre elles.
  
===Partie 2 :===
+
===Partie 2===
 
*Communication Rx/Tx entre la RaspberryPI et un OpenMote.
 
*Communication Rx/Tx entre la RaspberryPI et un OpenMote.
 
*Réception de l'état d'un capteur de présence connecté à un OpenMote et extinction/allumage d'une LED de l'OpenMote (via traitement sur la RaspberryPI) en fonction de l'état du capteur.
 
*Réception de l'état d'un capteur de présence connecté à un OpenMote et extinction/allumage d'une LED de l'OpenMote (via traitement sur la RaspberryPI) en fonction de l'état du capteur.
  
===Partie 3 :===
+
===Partie 3===
 
*Installation d'un serveur Apache sur la RaspberryPI pour la gestion des lumières via un interface web (sur un smartphone, ordinateur ou autre).
 
*Installation d'un serveur Apache sur la RaspberryPI pour la gestion des lumières via un interface web (sur un smartphone, ordinateur ou autre).
 
*Mise en réseau et routage des OpenMote pour permettre la communication relai entre eux. Cela permettra la communication entre la RaspberryPI (connectée à la box) et n'importe quel OpenMote indépendamment de sa distance.
 
*Mise en réseau et routage des OpenMote pour permettre la communication relai entre eux. Cela permettra la communication entre la RaspberryPI (connectée à la box) et n'importe quel OpenMote indépendamment de sa distance.

Version du 14 janvier 2016 à 09:06

Cahier des charges

Présentation générale du projet

Contexte

Dans le cadre du module transversal "Internet des Objets", nous avons choisi de travailler sur un réseau de lampes connectés. En effet, dans un contexte économique et écologique, il est primordial d'avoir un contrôle à distance des lumières domestiques, lorsqu'il y a absence de personnes.

Objectif du projet

L'objectif principal du projet est d'avoir un système capable d'allumer, d'éteindre et de visualiser les états des lumières via un navigateur tout en se basant sur la présence ou non des personnes dans les pièces.

Description du projet

Le réseau de lumière peut, par exemple, être utilisé dans une maison. Dans chaque pièce on a un capteur et une lumière.

Choix techniques : matériel et logiciel

  • Raspberry Pi
  • OpenMote Base / OpenMote Battery / OpenMote cc2538
  • Contiki : OS pour les capteurs miniatures en réseau.

Étapes du projet

Partie 1

  • Installation de Contiki, RIOT ou tout autre OS sur les OpenMote permettant la communication entre elles.

Partie 2

  • Communication Rx/Tx entre la RaspberryPI et un OpenMote.
  • Réception de l'état d'un capteur de présence connecté à un OpenMote et extinction/allumage d'une LED de l'OpenMote (via traitement sur la RaspberryPI) en fonction de l'état du capteur.

Partie 3

  • Installation d'un serveur Apache sur la RaspberryPI pour la gestion des lumières via un interface web (sur un smartphone, ordinateur ou autre).
  • Mise en réseau et routage des OpenMote pour permettre la communication relai entre eux. Cela permettra la communication entre la RaspberryPI (connectée à la box) et n'importe quel OpenMote indépendamment de sa distance.

Suivi de l'avancement du Projet

Séance 1

Nous avons d'abord réalisé des tests préliminaires sur un OpenMote afin de nous familiariser avec par exemple l'allumage/extinction d'une LED.
Les OpenMote sont livrées avec un OS pré-installé : FreeRTOS.
Nous avons donc suivi un tutoriel de Bootstrapping.

On installe toutes les librairies ARM Cortex nécessaires au bon fonctionnement du chip embarqué sur l'OpenMote :

wget http://mirrors.kernel.org/ubuntu/pool/universe/libs/libstdc++-arm-none-eabi/libstdc++-arm-none-eabi-newlib_4.8.3-11ubuntu1+4_all.deb sudo dpkg -i libstdc++-arm-none-eabi-newlib_4.8.3-11ubuntu1+4_all.deb

On copie ensuite le firmware de l'OpenMote :

git clone --recursive https://github.com/OpenMote/firmware.git OpenMote/firmware

Avant de passer à la suite, il convient d'effectuer quelques manipulations non explicitées sur le tutoriel, mais pourtant indispensables : (Merci à T. Vantroys pour ces manipulations)

cd OpenMote/firmware/platform/cc2538/libcc2538
make
cp libcc2538 ..
cd ../../../test            // répertoire OpenMote/firmware/test
chmod u+x tests-projetcts.sh
./tests-projects.sh

On se place dans le dossier projects :

cd ../projects           // répertoire OpenMote/firmware/projects

Ce dossier contient de nombreux projets déjà écrits qu'il suffit de tester. On va dans notre cas tester les LED. Plaçons nous alors dans le dossier correspondant :

cd test-leds/src 

Puis compilons !

make TARGET=cc2538 all BOARD=openmote-cc2538 all

La compilation faite, il faut maintenant flasher le programme sur l'OpenMote :

make TARGET=cc2538 all BOARD=openmote-cc2538 bsl

On remarque que le programme tourne bien (les LED flashent).
/!\ Attention /!\ : Sur les OpenMote (contrairement à un Arduino par exemple) il est impossible de flasher de nouveau un programme si le programme courant tourne ! En pressant le bouton USER nous pouvons de nouveau flasher un programme.

Séance 2

Compilation du premier programme sous Contiki

Cette séance est consacrée à l'installation de Contiki. Contiki est un OS Open-Source, consacré à l'Internet des Objets, c'est pourquoi nous souhaitons l'utiliser !
Nous avons souhaité suivre ce tutoriel.

Crédit : http://www.openmote.com/

Il faut posséder un compte github. Ensuite, il faut forker ce répertoire (tout en étant connecté à notre compte). Crédit : http://www.openmote.com/

Ensuite dans le terminal, nous clonons ce répertoire :

git clone https://github.com/USERNAME/contiki.git ~/Contiki

Si l'utilisateur souhaite contribuer à Contiki, il peut également ajouter le dépôt origine de Contiki comme une branche de suivi dans git. On taperait donc :

git remote add upstream https://github.com/contiki-os/contiki.git
git fetch origin -v
git fetch upstream -v
git merge upstream/master

Maintenant que nous avons le code source Contiki sur l'ordinateur, il est temps de le compiler. Nous commençons avec un projet simple "Hello World". Nous entrons les commandes suivantes :

cd ~/Contiki/examples/hello-world
make TARGET=cc2538dk hello-world

La compilation se fait :
Crédit : http://www.openmote.com/

Une fois la compilation terminée, on a l'écran suivant :
Crédit : http://www.openmote.com/

La suite du tutoriel utilise un J-Tag pour flasher Contiki sur l'OpenMote. Nous n'avons malheureusement pas de J-Tag, donc nous allons flasher l'application exactement comme nous l'avions fait avec les tests préliminaires de la séance 1.

Flash de l'application

On se place dans [Modification en cours]

Séance 3

Adresse IP de la RaspberryPI lors des séances de projet :

172.26.79.239

Séance 4

Séance 5