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
Full name | Occupation | Links |
---|---|---|
Robin DEBRY | Project manager | |
Mathias GAGNEPAIN | Program manager | |
Elone DELILLE | Technical leader | |
Enzo GUILLOUCHE | Technical Writer | |
Raphael DESCAMPS | software engineer | |
Gregory PAGNOUX | Quality assurance |
Name | Occupation | Links |
---|---|---|
Florent ANON | Client (Coris Innovation - Management of innovative projects) | Website |
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.
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.
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 |
- Ashley wants to secure her skies with the SportShield.
- She hopes the system is secured and she will not receive false positive.
- 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.
- 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.
- 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).
- 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.
- 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 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. |
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. |
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. |
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. |
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. |
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. |
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.
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. |
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. |
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 |
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. |
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).
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
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:
- Pull the cable and enclose your stuff.
- Insert the cable into the hole.
- Enable the lock:
- Release the cable:
- 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
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.
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.
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]
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.
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. | 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. | 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. | 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. | 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. | 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. | 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. | 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. |
-
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.
-
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.
-
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.
-
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.
-
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.
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 |
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. |