Skip to content

lonode/Project-of-Kineis

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Projet MangOH-Kinéis

This repository host one of our project developped at INSA Toulouse (2019/2020) as part of our IT formation. This project was developped in coordination with the Kinéis company.

Brief summary

This project aims to developp an embedded application (on a MangOH card) which is able to switch from the cellular network (5G) to the Kinéis's satellite network (Argos) when the first one is unavailable. The card embed a lot of sensors (see below Formatting), and these sensors datas have to be transfered via the prefered network (5G/Satellite). Once these datas have been transfered, their endpoint is either :

  • AirVantage if transfered via the cellular connection
  • Argos if transfered via the satellite connection

We have developped a django application which is responsible of fetching the sensor's data from either AirVantage or Argos and displaying the data for the user.
We use the Rest API to fetch the data from the Airvantage platform, and a SOAP API to fetch the data from the Argos platform.
These data are then processed and merged, and displayed in the end-user's browser via the Plotly JavaScript library.

Example graph

How to start the server

The webserver uses Django in back-end and jQuery,Bootstrap and Plotly in front-end. You therefore need to have Python 3 installed. Once python is installed, run :

pip install Django zeep requests

requests is used to make rest request to Airvantage, and zeep to make SOAP request to Argos.

Then you can cd to Server folder and do :

python manage.py runserver 8000

The server is now hosted on http://localhost:8000/index .

Formatting of satellite data

The sensors data sent via the satellite link are completly raw. We designed a payload format according to the precision of each sensors and the maximum available size of a payload inside a single Argos transmission.

Light(12)|Pressure(10)|Temperature(14)|Accelerometer(16x3)|Gyroscope(16x3)|CRC(16) = 148 bits

Light : 0 to 3000 lumens : 12 bits full precision
Pressure : 950 to 1050 hPa +/- 0.12 hPa = 833 values : 10 bits full precision
Temperature : -40 to 85°C +/- 0.01°C = = 12 500 values : 14 bits full precision
Accelerometer : 16 bits per axis for resolution. The measurement range depends on the sensitivy selected.

  • -2/2 g : precision of 0,000061 g/bits (16384 bit/g)
  • -16/16 g : precision of ~0,000488 g/bits (less precise) (2048 bit/g)

Gyro : 16 bits per axis as well.

  • 125 °/s : precision of ~0,00381 °/s/bits (16.4 bit/°/s)
  • 2000 °/s : precision of ~0,0609 °/s/bits (less precise) (262.4 bit/°/s)

NB : By bit, we need to note that it is stated LSB in the documentation. So we need to take care of the convention (little/big-endian) when manipulating datas.

Data size : 132 bits for full precision. Payload size :

  • Using a 16bits-CRC : 132+16=148 bits OK -> we can simply concatenete the datas.
  • Using 32bits-BCH : 164 bits NOT OK

Maximum data size : 160 bits.

To solve the BCH issue, we could take 10 bits instead of 14 for the temperature. It leads to a 0.2°C precision instead of a 0.01°C one. I really think it is enough, but it is open to discussion. We also could remove some bits from some axis.

Commentary

According to the kinéis documentation, for our KIM-1 card power (~500mW), we could go from 60% to 85% error-free message using BCH encoding instead of CRC. So without BCH, nearly 1/2 message is wrong (60%). It may be detrimental for our project if we send 3 or 4 message a day.

References

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 39.2%
  • Makefile 23.9%
  • C 17.5%
  • HTML 13.1%
  • JavaScript 5.6%
  • CMake 0.7%