Réseau de capteurs

De Wiki d'activités IMA
Révision datée du 20 janvier 2016 à 20:40 par Ajouy (discussion | contributions) (Contexte)

Contexte

Objectif initial du projet

L'objectif du projet est de réaliser un réseau de capteurs pouvant être implanté chez un particulier. Or comme le Wifi n'est pas captable partout dans la maison, il est nécessaire de réaliser un réseau maillé qui pourrait ainsi relayer les information jusqu'à un module central. L'avantage important d'utiliser des émetteurs pas en Wifi est aussi une économie d'énergie très importante. Ainsi les capteurs pourraient tenir plusieurs mois sur une charge, contrairement à quelques jours/semaines avec du wifi. Il est également nécessaire de mettre en place un moyen de voir et collecter les données transmises par les capteurs.

Matériel et logiciel

Choix n°1

  • Des Openmotes (embarquant un microcontrôleur CC2538)
  • Riot OS
  • Une Raspberry Pi 2 embarquant un serveur web

Choix n°2

  • Les montres EZ430 Chronos dde Texas Instrument (embarquant un microcontrôleur CC1111)
  • Contiki
  • Une Raspberry Pi 2 embarquant un serveur web

Choix final

  • Des ESP8266
  • L'IDE Arduino avec une bibliothèque spécifique aux ESP
  • Une Raspberry Pi 2 embarquant un serveur web

Avancement du projet

Le matériel et les logiciels devant être utilisés pour le projet étant expérimentaux, l'avancement s'est fait en tâtonnant. Nous décrivons donc ici les méthodes employées et les différents microcontrôleurs que nous avons tenter de faire fonctionner avant de nous rabattre sur les ESP.

OpenMote et RiOT OS

http://www.riot-os.org/

http://www.openmote.com/software/riot.html

https://github.com/RIOT-OS/RIOT/wiki/Board:-OpenMote

https://github.com/RIOT-OS/RIOT/tree/master/boards/openmote

https://github.com/RIOT-OS/RIOT/wiki/Introduction

http://www.riot-os.org/files/riotlab-tutorial.pdf


Dans un premier temps, nous cherchons à faire un "Hello World" sur les OpenMote. Il faut installer un OS léger sur ces puces. Il existe plusieurs systèmes comme FreeRTOS (pour le temps réel), Contiki ou encore RiOT. Ces deux derniers sont intéressants pour notre application où nous cherchons à mettre en place un réseau maillé entre nos noeuds de capteurs (protocole RPL). Nous décidons de partir sur RiOT car il est plus récent et plus léger (en théorie).

Compilation d'un programme example de RiOT

apt-get install gcc-arm-none-eabi
export PATH=${PATH}:/usr/bin/arm-none-eabi-gcc
git clone https://github.com/RIOT-OS/RIOT.git

Pour compiler, on pourra utiliser un example dans les fichiers (dans RIOT/examples). Pour compiler, on lance la commande :

make all

Les fichiers sont dans le nouveau dossier bin créé par la commande. Il peut éventuellement s'avérer nécessaire d'installer la version 32bits de libc6-dev (package libc6-dev-i386).

Flash du programme sur l'OpenMote

Avec RiOT, la méthode préconisée pour flasher la carte est d'utiliser une interface JTAG. Nous allons se passer de cette interface (nécessitant un adaptateur payant) pour flasher la carte via l'UART. On récupère le script :

git clone --recursive https://github.com/OpenMote/openmmote-bsl.git

Nous avons dû modifier le code source du fichier openmote-bsl.py, en remplaçant la ligne :

#openmote_bsl_path = "../../tools/openmote-bsl"
openmote_bsl_path = "."

Nous pouvons maintenant flasher l'OpenMote avec la commande :

python openmote-bsl.py /path/to/file.bin --board openbase

/!\ Attention il faut éxecuter cette commande en étant dans le dossier d'openmote-bsl. S'il y a un problème, il est possible qu'il vous manque un package :

python-serial

EZ430 et Contiki

ESP8266