Project tutorial
Automated Fall Detection System for Elderly People

Automated Fall Detection System for Elderly People © LGPL

Design and build a system to monitor free-fall status using the Microchip AVR-IoT WG Development Board.

  • 3 respects

Components and supplies

Necessary tools and machines

09507 01
Soldering iron (generic)
Hy gluegun
Hot glue gun (generic)

Apps and online services

About this project


The risk of falling is one of the most prevalent problems faced by elderly individuals. A study published by the World Health Organization [1] estimates that between 28% and 35% of people over 65 years old suffer at least one fall each year, and this figure increases to 42% for people over 70 years old. According to the World Health Organization, falls represent greater than 50% of elderly hospitalizations and approximately 40% of the non-natural mortalities for this segment of the population. Falls are a significant source of mortality for elderly individuals in developed countries.

This project presents a fall detection system that monitors in real-time an older adult. The major components of the system is a wearable device. The wearable has the capability of communicating with a cloud service. Once the wearable device detects a fall, it sends an alert to the cloud, then the cloud alerts to the emergency contacts defined by the user or medical authority.

Block Diagram


Development Board (AVR-IoT WG)


  • ATmega4808 micro-controller
  • TEMT6000 Light sensor
  • MCP9808 Temperature sensor
  • ATECC608A Crypto Authentication™ device
  • WINC1510 WiFi Module
  • On-board nEDBG Debugger
  • USB and battery powered
  • Integrated Li-Ion/Lipo battery charger

Genuino 101

The Genuino 101 is a learning and development board that delivers the performance and low-power consumption of the Intel® Curie module with the simplicity of Arduino at an entry-level price. This development platform keeps the same robust form factor and peripheral list of the UNO with the addition of onboard Bluetooth LE capabilities and a 6-axis accelerometer/gyro to help you easily expand your creativity into the connected world.

The Intel® Curie module contains two tiny cores, an x86 (Quark) and a 32-bit ARC architecture core, both clocked at 32MHz. The Intel toolchain compiles your Arduino sketches optimally across both cores to accomplish the most demanding tasks. The Genuino 101 comes with 14 digital input/output pins (of which 4 can be used as PWM outputs), 6 analog inputs, a USB connector for serial communication and sketch upload, a power jack, an ICSP header with SPI signals and I2C dedicated pins. The board operating voltage and I/O is 3.3V but all pins are protected against 5V overvoltage.

The built-in IMU (inertial measurement unit) on Genuino 101 will be utilized for determining the free fall.

Step 1: Getting Started with Microchip's AVR-IoT WG Board

This board has an inbuilt temperature sensor and a light sensor that a preloaded firmware publishes the data from the sensors to the cloud (Google Cloud).

The AVR-IoT WG development board features two sensors:

• A light sensor

• A high-accuracy temperature sensor - MCP9808

Step 2: Adding the Device to the Cloud

First, log in to the Google IoT core and create a new project and note your Project ID, which will be needed later when you program the hardware to connect to the project.

Note: Here, I had used a free trial account of the Google Cloud service. In the Google Cloud console, you can find the IoT core at the sidebar.

Create a Registry:

To Register the device:

Note the Device ID from the Click me file, which will direct you to a link.

In the next form, Fill up device ID with an alphabet at first, the Public key format is of ES256 which can be verified, and add the PUBKEY.txt file in the add device page.

After this step, the device is successfully added to the Google Cloud.

Now, Go to the ATMEL START program and enter your Project ID, Registry ID. i.e. Project ID: avr-iot, Registry ID: AVR-IoT and MQTT host: in case of ourproject.

Finally, Export the project to ATMEL Studio 7 and enable the debugger to start the program.

Step 3: Uploading the Firmware

Before uploading the firmware, we have to create a bus (UART) to connect Genuino 101 with the Microchip AVR-IOT-WG Board.

UART Connections :

Genuino 101 ------------------ Microchip AVR-IOT-WG Board
VIN -> VCC(5.0 V)
GND -> GND(0 V)
D0 (RX) -> PC0 (TX)
D1 (TX) -> PC1 (RX)

Once the connection is done upload the code for sensors using Arduino IDE. The code is added, which can be found in the code section.

Note that: The built-in IMU (inertial measurement unit) on Genuino 101 is used for determining the free fall.

In case of Microchip AVR-IOT board, export the project from ATMEL START.

Select the solution configuration as release and debugger as UDPI as nEDBG. Finally, press the green arrow next to Solution configuration to start the program.

Note: Make sure that the program is properly uploaded without errors.

Step 4: Setting Up the Google Cloud for Publish and Subscribe

Create a new function in the Google Cloud Functions.

Set the following parameters:

  • Trigger - Cloud Pub/Sub
  • Topic - AVR-IOT

It automatically generates the code for PUB/SUB functions.

Step 5: Checking the published data on Google Cloud

The data is being published on the Google Cloud. This data, which is logged, can be displayed on either a website or a mobile application.

Fall notification on the smartphone

If any fall occurs, the system sends a notification to the emergency contact person instantly.

The Proposed Device (prototype)


We hope that our system instantly detects the free fall and sends a notification to the emergency contact person for taking the necessary steps immediately.


1. World Health Organization. WHO Global Report on Falls Prevention in Older Age. World Health Organization; Geneva, Switzerland: 2007

2. Genuino 101,

3. AVR-IoT WG,


#include "CurieIMU.h"
void setup() {

  CurieIMU.setDetectionThreshold(CURIE_IMU_SHOCK, 1500); // 1.5g = 1500 mg
  CurieIMU.setDetectionDuration(CURIE_IMU_SHOCK, 50);   // 50ms

void loop() {
  if (CurieIMU.getInterruptStatus(CURIE_IMU_SHOCK)){
    // Push the data via UART


circuit diagram
Circuit efdwfy3zsx


Similar projects you might like

Traffic Light Information System

Project tutorial by Pieter Luyten and Joppe Smeets

  • 54 respects

Smart Personal Money Vault Monitoring System Based on IoT

Project tutorial by Salah Uddin

  • 15 respects

Smart Garbage Monitoring System Using Arduino 101

Project tutorial by Technovation

  • 78 respects

A fall detection system based on Arduino, Windows and Azure

Project tutorial by Jiong Shi

  • 63 respects

Step Detection System By A Way With Arduino

Project tutorial by Juan Salvador Aleixandre Talens

  • 8 respects

Connected Visor

Project in progress by Team Yayi Make

  • 16 respects
Add projectSign up / Login