WHY DOES YOUR PET NEED A SMART PET COLLAR?
DESIGN ARCHITECTURE
High-level System
This is the high-level architecture diagram of our system. Inside this device, we have a
microcontroller and several sensors and other modules. Since this is a wearable device for pets,
we can’t use a direct power supply. So we use a rechargeable battery, so the user can charge it once
every few days.
One of the main features of this system is tracking the pet’s location. For that, we use a GPS module,
which can get location data through GPS satellites. For monitoring health, we get body temperature
data and pulse data using a temperature sensor and a pulse sensor.
We get the data related to orientation and movement using a gyroscope sensor. We use that data for the
sleep monitoring feature.
We also include a speaker with this device, so it can be used to implement a sound-based pet training
feature. Finally, this has a GSM/GPRS module, to connect to the internet.
So the device can send the data taken from the sensor to the cloud server.
What if the device lost network connectivity at some point? To address that issue,
we wanted temporary storage. So the device can store the data temporarily and send it to the server
when the network is restored.
On the right side of the figure, we have the user and the application UI. Frontend. It can communicate
with the backend and the database through the API. To connect the device with the backend cloud
server,
we will be using a MQTT broker. So we can set up a subscription for the device and share the sensor
data and control signals through the MQTT protocol.
We don’t pass real-time data to the server in regular mode. Every sensor's data will have a certain
delay between two consecutive measurements. For example, the location data will only be sent once
every 15 minutes.
3D DESIGN
3D design
This is the 3D design of the smart pet collar. The collar should not be too heavy on the pet's neck. As a result, we designed it in this manner. Here, you can see the rechargable battery on the top of the collar. And also, the main circuit board is also on the top of the collar. You can see two sensors inside the collar, which are a temperature sensor and a pulse sensor. The gyroscope sensor is on the main circuit board. Our product features are,
- Track your pet
- Analyze your pet’s sleep
- Measure the temperature
- Pulse of your pet
- Track the pet’s vaccination time
FRONTEND
User Interface
The user gets access to his dashboard. Here’s a draft design we created for the user dashboard. On the homepage, a summary of the latest data can be seen. Here we have a sync button to request the latest data, which are vitals, sleep tracking history, and the last known location. There will be separate pages for more detailed location tracking, health, training, and settings.
Technology Stack
- React
The React.js framework is an open-source JavaScript framework and library developed by Facebook. It’s used for building interactive user interfaces and web applications quickly and efficiently with significantly less code than you would with vanilla JavaScript.
- JavaScript
JavaScript is a scripting or programming language that allows you to implement complex features on web pages.
BACKEND
Technology Stack
- ExpressJS
Express is a node js web application framework that provides broad features for building web and mobile applications. It is used to build a single page, multipage, and hybrid web application.
- MongoDB
MongoDB is a document database used to build highly available and scalable internet applications. With its flexible schema approach, it's popular with development teams using agile methodologies.
- Eclipse Mosquitto
The MQTT protocol provides a lightweight method of carrying out messaging using a publish/subscribe model.
- AWS
AWS is designed to allow application providers, ISVs, and vendors to quickly and securely host your applications – whether an existing application or a new SaaS-based application.
HARDWARE
Main Circuit Diagram
This is the circuit used by us for our project. The circuit includes an Atmega328P in the middle. Other electronic and electrical components are as follows:
- ATmega328P chip
- 10 uf capacitor
- 22 pf capacitors
- LED
- 10k resistor
- 16 MHz crystal oscillator
The Circuit of the Power Supply Side
We do not supply direct voltage to the circuit. The device gets voltage through DC-DC step-up. The battery is a rechargeable one. We show the voltage level of the battery using a battery indicator. Other electronic and electrical components are as follows:
- Battery level indicator
- DC-DC step up
- USB charger
Final Product Video
TESTING PLAN
Why is testing necessary?
The main benefit of testing is the identification and subsequent removal of the errors. However, testing also helps developers and testers to compare actual and expected results in order to improve quality. If the software production happens without testing it, it could be useless or sometimes dangerous for customers.
Software Testing
What is software testing?
Software testing is the process of assessing the functionality of a software program. The process checks for errors and gaps and whether the outcome of the application matches desired expectations before the software is installed and goes live.
Why is software testing important?
Software testing is the culmination of application development through which software testers evaluate code by questioning it. This evaluation can be brief or proceed until all stakeholders are satisfied. Software testing identifies bugs and issues in the development process so they're fixed prior to product launch. This approach ensures that only quality products are distributed to consumers, which in turn elevates customer satisfaction and trust.
To understand the importance of software testing, consider the example of Starbucks. In 2015, the company lost millions of dollars in sales when its point-of-sale (POS) platform shut down due to a faulty system refresh caused by a software glitch. This could have been avoided if the POS software had been tested thoroughly. Nissan also suffered a similar fate in 2016 when it recalled more than 3 million cars due to a software issue in airbag sensor detectors.
The following are important reasons why software testing techniques should be incorporated into application development:
- Identifies defects early
- Improves product quality
- Increases customer trust and satisfaction
- Detects security vulnerabilities
- Helps with scalability
- Saves money
Types of software testing
There are many types of software testing, but the two main categories are dynamic testing and static testing. Dynamic testing is an assessment that's conducted while the program is executed; static testing examines the program's code and associated documentation. Dynamic and static methods are often used together.
Over the years, software testing has evolved considerably as companies have adopted Agile testing and DevOps work environments. This has introduced faster and more collaborative testing strategies to the sphere of software testing.
The following are the main types of software testing methodologies:
- Integration testing
- Unit testing
- Functional testing
- Security testing
- Performance testing
- Regression testing
- Stress testing
- Acceptance testing
Hardware Testing
What is Hardware Testing in Product Development?
Hardware testing is one of the final phases in the product development process that validates the complete integration of the product. The purpose of the test is to evaluate the end-to-end system specifications and provide information about the quality of a product. In order to consider a hardware project a success, the product needs to meet the stated objectives and functional requirements defined by the QA engineers.
One of the best practices is to test early in the development phase as it minimizes the risks, saves costs, and defines a better product.
Why Hardware Testing is important?
Delivering a fully functional hardware device is one of the key success factors of the product industry. To feed the growing demand of the IoT market, manufacturers often rush to produce cheap sensors. And to keep the cost low, some of them may even compromise with ill-quality parts, degrading the quality of the product as a whole.
Testing the hardware of your products, allows developers to identify and address issues or bugs that could affect performance, reliability, or user experience. It makes sure that the key features of your device work as planned and your product quality stays intact. As your customer base largely depends upon the quality of the products you provide, you need to ensure your products are tested before they hit the markets.
Benefits of Hardware Testing in Product Development
The core benefit of hardware testing is that your device can be checked against the technology installed and the functional requirements. These requirements are prepared by the QA engineers just before the actual development and are documented in test plans. Failure to observe these functional specifications can create problems for manufacturers as well as users.
To give you an example, in the year 2017, the FDA identified security flaws in medical devices and had to recall about half a million St. Jude Medical’s RF-enabled pacemakers. Identifying flaws when the product is still in the development phase provides you an opportunity to address performance, interoperability, security, and safety issues.
Other benefits include:
- Accelerating the time-to-market for products
- Improved accuracy especially with automated testing
- Seamless operations, better user experience
- Faster development and delivery
Our Software Testing Plan
- Unit Testing
A unit test is a way of testing a unit - the smallest piece of code that can be logically isolated in a system. In most programming languages, that is a function, a subroutine, a method or property.
- E2E Testing
End to end testing (E2E testing) is a software testing method that involves testing an application's workflow from beginning to end.
- Performance Testing
Performance testing is a testing measure that evaluates the speed, responsiveness and stability of a computer, network, software program or device under a workload.
Software Unit Testing
- Jest is an open source JavaScript unit testing framework, used by Facebook to test all JavaScript code including React applications. Jest is built on top of Jasmine. Unit testing of JavaScript code without jest framework needs Test runner such as Mocha or Jasmine, assertion library such as Chai, mocks, stubs, mocking library such as Sinon. But Jest is having in built all features available.
- What was tested?
The individual parts of the software system are working correctly.
- Why was it tested?
To ensure that the software system is working properly.
Software E2E Testing
- Cypress is a Java-Script based end to end testing framework which is built basically on top of Mocha JS. It conveniently facilitates the process of end to end testing by giving the testers the chance to run their testing flows using TDD or BDD assertion library along with the real time browser interaction.
- What was tested?
The entire software product begin to end.
- Why was it tested?
To ensure application for behave as expected.
API and Performance Testing
- Postman is a scalable API testing tool that quickly integrates into CI/CD pipeline. It started in 2012 as a side project by Abhinav Asthana to simplify API workflow in testing and development. Postman API monitoring helps you identify problems with your API including poor performance, response errors, and outages.
- What was tested?
Endpoints of the backend API.
- Why was it tested?
To ensure that our API performs as expected.
Hardware Testing
- PlatformIO Unit Testing allows you to segregate each part of the firmware/program and test that the individual parts are working correctly. Using PlatformIO you can execute the same tests on the local host machine (native), on the multiple local embedded devices/boards (connected to local host machine), or on both
- What was tested?
The individual parts of the firmware are working correctly.
- Why was it tested?
To ensure that the hardware part is working properly.
BUDGET
ITEM | QUANTITY | UNIT COST | PRICE(Rs.) | |
---|---|---|---|---|
Arduino Uno | 1 | 3950 | 3950 | |
DS18B20 Temperature Sensor Module | 1 | 150 | 150 | |
MAX30102 Oximeter Heart Rate Pulse Sensor | 1 | 750 | 750 | |
BMI160 6-axis Gyro Accelerometer Module | 1 | 800 | 800 | |
A9G GPS GSM GPRS Development Module | 1 | 4800 | 4800 | |
SD Card Module for Arduino (MD0023) | 1 | 220 | 220 | |
DC 0-100V 3 Digital panel | 1 | 515 | 515 | |
XL 4015 5A Step | 1 | 95 | 95 | |
USB 2.0 PCB Module | 1 | 50 | 50 | |
MT3608 DC-DC Stepup | 1 | 320 | 320 | |
K9 Harnas (s) | 1 | 1800 | 1800 | |
Battery holder | 1 | 95 | 95 | |
IC Sockets 28-pin | 1 | 25 | 25 | |
Female pin header | 1 | 40 | 40 | |
Button | 1 | 720 | 720 | |
Others | 1 | 400 | 400 | |
TOTAL | 22950 |