Réseau de lampes
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
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.
Il faut posséder un compte github. Ensuite, il faut forker ce répertoire (tout en étant connecté à notre compte).
Séance 3
Adresse IP de la RaspberryPI lors des séances de projet :
172.26.79.239