What does this thing do?

PetSmart is a smart pet collar that is waterproof and a wearable device. You need to wear it on your pet and connect it to your PC or mobile phone. You can track your pet and also get the location histories, analyze your pet’s sleep, measure the temperature and pulse of your pet, and track the pet’s vaccination time. 

WHY DOES YOUR PET NEED A SMART PET COLLAR?

The Problem

Every brand should solve a problem for their customer.

If your pet is missing, you will look for it. You will try many options, such as asking your neighbors, waiting until they come back home, posting notices of nearby places, or searching everywhere. These options are not good or efficient. We need an efficient solution for this matter.

The Solution

Find product for your customer.

We proposed a solution that is a smart pet belt. It is a wearable and waterproof device. Therefore, you need to wear it on your pet and connect it to your PC or mobile phone. Simply put, you can easily obtain corresponding details.

DESIGN ARCHITECTURE

System

We proposed a solution: a smart pet collar. It is a wearable and waterproof device. Therefore, you need to wear it on your pet and connect it to your PC or mobile phone. Simply put, you can easily obtain corresponding details. 

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

Database | ER Diagram

As you can see, all the entities have primary keys. Without a single relation, all relations are 1:N. Because a collar has only one owner, the owner can access multiple options. The "CONNECTS_TO" relation is 1:1 because only one collar has one pet. 

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 Sensors, Actuators and Power

  • ATMEGA328P
  • Temperature Sensor Module
  • HW-827 Heartbeat Heart Rate Sensor
  • Gyro Accelerometer Module
  • GPS GSM GPRS Development Module
  • 18650 3.7V Rechargeable Li-ion battery
  • DC to DC Step Up
  • Voltage Indicator
  • Charging Module

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
Then, all the other sensors and modulators are connected to this circuit. The circuit is powered by a rechargeable battery. 

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

Prototype

testing_tools

Final Product

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

testing_tools

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.

testing_tools

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.

Result and Finding

testing_tools
testing_tools

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.

Result and Finding

testing_tools
testing_tools

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.

Result and Finding

testing_tools testing_tools
testing_tools

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.

Result and Finding

testing_tools

TIMELINE

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
-->

Our Team

Lakshitha Konara

E/18/181

Piumal Rathnayake

E/18/297

Chathura Wimalasiri

E/18/402

Advisors

Dr. Isuru Nawinna

Advisor

Dr. Mahanama Wickaramasinghe

Advisor