Automated door opening system w/GUIs programmed in Java and Arduino

Overview

Automated Door System

Java and Arduino Iteration

The Automated Door Opening System is a major project created in both Java and Arduino for a first year Engineering course. This project is an iteration of my MATLAB version of this project.

This version interfaces between Arduino and Java and uses JavaFX to create an interactive GUI operating with the physical system.

Context

In my first year 'Computational Thinking through Mechatronics' course, the class was tasked with creating any project we liked as long as it hard a physical hardware component (Arduino) and it was programmed using MATLAB.

During the time, COVID was near its peak during the second wave which inspired me to create some sort of system (or prototype of a system) that could help a group of people affected by the current impacts of the virus in our communities. I targeted small businesses that wouldn't be able to afford industry used door systems by coming up with a way for this system to be installed onto doors that open at 90 degrees rather than slide apart. The interactive GUI then also allows businesses to track how many people are entering their store.

While trying to stay within the scope of our assignment and time allocated to us, I decided to create prototype of a door opening system allowing users to open a door simply by waving their hand in front of it resulting in a reduced amount of germs being spread by people touching a door handle.

Features

Having come up with this idea, I implemented other features such as:

  • GUI capabilities that:
    • Allow the door to be manually opened and closed
    • Completely toggle the system on and off
    • View a live graph of the amount of times the door has been opened
  • Detecting when an object or person is blocking the door so it doesn't close on them
  • Light & sound indicators that tell you the state of the system
  • A 'night-mode' that disables access to the door when it becomes dark

How it works

The following is a video DEMO of the system: Demo

The components used in this project are as follows:

  • An Arduino Groove Board
  • Servo Motor
  • PIR Motion Sensor
  • Ultrasonic Sound Sensor
  • Photoresistor
  • Piezo Buzzer
  • RGB LED
  • Push Button
  • Bread Board

Hardware Component

The following is a simple system diagram of how the components are connected to each other.

Parts Diagram

The servo would be attached to a door (or place holder object acting as door) which rotates in a 90 degree motion. On the backside of the same object, the ultrasonic sensor is placed, and is used to check if an object is the door's closing path. The motion sensor would be placed at the front of the door to detect motion, the LDR is placed outside of the door to detect lighting levels and other components are placed near the door (with LEDs being visible) to be connected to a breadboard that connects everything to the Arduino.

When the program is launched, the system is always checking to make sure it is day time (using the LDR). If it's night, a blue light is emitted from the RGB LED indicating that the system is off. If it's day time (bright), the rest of the system works and the RGB LED turns green to indicate that it is daytime. We then always check for an input signal from the PIR motion sensor. If there is a signal, the servo is then turned on to open a door, the RGB LED turns red and a 'chime' plays on the buzzer. After a couple of seconds the door is then rotated back using the servo along with the 'chime' played in reverse unless the ultrasonic sound sensor detects an object that is close to the backside of the door. If there is an object near the door, the servo doesn't close the door. Instead a red light begins flashing with a repeated beeping played by the buzzer (telling you something is blocking the door). If the button is pressed, everything turns off and the system is terminated.

GUI Component

When the program begins, a GUI app is launched on the computer. This GUI contains two buttons at the top, a toggle system on/off button and a force open door button. When the toggle system on/off button is pressed, the system is turned off until pressed again. When the force door open button is pressed, the door will open just as it would when a hand motion is detected. The system must be on in order for this button to work.

Buttons

Additionally, GUI window has a graph that displays a live feed of the amount of people that use the door. This allows the door owner to track how many people are entering their store (or room that uses the door) and the times at which this happens. Every time someone enters the room, the line graph moves up.

For this picture, the # of door opens was set to a max of 10 to make the graph easier to read for demonstration purposes. Graph

Implementation

This project was targeted towards local business in our community that may not have the time or money to implement an industry used door within the store. Despite not being able to physically create this implementation, I still decided to create diagrams of how this system would operate in a real word setting.

I wanted the door to be opened with a metal arm connected to a pivot attached to a servo. This would allow this system to work on businesses that already have an existing door that opens at 90 degrees.

This is how the system works when the door is opened:

Closed state pivot1

Opening state pivot2

Opened state pivot3

Here's a 3D model of the system created in TinkerCAD showing the placements of the components on the door.

3dmodel

These diagrams and models are simply prototypes and would have to go through many different re-evaluations to be implemented.

You might also like...

🌄 Image editor using native modules for iOS and Android. Inherit from 2 available libraries, Brightroom (iOS) and PhotoEditor (Android)

🌄 Image editor using native modules for iOS and Android. Inherit from 2 available libraries, Brightroom (iOS) and PhotoEditor (Android)

React Native Photo Editor (RNPE) 🌄 Image editor using native modules for iOS and Android. Inherit from 2 available libraries, Brightroom (iOS) and Ph

Jan 4, 2023

A powerful 🚀 Android chart view / graph view library, supporting line- bar- pie- radar- bubble- and candlestick charts as well as scaling, panning and animations.

A powerful 🚀 Android chart view / graph view library, supporting line- bar- pie- radar- bubble- and candlestick charts as well as scaling, panning and animations.

âš¡ A powerful & easy to use chart library for Android âš¡ Charts is the iOS version of this library Table of Contents Quick Start Gradle Maven Documentat

Jan 9, 2023

A desktop application designed to serve the co-curricular uses of students, clubs and forums, and admins of United International University.

ECA Management System Made by "Team Apocalypse": S M Jishanul Islam Sadia Ahmmed Sahid Hossain Mustakim Description A desktop application designed to

Jan 31, 2022

A Java framework for creating sophisticated calendar views (JavaFX 8, 9, 10, and 11)

A Java framework for creating sophisticated calendar views (JavaFX 8, 9, 10, and 11)

CalendarFX A Java framework for creating sophisticated calendar views based on JavaFX. A detailed developer manual can be found online: CalendarFX 8 D

Jan 6, 2023

📊 Exposing charts from Java to JavaFX and the Web!

📊 Exposing charts from Java to JavaFX and the Web!

Exposing charts from Java to JavaFX and to the Web! JavaFX · Charts · Websockets · Jetty · Web JavaFxDataviewer is an open-source data visualization t

Oct 26, 2022

Lightweight installer written in java, made for minecraft mods, The installer uses JPanel and uses a URL to install to the specific area (Discord URL's work the best i've seen)

InstallerForJava Lightweight installer written in java, made for minecraft mods, The installer uses JPanel and uses a URL to install to the specific a

Dec 9, 2022

CSGO cheat made in Java using JavaFX as the overlay and JNA for memory manipulation

CSGO cheat made in Java using JavaFX as the overlay and JNA for memory manipulation

CSGO-CHEAT CSGO cheat made in Java using JavaFX as the overlay and JNA for memory manipulation FEATURES RCS Triggerbot No Flash Third Person Rank Reve

Dec 28, 2022

Source Code for 'More Java 17' by Kishori Sharan and Peter Späth

Apress Source Code This repository accompanies More Java 17 by Kishori Sharan and Peter Späth (Apress, 2021). Download the files as a zip using the gr

Oct 27, 2022

Converting Infix to Postfix and Evaluating Postfix Expression. (Java & Scala).

GUI-Calculator-Infix-to-Postfix Converting Infix to Postfix and Evaluating Postfix Expression. (Java & Scala). Converting Infix to Postfix and Evaluat

Sep 22, 2022
Owner
Crasher1225
Crasher1225
Lobby System Template for a multiplayer java game, with chat and other features, using JavaFX and socket TCP (will be extended to UDP).

JavaFX-MultiplayerLobbySystem JavaFX lobby system for multiplayer games with chat, ready toggle and kick buttons, using socket TCP by default. Demo Cr

Michele Righi 7 May 8, 2022
A hotel management system desktop application, built with java SWT/Swing

A hotel management system desktop application, built with java SWT/Swing, with tabs to manage bookings, rooms, customers, payments, cancellations, hotel inventory orders, catering and a plan to visualize all the reservations for the month.

null 1 Jan 12, 2022
PostgreSQL is the world's most advanced open source database. Also, PostgreSQL is suitable for Event Sourcing. This repository provides a sample of event sourced system that uses PostgreSQL as event store.

Event Sourcing with PostgreSQL Introduction Example Domain Event Sourcing and CQRS 101 State-Oriented Persistence Event Sourcing CQRS Advantages of CQ

Evgeniy Khyst 146 Dec 20, 2022
The open Transportation Control System

openTCS Homepage: https://www.opentcs.org/ Changelog: changelog.adoc openTCS (short for open Transportation Control System) is a free platform for con

openTCS 158 Jan 8, 2023
Event-driven trigger + recording system for FFXIV

Triggevent Fully event driven trigger + overlay system for FFXIV. Makes triggers easier to develop and test. Allows triggers to have custom configurat

null 63 Dec 28, 2022
InstallRepos - Install GitHub Repository on any Operating System (Linux, MacOS or Windows).

Install Repos Install GitHub Repository on any Operating System (Linux, MacOS or Windows). Requires Java JRE 17.0.0.1 or later. Repository Includes: s

Tushar Chaurasia 2 Apr 21, 2022
Lib-Tile is a multi Maven project written in JavaFX and NetBeans IDE 8 and provides the functionalities to use and handle easily Tiles in your JavaFX application.

Lib-Tile Intention Lib-Tile is a multi Maven project written in JavaFX and NetBeans IDE and provides the functionalities to use and handle easily Tile

Peter Rogge 13 Apr 13, 2022
Utilizando do Java swing e do banco de dados MySQL, criei esse projeto com intuito de práticar a conexão do Java com MySQL e as janelas do Java swing

MeusCursos.com Meu primeiro projeto sozinho Utilizando do Java swing e do banco de dados MySQL, criei esse projeto com intuito de práticar a conexão d

João Vitor Ferreira Peixoto 1 Apr 2, 2022
A simple JavaFX application to load, save and edit a CSV file and provide a JSON configuration for columns to check the values in the columns.

SmartCSV.fx Description A simple JavaFX application to load, save and edit a CSV file and provide a JSON Table Schema for columns to check the values

Andreas Billmann 74 Oct 24, 2022
Android Resource Manager application to manage and analysis your app resources with many features like image resize, Color, Dimens and code Analysis

AndroidResourceManager Cross-Platform tools to manage your resources as an Android Developer, AndroidResourceManager - ARM provide five main services

Amr Hesham 26 Nov 16, 2022