Skip to content

Latest commit

 

History

History
446 lines (321 loc) · 37.7 KB

functionalSpecifications.md

File metadata and controls

446 lines (321 loc) · 37.7 KB

SportShield - Functional specifications

This project was requested by Coris Innovation, a French IT company.

The goal of the project is to optimize the battery consumption to make it last longer, from 3 days to 7 days or more, adding NFC [1] component, improve the security and the user experience based on the existing prototype.

Table of Contents

Stakeholders

Project members

Full name Occupation Links
Robin DEBRY Project manager LinkedIn
Mathias GAGNEPAIN Program manager LinkedIn
Elone DELILLE Technical leader LinkedIn
Enzo GUILLOUCHE Technical Writer LinkedIn
Raphael DESCAMPS software engineer LinkedIn
Gregory PAGNOUX Quality assurance LinkedIn

Other stakeholders

Name Occupation Links
Florent ANON Client (Coris Innovation - Management of innovative projects) Website

Project scope

We have multiple objectives for this project:

  • Reducing the battery consumption.
  • Increasing the security.
  • Implement the NFC [1] module.
  • Improve the alarm function to be able to stop it whenever we want, either the alarm cycle is finished or not.

Functional requirements

The SportShield must allow the following actions:

  • Send device information to the API [2]
    • Battery level
    • Position (latitude, longitude)
    • Movement (rotation, new position)
  • Efficient Alarm management
    • 3 light sounds when a light shock is detected
    • 5 long high sounds when a strong shock is detected
    • Give possibility for user to make the alarm stop ringing whenever he wants.

All the code must be written in the Arduino's [3] language (a variant of the C++ [4] programming language), following the existing code convention. No libraries except the ones that have already been given are allowed.

Deliverables and milestones

Date and time Deliverable
18 March 2024, 5 PM Functional specification
26 March 2024, 5 PM Technical specification
10 April 2024, 5 PM Test plan
10 April 2024, 5 PM User Manual
10 April 2024, 5 PM Code

Personas and use cases

Personas

Persona 1 - Ashley Ricks

Ashley Ricks 22 years old
Ashley Picture Description:
A vibrant young woman, revels in the exhilarating rush of vacationing amidst the clouds. She finds herself gliding gracefully down a majestic snow-capped mountain, her skis carving elegant trails in the pristine white snowscape.

Frequence of use:
- Rare
Goals
  • Ashley wants to secure her skies with the SportShield.
  • She hopes the system is secured and she will not receive false positive.
Challenges
  • Ashley needs to be able to let her skies in outdoor lockers without the SportShield freezing.
  • She needs to be able to use it during the entire week without running out of battery.
  • She needs to be noticed if someone touches to her skies.

Persona 2 - William Greener

William Greener 37 years old
Bill Picture Description:
A seasoned adventurer, embodies the spirit of freedom and adventure as he stands tall on the golden sands of the Canary Islands. He eagerly awaits the beckoning waves, ready to embrace the thrill of surfing beneath the warm, tropical sun.

Frequence of use:
- Often
Goals
  • He wants to get used to use the product.
  • He wants to secure his surf board.
  • He wants to be able to use it during an entire week-end or during his vacation in the Canary Islands.
Challenges
  • William needs a product which won't burn under the sun's heat of Canary Islands.
  • He needs a product which won't often run out of battery.
  • He needs a durable and weatherproof device to withstand outdoor conditions (Water & Sand).

Persona 3 - Steve Sinclair

Steve Sinclair 63 years old
Steve Picture Description:
An old man with a white and gray beard, he is traveling around the world with his wife in a camping-car, to enjoy his retirement. With each new destination, they discover the beauty of nature and the richness of different cultures, cherishing every moment of their shared journey together.

Frequence of use:
- Almost Everyday
Goals
  • He wants to protect his stuff while he is not in his camping-car.
  • He wants to stay alerted if someone touches his stuff but he is not that confident with smartphones.
Challenges
  • He needs to be able to use another way to unlock than his smartphone.
  • He wants a hardware which will resist to different climates he may encounter.
  • It should have a connectivity around the world.

Use Cases

Movements & Shocks detection

Use Case Name Movements & Shocks Detection
Actors SportShield Device, User, Mobile App
Description The user should be notified on his mobile phone and SportShield must ring if the device is moving or rotating.
Pre-conditions The device is activated, and checking the position and shocks.
Post-conditions The device sends a notification to the user through the API.
Normal Flow 1. The user activates the device in the application.
2. Someone tries to steal the user's stuff.
3. The device rings and sends a notification.
4. The user receives the notification.
Alternative Flows 1. If the device isn't connected to the network, the status can't be communicated to the app.
2. The device can be moved for multiple reason else than a steal.
Exception Handling 1. The device will send the notification when the signal will be found.
2. The device will send a false positive making the user worries.

Battery Status

Use Case Name Battery Status
Actors SportShield, Mobile App
Description The user must know the battery status.
Pre-conditions The device is powered and connected to the network.
Post-conditions The battery level is updated in the application.
Normal Flow Every X time the device sends the battery state to the App.
Alternative Flows 1. If the device isn't connected to the network, the battery status can't be communicated.
Exception Handling 1. The device will send the notification when it will be connected.

Battery is running out

Use Case Name Battery is running out
Actors SportShield, Mobile App
Description The user must be informed when the device is running out of battery. If the device is too low, release the cable and turn it off.
Pre-conditions The device is running out of battery.
Post-conditions A notification is sent to inform the user.
Normal Flow 1. When the battery is depleted the device sends a notification to the user.
2. When SportShield has quite depleted its battery the device releases the cable and turns itself off to prevent irreversible damage on the battery.
Alternative Flows 1. If the device isn't connected to the network, the notification can't be sent.
2. The battery level is too low and the device isn't connected to the network, it will turn it-self off without sending any notification.
Exception Handling 1. The device will send the notification when it will be connected.
2. The user will not be informed.

Battery is fully charged

Use Case Name Battery is fully charged
Actors SportShield, Mobile App
Description The user must be informed when the battery is fully charged. When the device is charged, it stopped charging to prevent irreversible battery damage.
Pre-conditions The battery is fully charged.
Post-conditions A notification is sent to inform the user.
Normal Flow 1. When the battery is fully charged the device stops charging and sends a notification to the user.
Alternative Flows 1. If the device isn't connected to the network, the battery status can't be communicated but it will stop charging.
Exception Handling 1. The device will send the notification when it will be connected.
2. The user will not received the notification.

Locking/Unlocking with the mobile app

Use Case Name Locking/Unlocking with the mobile app
Actors User, SportShield, Mobile App
Description The user can lock or unlock the device at any moment with the app on his smartphone.
Pre-conditions The device must be powered, the device and the smartphone are connected to the network.
Post-conditions The device will be locked or unlocked.
Normal Flow 1. The user can lock the SportShield through the App, which will enable the movement detection.
2. The user can unlock the SportShield through the App, which will disable the movements detection.
Alternative Flows 1. SportShield or user's mobile isn't connected to the network, the user can't interact with the SportShield.
Exception Handling 1. The device will wait until it receives a user interaction.
2. If it's locked the user ins't able to move it without making it ring and he can't get his stuff back.

Locking/Unlocking with NFC device

Use Case Name Unlock/Unlock the device with NFC [1]
Actors User, SportShield, Mobile App
Description The user can lock or unlock the SportShield without his smartphone by using a NFC [1] device.
Pre-conditions The device must be powered and the user should have a NFC [1] device.
Post-conditions The device is now locked or unlocked.
Normal Flow By making contact between the NFC [1] device and the SportShield it will lock or unlock as well as on the mobile app.
Alternative Flows 1. The NFC [1] card in the device isn't working, the interaction can't be detected.
2. The NFC [1] device hasn't the right to access to the SportShield.
Exception Handling 1. If the NFC [1] card isn't working nothing will happen.
2. If access rights are invalid, the user will be informed of a unsuccessful locking/unlocking attempt.

Acceptance criteria

The electromagnet mustn't stay locked if the user wants to take back his stuff.

The Alarm must be deactivatated without waiting if the user made a misstake.

The Battery must last for 7 days or more.

It must run without any issues, If not, it needs to catch them and alert the user of the error.

To ensure that the project is viable, all the specifications must be approved by the client and the programs must be tested in intern by our Quality Assurance and potentially other team members.

Solution overview

Movement Detection Improvement

The actual movement detection triggers the alarm only on rotation.

Problem Occurs Solution
We can move the device on until we don't rotate it, it doesn't ring. We add a detection on axis x, y.

Battery Management Improvement

Problem Occurs Solution
A full battery will be empty in 3 days. - We must check each component one by one to reduce the usage consumption.
- Turn all components in sleep mode when we don't need them.
The electromagnet consumes a lot of energy We will activate it less than 1 second and only when we need it.

Security Improvement

By default, the device is accessible to everyone.

Problem Occurs Solution
Everyone can lock or unlock the SportShield We will restrict the authentication to the owner or trust people

Alarm Management

Problem Occurs Solution
While the alarm is ringing, all other actions are unavailable We will modify the alarm to make it ring while other actions are executed (possibility for the user to disable the alarm at any moment)
The alarm is too loud. We want to reduce the decibel from 135dB to 80dB, to reduce damage to the hearing.

NFC Reader

Currently, the NFC [1] reader isn't been implemented yet, we should include it for easier usage of the product, making the user able to unlock/lock the SportShield with a NFC [1] card or badge (without their smartphone), or by contact with their smartphone (depending of brand and phone's model).

Errors

The program must never be stuck on an issue, and continue without these features in the following case:

  • Impossible to reach the API [2] server
    • Retrying in a few minutes
  • Impossible to find a signal
    • Retrying in a few minutes
  • Buzzer not working
    • Inform the client about the issue and continue to send device data in case of movement

The program will stop working if:

  • A hardware issue is encountered
  • The SportShield has run out of battery

Usage

Charge your SportShield

A fully-charged SportShield can last over 6 days.

To charge SportShield:

Plug the charger into the USB port on the SportShield. Plug the other end of the charger into an outlet.

The SportShield is now charging. Try to not use SportShield during its charging.

To use the device correctly please follow these steps:

How to use it?

To Protect your stuff:
  1. Pull the cable and enclose your stuff.
  2. Insert the cable into the hole.
  3. Enable the lock:
    • With Bluetooth:
      1. Authenticate yourself.
      2. Enable locking.
    • With a NFC [1] device:
      1. Make contact between the NFC [1] device and the SportShield

To open it and release your stuff.
  1. Release the cable:
    • With Bluetooth:
      1. Authenticate yourself.
      2. Disable locking.
    • With a NFC [1] device:
      1. Make contact between the NFC [1] device and the SportShield
  2. Pull the cable from the hole.

You can refer to the user manual for detailed usage, which you can find in 2 languages here: English | French

Non-functional requirements

Performance

The program must be able to set each module in sleep mode will no movement has been detected to economize the battery and wake them up only when it needs them. The code must be executed almost fast, less than 1s.

Maintainability

In the event the client decides to change their requirements, we must be able to easily update the program to fit the new requirements. Also, if the client wants to update it with an intern or with another developement team the code must be commented on and documented to help its understanding.

Usability

Although we used a self-made API [2] to test efficiently the program the client can easily replace it with his own API [2].

This API [2] will receive a JSON [5] array containing device information like:

{
    "latitude":"{currentLatitude}", 
    "longitude":"{currentLatitude}", 
    "batterie":"{batteryVoltage}"
}

We will probably add some useful information like battery level (in percent), which you can use or not in your API [2]

Security

We can update the internal program by plugging it into the charging port, which can lead to invalid data targets, wrong information, or even more, the disabling of the device or the installation of malware.

Risks and assumptions

ID Description Risks Impact Likelihood Solution
1 Difficulty to understand the existing code. We may not clearly understand how the existing code works leading to a bad implementation or program issues. High Medium We should reverse Engineer the program and comment on uncommented stuff.
2 Hardware issues or code miswriting. As a prototype is not used very often, the hardware can malfunction leading to understandable issue if not detected as soon as possible, and the libraries or API [2] URLs can be outdated. High Low We will test each hardware module and the existing/fixing if needed before working on its improvement.
3 Lack of documentation for reference. Inadequate documentation may hinder troubleshooting or lead to inefficiencies or delays. Medium Medium Implement a documentation strategy to comprehensively capture, components, and usage instructions.
4 Inadequate security measures Inadequate security measures could make the device vulnerable to unauthorized access or data breaches, compromising user privacy and system integrity. High Low Implement robust encryption protocols, secure authentication mechanisms, and regular security audits.
5 Environmental factors affecting performance Environmental factors such as temperature, humidity, or physical shocks may impact the device's performance or durability, affecting its reliability in various conditions. Medium Medium Conduct rigorous environmental testing to assess the device's performance under different conditions.
6 Lack of user acceptance If users do not find the device easy to use, intuitive, or beneficial, adoption rates may be low, leading to reduced market penetration and revenue generation. High Medium Conduct user research and usability testing to understand user needs and preferences, incorporate feedback into the design process, and provide comprehensive user training.
7 2G network shutdown A shutdown of 2G networks could render the device unable to communicate with external servers or mobile devices, impacting its functionality. High Low Develop contingency plans to migrate to alternative network technologies (3G, 4G) and ensure compatibility with future network standards. Regularly monitor network status for potential disruptions.

Future improvements

  1. Remote Locking and Unlocking: Enable users to remotely lock or unlock the device via a secure online portal or mobile app, providing convenience and peace of mind, especially in situations where physical access to the device is not possible.

  2. Customizable Alarm Settings: Allow users to customize alarm settings based on their preferences and environment, such as adjusting alarm volume, duration, and sensitivity to better suit their needs.

  3. Data Encryption and Privacy: Implement robust data encryption protocols to ensure the confidentiality and integrity of user data transmitted between the device and external servers, safeguarding sensitive information from unauthorized interception or tampering.

  4. Enhanced Durability and Weather Resistance: Develop ruggedized hardware components and weatherproof enclosures to withstand harsh environmental conditions, including extreme temperatures, moisture, and physical impacts, ensuring reliable operation in various outdoor settings.

  5. Extended Battery Life: Continuously optimize power management algorithms and hardware components to further extend the device's battery life, allowing for prolonged usage between recharges and minimizing downtime.

These future improvements aim to enhance the functionality, usability, and security of the SportShield device, providing users with a comprehensive and reliable solution for protecting their sports equipment and ensuring peace of mind during outdoor activities. These Improvements way is just theorical and will not be implemented without Coris Innovation Approval.

Glossary

Id Term Definition What it means in this project Additional Content

1

NFC Near Field Communication (NFC) is a set of short-range wireless technologies, typically requiring a distance of 4 cm or less to initiate a connection. The SportShield will be able to lock or unlock with a card or a badge. Wikipedia

2

API API stands for Application Programming Interface. In the context of APIs, the word Application refers to any software with a distinct function. Interface can be thought of as a contract of service between two applications. The device must send data from the application through the API to keep the user informed of the device status. Wikipedia

3

Arduino Arduino is an Italian open-source hardware and software company, project, and user community that designs and manufactures single-board microcontrollers and microcontroller kits for building digital devices. We will use Arduino IDE and a variant of C++ made for Arduino during this project. Wikipedia

4

C++ C++ is a high-level, general-purpose programming language created by Danish computer scientist Bjarne Stroustrup. Arduino's Language is a variant of C++ specialized to manage their microcontrollers. Wikipedia

5

JSON JSON is a text format that is completely language independent but uses conventions that are familiar to programmers of the C-family of languages, including C, C++. Information about the device (position, battery, etc...) will be sent to the API in JSON format. Wikipedia

Appendix

SportShield Scheme

top view transparent

Prototype Scheme

Legend:

name description
Charging Port The only port to charge the device, it actually can be used also to update the internal software (this action is reserved to Coris).
Cable exit The cable comes out of this hole.
Cable holder This is a place where you can attach the cable.
Cable lock Insert the cable here to attach your stuff and protect them.
NFC reader Make contact with an NFC device at this place to lock/unlock the SportShield.

bottom view closed

Prototype Scheme