PM2M-2016-GeolocOutdoor/Suivi

Géolocalisation Outdoor sans GPS par Trilatertion RSSI

Etudiants M2PGI PM2M: AVRIL Sébastien, BOTTRAUD Jean-Yves, FAGNO Loïc, BERGER Stéphane

Dépôt Git : github

Documents : [[Media:PM2M-2016-GeolocOutdoor.pdf|Rapport]] - [[Media:PM2M-2016-GeolocOutdoor-slides.pdf|Transparents]] - [[Media:PM2M-2016-GeolocOutdoor-flyer.pdf|Flyer]] - Video

=Objectif= Réaliser un service temps-réel de géolocalisation outdoor sans GPS (ie tres basse consommation d'energie) en long range (LoRa). Le service sera mis en oeuvre au moyen de Spark Streaming.

=Contexte=

Algorithmes existants :
 * Local Positioning Systems: LBS Applications and Services https://books.google.fr/books?id=aV3LBQAAQBAJ
 * Algorithms for Location Estimation Based on RSSI Sampling http://www.ece.umd.edu/~cpap/published/cpap-franco-rt-08.pdf
 * Outdoor Localization System Using RSSI Measurement of Wireless Sensor Network http://www.ijitee.org/attachments/File/v2i2/A0359112112.pdf
 * Overview on RSSI-based Positioning Algorithms for WPS http://www.diag.uniroma1.it/~querzoni/corsi_assets/1314/GreatIdeas/great_ideas_de_nardis_2.pdf

Bases de code:
 * https://github.com/jpias/beacon-pfilter-simulation/wiki

=Objectif du projet=

=Matériel utilisé=
 * STM32 Nucleo
 * Shield MBedLoRa SX1276
 * Semtech LoRaMote

=Technologies utilisées=
 * LoRa
 * Logstash
 * Elastic Search
 * Kibana
 * Mosquitto
 * Node-RED
 * NodeRED ElasticSearch3
 * Spark
 * AWS EC2

=Plan de développement=

Programmation du modem Nucleo LoRa
Compiler et flasher le programme suivant via Mbed
 * https://developer.mbed.org/users/donsez/code/SX1276Receiver/
 * https://developer.mbed.org/users/donsez/code/SX1276Lib/

Pour flasher les STM32 Nucleo, il est préferable d'utiliser l'utilitaire sous Windows STSW-LINK004 de ST et OpenOCD sous Linux/MacOS en utilisant avec le bon fichier de configuration : par exemple, scripts/board/st_nucleo_l1.cfg pour les Nucleo L1XX.

Pour plus d'info sur le STM32, https://leanpub.com/mastering-stm32

LoRaMote --> Modem LoRa Nucleo

 * LoRaWAN DataUp (non chiffré) avec le payload décrit à la page 17 du LoRaMote User Guide
 * Voir page 15 de la spécification LoRaWAN https://www.lora-alliance.org/portals/0/specs/LoRaWAN%20Specification%201R0.pdf

Modem LoRa Nucleo -- (SERIAL PORT) --> Host

 * RX;modem;size;rssi;snr;freq;bw;sf;cr;buffer

Host --> Spark

 * timestamp_host;host_id;devaddr;modem;size;rssi;snr;freq;bw;sf;cr;latitude_host;longitude_host;altitude_host
 * timestamp_host;host_id;devaddr;modem;size;rssi;snr;freq;bw;sf;cr;latitude_host;longitude_host;altitude_host;number_satellites_host
 * timestamp_host;host_id;devaddr;modem;size;rssi;snr;freq;bw;sf;cr;latitude_host;longitude_host;altitude_host;latitude_mote;longitude_mote;altitude_mote;number_satellites_mote

latitude_mote;longitude_mote;altitude_mote;number_satellites_mote servent à calculer la précision de la trilatération calculée par les algorithmes de LBS par RSSI.

Ecriture de générateurs de messages
Afin de tester les algorithmes

Enregistrement des messages
En vue de les rejouer sur les algorithmes

Ajout d'un timestamp_cluster à chaque message.

Modifcation du code de la LoRaMote

 * https://github.com/Lora-net/LoRaMac-node/tree/master/coIDE/LoRaMote/LoRaMac/classA

Affichage dans Kibana

 * Affichage des positions sur une carte
 * Graphe d'évolution de la précision de l'estimation par RSSI

=Expérimentations et Résultats=

=Photos et Vidéo=