Intégration de capteurs Arduino dans une plate-forme de mobile crowdsourcing

Moncef AOUDIA

Antoine Veuiller

Romain ROUVOY

Encadreurs:

Auteur:

Lundi 22/05/2017

Projet de second semestre de Master Informatique

Contexte

Internet des Objets

    Arduino          

            Espruino                       

 APISENSE  

Problématiques

  1. Nombre important de capteurs

  2. Différentes technologies de transfert de données

  3. Différents langages de programmations

  4. Contraintes mémoires

Objectifs du projet

  1. MQLIB: librairie qui gère les capteurs de gas MQ (MQ2,MQ6,MQ8)
  2. AIRQUA: serveur Web qui transfert les données à partir de différents capteurs

Architecture

AIRQUA

MQLIB

APISENSE

http://@ip/sensors/co/value

Requête GET

Réponse Json

{"name":"MQ2","gasTypes":"co","value":"0"}

Client

Serveur

getGasPPM(CO)

displayGasPPM(CO)

Capteurs 

Prérequis et environnement de développement

Materiels

Logiciels

 Contributions et Résultats concrets 

Arduino (C)

  1. MQLIB
  2. AIRQUA WiFi, Ethernet, Bluetooth.
/* Pin sur lequel le capteur est connecter */
int sensorPin = A0;  

void setup() {
  /* UART reglages, baudrate = 9600bps.*/
  Serial.begin(9600); 
}

void loop() {
  /* Lecture et affichage de la valeur du capteur */
  Serial.print("Value of sensor is: "+analogRead(sensorPin);
  Serial.print("\");
}

Code snippet

Espruino (JS)

  1. MQLIB (prototype)
  2. AIRQUA WiFi
var http = require("http");
/**
 * Handles all requests for the simple HTTP server
 * @param {any} request - Incomming request
 * @param {any} response - Response to client
 */
function handleRequest(request, response) {
    /** Handles all requests */
    console.log("request is :"+request.url);
    response.writeHead(200, {'Content-Type': 'application/json;charset=utf-8'});
    response.write(responseRequest(request));
    response.end("\n");
    }
}

Code snippet

Tableau comparatif

Arduino (C) Espruino (JS)
​Gestion de la mémoire très efficace. Rapidité d’exécution
Faible consommation de ressources. Code source court et compacte.
Support de plusieurs capteurs analogiques ​Support de plusieurs capteurs numériques
Support de la majorité des capteurs utilisés Processeur puissant et efficace
Environnement de développement complet  Support natif de l’API RESTfull.

Avantages

Arduino (C) Espruino (JS)
Non support natif de l’API RESTfull  Consommation d’avantage de ressources matériels que Arduino
Problème de latence comparé à la version JavaScript Ajout obligatoire de Multiplexeur pour le support de plusieurs capteurs analogiques

Inconvénients

Mètriques

Langage    fichier  commentaire code
Arduino Sketch 7 457 792
C++   2 110 149
C/C++ Header 2 150 70
CMake 5 46 60
JavaScript 8 244 274
TOTAL 24 987 1345

Démonstration

Affichage de toutes les valeurs des capteurs:

http://serverAddressIp/sensors/values

Affichage de tout les types de capteurs:

http://serverAddressIp/sensors/types

Perspectives

  1. Ajouter de nouveaux capteurs à MQLIB
  2. Implémenter AIRQUA Ethernet en JavaScript
  3. Partager les données collectées sur APISENSE
  4. Déployer AIRQUA sur le terrain
  5. Connecter la partie Arduino avec la partie Espruino
  6. Ajout d’un support pour le réseau LoRa

Bilan

  1. Initiation au travail de recherche scientifique
  2. Mise en pratique de mes compétences 
  3. Un excellent encadrements
  4. Nombreuses difficultés matérielles et logiciels 
  5. Les objectifs n’ont pas tous été réalisés

Remerciements 

Mr VEUILLER &  Mr ROUVOY

 

Sources 

  1. https://www.arduino.cc
  2. http://www.esp8266.com
  3. https://www.espruino.com
  4. https://apisense.io
  5. http://www.china-total.com/Product/meter/gas-sensor/Gas-sensor.htm
  6. http://lab.hakim.se/reveal-js
Made with Slides.com